{"version":3,"file":"index.mjs","sources":["../../../../../src/libs/tlv/index.ts"],"sourcesContent":["import { Opaque, Readable } from \"@hazae41/binary\"\nimport { Cursor } from \"@hazae41/cursor\"\nimport { Struct } from \"libs/struct/index.js\"\n\nexport class TLV<T extends number = number, V extends Struct = Struct> {\n\n  constructor(\n    readonly type: T,\n    readonly value: V\n  ) { }\n\n  sizeOrThrow() {\n    return 1 + 4 + this.value.sizeOrThrow()\n  }\n\n  writeOrThrow(cursor: Cursor) {\n    cursor.writeUint8OrThrow(this.type)\n    cursor.writeUint32OrThrow(this.value.sizeOrThrow(), true)\n    this.value.writeOrThrow(cursor)\n  }\n\n  cloneOrThrow() {\n    return new TLV(this.type, this.value.cloneOrThrow())\n  }\n\n  readIntoOrThrow<W extends Struct>(this: TLV<T, Opaque>, readable: Readable<W>): TLV<T, W> {\n    return new TLV(this.type, this.value.readIntoOrThrow(readable))\n  }\n\n}\n\nexport namespace TLV {\n\n  export namespace Empty {\n\n    export const type = 0x00\n\n    export function sizeOrThrow() {\n      return 1 + 4\n    }\n\n    export function writeOrThrow(cursor: Cursor) {\n      cursor.writeUint8OrThrow(type)\n      cursor.writeUint32OrThrow(0, true)\n    }\n\n  }\n\n  export function readOrThrow(cursor: Cursor) {\n    const type = cursor.readUint8OrThrow()\n    const length = cursor.readUint32OrThrow(true)\n    const bytes = new Opaque(cursor.readOrThrow(length))\n\n    return new TLV(type, bytes)\n  }\n\n}"],"names":[],"mappings":";;MAIa,GAAG,CAAA;AAGH,IAAA,IAAA;AACA,IAAA,KAAA;IAFX,WAAA,CACW,IAAO,EACP,KAAQ,EAAA;QADR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;IACZ;IAEJ,WAAW,GAAA;QACT,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;IACzC;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;IACjC;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACtD;AAEA,IAAA,eAAe,CAAyC,QAAqB,EAAA;AAC3E,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACjE;AAED;AAED,CAAA,UAAiB,GAAG,EAAA;AAElB,IAAA,CAAA,UAAiB,KAAK,EAAA;QAEP,KAAA,CAAA,IAAI,GAAG,IAAI;AAExB,QAAA,SAAgB,WAAW,GAAA;YACzB,OAAO,CAAC,GAAG,CAAC;QACd;AAFgB,QAAA,KAAA,CAAA,WAAW,cAE1B;QAED,SAAgB,YAAY,CAAC,MAAc,EAAA;AACzC,YAAA,MAAM,CAAC,iBAAiB,CAAC,KAAA,CAAA,IAAI,CAAC;AAC9B,YAAA,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC;QACpC;AAHgB,QAAA,KAAA,CAAA,YAAY,eAG3B;AAEH,IAAA,CAAC,EAbgB,GAAA,CAAA,KAAK,KAAL,SAAK,GAAA,EAAA,CAAA,CAAA;IAetB,SAAgB,WAAW,CAAC,MAAc,EAAA;AACxC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAEpD,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7B;AANgB,IAAA,GAAA,CAAA,WAAW,cAM1B;AAEH,CAAC,EAzBgB,GAAG,KAAH,GAAG,GAAA,EAAA,CAAA,CAAA;;;;"}