UNPKG

45.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../source/tl.js"],"names":["isNode","is","isNil","type","rType","bigint","bigStringInt","uintToInt","intToUint","bytesToHex","gzipUncompress","bytesToArrayBuffer","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","divRem","divideAndRemainder","intValue","storeDouble","f","doubleView","Float64Array","s","undefined","sUTF8","unescape","encodeURIComponent","len","charCodeAt","storeBytes","bits","storeRawBytes","storeMethod","methodName","params","schema","methodData","methods","method","id","param","condType","fieldBit","indexOf","split","storeObject","name","obj","substr","itemType","toLowerCase","Object","predicate","isBare","constructorData","charAt","constructors","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","pFlags","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, bigStringInt, uintToInt, intToUint, bytesToHex,\r\n gzipUncompress, bytesToArrayBuffer } 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 divRem = bigStringInt(sLong).divideAndRemainder(bigint(0x100000000))\r\n\r\n this.writeInt(intToUint(divRem[1].intValue()), `${ field }:long[low]`)\r\n this.writeInt(intToUint(divRem[0].intValue()), `${ 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\r\n this.storeObject(params[param.name], type, `${methodName }[${ param.name }]`)\r\n }\r\n\r\n return methodData.type\r\n }\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 longDec = bigint(iHigh)\r\n .shiftLeft(32)\r\n .add(bigint(iLow))\r\n .toString()\r\n\r\n return longDec\r\n }\r\n\r\n fetchBool(field = '') {\r\n const i = this.readInt(`${ field }:bool`)\r\n if (i == 0x997275b5) {\r\n return true\r\n } else if (i == 0xbc799737) {\r\n return false\r\n }\r\n\r\n this.offset -= 4\r\n return this.fetchObject('Object', field)\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\r\n value = this.fetchObject(type, `${field }[${ predicate }][${ param.name }]`)\r\n\r\n if (isCond && type === 'true')\r\n result.pFlags[param.name] = value\r\n else\r\n result[param.name] = 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