{"mappings":"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","sources":["lib/binarypack.ts","lib/bufferbuilder.ts"],"sourcesContent":["import { BufferBuilder } from \"./bufferbuilder\";\n\nexport type Packable =\n\t| null\n\t| undefined\n\t| string\n\t| number\n\t| boolean\n\t| Date\n\t| ArrayBuffer\n\t| Blob\n\t| Array<Packable>\n\t| { [key: string]: Packable }\n\t| ({ BYTES_PER_ELEMENT: number } & ArrayBufferView);\nexport type Unpackable =\n\t| null\n\t| undefined\n\t| string\n\t| number\n\t| boolean\n\t| ArrayBuffer\n\t| Array<Unpackable>\n\t| { [key: string]: Unpackable };\n\nexport function unpack<T extends Unpackable>(data: ArrayBuffer) {\n\tconst unpacker = new Unpacker(data);\n\treturn unpacker.unpack() as T;\n}\n\nexport function pack(data: Packable) {\n\tconst packer = new Packer();\n\tconst res = packer.pack(data);\n\tif (res instanceof Promise) {\n\t\treturn res.then(() => packer.getBuffer());\n\t}\n\treturn packer.getBuffer();\n}\n\nclass Unpacker {\n\tprivate index: number;\n\tprivate readonly dataBuffer: ArrayBuffer;\n\tprivate readonly dataView: Uint8Array;\n\tprivate readonly length: number;\n\n\tconstructor(data: ArrayBuffer) {\n\t\tthis.index = 0;\n\t\tthis.dataBuffer = data;\n\t\tthis.dataView = new Uint8Array(this.dataBuffer);\n\t\tthis.length = this.dataBuffer.byteLength;\n\t}\n\n\tunpack(): Unpackable {\n\t\tconst type = this.unpack_uint8();\n\t\tif (type < 0x80) {\n\t\t\treturn type;\n\t\t} else if ((type ^ 0xe0) < 0x20) {\n\t\t\treturn (type ^ 0xe0) - 0x20;\n\t\t}\n\n\t\tlet size;\n\t\tif ((size = type ^ 0xa0) <= 0x0f) {\n\t\t\treturn this.unpack_raw(size);\n\t\t} else if ((size = type ^ 0xb0) <= 0x0f) {\n\t\t\treturn this.unpack_string(size);\n\t\t} else if ((size = type ^ 0x90) <= 0x0f) {\n\t\t\treturn this.unpack_array(size);\n\t\t} else if ((size = type ^ 0x80) <= 0x0f) {\n\t\t\treturn this.unpack_map(size);\n\t\t}\n\n\t\tswitch (type) {\n\t\t\tcase 0xc0:\n\t\t\t\treturn null;\n\t\t\tcase 0xc1:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xc2:\n\t\t\t\treturn false;\n\t\t\tcase 0xc3:\n\t\t\t\treturn true;\n\t\t\tcase 0xca:\n\t\t\t\treturn this.unpack_float();\n\t\t\tcase 0xcb:\n\t\t\t\treturn this.unpack_double();\n\t\t\tcase 0xcc:\n\t\t\t\treturn this.unpack_uint8();\n\t\t\tcase 0xcd:\n\t\t\t\treturn this.unpack_uint16();\n\t\t\tcase 0xce:\n\t\t\t\treturn this.unpack_uint32();\n\t\t\tcase 0xcf:\n\t\t\t\treturn this.unpack_uint64();\n\t\t\tcase 0xd0:\n\t\t\t\treturn this.unpack_int8();\n\t\t\tcase 0xd1:\n\t\t\t\treturn this.unpack_int16();\n\t\t\tcase 0xd2:\n\t\t\t\treturn this.unpack_int32();\n\t\t\tcase 0xd3:\n\t\t\t\treturn this.unpack_int64();\n\t\t\tcase 0xd4:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd5:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd6:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd7:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd8:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_string(size);\n\t\t\tcase 0xd9:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_string(size);\n\t\t\tcase 0xda:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_raw(size);\n\t\t\tcase 0xdb:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_raw(size);\n\t\t\tcase 0xdc:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_array(size);\n\t\t\tcase 0xdd:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_array(size);\n\t\t\tcase 0xde:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_map(size);\n\t\t\tcase 0xdf:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_map(size);\n\t\t}\n\t}\n\n\tunpack_uint8() {\n\t\tconst byte = this.dataView[this.index] & 0xff;\n\t\tthis.index++;\n\t\treturn byte;\n\t}\n\n\tunpack_uint16() {\n\t\tconst bytes = this.read(2);\n\t\tconst uint16 = (bytes[0] & 0xff) * 256 + (bytes[1] & 0xff);\n\t\tthis.index += 2;\n\t\treturn uint16;\n\t}\n\n\tunpack_uint32() {\n\t\tconst bytes = this.read(4);\n\t\tconst uint32 =\n\t\t\t((bytes[0] * 256 + bytes[1]) * 256 + bytes[2]) * 256 + bytes[3];\n\t\tthis.index += 4;\n\t\treturn uint32;\n\t}\n\n\tunpack_uint64() {\n\t\tconst bytes = this.read(8);\n\t\tconst uint64 =\n\t\t\t((((((bytes[0] * 256 + bytes[1]) * 256 + bytes[2]) * 256 + bytes[3]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[4]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[5]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[6]) *\n\t\t\t\t256 +\n\t\t\tbytes[7];\n\t\tthis.index += 8;\n\t\treturn uint64;\n\t}\n\n\tunpack_int8() {\n\t\tconst uint8 = this.unpack_uint8();\n\t\treturn uint8 < 0x80 ? uint8 : uint8 - (1 << 8);\n\t}\n\n\tunpack_int16() {\n\t\tconst uint16 = this.unpack_uint16();\n\t\treturn uint16 < 0x8000 ? uint16 : uint16 - (1 << 16);\n\t}\n\n\tunpack_int32() {\n\t\tconst uint32 = this.unpack_uint32();\n\t\treturn uint32 < 2 ** 31 ? uint32 : uint32 - 2 ** 32;\n\t}\n\n\tunpack_int64() {\n\t\tconst uint64 = this.unpack_uint64();\n\t\treturn uint64 < 2 ** 63 ? uint64 : uint64 - 2 ** 64;\n\t}\n\n\tunpack_raw(size: number) {\n\t\tif (this.length < this.index + size) {\n\t\t\tthrow new Error(\n\t\t\t\t`BinaryPackFailure: index is out of range ${this.index} ${size} ${this.length}`,\n\t\t\t);\n\t\t}\n\t\tconst buf = this.dataBuffer.slice(this.index, this.index + size);\n\t\tthis.index += size;\n\n\t\treturn buf;\n\t}\n\n\tunpack_string(size: number) {\n\t\tconst bytes = this.read(size);\n\t\tlet i = 0;\n\t\tlet str = \"\";\n\t\tlet c;\n\t\tlet code;\n\n\t\twhile (i < size) {\n\t\t\tc = bytes[i];\n\t\t\t// The length of a UTF-8 sequence is specified in the first byte:\n\t\t\t// 0xxxxxxx means length 1,\n\t\t\t// 110xxxxx means length 2,\n\t\t\t// 1110xxxx means length 3,\n\t\t\t// 11110xxx means length 4.\n\t\t\t// 10xxxxxx is for non-initial bytes.\n\t\t\tif (c < 0xa0) {\n\t\t\t\t// One-byte sequence: bits 0xxxxxxx\n\t\t\t\tcode = c;\n\t\t\t\ti++;\n\t\t\t} else if ((c ^ 0xc0) < 0x20) {\n\t\t\t\t// Two-byte sequence: bits 110xxxxx 10xxxxxx\n\t\t\t\tcode = ((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f);\n\t\t\t\ti += 2;\n\t\t\t} else if ((c ^ 0xe0) < 0x10) {\n\t\t\t\t// Three-byte sequence: bits 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tcode =\n\t\t\t\t\t((c & 0x0f) << 12) |\n\t\t\t\t\t((bytes[i + 1] & 0x3f) << 6) |\n\t\t\t\t\t(bytes[i + 2] & 0x3f);\n\t\t\t\ti += 3;\n\t\t\t} else {\n\t\t\t\t// Four-byte sequence: bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tcode =\n\t\t\t\t\t((c & 0x07) << 18) |\n\t\t\t\t\t((bytes[i + 1] & 0x3f) << 12) |\n\t\t\t\t\t((bytes[i + 2] & 0x3f) << 6) |\n\t\t\t\t\t(bytes[i + 3] & 0x3f);\n\t\t\t\ti += 4;\n\t\t\t}\n\t\t\tstr += String.fromCodePoint(code);\n\t\t}\n\n\t\tthis.index += size;\n\t\treturn str;\n\t}\n\n\tunpack_array(size: number) {\n\t\tconst objects = new Array<Unpackable>(size);\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tobjects[i] = this.unpack();\n\t\t}\n\t\treturn objects;\n\t}\n\n\tunpack_map(size: number) {\n\t\tconst map: { [key: string]: Unpackable } = {};\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tconst key = this.unpack() as string;\n\t\t\tmap[key] = this.unpack();\n\t\t}\n\t\treturn map;\n\t}\n\n\tunpack_float() {\n\t\tconst uint32 = this.unpack_uint32();\n\t\tconst sign = uint32 >> 31;\n\t\tconst exp = ((uint32 >> 23) & 0xff) - 127;\n\t\tconst fraction = (uint32 & 0x7fffff) | 0x800000;\n\t\treturn (sign === 0 ? 1 : -1) * fraction * 2 ** (exp - 23);\n\t}\n\n\tunpack_double() {\n\t\tconst h32 = this.unpack_uint32();\n\t\tconst l32 = this.unpack_uint32();\n\t\tconst sign = h32 >> 31;\n\t\tconst exp = ((h32 >> 20) & 0x7ff) - 1023;\n\t\tconst hfrac = (h32 & 0xfffff) | 0x100000;\n\t\tconst frac = hfrac * 2 ** (exp - 20) + l32 * 2 ** (exp - 52);\n\t\treturn (sign === 0 ? 1 : -1) * frac;\n\t}\n\n\tread(length: number) {\n\t\tconst j = this.index;\n\t\tif (j + length <= this.length) {\n\t\t\treturn this.dataView.subarray(j, j + length);\n\t\t} else {\n\t\t\tthrow new Error(\"BinaryPackFailure: read index out of range\");\n\t\t}\n\t}\n}\n\nexport class Packer {\n\tprivate _bufferBuilder = new BufferBuilder();\n\tprivate _textEncoder = new TextEncoder();\n\n\tgetBuffer() {\n\t\treturn this._bufferBuilder.toArrayBuffer();\n\t}\n\n\tpack(value: Packable) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.pack_string(value);\n\t\t} else if (typeof value === \"number\") {\n\t\t\tif (Math.floor(value) === value) {\n\t\t\t\tthis.pack_integer(value);\n\t\t\t} else {\n\t\t\t\tthis.pack_double(value);\n\t\t\t}\n\t\t} else if (typeof value === \"boolean\") {\n\t\t\tif (value === true) {\n\t\t\t\tthis._bufferBuilder.append(0xc3);\n\t\t\t} else if (value === false) {\n\t\t\t\tthis._bufferBuilder.append(0xc2);\n\t\t\t}\n\t\t} else if (value === undefined) {\n\t\t\tthis._bufferBuilder.append(0xc0);\n\t\t} else if (typeof value === \"object\") {\n\t\t\tif (value === null) {\n\t\t\t\tthis._bufferBuilder.append(0xc0);\n\t\t\t} else {\n\t\t\t\tconst constructor = value.constructor;\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\tconst res = this.pack_array(value);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => this._bufferBuilder.flush());\n\t\t\t\t\t}\n\t\t\t\t} else if (value instanceof ArrayBuffer) {\n\t\t\t\t\tthis.pack_bin(new Uint8Array(value));\n\t\t\t\t} else if (\"BYTES_PER_ELEMENT\" in value) {\n\t\t\t\t\tconst v = value as unknown as DataView;\n\t\t\t\t\tthis.pack_bin(new Uint8Array(v.buffer, v.byteOffset, v.byteLength));\n\t\t\t\t} else if (value instanceof Date) {\n\t\t\t\t\tthis.pack_string(value.toString());\n\t\t\t\t} else if (value instanceof Blob) {\n\t\t\t\t\treturn value.arrayBuffer().then((buffer) => {\n\t\t\t\t\t\tthis.pack_bin(new Uint8Array(buffer));\n\t\t\t\t\t\tthis._bufferBuilder.flush();\n\t\t\t\t\t});\n\t\t\t\t\t// this.pack_bin(new Uint8Array(await value.arrayBuffer()));\n\t\t\t\t} else if (\n\t\t\t\t\tconstructor == Object ||\n\t\t\t\t\tconstructor.toString().startsWith(\"class\")\n\t\t\t\t) {\n\t\t\t\t\tconst res = this.pack_object(value);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => this._bufferBuilder.flush());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Type \"${constructor.toString()}\" not yet supported`);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Type \"${typeof value}\" not yet supported`);\n\t\t}\n\t\tthis._bufferBuilder.flush();\n\t}\n\n\tpack_bin(blob: Uint8Array) {\n\t\tconst length = blob.length;\n\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0xa0 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xda);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdb);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\t\tthis._bufferBuilder.append_buffer(blob);\n\t}\n\n\tpack_string(str: string) {\n\t\tconst encoded = this._textEncoder.encode(str);\n\t\tconst length = encoded.length;\n\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0xb0 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xd8);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xd9);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\t\tthis._bufferBuilder.append_buffer(encoded);\n\t}\n\n\tpack_array(ary: Packable[]) {\n\t\tconst length = ary.length;\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0x90 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xdc);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdd);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\n\t\tconst packNext = (index: number): Promise<void> | void => {\n\t\t\tif (index < length) {\n\t\t\t\tconst res = this.pack(ary[index]);\n\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\treturn res.then(() => packNext(index + 1));\n\t\t\t\t}\n\t\t\t\treturn packNext(index + 1);\n\t\t\t}\n\t\t};\n\n\t\treturn packNext(0);\n\t}\n\n\tpack_integer(num: number) {\n\t\tif (num >= -0x20 && num <= 0x7f) {\n\t\t\tthis._bufferBuilder.append(num & 0xff);\n\t\t} else if (num >= 0x00 && num <= 0xff) {\n\t\t\tthis._bufferBuilder.append(0xcc);\n\t\t\tthis.pack_uint8(num);\n\t\t} else if (num >= -0x80 && num <= 0x7f) {\n\t\t\tthis._bufferBuilder.append(0xd0);\n\t\t\tthis.pack_int8(num);\n\t\t} else if (num >= 0x0000 && num <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xcd);\n\t\t\tthis.pack_uint16(num);\n\t\t} else if (num >= -0x8000 && num <= 0x7fff) {\n\t\t\tthis._bufferBuilder.append(0xd1);\n\t\t\tthis.pack_int16(num);\n\t\t} else if (num >= 0x00000000 && num <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xce);\n\t\t\tthis.pack_uint32(num);\n\t\t} else if (num >= -0x80000000 && num <= 0x7fffffff) {\n\t\t\tthis._bufferBuilder.append(0xd2);\n\t\t\tthis.pack_int32(num);\n\t\t} else if (num >= -0x8000000000000000 && num <= 0x7fffffffffffffff) {\n\t\t\tthis._bufferBuilder.append(0xd3);\n\t\t\tthis.pack_int64(num);\n\t\t} else if (num >= 0x0000000000000000 && num <= 0xffffffffffffffff) {\n\t\t\tthis._bufferBuilder.append(0xcf);\n\t\t\tthis.pack_uint64(num);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid integer\");\n\t\t}\n\t}\n\n\tpack_double(num: number) {\n\t\tlet sign = 0;\n\t\tif (num < 0) {\n\t\t\tsign = 1;\n\t\t\tnum = -num;\n\t\t}\n\t\tconst exp = Math.floor(Math.log(num) / Math.LN2);\n\t\tconst frac0 = num / 2 ** exp - 1;\n\t\tconst frac1 = Math.floor(frac0 * 2 ** 52);\n\t\tconst b32 = 2 ** 32;\n\t\tconst h32 =\n\t\t\t(sign << 31) | ((exp + 1023) << 20) | ((frac1 / b32) & 0x0fffff);\n\t\tconst l32 = frac1 % b32;\n\t\tthis._bufferBuilder.append(0xcb);\n\t\tthis.pack_int32(h32);\n\t\tthis.pack_int32(l32);\n\t}\n\n\tpack_object(obj: { [key: string]: Packable }) {\n\t\tconst keys = Object.keys(obj);\n\t\tconst length = keys.length;\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0x80 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xde);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdf);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\n\t\tconst packNext = (index: number): Promise<void> | void => {\n\t\t\tif (index < keys.length) {\n\t\t\t\tconst prop = keys[index];\n\t\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\t\tthis.pack(prop);\n\t\t\t\t\tconst res = this.pack(obj[prop]);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => packNext(index + 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn packNext(index + 1);\n\t\t\t}\n\t\t};\n\n\t\treturn packNext(0);\n\t}\n\n\tpack_uint8(num: number) {\n\t\tthis._bufferBuilder.append(num);\n\t}\n\n\tpack_uint16(num: number) {\n\t\tthis._bufferBuilder.append(num >> 8);\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_uint32(num: number) {\n\t\tconst n = num & 0xffffffff;\n\t\tthis._bufferBuilder.append((n & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((n & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((n & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(n & 0x000000ff);\n\t}\n\n\tpack_uint64(num: number) {\n\t\tconst high = num / 2 ** 32;\n\t\tconst low = num % 2 ** 32;\n\t\tthis._bufferBuilder.append((high & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((high & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((high & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(high & 0x000000ff);\n\t\tthis._bufferBuilder.append((low & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((low & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((low & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(low & 0x000000ff);\n\t}\n\n\tpack_int8(num: number) {\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_int16(num: number) {\n\t\tthis._bufferBuilder.append((num & 0xff00) >> 8);\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_int32(num: number) {\n\t\tthis._bufferBuilder.append((num >>> 24) & 0xff);\n\t\tthis._bufferBuilder.append((num & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((num & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(num & 0x000000ff);\n\t}\n\n\tpack_int64(num: number) {\n\t\tconst high = Math.floor(num / 2 ** 32);\n\t\tconst low = num % 2 ** 32;\n\t\tthis._bufferBuilder.append((high & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((high & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((high & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(high & 0x000000ff);\n\t\tthis._bufferBuilder.append((low & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((low & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((low & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(low & 0x000000ff);\n\t}\n}\n","class BufferBuilder {\n\tprivate _pieces: number[];\n\tprivate readonly _parts: ArrayBufferView[];\n\n\tconstructor() {\n\t\tthis._pieces = [];\n\t\tthis._parts = [];\n\t}\n\n\tappend_buffer(data: ArrayBufferView) {\n\t\tthis.flush();\n\t\tthis._parts.push(data);\n\t}\n\n\tappend(data: number) {\n\t\tthis._pieces.push(data);\n\t}\n\n\tflush() {\n\t\tif (this._pieces.length > 0) {\n\t\t\tconst buf = new Uint8Array(this._pieces);\n\t\t\tthis._parts.push(buf);\n\t\t\tthis._pieces = [];\n\t\t}\n\t}\n\n\tprivate encoder = new TextEncoder();\n\n\tpublic toArrayBuffer() {\n\t\tconst buffer = [];\n\t\tfor (const part of this._parts) {\n\t\t\tbuffer.push(part);\n\t\t}\n\t\treturn concatArrayBuffers(buffer).buffer;\n\t}\n}\n\nexport { BufferBuilder };\n\nfunction concatArrayBuffers(bufs: ArrayBufferView[]) {\n\tlet size = 0;\n\tfor (const buf of bufs) {\n\t\tsize += buf.byteLength;\n\t}\n\tconst result = new Uint8Array(size);\n\tlet offset = 0;\n\tfor (const buf of bufs) {\n\t\tconst view = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n\t\tresult.set(view, offset);\n\t\toffset += buf.byteLength;\n\t}\n\treturn result;\n}\n"],"names":[],"version":3,"file":"binarypack.mjs.map","sourceRoot":"../"}