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
|
* 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)
|
if (entry.id === 0) entry.id = computeConstructorIdFromEntry(entry)
|
||||||
|
|
||||||
let ret = `${entry.id}:function(r){`
|
const pre = `${entry.id}:function(r){`
|
||||||
|
|
||||||
if (!entry.arguments.length) {
|
if (!entry.arguments.length) {
|
||||||
return ret + `return{_:'${entry.name}'}},`
|
return pre + `return{_:'${entry.name}'}},`
|
||||||
}
|
}
|
||||||
|
|
||||||
let beforeReturn = ''
|
let beforeReturn = ''
|
||||||
|
@ -105,7 +108,6 @@ export function generateReaderCodeForTlEntry(entry: TlEntry, includeFlags = fals
|
||||||
code += ':void 0'
|
code += ':void 0'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (isBeforeLastFlag) {
|
if (isBeforeLastFlag) {
|
||||||
beforeReturn += code + ';'
|
beforeReturn += code + ';'
|
||||||
} else {
|
} 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(
|
export function generateReaderCodeForTlEntries(
|
||||||
|
|
|
@ -75,10 +75,10 @@ describe('generateReaderCodeForTlEntry', () => {
|
||||||
it('generates code for constructors with multiple flags fields', () => {
|
it('generates code for constructors with multiple flags fields', () => {
|
||||||
test(
|
test(
|
||||||
'updates.channelDifferenceEmpty#3e11affb flags:# final:flags.0?true pts:int timeout:flags.1?int flags2:# can_delete_channel:flags2.0?true = updates.ChannelDifference;',
|
'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 flags=r.uint(),',
|
||||||
'var pts=r.int();',
|
'pts=r.int(),',
|
||||||
'var timeout=flags&2?r.int():void 0;',
|
'timeout=flags&2?r.int():void 0,',
|
||||||
'var flags2=r.uint();',
|
'flags2=r.uint();',
|
||||||
'return{',
|
'return{',
|
||||||
"_:'updates.channelDifferenceEmpty',",
|
"_:'updates.channelDifferenceEmpty',",
|
||||||
'final:!!(flags&1),',
|
'final:!!(flags&1),',
|
||||||
|
@ -128,8 +128,8 @@ describe('generateReaderCodeForTlEntry', () => {
|
||||||
const entry = parseTlToEntries('test flags:# flags2:# = Test;')[0]
|
const entry = parseTlToEntries('test flags:# flags2:# = Test;')[0]
|
||||||
expect(generateReaderCodeForTlEntry(entry, true)).eq(
|
expect(generateReaderCodeForTlEntry(entry, true)).eq(
|
||||||
`${entry.id}:function(r){${[
|
`${entry.id}:function(r){${[
|
||||||
'var flags=r.uint();',
|
'var flags=r.uint(),',
|
||||||
'var flags2=r.uint();',
|
'flags2=r.uint();',
|
||||||
'return{',
|
'return{',
|
||||||
"_:'test',",
|
"_:'test',",
|
||||||
'flags:flags,',
|
'flags:flags,',
|
||||||
|
|
Loading…
Reference in a new issue