{"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":";;;;;;;AAaO,MAAM,iBAAiBA,qBAAA,CAAU;AAAA,EACtC,MAAA;AAAA,EACA,KAAA;AAAA,EAEA,YAAY,OAAA,EAA2B;AACrC,IAAA,MAAM,IAAA,GAAO,WAAW,EAAC;AACzB,IAAA,IAAA,CAAK,aAAA,GAAgB;AAAA,MACnB,kBAAA,EAAoB,IAAA;AAAA,MACpB,GAAI,IAAA,CAAK,aAAA,IAAiB;AAAC,KAC7B;AAEA,IAAA,KAAA,CAAM,KAAK,aAAa,CAAA;AAExB,IAAA,MAAM,MAAA,GAAS,IAAIC,yBAAA,CAAa,OAAO,CAAA;AAEvC,IAAA,MAAM,WAAA,GAAc,KAAK,aAAA,CAAc,KAAA;AAEvC,IAAA,MAAM,YAAA,GAAe,IAAI,UAAA,CAAW,CAAC,CAAA;AAErC,IAAA,YAAA,CAAa,CAAC,IAAIC,uBAAA,CAAW,aAAA;AAC7B,IAAA,YAAA,CAAa,CAAC,IAAIA,uBAAA,CAAW,IAAA;AAG7B,IAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,CAAA,EAAG,CAAC,CAAC,CAAA;AAErC,IAAA,IAAA,CAAK,SAAS,CAAA,QAAA,KAAY;AAExB,MAAA,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,CAAA,EAAG,CAAC,CAAC,CAAA;AAErC,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,WAAA,CAAY,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,QAAA,EAAS;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AAAA,EACf;AAAA,EAEA,UAAA,CACE,KAAA,EACA,QAAA,EACA,QAAA,EACA;AACA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACrC,IAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AACd,IAAA,IAAA,CAAK,KAAA,EAAA;AACL,IAAA,QAAA,EAAS;AAAA,EACX;AACF;AAEO,MAAM,iBAAiBF,qBAAA,CAAU;AAAA,EACtC,MAAA;AAAA,EACQ,gBAAA;AAAA,EAER,YAAY,OAAA,EAA4B;AACtC,IAAA,IAAI,CAAC,OAAA,EAAS,OAAA,GAAU,EAAC;AACzB,IAAA,OAAA,CAAQ,UAAA,GAAa,IAAA;AACrB,IAAA,KAAA,CAAM,OAAO,CAAA;AAEb,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AACxB,IAAA,IAAA,CAAK,SAAS,IAAIG,yBAAA,CAAa,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,EACrD;AAAA,EAEA,UAAA,CACE,KAAA,EACA,QAAA,EACA,QAAA,EACA;AACA,IAAA,IAAI,KAAK,gBAAA,EAAkB;AACzB,MAAA,KAAA,GAAQ,OAAO,MAAA,CAAO,CAAC,IAAA,CAAK,gBAAA,EAAkB,KAAK,CAAC,CAAA;AACpD,MAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AAAA,IAC1B;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AACtC,MAAA,OAAO,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,IAC7B,SAAS,GAAA,EAAK;AACZ,MAAA,IAAK,KAAa,UAAA,EAAY;AAC5B,QAAA,IAAA,CAAK,gBAAA,GAAmB,KAAA;AACxB,QAAA,OAAO,QAAA,EAAS;AAAA,MAClB;AAEA,MAAA,OAAO,SAAS,GAAU,CAAA;AAAA,IAC5B;AAAA,EACF;AACF;;;;;"}