@hazae41/binary
Version:
Zero-copy binary data types
1 lines • 2.06 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../../../src/mods/binary/opaque/index.ts"],"sourcesContent":["import { Cursor } from \"@hazae41/cursor\";\nimport { Lengthed } from \"@hazae41/lengthed\";\nimport { Readable } from \"mods/binary/readable/index.js\";\nimport { Writable } from \"../writable/index.js\";\n\nexport class Opaque<N extends number = number> {\n\n constructor(\n readonly bytes: Uint8Array & Lengthed<N>\n ) { }\n\n sizeOrThrow() {\n return this.bytes.length\n }\n\n writeOrThrow(cursor: Cursor) {\n cursor.writeOrThrow(this.bytes)\n }\n\n readIntoOrThrow<T extends Readable.Infer<T>>(readable: T): Readable.Output<T> {\n return Readable.readFromBytesOrThrow(readable, this.bytes)\n }\n\n cloneOrThrow() {\n return new Opaque(new Uint8Array(this.bytes) as Uint8Array & Lengthed<N>)\n }\n\n}\nexport namespace Opaque {\n\n export function readOrThrow(cursor: Cursor) {\n return new Opaque(cursor.readOrThrow(cursor.remaining))\n }\n\n export function writeFromOrThrow(writable: Writable): Opaque {\n if (writable instanceof Opaque)\n return writable\n return new Opaque(Writable.writeToBytesOrThrow(writable))\n }\n\n}"],"names":["Readable","Writable"],"mappings":";;;;;MAKa,MAAM,CAAA;AAGN,IAAA,KAAA;AADX,IAAA,WAAA,CACW,KAA+B,EAAA;QAA/B,IAAA,CAAA,KAAK,GAAL,KAAK;;IAGhB,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;;AAG1B,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGjC,IAAA,eAAe,CAA8B,QAAW,EAAA;QACtD,OAAOA,gBAAQ,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;;IAG5D,YAAY,GAAA;QACV,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAA6B,CAAC;;AAG5E;AACD,CAAA,UAAiB,MAAM,EAAA;IAErB,SAAgB,WAAW,CAAC,MAAc,EAAA;AACxC,QAAA,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;AADzC,IAAA,MAAA,CAAA,WAAW,cAE1B;IAED,SAAgB,gBAAgB,CAAC,QAAkB,EAAA;QACjD,IAAI,QAAQ,YAAY,MAAM;AAC5B,YAAA,OAAO,QAAQ;QACjB,OAAO,IAAI,MAAM,CAACC,cAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;;AAH3C,IAAA,MAAA,CAAA,gBAAgB,mBAI/B;AAEH,CAAC,EAZgB,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;;;;"}