{"version":3,"file":"stream.cjs","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":["Transform","BinaryWriter","CORE_TYPES","BinaryReader"],"mappings":"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"}