@andrew_l/tl-pack
Version:
Another implementation of binary serialization.
1 lines • 3.04 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../src/extension.ts","../src/index.ts"],"sourcesContent":["import { assert } from '@andrew_l/toolkit';\nimport type { BinaryReader } from './BinaryReader';\nimport type { BinaryWriter } from './BinaryWriter';\n\nexport type EncodeHandler<T = any> = (this: BinaryWriter, value: T) => void;\n\nexport type DecodeHandler<T = any> = (this: BinaryReader) => T;\n\nexport interface TLExtension<T = any> {\n token: number;\n encode: EncodeHandler<T>;\n decode: DecodeHandler<T>;\n}\n\nexport function createExtension(\n token: number,\n { encode, decode }: { encode: EncodeHandler; decode: DecodeHandler },\n): TLExtension {\n assert.ok(Math.trunc(token) === token, ' Token must be integer value.');\n\n assert.ok(\n token === -1 || (token >= 0 && token <= 255),\n 'Token must be a 8 bit number. (0 - 255)',\n );\n\n assert.ok(token === -1 || token >= 35, 'Tokens from 0 to 34 reserved.');\n\n return {\n token,\n encode,\n decode,\n };\n}\n","import { BinaryReader, type BinaryReaderOptions } from './BinaryReader';\nimport { BinaryWriter, type BinaryWriterOptions } from './BinaryWriter';\n\nexport { BinaryReader, type BinaryReaderOptions } from './BinaryReader';\nexport { BinaryWriter, type BinaryWriterOptions } from './BinaryWriter';\nexport * from './constants';\nexport { createDictionary } from './dictionary';\nexport {\n createExtension,\n type DecodeHandler,\n type EncodeHandler,\n type TLExtension,\n} from './extension';\n\n/**\n * Encode any value into `Uint8Array`\n *\n * @example\n * const buffer = tlEncode(new Date(0));\n *\n * console.log(buffer); // Uint8Array([5, 0, 0, 0, 0, 0, 0, 0, 0])\n *\n * @group Main\n */\nexport function tlEncode(\n value: unknown,\n opts?: BinaryWriterOptions,\n): Uint8Array {\n return new BinaryWriter(opts).writeObject(value).getBuffer();\n}\n\n/**\n * Decode value from `Uint8Array`\n *\n * @example\n * const buffer = new Uint8Array([5, 0, 0, 0, 0, 0, 0, 0, 0]);\n * const value = tlDecode(buffer);\n *\n * console.log(value); // Thu Jan 01 1970 01:00:00 GMT+0100 (Central European Standard Time)\n *\n * @group Main\n */\nexport function tlDecode<T = any>(\n buffer: Uint8Array,\n opts?: BinaryReaderOptions,\n): T {\n return new BinaryReader(buffer, opts).readObject();\n}\n\nexport * from './Structure.js';\n"],"names":["assert","BinaryWriter","BinaryReader"],"mappings":";;;;;;AAcO,SAAS,eAAA,CACd,KAAA,EACA,EAAE,MAAA,EAAQ,QAAO,EACJ;AACb,EAAAA,cAAA,CAAO,GAAG,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,KAAM,OAAO,+BAA+B,CAAA;AAEtE,EAAAA,cAAA,CAAO,EAAA;AAAA,IACL,KAAA,KAAU,EAAA,IAAO,KAAA,IAAS,CAAA,IAAK,KAAA,IAAS,GAAA;AAAA,IACxC;AAAA,GACF;AAEA,EAAAA,cAAA,CAAO,EAAA,CAAG,KAAA,KAAU,EAAA,IAAM,KAAA,IAAS,IAAI,+BAA+B,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;;ACRO,SAAS,QAAA,CACd,OACA,IAAA,EACY;AACZ,EAAA,OAAO,IAAIC,yBAAA,CAAa,IAAI,EAAE,WAAA,CAAY,KAAK,EAAE,SAAA,EAAU;AAC7D;AAaO,SAAS,QAAA,CACd,QACA,IAAA,EACG;AACH,EAAA,OAAO,IAAIC,yBAAA,CAAa,MAAA,EAAQ,IAAI,EAAE,UAAA,EAAW;AACnD;;;;;;;;;;;;;"}