fix(tl-utils): optimize readers code size by merging pre-return vars
This commit is contained in:
parent
dd4cc471f6
commit
a2dbccada6
2 changed files with 13 additions and 11 deletions
|
@ -5,13 +5,16 @@ import { snakeToCamel } from './utils'
|
|||
/**
|
||||
* Returns code as an object entry
|
||||
*/
|
||||
export function generateReaderCodeForTlEntry(entry: TlEntry, includeFlags = false): string {
|
||||
export function generateReaderCodeForTlEntry(
|
||||
entry: TlEntry,
|
||||
includeFlags = false
|
||||
): string {
|
||||
if (entry.id === 0) entry.id = computeConstructorIdFromEntry(entry)
|
||||
|
||||
let ret = `${entry.id}:function(r){`
|
||||
const pre = `${entry.id}:function(r){`
|
||||
|
||||
if (!entry.arguments.length) {
|
||||
return ret + `return{_:'${entry.name}'}},`
|
||||
return pre + `return{_:'${entry.name}'}},`
|
||||
}
|
||||
|
||||
let beforeReturn = ''
|
||||
|
@ -105,7 +108,6 @@ export function generateReaderCodeForTlEntry(entry: TlEntry, includeFlags = fals
|
|||
code += ':void 0'
|
||||
}
|
||||
|
||||
|
||||
if (isBeforeLastFlag) {
|
||||
beforeReturn += code + ';'
|
||||
} else {
|
||||
|
@ -113,7 +115,7 @@ export function generateReaderCodeForTlEntry(entry: TlEntry, includeFlags = fals
|
|||
}
|
||||
})
|
||||
|
||||
return `${ret}${beforeReturn}return{${returnCode}}},`
|
||||
return `${pre}${beforeReturn.replace(/;var /g, ',')}return{${returnCode}}},`
|
||||
}
|
||||
|
||||
export function generateReaderCodeForTlEntries(
|
||||
|
|
|
@ -75,10 +75,10 @@ describe('generateReaderCodeForTlEntry', () => {
|
|||
it('generates code for constructors with multiple flags fields', () => {
|
||||
test(
|
||||
'updates.channelDifferenceEmpty#3e11affb flags:# final:flags.0?true pts:int timeout:flags.1?int flags2:# can_delete_channel:flags2.0?true = updates.ChannelDifference;',
|
||||
'var flags=r.uint();',
|
||||
'var pts=r.int();',
|
||||
'var timeout=flags&2?r.int():void 0;',
|
||||
'var flags2=r.uint();',
|
||||
'var flags=r.uint(),',
|
||||
'pts=r.int(),',
|
||||
'timeout=flags&2?r.int():void 0,',
|
||||
'flags2=r.uint();',
|
||||
'return{',
|
||||
"_:'updates.channelDifferenceEmpty',",
|
||||
'final:!!(flags&1),',
|
||||
|
@ -128,8 +128,8 @@ describe('generateReaderCodeForTlEntry', () => {
|
|||
const entry = parseTlToEntries('test flags:# flags2:# = Test;')[0]
|
||||
expect(generateReaderCodeForTlEntry(entry, true)).eq(
|
||||
`${entry.id}:function(r){${[
|
||||
'var flags=r.uint();',
|
||||
'var flags2=r.uint();',
|
||||
'var flags=r.uint(),',
|
||||
'flags2=r.uint();',
|
||||
'return{',
|
||||
"_:'test',",
|
||||
'flags:flags,',
|
||||
|
|
Loading…
Reference in a new issue