@andrew_l/tl-pack
Version:
 <!-- omit in toc -->  <!-- omit in toc --> 
{"version":3,"file":"stream.mjs","sources":["../src/stream.ts"],"sourcesContent":["import {\n Transform,\n type TransformCallback,\n type TransformOptions,\n} from 'node:stream';\nimport { BinaryReader } from './BinaryReader';\nimport { BinaryWriter, type BinaryWriterOptions } from './BinaryWriter';\nimport { CORE_TYPES } from './constants';\n\nexport interface TLEncodeOptions extends BinaryWriterOptions {\n streamOptions?: TransformOptions;\n}\n\nexport class TLEncode extends Transform {\n writer: BinaryWriter;\n count: number;\n\n constructor(options?: TLEncodeOptions) {\n const opts = options || {};\n opts.streamOptions = {\n writableObjectMode: true,\n ...(opts.streamOptions || {}),\n };\n\n super(opts.streamOptions);\n\n const writer = new BinaryWriter(options);\n\n const customFlush = opts.streamOptions.flush;\n\n const VECTOR_TYPES = new Uint8Array(2);\n\n VECTOR_TYPES[0] = CORE_TYPES.VectorDynamic;\n VECTOR_TYPES[1] = CORE_TYPES.None;\n\n // push a byte about dynamic vector starting\n this.push(VECTOR_TYPES.subarray(0, 1));\n\n this._flush = callback => {\n // push a byte about dynamic vector ending\n this.push(VECTOR_TYPES.subarray(1, 2));\n\n if (customFlush) {\n customFlush.call(this, callback);\n } else {\n callback();\n }\n };\n\n this.writer = writer;\n this.count = 0;\n }\n\n _transform(\n chunk: any,\n encoding: BufferEncoding,\n callback: TransformCallback,\n ) {\n const buff = this.writer.encode(chunk);\n this.push(buff);\n this.count++;\n callback();\n }\n}\n\nexport class TLDecode extends Transform {\n reader: BinaryReader;\n private incompleteBuffer: Buffer | null;\n\n constructor(options?: TransformOptions) {\n if (!options) options = {};\n options.objectMode = true;\n super(options);\n\n this.incompleteBuffer = null;\n this.reader = new BinaryReader(new Uint8Array(8192));\n }\n\n _transform(\n chunk: any,\n encoding: BufferEncoding,\n callback: TransformCallback,\n ) {\n if (this.incompleteBuffer) {\n chunk = Buffer.concat([this.incompleteBuffer, chunk]);\n this.incompleteBuffer = null;\n }\n\n try {\n const value = this.reader.decode(chunk);\n return callback(null, value);\n } catch (err) {\n if ((err as any)?.incomplete) {\n this.incompleteBuffer = chunk;\n return callback();\n }\n\n return callback(err as any);\n }\n }\n}\n"],"names":[],"mappings":"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"}