feat(core): allow sending fully custom payloads
This commit is contained in:
parent
66d5862bdb
commit
fe1047df8b
4 changed files with 23 additions and 3 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
TL schema and related utils used for mtcute.
|
TL schema and related utils used for mtcute.
|
||||||
|
|
||||||
Generated from TL layer **182** (last updated on 25.06.2024).
|
Generated from TL layer **182** (last updated on 26.06.2024).
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -5,3 +5,10 @@
|
||||||
mtcute.dummyUpdate pts:int pts_count:int channel_id:int53 = Update;
|
mtcute.dummyUpdate pts:int pts_count:int channel_id:int53 = Update;
|
||||||
mtcute.dummyInputPeerMinUser user_id:int = InputPeer;
|
mtcute.dummyInputPeerMinUser user_id:int = InputPeer;
|
||||||
mtcute.dummyInputPeerMinChannel channel_id:int = InputPeer;
|
mtcute.dummyInputPeerMinChannel channel_id:int = InputPeer;
|
||||||
|
|
||||||
|
|
||||||
|
---functions---
|
||||||
|
// temporary solution to allow users to call arbitrary methods not present in the schema,
|
||||||
|
// without having to override client's schema readers/writers map.
|
||||||
|
// will become redundant after esm tl rewrite
|
||||||
|
mtcute.customMethod bytes:bytes = bytes;
|
||||||
|
|
|
@ -28,7 +28,8 @@ async function generateTypings(apiSchema: TlFullSchema, apiLayer: number, mtpSch
|
||||||
await writeFile(OUT_TYPINGS_JS_FILE, ESM_PRELUDE + apiJs + '\n\n' + mtpJs)
|
await writeFile(OUT_TYPINGS_JS_FILE, ESM_PRELUDE + apiJs + '\n\n' + mtpJs)
|
||||||
}
|
}
|
||||||
|
|
||||||
const removeInternalEntries = (entries: TlEntry[]) => entries.filter((it) => !it.name.startsWith('mtcute.'))
|
const removeInternalEntries = (entries: TlEntry[]) =>
|
||||||
|
entries.filter((it) => !it.name.startsWith('mtcute.') || it.name === 'mtcute.customMethod')
|
||||||
|
|
||||||
async function generateReaders(apiSchema: TlFullSchema, mtpSchema: TlFullSchema) {
|
async function generateReaders(apiSchema: TlFullSchema, mtpSchema: TlFullSchema) {
|
||||||
console.log('Generating readers...')
|
console.log('Generating readers...')
|
||||||
|
@ -56,6 +57,18 @@ async function generateWriters(apiSchema: TlFullSchema, mtpSchema: TlFullSchema)
|
||||||
includeStaticSizes: true,
|
includeStaticSizes: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// for mtcute.customMethod we want to generate a writer that writes obj.bytes directly
|
||||||
|
const newCode = code.replace(
|
||||||
|
/^('mtcute.customMethod':function\(w,v\){)w.uint\(2440218877\);w.bytes\(h\(v,'bytes'\)\)/m,
|
||||||
|
"$1w.raw(h(v,'bytes'))",
|
||||||
|
)
|
||||||
|
|
||||||
|
if (newCode === code) {
|
||||||
|
throw new Error('Failed to replace customMethod writer')
|
||||||
|
}
|
||||||
|
|
||||||
|
code = newCode
|
||||||
|
|
||||||
code += '\nexports.__tlWriterMap = m;'
|
code += '\nexports.__tlWriterMap = m;'
|
||||||
|
|
||||||
await writeFile(OUT_WRITERS_FILE, ESM_PRELUDE + code)
|
await writeFile(OUT_WRITERS_FILE, ESM_PRELUDE + code)
|
||||||
|
|
Loading…
Reference in a new issue