2022-05-05 20:08:38 +03:00
|
|
|
import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'
|
2021-11-23 00:03:59 +03:00
|
|
|
import { parseTlToEntries } from './parse'
|
|
|
|
import { generateReaderCodeForTlEntries } from './codegen/reader'
|
|
|
|
import { generateWriterCodeForTlEntries } from './codegen/writer'
|
|
|
|
|
|
|
|
function evalForResult(js: string): any {
|
|
|
|
return new Function(js)()
|
|
|
|
}
|
|
|
|
|
|
|
|
export function patchRuntimeTlSchema(
|
|
|
|
schema: string,
|
|
|
|
readers: TlReaderMap,
|
|
|
|
writers: TlWriterMap
|
|
|
|
): {
|
|
|
|
readerMap: TlReaderMap
|
|
|
|
writerMap: TlWriterMap
|
|
|
|
} {
|
|
|
|
const entries = parseTlToEntries(schema)
|
|
|
|
|
|
|
|
const readersCode = generateReaderCodeForTlEntries(entries, '_', false)
|
|
|
|
const writersCode = generateWriterCodeForTlEntries(entries, '_', true)
|
|
|
|
|
|
|
|
const newReaders = evalForResult(readersCode.replace('var _=', 'return'))
|
|
|
|
const newWriters = evalForResult(writersCode.replace('var _=', 'return'))
|
|
|
|
|
|
|
|
return {
|
|
|
|
readerMap: {
|
|
|
|
...readers,
|
|
|
|
...newReaders,
|
|
|
|
},
|
|
|
|
writerMap: {
|
|
|
|
...writers,
|
|
|
|
...newWriters,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|