UNPKG

45.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/tl.js"],"names":["toUint32","buf","ln","res","Uint32Array","readUInt32LE","byteLength","i","data","DataView","getUint32","TL","api","mtApi","Serialization","constructor","mtproto","startMaxLength","storeIntString","value","field","valType","String","storeString","Number","storeInt","Error","writeInt","maxLength","offset","createBuffer","buffer","ArrayBuffer","intView","Int32Array","byteView","Uint8Array","getArray","resultBuffer","resultArray","set","subarray","getBuffer","getBytes","typed","bytes","push","checkLength","needBytes","console","trace","Math","ceil","max","previousBuffer","previousArray","debug","log","toString","storeBool","storeLongP","iHigh","iLow","storeLong","sLong","Array","length","storeIntBytes","int1","int2","storeDouble","f","doubleView","Float64Array","s","undefined","sUTF8","unescape","encodeURIComponent","len","charCodeAt","storeBytes","bits","storeRawBytes","storeMethod","methodName","params","schema","methodData","methods","method","id","param","type","condType","fieldBit","indexOf","split","paramName","name","stored","storeObject","emptyOfType","ofType","resultConstruct","constructors","find","predicate","_","obj","substr","itemType","toLowerCase","Object","isBare","constructorData","charAt","Deserialization","override","readInt","fetchInt","fetchDouble","fetchLong","longDec","shiftLeft","add","fetchBool","fetchObject","fetchString","fromCharCode","decodeURIComponent","escape","e","fetchBytes","fetchIntBytes","result","fetchRawBytes","fallback","subpart","constructorCmp","compressed","uncompressed","newDeserializer","checkType","index","constructorsIndex","schemaFallback","overrideKey","apply","isCond","getOffset","fetchEnd"],"mappings":"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","file":"tl.js","sourcesContent":["import isNode from 'detect-node'\r\nimport { is, isNil, type as rType } from 'ramda'\r\nimport { bigint, uintToInt, intToUint, bytesToHex,\r\n gzipUncompress, bytesToArrayBuffer, longToInts, lshift32 } from './bin'\r\n\r\nconst toUint32 = buf => {\r\n let ln, res\r\n if (!isNode) //TODO browser behavior not equals, why?\r\n return new Uint32Array( buf )\r\n if (buf.readUInt32LE) {\r\n ln = buf.byteLength / 4\r\n res = new Uint32Array( ln )\r\n for (let i = 0; i < ln; i++)\r\n res[i] = buf.readUInt32LE( i*4 )\r\n } else {\r\n const data = new DataView( buf )\r\n ln = data.byteLength / 4\r\n res = new Uint32Array( ln )\r\n for (let i = 0; i < ln; i++)\r\n res[i] = data.getUint32( i*4, true )\r\n }\r\n return res\r\n}\r\n\r\nexport const TL = (api, mtApi) => {\r\n\r\n class Serialization {\r\n constructor({ mtproto = false, startMaxLength = 2048 /* 2Kb */ } = {}) {\r\n this.maxLength = startMaxLength\r\n this.offset = 0 // in bytes\r\n\r\n this.createBuffer()\r\n this.mtproto = mtproto\r\n }\r\n\r\n createBuffer() {\r\n this.buffer = new ArrayBuffer(this.maxLength)\r\n this.intView = new Int32Array(this.buffer)\r\n this.byteView = new Uint8Array(this.buffer)\r\n }\r\n\r\n getArray() {\r\n const resultBuffer = new ArrayBuffer(this.offset)\r\n const resultArray = new Int32Array(resultBuffer)\r\n\r\n resultArray.set(this.intView.subarray(0, this.offset / 4))\r\n\r\n return resultArray\r\n }\r\n\r\n getBuffer() {\r\n return this.getArray().buffer\r\n }\r\n\r\n getBytes(typed) {\r\n if (typed) {\r\n const resultBuffer = new ArrayBuffer(this.offset)\r\n const resultArray = new Uint8Array(resultBuffer)\r\n\r\n resultArray.set(this.byteView.subarray(0, this.offset))\r\n\r\n return resultArray\r\n }\r\n\r\n const bytes = []\r\n for (let i = 0; i < this.offset; i++) {\r\n bytes.push(this.byteView[i])\r\n }\r\n return bytes\r\n }\r\n\r\n checkLength(needBytes) {\r\n if (this.offset + needBytes < this.maxLength) {\r\n return\r\n }\r\n\r\n console.trace('Increase buffer', this.offset, needBytes, this.maxLength)\r\n this.maxLength = Math.ceil(Math.max(this.maxLength * 2, this.offset + needBytes + 16) / 4) * 4\r\n const previousBuffer = this.buffer\r\n const previousArray = new Int32Array(previousBuffer)\r\n\r\n this.createBuffer()\r\n\r\n new Int32Array(this.buffer).set(previousArray)\r\n }\r\n\r\n writeInt(i, field) {\r\n this.debug && console.log('>>>', i.toString(16), i, field)\r\n\r\n this.checkLength(4)\r\n this.intView[this.offset / 4] = i\r\n this.offset += 4\r\n }\r\n\r\n storeIntString = (value, field) => {\r\n const valType = rType(value)\r\n switch (true) {\r\n case is(String, value): return this.storeString(value, field)\r\n case is(Number, value): return this.storeInt(value, field)\r\n default: throw new Error(`tl storeIntString field ${field} value type ${valType}`)\r\n }\r\n }\r\n\r\n storeInt = (i, field = '') => {\r\n this.writeInt(i, `${ field }:int`)\r\n }\r\n\r\n storeBool(i, field = '') {\r\n if (i) {\r\n this.writeInt(0x997275b5, `${ field }:bool`)\r\n } else {\r\n this.writeInt(0xbc799737, `${ field }:bool`)\r\n }\r\n }\r\n\r\n storeLongP(iHigh, iLow, field) {\r\n this.writeInt(iLow, `${ field }:long[low]`)\r\n this.writeInt(iHigh, `${ field }:long[high]`)\r\n }\r\n\r\n storeLong(sLong, field = '') {\r\n if (is(Array, sLong))\r\n return sLong.length === 2\r\n ? this.storeLongP(sLong[0], sLong[1], field)\r\n : this.storeIntBytes(sLong, 64, field)\r\n\r\n if (typeof sLong !== 'string')\r\n sLong = sLong\r\n ? sLong.toString()\r\n : '0'\r\n const [int1, int2] = longToInts(sLong)\r\n this.writeInt(int2, `${ field }:long[low]`)\r\n this.writeInt(int1, `${ field }:long[high]`)\r\n }\r\n\r\n storeDouble(f, field = '') {\r\n const buffer = new ArrayBuffer(8)\r\n const intView = new Int32Array(buffer)\r\n const doubleView = new Float64Array(buffer)\r\n\r\n doubleView[0] = f\r\n\r\n this.writeInt(intView[0], `${ field }:double[low]`)\r\n this.writeInt(intView[1], `${ field }:double[high]`)\r\n }\r\n\r\n storeString(s, field = '') {\r\n this.debug && console.log('>>>', s, `${ field }:string`)\r\n\r\n if (s === undefined) {\r\n s = ''\r\n }\r\n const sUTF8 = unescape(encodeURIComponent(s))\r\n\r\n this.checkLength(sUTF8.length + 8)\r\n\r\n const len = sUTF8.length\r\n if (len <= 253) {\r\n this.byteView[this.offset++] = len\r\n } else {\r\n this.byteView[this.offset++] = 254\r\n this.byteView[this.offset++] = len & 0xFF\r\n this.byteView[this.offset++] = (len & 0xFF00) >> 8\r\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16\r\n }\r\n for (let i = 0; i < len; i++) {\r\n this.byteView[this.offset++] = sUTF8.charCodeAt(i)\r\n }\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.byteView[this.offset++] = 0\r\n }\r\n }\r\n\r\n storeBytes(bytes, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n else if (bytes === undefined) {\r\n bytes = []\r\n }\r\n this.debug && console.log('>>>', bytesToHex(bytes), `${ field }:bytes`)\r\n\r\n const len = bytes.byteLength || bytes.length\r\n this.checkLength(len + 8)\r\n if (len <= 253) {\r\n this.byteView[this.offset++] = len\r\n } else {\r\n this.byteView[this.offset++] = 254\r\n this.byteView[this.offset++] = len & 0xFF\r\n this.byteView[this.offset++] = (len & 0xFF00) >> 8\r\n this.byteView[this.offset++] = (len & 0xFF0000) >> 16\r\n }\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.byteView[this.offset++] = 0\r\n }\r\n }\r\n\r\n storeIntBytes(bytes, bits, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n const len = bytes.length\r\n if (bits % 32 || len * 8 != bits) {\r\n throw new Error(`Invalid bits: ${ bits }, ${ bytes.length}`)\r\n }\r\n\r\n this.debug && console.log('>>>', bytesToHex(bytes), `${ field }:int${ bits}`)\r\n this.checkLength(len)\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n }\r\n\r\n storeRawBytes(bytes, field = '') {\r\n if (bytes instanceof ArrayBuffer) {\r\n bytes = new Uint8Array(bytes)\r\n }\r\n const len = bytes.length\r\n\r\n this.debug && console.log('>>>', bytesToHex(bytes), field)\r\n this.checkLength(len)\r\n\r\n this.byteView.set(bytes, this.offset)\r\n this.offset += len\r\n }\r\n\r\n storeMethod(methodName, params) {\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n let methodData = false\r\n\r\n for (let i = 0; i < schema.methods.length; i++) {\r\n if (schema.methods[i].method == methodName) {\r\n methodData = schema.methods[i]\r\n break\r\n }\r\n }\r\n if (!methodData) {\r\n throw new Error(`No method ${ methodName } found`)\r\n }\r\n\r\n this.storeInt(intToUint(methodData.id), `${methodName }[id]`)\r\n\r\n let param, type\r\n let condType\r\n let fieldBit\r\n const len = methodData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = methodData.params[i]\r\n type = param.type\r\n if (type.indexOf('?') !== -1) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(params[fieldBit[0]] & 1 << fieldBit[1])) {\r\n continue\r\n }\r\n type = condType[1]\r\n }\r\n const paramName = param.name\r\n let stored = params[paramName]\r\n /*if (!stored)\r\n stored = this.emptyOfType(type, schema)\r\n if (!stored)\r\n throw new Error(`Method ${methodName}.`+\r\n ` No value of field ${ param.name } recieved and no Empty of type ${ param.type }`)*/\r\n this.storeObject(stored, type, `${methodName }[${ paramName }]`)\r\n }\r\n\r\n return methodData.type\r\n }\r\n emptyOfType(ofType, schema) {\r\n const resultConstruct = schema.constructors.find(\r\n ({ type, predicate }) =>\r\n type === ofType &&\r\n predicate.indexOf('Empty') !== -1)\r\n return resultConstruct\r\n ? { _: resultConstruct.predicate }\r\n : null\r\n }\r\n storeObject(obj, type, field) {\r\n switch (type) {\r\n case '#':\r\n case 'int':\r\n return this.storeInt(obj, field)\r\n case 'long':\r\n return this.storeLong(obj, field)\r\n case 'int128':\r\n return this.storeIntBytes(obj, 128, field)\r\n case 'int256':\r\n return this.storeIntBytes(obj, 256, field)\r\n case 'int512':\r\n return this.storeIntBytes(obj, 512, field)\r\n case 'string':\r\n return this.storeString(obj, field)\r\n case 'bytes':\r\n return this.storeBytes(obj, field)\r\n case 'double':\r\n return this.storeDouble(obj, field)\r\n case 'Bool':\r\n return this.storeBool(obj, field)\r\n case 'true':\r\n return\r\n }\r\n\r\n if (is(Array, obj)) {\r\n if (type.substr(0, 6) == 'Vector') {\r\n this.writeInt(0x1cb5c415, `${field }[id]`)\r\n }\r\n else if (type.substr(0, 6) != 'vector') {\r\n throw new Error(`Invalid vector type ${ type}`)\r\n }\r\n const itemType = type.substr(7, type.length - 8) // for \"Vector<itemType>\"\r\n this.writeInt(obj.length, `${field }[count]`)\r\n for (let i = 0; i < obj.length; i++) {\r\n this.storeObject(obj[i], itemType, `${field }[${ i }]`)\r\n }\r\n return true\r\n }\r\n else if (type.substr(0, 6).toLowerCase() == 'vector') {\r\n throw new Error('Invalid vector object')\r\n }\r\n\r\n if (!is(Object, obj))\r\n throw new Error(`Invalid object for type ${ type}`)\r\n\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n const predicate = obj['_']\r\n let isBare = false\r\n let constructorData = false\r\n\r\n if (isBare = type.charAt(0) == '%')\r\n type = type.substr(1)\r\n\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].predicate == predicate) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData)\r\n throw new Error(`No predicate ${ predicate } found`)\r\n\r\n if (predicate == type)\r\n isBare = true\r\n\r\n if (!isBare)\r\n this.writeInt(intToUint(constructorData.id), `${field }[${ predicate }][id]`)\r\n\r\n let param\r\n let condType\r\n let fieldBit\r\n const len = constructorData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = constructorData.params[i]\r\n type = param.type\r\n if (type.indexOf('?') !== -1) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(obj[fieldBit[0]] & 1 << fieldBit[1])) {\r\n continue\r\n }\r\n type = condType[1]\r\n }\r\n\r\n this.storeObject(obj[param.name], type, `${field }[${ predicate }][${ param.name }]`)\r\n }\r\n\r\n return constructorData.type\r\n }\r\n\r\n }\r\n\r\n class Deserialization {\r\n constructor(buffer, { mtproto = false, override = {} } = {}) {\r\n this.offset = 0 // in bytes\r\n this.override = override\r\n\r\n this.buffer = buffer\r\n this.intView = toUint32(this.buffer)\r\n this.byteView = new Uint8Array(this.buffer)\r\n this.mtproto = mtproto\r\n }\r\n\r\n readInt(field) {\r\n if (this.offset >= this.intView.length * 4) {\r\n throw new Error(`Nothing to fetch: ${ field}`)\r\n }\r\n\r\n const i = this.intView[this.offset / 4]\r\n\r\n this.debug && console.log('<<<', i.toString(16), i, field)\r\n\r\n this.offset += 4\r\n\r\n return i\r\n }\r\n\r\n fetchInt(field = '') {\r\n return this.readInt(`${ field }:int`)\r\n }\r\n\r\n fetchDouble(field = '') {\r\n const buffer = new ArrayBuffer(8)\r\n const intView = new Int32Array(buffer)\r\n const doubleView = new Float64Array(buffer)\r\n\r\n intView[0] = this.readInt(`${ field }:double[low]`),\r\n intView[1] = this.readInt(`${ field }:double[high]`)\r\n\r\n return doubleView[0]\r\n }\r\n\r\n fetchLong(field = '') {\r\n const iLow = this.readInt(`${ field }:long[low]`)\r\n const iHigh = this.readInt(`${ field }:long[high]`)\r\n\r\n const res = lshift32(iHigh, iLow)\r\n const longDec = bigint(iHigh)\r\n .shiftLeft(32)\r\n .add(bigint(iLow))\r\n .toString()\r\n // if (res!==longDec)\r\n // console.log(res, longDec, )\r\n return longDec\r\n }\r\n\r\n fetchBool(field = '') {\r\n const i = this.readInt(`${ field }:bool`)\r\n switch (i) {\r\n case 0x997275b5: return true\r\n case 0xbc799737: return false\r\n default: {\r\n this.offset -= 4\r\n return this.fetchObject('Object', field)\r\n }\r\n }\r\n }\r\n\r\n fetchString(field = '') {\r\n let len = this.byteView[this.offset++]\r\n\r\n if (len == 254) {\r\n len = this.byteView[this.offset++] |\r\n this.byteView[this.offset++] << 8 |\r\n this.byteView[this.offset++] << 16\r\n }\r\n\r\n let sUTF8 = ''\r\n for (let i = 0; i < len; i++) {\r\n sUTF8 += String.fromCharCode(this.byteView[this.offset++])\r\n }\r\n\r\n // Padding\r\n while (this.offset % 4) {\r\n this.offset++\r\n }\r\n let s\r\n try {\r\n s = decodeURIComponent(escape(sUTF8))\r\n } catch (e) {\r\n s = sUTF8\r\n }\r\n\r\n this.debug && console.log('<<<', s, `${ field }:string`)\r\n\r\n return s\r\n }\r\n\r\n fetchBytes(field = '') {\r\n let len = this.byteView[this.offset++]\r\n\r\n if (len == 254) {\r\n len = this.byteView[this.offset++] |\r\n this.byteView[this.offset++] << 8 |\r\n this.byteView[this.offset++] << 16\r\n }\r\n\r\n const bytes = this.byteView.subarray(this.offset, this.offset + len)\r\n this.offset += len\r\n\r\n // Padding\r\n while (this.offset % 4)\r\n this.offset++\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), `${ field }:bytes`)\r\n\r\n return bytes\r\n }\r\n\r\n fetchIntBytes(bits, typed, field = '') {\r\n if (bits % 32)\r\n throw new Error(`Invalid bits: ${ bits}`)\r\n\r\n const len = bits / 8\r\n if (typed) {\r\n const result = this.byteView.subarray(this.offset, this.offset + len)\r\n this.offset += len\r\n return result\r\n }\r\n\r\n const bytes = []\r\n for (let i = 0; i < len; i++) {\r\n bytes.push(this.byteView[this.offset++])\r\n }\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), `${ field }:int${ bits}`)\r\n\r\n return bytes\r\n }\r\n\r\n fetchRawBytes(len, typed, field = '') {\r\n if (len === false) {\r\n len = this.readInt(`${ field }_length`)\r\n if (len > this.byteView.byteLength)\r\n throw new Error(`Invalid raw bytes length: ${ len }, buffer len: ${ this.byteView.byteLength}`)\r\n }\r\n let bytes\r\n if (typed) {\r\n bytes = new Uint8Array(len)\r\n bytes.set(this.byteView.subarray(this.offset, this.offset + len))\r\n this.offset += len\r\n return bytes\r\n }\r\n\r\n bytes = []\r\n for (let i = 0; i < len; i++)\r\n bytes.push(this.byteView[this.offset++])\r\n\r\n this.debug && console.log('<<<', bytesToHex(bytes), field)\r\n\r\n return bytes\r\n }\r\n\r\n fetchObject(type, field) {\r\n switch (type) {\r\n case '#':\r\n case 'int':\r\n return this.fetchInt(field)\r\n case 'long':\r\n return this.fetchLong(field)\r\n case 'int128':\r\n return this.fetchIntBytes(128, false, field)\r\n case 'int256':\r\n return this.fetchIntBytes(256, false, field)\r\n case 'int512':\r\n return this.fetchIntBytes(512, false, field)\r\n case 'string':\r\n return this.fetchString(field)\r\n case 'bytes':\r\n return this.fetchBytes(field)\r\n case 'double':\r\n return this.fetchDouble(field)\r\n case 'Bool':\r\n return this.fetchBool(field)\r\n case 'true':\r\n return true\r\n }\r\n let fallback\r\n field = field || type || 'Object'\r\n const subpart = type.substr(0, 6)\r\n if (subpart === 'Vector' || subpart === 'vector') {\r\n if (type.charAt(0) === 'V') {\r\n const constructor = this.readInt(`${field}[id]`)\r\n const constructorCmp = uintToInt(constructor)\r\n\r\n if (constructorCmp === 0x3072cfa1) { // Gzip packed\r\n const compressed = this.fetchBytes(`${field}[packed_string]`)\r\n const uncompressed = gzipUncompress(compressed)\r\n const buffer = bytesToArrayBuffer(uncompressed)\r\n const newDeserializer = new Deserialization(buffer)\r\n\r\n return newDeserializer.fetchObject(type, field)\r\n }\r\n if (constructorCmp !== 0x1cb5c415)\r\n throw new Error(`Invalid vector constructor ${constructor}`)\r\n }\r\n const len = this.readInt(`${field}[count]`)\r\n const result = []\r\n if (len > 0) {\r\n const itemType = type.substr(7, type.length - 8) // for \"Vector<itemType>\"\r\n for (let i = 0; i < len; i++)\r\n result.push(this.fetchObject(itemType, `${field }[${ i }]`))\r\n }\r\n\r\n return result\r\n }\r\n\r\n const schema = this.mtproto\r\n ? mtApi\r\n : api\r\n let predicate = false\r\n let constructorData = false\r\n\r\n if (type.charAt(0) == '%') {\r\n const checkType = type.substr(1)\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].type == checkType) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData) {\r\n throw new Error(`Constructor not found for type: ${ type}`)\r\n }\r\n }\r\n else if (type.charAt(0) >= 97 && type.charAt(0) <= 122) {\r\n for (let i = 0; i < schema.constructors.length; i++) {\r\n if (schema.constructors[i].predicate == type) {\r\n constructorData = schema.constructors[i]\r\n break\r\n }\r\n }\r\n if (!constructorData)\r\n throw new Error(`Constructor not found for predicate: ${ type}`)\r\n } else {\r\n const constructor = this.readInt(`${field }[id]`)\r\n const constructorCmp = uintToInt(constructor)\r\n\r\n if (constructorCmp == 0x3072cfa1) { // Gzip packed\r\n const compressed = this.fetchBytes(`${field }[packed_string]`)\r\n const uncompressed = gzipUncompress(compressed)\r\n const buffer = bytesToArrayBuffer(uncompressed)\r\n const newDeserializer = new Deserialization(buffer)\r\n\r\n return newDeserializer.fetchObject(type, field)\r\n }\r\n\r\n let index = schema.constructorsIndex\r\n if (!index) {\r\n schema.constructorsIndex = index = {}\r\n for (let i = 0; i < schema.constructors.length; i++)\r\n index[schema.constructors[i].id] = i\r\n }\r\n let i = index[constructorCmp]\r\n if (i)\r\n constructorData = schema.constructors[i]\r\n\r\n fallback = false\r\n if (!constructorData && this.mtproto) {\r\n const schemaFallback = api\r\n for (i = 0; i < schemaFallback.constructors.length; i++) {\r\n if (schemaFallback.constructors[i].id == constructorCmp) {\r\n constructorData = schemaFallback.constructors[i]\r\n\r\n delete this.mtproto\r\n fallback = true\r\n break\r\n }\r\n }\r\n }\r\n if (!constructorData) {\r\n throw new Error(`Constructor not found: ${ constructor } ${ this.fetchInt() } ${ this.fetchInt()}`)\r\n }\r\n }\r\n\r\n predicate = constructorData.predicate\r\n\r\n const result = { '_': predicate }\r\n const overrideKey = (this.mtproto ? 'mt_' : '') + predicate\r\n\r\n if (this.override[overrideKey]) {\r\n this.override[overrideKey].apply(this, [result, `${field }[${ predicate }]`])\r\n } else {\r\n let param, isCond\r\n let condType, fieldBit\r\n let value\r\n const len = constructorData.params.length\r\n for (let i = 0; i < len; i++) {\r\n param = constructorData.params[i]\r\n type = param.type\r\n // if (type === '#' && isNil(result.pFlags))\r\n // result.pFlags = {}\r\n\r\n isCond = type.indexOf('?') !== -1\r\n if (isCond) {\r\n condType = type.split('?')\r\n fieldBit = condType[0].split('.')\r\n if (!(result[fieldBit[0]] & 1 << fieldBit[1]))\r\n continue\r\n type = condType[1]\r\n }\r\n const paramName = param.name\r\n value = this.fetchObject(type, `${field }[${ predicate }][${ paramName }]`)\r\n\r\n result[paramName] = value\r\n }\r\n }\r\n\r\n if (fallback)\r\n this.mtproto = true\r\n\r\n return result\r\n }\r\n\r\n getOffset() {\r\n return this.offset\r\n }\r\n\r\n fetchEnd() {\r\n if (this.offset !== this.byteView.length)\r\n throw new Error('Fetch end with non-empty buffer')\r\n return true\r\n }\r\n\r\n }\r\n\r\n return { Serialization, Deserialization }\r\n}\r\n\r\nexport default TL"]}
\No newline at end of file