+5
-5
@@ -1,2 +0,1 @@ | ||
| /// <reference lib="dom" /> | ||
| interface OnUnsupported { | ||
@@ -13,3 +12,3 @@ (value: unknown): unknown; | ||
| constructor(data: any, onUnsupported?: OnUnsupported | null); | ||
| process(): Uint8Array; | ||
| process(): Uint8Array<ArrayBufferLike>; | ||
| parse(value: any, hint?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"): void; | ||
@@ -51,3 +50,2 @@ protected handleUnsupported(value: unknown, hint: string): void; | ||
| /// <reference lib="dom" /> | ||
| declare class Deserializer { | ||
@@ -168,3 +166,5 @@ offset: number; | ||
| declare namespace TypedArrays { | ||
| const constructors: (new <T extends TypedArray>(...args: any) => T)[]; | ||
| const constructors: { | ||
| new <T extends TypedArray>(...args: any): T; | ||
| }[]; | ||
| const typedArrayTags: Map<string, BinaryTokens>; | ||
@@ -174,3 +174,3 @@ const typedArrayTagToConstructor: Map<BinaryTokens, new <T extends TypedArray>(...args: any) => T>; | ||
| declare function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported): Uint8Array; | ||
| declare function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported): Uint8Array<ArrayBufferLike>; | ||
| declare function deserialize<T = unknown>(buffer: Uint8Array, offset?: number): T; | ||
@@ -177,0 +177,0 @@ declare function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset?: number): { |
+5
-5
@@ -1,2 +0,1 @@ | ||
| /// <reference lib="dom" /> | ||
| interface OnUnsupported { | ||
@@ -13,3 +12,3 @@ (value: unknown): unknown; | ||
| constructor(data: any, onUnsupported?: OnUnsupported | null); | ||
| process(): Uint8Array; | ||
| process(): Uint8Array<ArrayBufferLike>; | ||
| parse(value: any, hint?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"): void; | ||
@@ -51,3 +50,2 @@ protected handleUnsupported(value: unknown, hint: string): void; | ||
| /// <reference lib="dom" /> | ||
| declare class Deserializer { | ||
@@ -168,3 +166,5 @@ offset: number; | ||
| declare namespace TypedArrays { | ||
| const constructors: (new <T extends TypedArray>(...args: any) => T)[]; | ||
| const constructors: { | ||
| new <T extends TypedArray>(...args: any): T; | ||
| }[]; | ||
| const typedArrayTags: Map<string, BinaryTokens>; | ||
@@ -174,3 +174,3 @@ const typedArrayTagToConstructor: Map<BinaryTokens, new <T extends TypedArray>(...args: any) => T>; | ||
| declare function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported): Uint8Array; | ||
| declare function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported): Uint8Array<ArrayBufferLike>; | ||
| declare function deserialize<T = unknown>(buffer: Uint8Array, offset?: number): T; | ||
@@ -177,0 +177,0 @@ declare function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset?: number): { |
+20
-37
@@ -23,4 +23,4 @@ "use strict"; | ||
| // src/index.ts | ||
| var src_exports = {}; | ||
| __export(src_exports, { | ||
| var index_exports = {}; | ||
| __export(index_exports, { | ||
| BigIntegers: () => BigIntegers, | ||
@@ -131,14 +131,8 @@ BinaryPrimitives: () => BinaryPrimitives, | ||
| let ret = ""; | ||
| if (integer & g) | ||
| ret += "g"; | ||
| if (integer & i) | ||
| ret += "i"; | ||
| if (integer & m) | ||
| ret += "m"; | ||
| if (integer & y) | ||
| ret += "y"; | ||
| if (integer & u) | ||
| ret += "u"; | ||
| if (integer & s) | ||
| ret += "s"; | ||
| if (integer & g) ret += "g"; | ||
| if (integer & i) ret += "i"; | ||
| if (integer & m) ret += "m"; | ||
| if (integer & y) ret += "y"; | ||
| if (integer & u) ret += "u"; | ||
| if (integer & s) ret += "s"; | ||
| return ret; | ||
@@ -179,6 +173,4 @@ } | ||
| ]; | ||
| if (typeof BigInt64Array === "function") | ||
| TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") | ||
| TypedArrays2.constructors.push(BigUint64Array); | ||
| if (typeof BigInt64Array === "function") TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") TypedArrays2.constructors.push(BigUint64Array); | ||
| TypedArrays2.typedArrayTags = new Map( | ||
@@ -541,10 +533,7 @@ TypedArrays2.constructors.map( | ||
| parseObject(value) { | ||
| if (value === null) | ||
| return this.parseValueNull(); | ||
| if (value === null) return this.parseValueNull(); | ||
| const id = this._objectIDs.get(value); | ||
| if (typeof id === "number") | ||
| return this.parseValueReference(id); | ||
| if (typeof id === "number") return this.parseValueReference(id); | ||
| this._objectIDs.set(value, this._objectIDs.size); | ||
| if (Array.isArray(value)) | ||
| return this.parseValueArray(value); | ||
| if (Array.isArray(value)) return this.parseValueArray(value); | ||
| const tag = Object.prototype.toString.call(value); | ||
@@ -658,6 +647,4 @@ switch (tag) { | ||
| const typedArrayTag = TypedArrays.typedArrayTags.get(tag); | ||
| if (typedArrayTag) | ||
| this.writeValueTypedArray(value, typedArrayTag); | ||
| else | ||
| this.parseValueObjectLiteral(value); | ||
| if (typedArrayTag) this.writeValueTypedArray(value, typedArrayTag); | ||
| else this.parseValueObjectLiteral(value); | ||
| } | ||
@@ -729,6 +716,4 @@ parseValueReference(value) { | ||
| if (value % 1 === 0) { | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) | ||
| return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) | ||
| return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| } | ||
@@ -759,4 +744,3 @@ return sign ? 13 /* SignedFloat64 */ : 12 /* UnsignedFloat64 */; | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -769,4 +753,3 @@ deserializer.clean(); | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -781,4 +764,4 @@ const bufferOffset = deserializer.offset; | ||
| __name(deserializeWithMetadata, "deserializeWithMetadata"); | ||
| return __toCommonJS(src_exports); | ||
| return __toCommonJS(index_exports); | ||
| })(); | ||
| //# sourceMappingURL=index.global.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/index.ts","../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts"],"sourcesContent":["import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n","export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n"],"mappings":"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","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} | ||
| {"version":3,"sources":["../src/index.ts","../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts"],"sourcesContent":["import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n","export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n"],"mappings":"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","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} |
+20
-37
@@ -22,4 +22,4 @@ "use strict"; | ||
| // src/index.ts | ||
| var src_exports = {}; | ||
| __export(src_exports, { | ||
| var index_exports = {}; | ||
| __export(index_exports, { | ||
| BigIntegers: () => BigIntegers, | ||
@@ -42,3 +42,3 @@ BinaryPrimitives: () => BinaryPrimitives, | ||
| }); | ||
| module.exports = __toCommonJS(src_exports); | ||
| module.exports = __toCommonJS(index_exports); | ||
@@ -132,14 +132,8 @@ // src/lib/errors/DeserializerError.ts | ||
| let ret = ""; | ||
| if (integer & g) | ||
| ret += "g"; | ||
| if (integer & i) | ||
| ret += "i"; | ||
| if (integer & m) | ||
| ret += "m"; | ||
| if (integer & y) | ||
| ret += "y"; | ||
| if (integer & u) | ||
| ret += "u"; | ||
| if (integer & s) | ||
| ret += "s"; | ||
| if (integer & g) ret += "g"; | ||
| if (integer & i) ret += "i"; | ||
| if (integer & m) ret += "m"; | ||
| if (integer & y) ret += "y"; | ||
| if (integer & u) ret += "u"; | ||
| if (integer & s) ret += "s"; | ||
| return ret; | ||
@@ -180,6 +174,4 @@ } | ||
| ]; | ||
| if (typeof BigInt64Array === "function") | ||
| TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") | ||
| TypedArrays2.constructors.push(BigUint64Array); | ||
| if (typeof BigInt64Array === "function") TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") TypedArrays2.constructors.push(BigUint64Array); | ||
| TypedArrays2.typedArrayTags = new Map( | ||
@@ -542,10 +534,7 @@ TypedArrays2.constructors.map( | ||
| parseObject(value) { | ||
| if (value === null) | ||
| return this.parseValueNull(); | ||
| if (value === null) return this.parseValueNull(); | ||
| const id = this._objectIDs.get(value); | ||
| if (typeof id === "number") | ||
| return this.parseValueReference(id); | ||
| if (typeof id === "number") return this.parseValueReference(id); | ||
| this._objectIDs.set(value, this._objectIDs.size); | ||
| if (Array.isArray(value)) | ||
| return this.parseValueArray(value); | ||
| if (Array.isArray(value)) return this.parseValueArray(value); | ||
| const tag = Object.prototype.toString.call(value); | ||
@@ -659,6 +648,4 @@ switch (tag) { | ||
| const typedArrayTag = TypedArrays.typedArrayTags.get(tag); | ||
| if (typedArrayTag) | ||
| this.writeValueTypedArray(value, typedArrayTag); | ||
| else | ||
| this.parseValueObjectLiteral(value); | ||
| if (typedArrayTag) this.writeValueTypedArray(value, typedArrayTag); | ||
| else this.parseValueObjectLiteral(value); | ||
| } | ||
@@ -730,6 +717,4 @@ parseValueReference(value) { | ||
| if (value % 1 === 0) { | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) | ||
| return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) | ||
| return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| } | ||
@@ -760,4 +745,3 @@ return sign ? 13 /* SignedFloat64 */ : 12 /* UnsignedFloat64 */; | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -770,4 +754,3 @@ deserializer.clean(); | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -774,0 +757,0 @@ const bufferOffset = deserializer.offset; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/index.ts","../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts"],"sourcesContent":["import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n","export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n"],"mappings":"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","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} | ||
| {"version":3,"sources":["../src/index.ts","../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts"],"sourcesContent":["import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n","export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n"],"mappings":"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","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} |
+17
-34
@@ -91,14 +91,8 @@ var __defProp = Object.defineProperty; | ||
| let ret = ""; | ||
| if (integer & g) | ||
| ret += "g"; | ||
| if (integer & i) | ||
| ret += "i"; | ||
| if (integer & m) | ||
| ret += "m"; | ||
| if (integer & y) | ||
| ret += "y"; | ||
| if (integer & u) | ||
| ret += "u"; | ||
| if (integer & s) | ||
| ret += "s"; | ||
| if (integer & g) ret += "g"; | ||
| if (integer & i) ret += "i"; | ||
| if (integer & m) ret += "m"; | ||
| if (integer & y) ret += "y"; | ||
| if (integer & u) ret += "u"; | ||
| if (integer & s) ret += "s"; | ||
| return ret; | ||
@@ -139,6 +133,4 @@ } | ||
| ]; | ||
| if (typeof BigInt64Array === "function") | ||
| TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") | ||
| TypedArrays2.constructors.push(BigUint64Array); | ||
| if (typeof BigInt64Array === "function") TypedArrays2.constructors.push(BigInt64Array); | ||
| if (typeof BigUint64Array === "function") TypedArrays2.constructors.push(BigUint64Array); | ||
| TypedArrays2.typedArrayTags = new Map( | ||
@@ -501,10 +493,7 @@ TypedArrays2.constructors.map( | ||
| parseObject(value) { | ||
| if (value === null) | ||
| return this.parseValueNull(); | ||
| if (value === null) return this.parseValueNull(); | ||
| const id = this._objectIDs.get(value); | ||
| if (typeof id === "number") | ||
| return this.parseValueReference(id); | ||
| if (typeof id === "number") return this.parseValueReference(id); | ||
| this._objectIDs.set(value, this._objectIDs.size); | ||
| if (Array.isArray(value)) | ||
| return this.parseValueArray(value); | ||
| if (Array.isArray(value)) return this.parseValueArray(value); | ||
| const tag = Object.prototype.toString.call(value); | ||
@@ -618,6 +607,4 @@ switch (tag) { | ||
| const typedArrayTag = TypedArrays.typedArrayTags.get(tag); | ||
| if (typedArrayTag) | ||
| this.writeValueTypedArray(value, typedArrayTag); | ||
| else | ||
| this.parseValueObjectLiteral(value); | ||
| if (typedArrayTag) this.writeValueTypedArray(value, typedArrayTag); | ||
| else this.parseValueObjectLiteral(value); | ||
| } | ||
@@ -689,6 +676,4 @@ parseValueReference(value) { | ||
| if (value % 1 === 0) { | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) | ||
| return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) | ||
| return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| if (value >= MIN_INT8 && value <= MAX_INT8) return sign ? 9 /* SignedByte */ : 8 /* UnsignedByte */; | ||
| if (value >= MIN_INT32 && value <= MAX_INT32) return sign ? 11 /* SignedInt32 */ : 10 /* UnsignedInt32 */; | ||
| } | ||
@@ -719,4 +704,3 @@ return sign ? 13 /* SignedFloat64 */ : 12 /* UnsignedFloat64 */; | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -729,4 +713,3 @@ deserializer.clean(); | ||
| const deserializer = new Deserializer(buffer); | ||
| if (offset !== -1) | ||
| deserializer.offset = offset; | ||
| if (offset !== -1) deserializer.offset = offset; | ||
| const value = deserializer.read(); | ||
@@ -733,0 +716,0 @@ const bufferOffset = deserializer.offset; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts","../src/index.ts"],"sourcesContent":["export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n","import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n"],"mappings":"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","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} | ||
| {"version":3,"sources":["../src/lib/errors/DeserializerError.ts","../src/lib/util/constants.ts","../src/lib/util/util.ts","../src/lib/Deserializer.ts","../src/lib/errors/SerializerError.ts","../src/lib/Serializer.ts","../src/index.ts"],"sourcesContent":["export class DeserializerError extends Error {\n\tpublic kind: DeserializerReason;\n\n\tpublic constructor(message: string, kind: DeserializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum DeserializerReason {\n\tUnknownType = 'UnknownType',\n\tUnexpectedEndOfBuffer = 'UnexpectedEndOfBuffer'\n}\n","export enum BinaryTokens {\n\tNullPointer,\n\tHole,\n\tNull,\n\tPBigInt,\n\tNBigInt,\n\tBoolean,\n\tString,\n\tUndefined,\n\tUnsignedByte,\n\tSignedByte,\n\tUnsignedInt32,\n\tSignedInt32,\n\tUnsignedFloat64,\n\tSignedFloat64,\n\tArray,\n\tEmptyArray,\n\tObjectReference,\n\tDate,\n\tBooleanObject,\n\tNumberObject,\n\tStringObject,\n\tEmptyObject,\n\tObject,\n\tRegExp,\n\tMap,\n\tEmptyMap,\n\tWeakMap,\n\tSet,\n\tEmptySet,\n\tWeakSet,\n\tArrayBuffer,\n\tInt8Array,\n\tUint8Array,\n\tUint8ClampedArray,\n\tInt16Array,\n\tUint16Array,\n\tInt32Array,\n\tUint32Array,\n\tFloat32Array,\n\tFloat64Array,\n\tDataView\n}\n\nexport enum BinaryPrimitives {\n\tBigInt = 'bigint',\n\tBoolean = 'boolean',\n\tNumber = 'number',\n\tObject = 'object',\n\tString = 'string',\n\tUndefined = 'undefined'\n}\n\nexport type TypedArray = Uint8Array | Float32Array | Int32Array;\nexport const TypedArray = Object.getPrototypeOf(Int8Array) as TypedArray;\n","import { BinaryTokens, TypedArray } from './constants';\n\nexport namespace RegExps {\n\tconst g = 1 << 0;\n\tconst i = 1 << 1;\n\tconst m = 1 << 2;\n\tconst y = 1 << 3;\n\tconst u = 1 << 4;\n\tconst s = 1 << 5;\n\n\texport function flagsAsInteger(regExp: RegExp) {\n\t\treturn (\n\t\t\t(regExp.global ? g : 0) |\n\t\t\t(regExp.ignoreCase ? i : 0) |\n\t\t\t(regExp.multiline ? m : 0) |\n\t\t\t(regExp.sticky ? y : 0) |\n\t\t\t(regExp.unicode ? u : 0) |\n\t\t\t(regExp.dotAll ? s : 0)\n\t\t);\n\t}\n\n\texport function flagsFromInteger(integer: number) {\n\t\tlet ret = '';\n\t\tif (integer & g) ret += 'g';\n\t\tif (integer & i) ret += 'i';\n\t\tif (integer & m) ret += 'm';\n\t\tif (integer & y) ret += 'y';\n\t\tif (integer & u) ret += 'u';\n\t\tif (integer & s) ret += 's';\n\t\treturn ret;\n\t}\n}\n\nexport namespace BigIntegers {\n\texport const SUPPORTED = typeof BigInt === 'function';\n\texport const ZERO = SUPPORTED ? BigInt(0) : null;\n\texport const ONE = SUPPORTED ? BigInt(1) : null;\n\texport const EIGHT = SUPPORTED ? BigInt(8) : null;\n\texport const BYTE = SUPPORTED ? BigInt(0xff) : null;\n}\n\nexport namespace Numbers {\n\texport function nextPowerOfTwo(n: number) {\n\t\treturn Math.pow(2, Math.ceil(Math.log2(n)));\n\t}\n}\n\nexport namespace TypedArrays {\n\texport const constructors = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tUint8ClampedArray,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tFloat64Array,\n\t\tDataView\n\t] as { new <T extends TypedArray>(...args: any): T }[];\n\n\tif (typeof BigInt64Array === 'function') constructors.push(BigInt64Array);\n\tif (typeof BigUint64Array === 'function') constructors.push(BigUint64Array);\n\n\texport const typedArrayTags = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[Object.prototype.toString.call(new typedArray(new ArrayBuffer(0))), BinaryTokens[typedArray.name]] as [string, BinaryTokens]\n\t\t)\n\t);\n\n\texport const typedArrayTagToConstructor = new Map(\n\t\tconstructors.map(\n\t\t\t(typedArray) =>\n\t\t\t\t// @ts-ignore 7015\n\t\t\t\t[BinaryTokens[typedArray.name], typedArray] as unknown as [BinaryTokens, { new <T extends TypedArray>(...args: any): T }]\n\t\t)\n\t);\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { DeserializerError, DeserializerReason } from './errors/DeserializerError';\nimport { BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, RegExps, TypedArrays } from './util/util';\n\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport class Deserializer {\n\tpublic offset = 0;\n\tprivate _buffer: Uint8Array | null;\n\tprivate _objectIDs = new Map() as Map<number, Record<any, any>>;\n\n\tpublic constructor(buffer: Uint8Array) {\n\t\tthis._buffer = buffer;\n\t}\n\n\tprivate get finished() {\n\t\treturn this.offset === this._buffer!.length;\n\t}\n\n\tpublic clean() {\n\t\tthis._buffer = null;\n\t\tthis.offset = 0;\n\t\tthis._objectIDs.clear();\n\t}\n\n\tpublic read() {\n\t\tconst type = this.read8();\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.Null:\n\t\t\t\treturn null;\n\t\t\tcase BinaryTokens.PBigInt:\n\t\t\t\treturn this.readValueBigInt(false);\n\t\t\tcase BinaryTokens.NBigInt:\n\t\t\t\treturn this.readValueBigInt(true);\n\t\t\tcase BinaryTokens.Boolean:\n\t\t\t\treturn Boolean(this.read8());\n\t\t\tcase BinaryTokens.String:\n\t\t\t\treturn this.readString();\n\t\t\tcase BinaryTokens.Undefined:\n\t\t\t\treturn undefined;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\treturn this.read8();\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\treturn -this.read8();\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\treturn this.read32();\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\treturn -this.read32();\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\treturn this.readF64();\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\treturn -this.readF64();\n\t\t\tcase BinaryTokens.Array:\n\t\t\t\treturn this.readValueArray();\n\t\t\tcase BinaryTokens.EmptyArray:\n\t\t\t\treturn this.createObjectID([]);\n\t\t\tcase BinaryTokens.ObjectReference:\n\t\t\t\treturn this._objectIDs.get(this.read32());\n\t\t\tcase BinaryTokens.Date:\n\t\t\t\treturn this.createObjectID(new Date(this.readF64()));\n\t\t\tcase BinaryTokens.BooleanObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Boolean(this.read8()));\n\t\t\tcase BinaryTokens.NumberObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new Number(this.readF64()));\n\t\t\tcase BinaryTokens.StringObject:\n\t\t\t\t// eslint-disable-next-line no-new-wrappers\n\t\t\t\treturn this.createObjectID(new String(this.readString()));\n\t\t\tcase BinaryTokens.EmptyObject:\n\t\t\t\treturn this.createObjectID({});\n\t\t\tcase BinaryTokens.Object:\n\t\t\t\treturn this.readValueObject();\n\t\t\tcase BinaryTokens.RegExp:\n\t\t\t\treturn this.createObjectID(new RegExp(this.readString(), RegExps.flagsFromInteger(this.read8())));\n\t\t\tcase BinaryTokens.Map:\n\t\t\t\treturn this.readValueMap();\n\t\t\tcase BinaryTokens.EmptyMap:\n\t\t\t\treturn this.createObjectID(new Map());\n\t\t\tcase BinaryTokens.Set:\n\t\t\t\treturn this.readValueSet();\n\t\t\tcase BinaryTokens.EmptySet:\n\t\t\t\treturn this.createObjectID(new Set());\n\t\t\tcase BinaryTokens.ArrayBuffer:\n\t\t\t\treturn this.readValueArrayBuffer();\n\t\t\tcase BinaryTokens.WeakMap:\n\t\t\t\treturn this.createObjectID(new WeakMap());\n\t\t\tcase BinaryTokens.WeakSet:\n\t\t\t\treturn this.createObjectID(new WeakSet());\n\t\t\tcase BinaryTokens.Int8Array:\n\t\t\tcase BinaryTokens.Uint8Array:\n\t\t\tcase BinaryTokens.Uint8ClampedArray:\n\t\t\tcase BinaryTokens.Int16Array:\n\t\t\tcase BinaryTokens.Uint16Array:\n\t\t\tcase BinaryTokens.Int32Array:\n\t\t\tcase BinaryTokens.Uint32Array:\n\t\t\tcase BinaryTokens.Float32Array:\n\t\t\tcase BinaryTokens.Float64Array:\n\t\t\tcase BinaryTokens.DataView:\n\t\t\t\treturn this.readValueTypedArray(type);\n\t\t\tdefault:\n\t\t\t\tthrow new DeserializerError(`Unknown type received: ${type}`, DeserializerReason.UnknownType);\n\t\t}\n\t}\n\n\tprivate readValueTypedArray(token: BinaryTokens) {\n\t\t// Read the byte length, then create a shared ArrayBuffer for the desired\n\t\t// typedArray and an Uint8Array which we write to.\n\t\tconst byteLength = this.read32();\n\t\tthis.ensureBytes(byteLength);\n\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet value: TypedArray;\n\t\t// Fast-path if we are deserializing an Uint8Array\n\t\tif (token === BinaryTokens.Uint8Array) {\n\t\t\tvalue = this._buffer!.subarray(this.offset, this.offset + byteLength);\n\t\t} else {\n\t\t\tconst buffer = new ArrayBuffer(byteLength);\n\t\t\tconst ctor = TypedArrays.typedArrayTagToConstructor.get(token)!;\n\t\t\tvalue = new ctor(buffer);\n\t\t\tnew Uint8Array(buffer).set(this._buffer!.subarray(this.offset, this.offset + byteLength));\n\t\t}\n\t\tthis.offset += byteLength;\n\t\treturn this.createObjectID(value);\n\t}\n\n\tprivate readValueArrayBuffer() {\n\t\tconst value = this.createObjectID(new ArrayBuffer(this.read32()));\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tfor (let i = 0, max = uint8Array.length; i < max; i++) {\n\t\t\tuint8Array[i] = this.read8();\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate readValueSet() {\n\t\tconst value = this.createObjectID(new Set());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.add(this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueMap() {\n\t\tconst value = this.createObjectID(new Map());\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tvalue.set(this.read(), this.read());\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueObject() {\n\t\tconst value = this.createObjectID({}) as Record<string | number, unknown>;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tconst entryKey = this.read() as string | number;\n\t\t\tconst entryValue = this.read();\n\t\t\tvalue[entryKey] = entryValue;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprivate readValueArray() {\n\t\tconst value = this.createObjectID([] as unknown[]);\n\t\tlet i = 0;\n\t\twhile (!this.readNullTerminator()) {\n\t\t\tif (this.read8() !== BinaryTokens.Hole) {\n\t\t\t\tthis.offsetBack();\n\t\t\t\tvalue[i] = this.read();\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\t// This is required for holey arrays\n\t\tvalue.length = i;\n\n\t\treturn value;\n\t}\n\n\tprivate readString() {\n\t\tconst end = this._buffer!.indexOf(BinaryTokens.NullPointer, this.offset);\n\t\tif (end === -1) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\tconst sub = this._buffer!.subarray(this.offset, end);\n\t\tconst str = Deserializer._textDecoder.decode(sub);\n\t\tthis.offset = end + 1;\n\t\treturn str;\n\t}\n\n\tprivate readValueBigInt(sign: boolean) {\n\t\tconst byteLength = this.read32();\n\n\t\tlet value = BigIntegers.ZERO!;\n\t\tlet b = BigIntegers.ONE!;\n\n\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\tconst digit = this.read8();\n\t\t\tvalue += BigInt(digit) * b;\n\t\t\tb <<= BigIntegers.EIGHT!;\n\t\t}\n\n\t\treturn sign ? -value : value;\n\t}\n\n\tprivate readNullTerminator() {\n\t\tif (this.watch8() === BinaryTokens.NullPointer) {\n\t\t\t++this.offset;\n\t\t\treturn true;\n\t\t} else if (this.finished) {\n\t\t\tthrow new DeserializerError('Found End-Of-Buffer, expecting a `NullTerminator` before.', DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate createObjectID<T extends {} | object>(value: T) {\n\t\tthis._objectIDs.set(this._objectIDs.size, value);\n\t\treturn value;\n\t}\n\n\tprivate offsetBack() {\n\t\t--this.offset;\n\t}\n\n\tprivate watch8() {\n\t\treturn this._buffer![this.offset];\n\t}\n\n\tprivate read8() {\n\t\tthis.ensureBytes(1);\n\t\treturn this._buffer![this.offset++];\n\t}\n\n\tprivate read32() {\n\t\tthis.ensureBytes(4);\n\t\treturn (\n\t\t\tthis._buffer![this.offset++] * 2 ** 24 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 16 +\n\t\t\tthis._buffer![this.offset++] * 2 ** 8 +\n\t\t\tthis._buffer![this.offset++]\n\t\t);\n\t}\n\n\tprivate readF64() {\n\t\tthis.ensureBytes(8);\n\t\tuInt8Float64Array[0] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[1] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[2] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[3] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[4] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[5] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[6] = this._buffer![this.offset++];\n\t\tuInt8Float64Array[7] = this._buffer![this.offset++];\n\t\treturn float64Array[0];\n\t}\n\n\tprivate ensureBytes(amount: number) {\n\t\tif (this.offset + amount > this._buffer!.length) {\n\t\t\tthrow new DeserializerError(`Found End-Of-Buffer, expecting ${amount} byte(s).`, DeserializerReason.UnexpectedEndOfBuffer);\n\t\t}\n\t}\n\n\tprivate static _textDecoder = new TextDecoder();\n}\n","export class SerializerError extends Error {\n\tpublic kind: SerializerReason;\n\n\tpublic constructor(message: string, kind: SerializerReason) {\n\t\tsuper(message);\n\t\tthis.kind = kind;\n\t}\n}\n\nexport enum SerializerReason {\n\tUnsupportedType = 'UnsupportedType',\n\tUnsupportedSerializedType = 'UnsupportedSerializedType',\n\tUnexpectedNullValue = 'UnexpectedNullValue'\n}\n","// eslint-disable-next-line spaced-comment\n/// <reference lib=\"dom\" />\n\nimport { SerializerError, SerializerReason } from './errors/SerializerError';\nimport { BinaryPrimitives, BinaryTokens, TypedArray } from './util/constants';\nimport { BigIntegers, Numbers, RegExps, TypedArrays } from './util/util';\n\n// Immutable\nconst MIN_INT8 = -0b0111_1111;\nconst MAX_INT8 = 0b1111_1111;\nconst MIN_INT32 = -0b0111_1111_1111_1111_1111_1111_1111_1111;\nconst MAX_INT32 = 0b1111_1111_1111_1111_1111_1111_1111_1111;\n\n// Mutable\nconst float64Array = new Float64Array(1);\nconst uInt8Float64Array = new Uint8Array(float64Array.buffer);\n\nexport interface OnUnsupported {\n\t(value: unknown): unknown;\n}\n\nexport class Serializer {\n\tpublic onUnsupported: OnUnsupported | null;\n\tprivate _buffer: Uint8Array | null = new Uint8Array(16);\n\tprivate _offset = 0;\n\tprivate _objectIDs = new Map() as Map<Record<any, any>, number>;\n\tprivate _data: any;\n\tprivate _handlingUnsupported = false;\n\n\tpublic constructor(data: any, onUnsupported: OnUnsupported | null = null) {\n\t\tthis._data = data;\n\t\tthis.onUnsupported = onUnsupported;\n\t}\n\n\tpublic process() {\n\t\tthis.parse(this._data);\n\t\tconst temp = this._buffer!.subarray(0, this._offset);\n\n\t\tthis._data = null;\n\t\tthis._offset = 0;\n\t\tthis._objectIDs.clear();\n\t\tthis._buffer = null;\n\t\treturn temp;\n\t}\n\n\tpublic parse(value: any, hint = typeof value) {\n\t\tswitch (hint) {\n\t\t\tcase BinaryPrimitives.BigInt:\n\t\t\t\treturn this.parseBigInt(value);\n\t\t\tcase BinaryPrimitives.Boolean:\n\t\t\t\treturn this.parseBoolean(value);\n\t\t\tcase BinaryPrimitives.Number:\n\t\t\t\treturn this.parseNumber(value);\n\t\t\tcase BinaryPrimitives.Object:\n\t\t\t\treturn this.parseObject(value);\n\t\t\tcase BinaryPrimitives.String:\n\t\t\t\treturn this.parseString(value);\n\t\t\tcase BinaryPrimitives.Undefined:\n\t\t\t\treturn this.parseUndefined();\n\t\t\tdefault:\n\t\t\t\treturn this.handleUnsupported(value, hint);\n\t\t}\n\t}\n\n\tprotected handleUnsupported(value: unknown, hint: string) {\n\t\t// If there's an onUnsupported handler, try to call it\n\t\tif (this.onUnsupported) {\n\t\t\t// If the serializer was handling an unsupported type, abort the serialization\n\t\t\t// as it's most likely an error in the return type of the handler.\n\t\t\tif (this._handlingUnsupported) {\n\t\t\t\tthrow new SerializerError('The modified value was not serializable.', SerializerReason.UnsupportedSerializedType);\n\t\t\t}\n\n\t\t\t// Set the serializer to handling unsupported, parse, and once it's done\n\t\t\t// serializing the output of unSupported, set it back to false.\n\t\t\tthis._handlingUnsupported = true;\n\t\t\tthis.parse(this.onUnsupported(value));\n\t\t\tthis._handlingUnsupported = false;\n\t\t\treturn;\n\t\t}\n\n\t\t// If no handler is available, throw TypeError\n\t\tthrow new SerializerError(`Unsupported type '${hint}'.`, SerializerReason.UnsupportedType);\n\t}\n\n\tprivate parseBigInt(value: bigint) {\n\t\tconst sign = value >= BigIntegers.ZERO! ? 0 : 1;\n\t\tthis.ensureAlloc(5);\n\t\tthis.write8(sign ? BinaryTokens.NBigInt : BinaryTokens.PBigInt);\n\n\t\tconst headerOffset = this._offset;\n\t\tthis._offset += 4;\n\n\t\tlet unsignedBigInt = sign === 1 ? -value : value;\n\t\tlet byteCount = 0;\n\t\twhile (unsignedBigInt > 0) {\n\t\t\t++byteCount;\n\t\t\tthis.write8(Number(unsignedBigInt & BigIntegers.BYTE!));\n\t\t\tunsignedBigInt >>= BigIntegers.EIGHT!;\n\t\t}\n\n\t\tthis.write32At(byteCount, headerOffset);\n\t}\n\n\tprivate parseBoolean(value: boolean) {\n\t\tthis.write8(BinaryTokens.Boolean);\n\t\tthis.write8(value ? 1 : 0);\n\t}\n\n\tprivate parseNumber(value: number) {\n\t\tconst type = this.getNumberType(value);\n\t\tthis.write8(type);\n\t\tswitch (type) {\n\t\t\tcase BinaryTokens.SignedByte:\n\t\t\t\tthis.write8(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedByte:\n\t\t\t\tthis.write8(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedInt32:\n\t\t\t\tthis.write32(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedInt32:\n\t\t\t\tthis.write32(value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.SignedFloat64:\n\t\t\t\tthis.writeF64(-value);\n\t\t\t\tbreak;\n\t\t\tcase BinaryTokens.UnsignedFloat64:\n\t\t\t\tthis.writeF64(value);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unreachable code. Got unexpected integer type ${type}`);\n\t\t}\n\t}\n\n\tprivate parseObject(value: object) {\n\t\tif (value === null) return this.parseValueNull();\n\n\t\t// Circular reference detection\n\t\tconst id = this._objectIDs.get(value);\n\t\tif (typeof id === 'number') return this.parseValueReference(id);\n\n\t\t// Set this object to the reference list\n\t\tthis._objectIDs.set(value, this._objectIDs.size);\n\n\t\t// If it's an array, parse it\n\t\tif (Array.isArray(value)) return this.parseValueArray(value);\n\n\t\t// We're doing this because it's safer for the context where you\n\t\t// extend the classes.\n\t\tconst tag = Object.prototype.toString.call(value);\n\t\tswitch (tag) {\n\t\t\tcase '[object String]':\n\t\t\t\treturn this.parseValueObjectString(value as unknown as string);\n\t\t\tcase '[object Boolean]':\n\t\t\t\treturn this.parseValueObjectBoolean(value as unknown as boolean);\n\t\t\tcase '[object Number]':\n\t\t\t\treturn this.parseValueObjectNumber(value as unknown as number);\n\t\t\tcase '[object Date]':\n\t\t\t\treturn this.parseValueObjectDate(value as Date);\n\t\t\tcase '[object RegExp]':\n\t\t\t\treturn this.parseValueObjectRegExp(value as RegExp);\n\t\t\tcase '[object Object]':\n\t\t\t\treturn this.parseValueObjectLiteral(value);\n\t\t\tcase '[object Map]':\n\t\t\t\treturn this.parseValueObjectMap(value as Map<unknown, unknown>);\n\t\t\tcase '[object Set]':\n\t\t\t\treturn this.parseValueObjectSet(value as Set<unknown>);\n\t\t\tcase '[object ArrayBuffer]':\n\t\t\t\treturn this.parseValueObjectArrayBuffer(value as ArrayBuffer);\n\t\t\tcase '[object WeakMap]':\n\t\t\t\treturn this.parseValueObjectWeakMap();\n\t\t\tcase '[object WeakSet]':\n\t\t\t\treturn this.parseValueObjectWeakSet();\n\t\t\tcase '[object Promise]':\n\t\t\t\treturn this.handleUnsupported(value, 'object');\n\t\t\tdefault:\n\t\t\t\treturn this.parseValueObjectFallback(value, tag);\n\t\t}\n\t}\n\n\tprivate parseString(value: string) {\n\t\tthis.write8(BinaryTokens.String);\n\t\tthis.writeValueString(value);\n\t}\n\n\tprivate parseUndefined() {\n\t\tthis.write8(BinaryTokens.Undefined);\n\t}\n\n\tprivate parseValueNull() {\n\t\tthis.write8(BinaryTokens.Null);\n\t}\n\n\tprivate parseValueObjectString(value: String) {\n\t\tthis.write8(BinaryTokens.StringObject);\n\t\tthis.writeValueString(value.valueOf());\n\t}\n\n\tprivate parseValueObjectBoolean(value: Boolean) {\n\t\tthis.write8(BinaryTokens.BooleanObject);\n\t\tthis.write8(value.valueOf() ? 1 : 0);\n\t}\n\n\tprivate parseValueObjectNumber(value: Number) {\n\t\tthis.write8(BinaryTokens.NumberObject);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectDate(value: Date) {\n\t\tthis.write8(BinaryTokens.Date);\n\t\tthis.writeF64(value.valueOf());\n\t}\n\n\tprivate parseValueObjectRegExp(value: RegExp) {\n\t\tthis.write8(BinaryTokens.RegExp);\n\t\tthis.writeValueString(value.source);\n\t\tthis.write8(RegExps.flagsAsInteger(value));\n\t}\n\n\tprivate parseValueObjectLiteral(value: Record<any, any>) {\n\t\tconst keys = Object.keys(value);\n\t\tif (keys.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyObject);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Object);\n\t\tfor (const entryKey of keys) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(value[entryKey]);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectMap(value: Map<unknown, unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyMap);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Map);\n\t\tfor (const [entryKey, entryValue] of value.entries()) {\n\t\t\tthis.parse(entryKey);\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectSet(value: Set<unknown>) {\n\t\tif (value.size === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptySet);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.Set);\n\t\tfor (const entryValue of value) {\n\t\t\tthis.parse(entryValue);\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate parseValueObjectArrayBuffer(value: ArrayBuffer) {\n\t\tthis.write8(BinaryTokens.ArrayBuffer);\n\n\t\tconst uint8Array = new Uint8Array(value);\n\t\tthis.write32(uint8Array.length);\n\t\tthis.write(uint8Array);\n\t}\n\n\tprivate parseValueObjectWeakMap() {\n\t\tthis.write8(BinaryTokens.WeakMap);\n\t}\n\n\tprivate parseValueObjectWeakSet() {\n\t\tthis.write8(BinaryTokens.WeakSet);\n\t}\n\n\tprivate parseValueObjectFallback(value: object, tag: string) {\n\t\tconst typedArrayTag = TypedArrays.typedArrayTags.get(tag);\n\t\tif (typedArrayTag) this.writeValueTypedArray(value as TypedArray, typedArrayTag);\n\t\telse this.parseValueObjectLiteral(value);\n\t}\n\n\tprivate parseValueReference(value: number) {\n\t\tthis.write8(BinaryTokens.ObjectReference);\n\t\tthis.write32(value);\n\t}\n\n\tprivate parseValueArray(value: Array<unknown>) {\n\t\tif (value.length === 0) {\n\t\t\treturn this.write8(BinaryTokens.EmptyArray);\n\t\t}\n\n\t\tthis.ensureAlloc(2);\n\t\tthis.write8(BinaryTokens.Array);\n\n\t\tfor (let i = 0, n = value.length; i < n; i++) {\n\t\t\tif (i in value) {\n\t\t\t\tthis.parse(value[i]);\n\t\t\t} else {\n\t\t\t\tthis.write8(BinaryTokens.Hole);\n\t\t\t}\n\t\t}\n\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate writeValueTypedArray(value: TypedArray, tag: BinaryTokens) {\n\t\tthis.write8(tag);\n\t\tthis.write32(value.byteLength);\n\n\t\tif (tag !== BinaryTokens.Uint8Array) {\n\t\t\tvalue = new Uint8Array(value.buffer);\n\t\t}\n\n\t\tthis.write(value as Uint8Array);\n\t}\n\n\tprivate write(value: Uint8Array) {\n\t\tthis.ensureAlloc(value.byteLength);\n\t\tthis._buffer!.set(value, this._offset);\n\t\tthis._offset += value.byteLength;\n\t}\n\n\tprivate write8(value: number) {\n\t\tthis.ensureAlloc(1);\n\t\tthis._buffer![this._offset++] = value;\n\t}\n\n\tprivate write32(value: number) {\n\t\tthis.ensureAlloc(4);\n\t\tthis.write32At(value, this._offset);\n\t\tthis._offset += 4;\n\t}\n\n\tprivate write32At(value: number, offset: number) {\n\t\tthis._buffer![offset + 3] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 2] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset + 1] = value;\n\t\tvalue >>>= 8;\n\t\tthis._buffer![offset] = value;\n\t}\n\n\tprivate writeF64(value: number) {\n\t\tfloat64Array[0] = value;\n\t\tthis.write(uInt8Float64Array);\n\t}\n\n\tprivate writeValueString(value: string) {\n\t\tconst serialized = Serializer._textEncoder.encode(value);\n\n\t\t// Strings must not contain a null pointer, since they are null-delimited.\n\t\tif (serialized.includes(BinaryTokens.NullPointer)) {\n\t\t\tthrow new SerializerError('Unexpected null pointer in serialized string.', SerializerReason.UnexpectedNullValue);\n\t\t}\n\n\t\tthis.write(serialized);\n\t\tthis.write8(BinaryTokens.NullPointer);\n\t}\n\n\tprivate getNumberType(value: number) {\n\t\tconst sign = value < 0;\n\t\tif (value % 1 === 0) {\n\t\t\t// Byte (S | U)\n\t\t\tif (value >= MIN_INT8 && value <= MAX_INT8) return sign ? BinaryTokens.SignedByte : BinaryTokens.UnsignedByte;\n\t\t\t// Int32 (S | U)\n\t\t\tif (value >= MIN_INT32 && value <= MAX_INT32) return sign ? BinaryTokens.SignedInt32 : BinaryTokens.UnsignedInt32;\n\t\t\t// Fallback to float\n\t\t}\n\t\t// Float64\n\t\treturn sign ? BinaryTokens.SignedFloat64 : BinaryTokens.UnsignedFloat64;\n\t}\n\n\tprivate ensureAlloc(amount: number) {\n\t\tthis.expandBuffer(this._offset + amount);\n\t}\n\n\tprivate expandBuffer(length: number) {\n\t\tif (this._buffer!.length < length) {\n\t\t\tconst old = this._buffer;\n\t\t\tthis._buffer = new Uint8Array(Numbers.nextPowerOfTwo(length));\n\t\t\tthis._buffer.set(old!);\n\t\t}\n\t}\n\n\tprivate static _textEncoder = new TextEncoder();\n}\n","import { Deserializer } from './lib/Deserializer';\nimport { type OnUnsupported, Serializer } from './lib/Serializer';\nexport * from './lib/Deserializer';\nexport * from './lib/errors/DeserializerError';\nexport * from './lib/errors/SerializerError';\nexport * from './lib/Serializer';\nexport * from './lib/util/constants';\nexport * from './lib/util/util';\n\nexport function serialize<T = unknown>(data: T, onUnsupported?: OnUnsupported) {\n\treturn new Serializer(data, onUnsupported).process();\n}\n\nexport function deserialize<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tdeserializer.clean();\n\treturn value;\n}\n\nexport function deserializeWithMetadata<T = unknown>(buffer: Uint8Array, offset = -1) {\n\tconst deserializer = new Deserializer(buffer);\n\tif (offset !== -1) deserializer.offset = offset;\n\tconst value = deserializer.read() as T;\n\tconst bufferOffset = deserializer.offset;\n\tdeserializer.clean();\n\n\treturn {\n\t\tvalue,\n\t\toffset: bufferOffset === buffer.byteLength ? -1 : bufferOffset\n\t};\n}\n"],"mappings":";;;;AAAO,IAAM,qBAAN,MAAM,2BAA0B,MAAM;AAAA,EAGrC,YAAY,SAAiB,MAA0B;AAC7D,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACb;AACD;AAP6C;AAAtC,IAAM,oBAAN;AASA,IAAK,qBAAL,kBAAKA,wBAAL;AACN,EAAAA,oBAAA,iBAAc;AACd,EAAAA,oBAAA,2BAAwB;AAFb,SAAAA;AAAA,GAAA;;;ACTL,IAAK,eAAL,kBAAKC,kBAAL;AACN,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AAzCW,SAAAA;AAAA,GAAA;AA4CL,IAAK,mBAAL,kBAAKC,sBAAL;AACN,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,YAAS;AACT,EAAAA,kBAAA,eAAY;AAND,SAAAA;AAAA,GAAA;AAUL,IAAM,aAAa,OAAO,eAAe,SAAS;;;ACpDlD,IAAU;AAAA,CAAV,CAAUC,aAAV;AACN,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,KAAK;AACf,QAAM,IAAI,KAAK;AAER,WAAS,eAAe,QAAgB;AAC9C,YACE,OAAO,SAAS,IAAI,MACpB,OAAO,aAAa,IAAI,MACxB,OAAO,YAAY,IAAI,MACvB,OAAO,SAAS,IAAI,MACpB,OAAO,UAAU,IAAI,MACrB,OAAO,SAAS,IAAI;AAAA,EAEvB;AATO,EAAAA,SAAS;AAAA;AAWT,WAAS,iBAAiB,SAAiB;AACjD,QAAI,MAAM;AACV,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,QAAI,UAAU,EAAG,QAAO;AACxB,WAAO;AAAA,EACR;AATO,EAAAA,SAAS;AAAA;AAAA,GAnBA;AA+BV,IAAU;AAAA,CAAV,CAAUC,iBAAV;AACC,EAAMA,aAAA,YAAY,OAAO,WAAW;AACpC,EAAMA,aAAA,OAAOA,aAAA,YAAY,OAAO,CAAC,IAAI;AACrC,EAAMA,aAAA,MAAMA,aAAA,YAAY,OAAO,CAAC,IAAI;AACpC,EAAMA,aAAA,QAAQA,aAAA,YAAY,OAAO,CAAC,IAAI;AACtC,EAAMA,aAAA,OAAOA,aAAA,YAAY,OAAO,GAAI,IAAI;AAAA,GAL/B;AAQV,IAAU;AAAA,CAAV,CAAUC,aAAV;AACC,WAAS,eAAe,GAAW;AACzC,WAAO,KAAK,IAAI,GAAG,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,EAC3C;AAFO,EAAAA,SAAS;AAAA;AAAA,GADA;AAMV,IAAU;AAAA,CAAV,CAAUC,iBAAV;AACC,EAAMA,aAAA,eAAe;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MAAI,OAAO,kBAAkB,WAAY,CAAAA,aAAA,aAAa,KAAK,aAAa;AACxE,MAAI,OAAO,mBAAmB,WAAY,CAAAA,aAAA,aAAa,KAAK,cAAc;AAEnE,EAAMA,aAAA,iBAAiB,IAAI;AAAA,IACjCA,aAAA,aAAa;AAAA,MACZ,CAAC;AAAA;AAAA,QAEA,CAAC,OAAO,UAAU,SAAS,KAAK,IAAI,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,aAAa,WAAW,IAAI,CAAC;AAAA;AAAA,IACpG;AAAA,EACD;AAEO,EAAMA,aAAA,6BAA6B,IAAI;AAAA,IAC7CA,aAAA,aAAa;AAAA,MACZ,CAAC;AAAA;AAAA,QAEA,CAAC,aAAa,WAAW,IAAI,GAAG,UAAU;AAAA;AAAA,IAC5C;AAAA,EACD;AAAA,GA/BgB;;;ACxCjB,IAAM,eAAe,IAAI,aAAa,CAAC;AACvC,IAAM,oBAAoB,IAAI,WAAW,aAAa,MAAM;AAErD,IAAM,gBAAN,MAAM,cAAa;AAAA,EAKlB,YAAY,QAAoB;AAJvC,SAAO,SAAS;AAEhB,SAAQ,aAAa,oBAAI,IAAI;AAG5B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,IAAY,WAAW;AACtB,WAAO,KAAK,WAAW,KAAK,QAAS;AAAA,EACtC;AAAA,EAEO,QAAQ;AACd,SAAK,UAAU;AACf,SAAK,SAAS;AACd,SAAK,WAAW,MAAM;AAAA,EACvB;AAAA,EAEO,OAAO;AACb,UAAM,OAAO,KAAK,MAAM;AACxB,YAAQ,MAAM;AAAA,MACb;AACC,eAAO;AAAA,MACR;AACC,eAAO,KAAK,gBAAgB,KAAK;AAAA,MAClC;AACC,eAAO,KAAK,gBAAgB,IAAI;AAAA,MACjC;AACC,eAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,MAC5B;AACC,eAAO,KAAK,WAAW;AAAA,MACxB;AACC,eAAO;AAAA,MACR;AACC,eAAO,KAAK,MAAM;AAAA,MACnB;AACC,eAAO,CAAC,KAAK,MAAM;AAAA,MACpB;AACC,eAAO,KAAK,OAAO;AAAA,MACpB;AACC,eAAO,CAAC,KAAK,OAAO;AAAA,MACrB;AACC,eAAO,KAAK,QAAQ;AAAA,MACrB;AACC,eAAO,CAAC,KAAK,QAAQ;AAAA,MACtB;AACC,eAAO,KAAK,eAAe;AAAA,MAC5B;AACC,eAAO,KAAK,eAAe,CAAC,CAAC;AAAA,MAC9B;AACC,eAAO,KAAK,WAAW,IAAI,KAAK,OAAO,CAAC;AAAA,MACzC;AACC,eAAO,KAAK,eAAe,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,MACpD;AAEC,eAAO,KAAK,eAAe,IAAI,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,MACrD;AAEC,eAAO,KAAK,eAAe,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;AAAA,MACtD;AAEC,eAAO,KAAK,eAAe,IAAI,OAAO,KAAK,WAAW,CAAC,CAAC;AAAA,MACzD;AACC,eAAO,KAAK,eAAe,CAAC,CAAC;AAAA,MAC9B;AACC,eAAO,KAAK,gBAAgB;AAAA,MAC7B;AACC,eAAO,KAAK,eAAe,IAAI,OAAO,KAAK,WAAW,GAAG,QAAQ,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC;AAAA,MACjG;AACC,eAAO,KAAK,aAAa;AAAA,MAC1B;AACC,eAAO,KAAK,eAAe,oBAAI,IAAI,CAAC;AAAA,MACrC;AACC,eAAO,KAAK,aAAa;AAAA,MAC1B;AACC,eAAO,KAAK,eAAe,oBAAI,IAAI,CAAC;AAAA,MACrC;AACC,eAAO,KAAK,qBAAqB;AAAA,MAClC;AACC,eAAO,KAAK,eAAe,oBAAI,QAAQ,CAAC;AAAA,MACzC;AACC,eAAO,KAAK,eAAe,oBAAI,QAAQ,CAAC;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AACC,eAAO,KAAK,oBAAoB,IAAI;AAAA,MACrC;AACC,cAAM,IAAI,kBAAkB,0BAA0B,IAAI,mCAAkC;AAAA,IAC9F;AAAA,EACD;AAAA,EAEQ,oBAAoB,OAAqB;AAGhD,UAAM,aAAa,KAAK,OAAO;AAC/B,SAAK,YAAY,UAAU;AAG3B,QAAI;AAEJ,QAAI,+BAAmC;AACtC,cAAQ,KAAK,QAAS,SAAS,KAAK,QAAQ,KAAK,SAAS,UAAU;AAAA,IACrE,OAAO;AACN,YAAM,SAAS,IAAI,YAAY,UAAU;AACzC,YAAM,OAAO,YAAY,2BAA2B,IAAI,KAAK;AAC7D,cAAQ,IAAI,KAAK,MAAM;AACvB,UAAI,WAAW,MAAM,EAAE,IAAI,KAAK,QAAS,SAAS,KAAK,QAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,IACzF;AACA,SAAK,UAAU;AACf,WAAO,KAAK,eAAe,KAAK;AAAA,EACjC;AAAA,EAEQ,uBAAuB;AAC9B,UAAM,QAAQ,KAAK,eAAe,IAAI,YAAY,KAAK,OAAO,CAAC,CAAC;AAEhE,UAAM,aAAa,IAAI,WAAW,KAAK;AACvC,aAAS,IAAI,GAAG,MAAM,WAAW,QAAQ,IAAI,KAAK,KAAK;AACtD,iBAAW,CAAC,IAAI,KAAK,MAAM;AAAA,IAC5B;AACA,WAAO;AAAA,EACR;AAAA,EAEQ,eAAe;AACtB,UAAM,QAAQ,KAAK,eAAe,oBAAI,IAAI,CAAC;AAC3C,WAAO,CAAC,KAAK,mBAAmB,GAAG;AAClC,YAAM,IAAI,KAAK,KAAK,CAAC;AAAA,IACtB;AAEA,WAAO;AAAA,EACR;AAAA,EAEQ,eAAe;AACtB,UAAM,QAAQ,KAAK,eAAe,oBAAI,IAAI,CAAC;AAC3C,WAAO,CAAC,KAAK,mBAAmB,GAAG;AAClC,YAAM,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AAAA,IACnC;AAEA,WAAO;AAAA,EACR;AAAA,EAEQ,kBAAkB;AACzB,UAAM,QAAQ,KAAK,eAAe,CAAC,CAAC;AACpC,WAAO,CAAC,KAAK,mBAAmB,GAAG;AAClC,YAAM,WAAW,KAAK,KAAK;AAC3B,YAAM,aAAa,KAAK,KAAK;AAC7B,YAAM,QAAQ,IAAI;AAAA,IACnB;AAEA,WAAO;AAAA,EACR;AAAA,EAEQ,iBAAiB;AACxB,UAAM,QAAQ,KAAK,eAAe,CAAC,CAAc;AACjD,QAAI,IAAI;AACR,WAAO,CAAC,KAAK,mBAAmB,GAAG;AAClC,UAAI,KAAK,MAAM,oBAAyB;AACvC,aAAK,WAAW;AAChB,cAAM,CAAC,IAAI,KAAK,KAAK;AAAA,MACtB;AACA,QAAE;AAAA,IACH;AAGA,UAAM,SAAS;AAEf,WAAO;AAAA,EACR;AAAA,EAEQ,aAAa;AACpB,UAAM,MAAM,KAAK,QAAS,6BAAkC,KAAK,MAAM;AACvE,QAAI,QAAQ,IAAI;AACf,YAAM,IAAI,kBAAkB,gHAAqG;AAAA,IAClI;AACA,UAAM,MAAM,KAAK,QAAS,SAAS,KAAK,QAAQ,GAAG;AACnD,UAAM,MAAM,cAAa,aAAa,OAAO,GAAG;AAChD,SAAK,SAAS,MAAM;AACpB,WAAO;AAAA,EACR;AAAA,EAEQ,gBAAgB,MAAe;AACtC,UAAM,aAAa,KAAK,OAAO;AAE/B,QAAI,QAAQ,YAAY;AACxB,QAAI,IAAI,YAAY;AAEpB,aAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACpC,YAAM,QAAQ,KAAK,MAAM;AACzB,eAAS,OAAO,KAAK,IAAI;AACzB,YAAM,YAAY;AAAA,IACnB;AAEA,WAAO,OAAO,CAAC,QAAQ;AAAA,EACxB;AAAA,EAEQ,qBAAqB;AAC5B,QAAI,KAAK,OAAO,2BAAgC;AAC/C,QAAE,KAAK;AACP,aAAO;AAAA,IACR,WAAW,KAAK,UAAU;AACzB,YAAM,IAAI,kBAAkB,gHAAqG;AAAA,IAClI;AACA,WAAO;AAAA,EACR;AAAA,EAEQ,eAAsC,OAAU;AACvD,SAAK,WAAW,IAAI,KAAK,WAAW,MAAM,KAAK;AAC/C,WAAO;AAAA,EACR;AAAA,EAEQ,aAAa;AACpB,MAAE,KAAK;AAAA,EACR;AAAA,EAEQ,SAAS;AAChB,WAAO,KAAK,QAAS,KAAK,MAAM;AAAA,EACjC;AAAA,EAEQ,QAAQ;AACf,SAAK,YAAY,CAAC;AAClB,WAAO,KAAK,QAAS,KAAK,QAAQ;AAAA,EACnC;AAAA,EAEQ,SAAS;AAChB,SAAK,YAAY,CAAC;AAClB,WACC,KAAK,QAAS,KAAK,QAAQ,IAAI,KAAK,KACpC,KAAK,QAAS,KAAK,QAAQ,IAAI,KAAK,KACpC,KAAK,QAAS,KAAK,QAAQ,IAAI,KAAK,IACpC,KAAK,QAAS,KAAK,QAAQ;AAAA,EAE7B;AAAA,EAEQ,UAAU;AACjB,SAAK,YAAY,CAAC;AAClB,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,sBAAkB,CAAC,IAAI,KAAK,QAAS,KAAK,QAAQ;AAClD,WAAO,aAAa,CAAC;AAAA,EACtB;AAAA,EAEQ,YAAY,QAAgB;AACnC,QAAI,KAAK,SAAS,SAAS,KAAK,QAAS,QAAQ;AAChD,YAAM,IAAI,kBAAkB,kCAAkC,MAAM,gEAAqD;AAAA,IAC1H;AAAA,EACD;AAGD;AApQ0B;AAAb,cAmQG,eAAe,IAAI,YAAY;AAnQxC,IAAM,eAAN;;;ACVA,IAAM,mBAAN,MAAM,yBAAwB,MAAM;AAAA,EAGnC,YAAY,SAAiB,MAAwB;AAC3D,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACb;AACD;AAP2C;AAApC,IAAM,kBAAN;AASA,IAAK,mBAAL,kBAAKC,sBAAL;AACN,EAAAA,kBAAA,qBAAkB;AAClB,EAAAA,kBAAA,+BAA4B;AAC5B,EAAAA,kBAAA,yBAAsB;AAHX,SAAAA;AAAA,GAAA;;;ACDZ,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,YAAY;AAClB,IAAM,YAAY;AAGlB,IAAMC,gBAAe,IAAI,aAAa,CAAC;AACvC,IAAMC,qBAAoB,IAAI,WAAWD,cAAa,MAAM;AAMrD,IAAM,cAAN,MAAM,YAAW;AAAA,EAQhB,YAAY,MAAW,gBAAsC,MAAM;AAN1E,SAAQ,UAA6B,IAAI,WAAW,EAAE;AACtD,SAAQ,UAAU;AAClB,SAAQ,aAAa,oBAAI,IAAI;AAE7B,SAAQ,uBAAuB;AAG9B,SAAK,QAAQ;AACb,SAAK,gBAAgB;AAAA,EACtB;AAAA,EAEO,UAAU;AAChB,SAAK,MAAM,KAAK,KAAK;AACrB,UAAM,OAAO,KAAK,QAAS,SAAS,GAAG,KAAK,OAAO;AAEnD,SAAK,QAAQ;AACb,SAAK,UAAU;AACf,SAAK,WAAW,MAAM;AACtB,SAAK,UAAU;AACf,WAAO;AAAA,EACR;AAAA,EAEO,MAAM,OAAY,OAAO,OAAO,OAAO;AAC7C,YAAQ,MAAM;AAAA,MACb;AACC,eAAO,KAAK,YAAY,KAAK;AAAA,MAC9B;AACC,eAAO,KAAK,aAAa,KAAK;AAAA,MAC/B;AACC,eAAO,KAAK,YAAY,KAAK;AAAA,MAC9B;AACC,eAAO,KAAK,YAAY,KAAK;AAAA,MAC9B;AACC,eAAO,KAAK,YAAY,KAAK;AAAA,MAC9B;AACC,eAAO,KAAK,eAAe;AAAA,MAC5B;AACC,eAAO,KAAK,kBAAkB,OAAO,IAAI;AAAA,IAC3C;AAAA,EACD;AAAA,EAEU,kBAAkB,OAAgB,MAAc;AAEzD,QAAI,KAAK,eAAe;AAGvB,UAAI,KAAK,sBAAsB;AAC9B,cAAM,IAAI,gBAAgB,uGAAsF;AAAA,MACjH;AAIA,WAAK,uBAAuB;AAC5B,WAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AACpC,WAAK,uBAAuB;AAC5B;AAAA,IACD;AAGA,UAAM,IAAI,gBAAgB,qBAAqB,IAAI,6CAAsC;AAAA,EAC1F;AAAA,EAEQ,YAAY,OAAe;AAClC,UAAM,OAAO,SAAS,YAAY,OAAQ,IAAI;AAC9C,SAAK,YAAY,CAAC;AAClB,SAAK,OAAO,wCAAkD;AAE9D,UAAM,eAAe,KAAK;AAC1B,SAAK,WAAW;AAEhB,QAAI,iBAAiB,SAAS,IAAI,CAAC,QAAQ;AAC3C,QAAI,YAAY;AAChB,WAAO,iBAAiB,GAAG;AAC1B,QAAE;AACF,WAAK,OAAO,OAAO,iBAAiB,YAAY,IAAK,CAAC;AACtD,yBAAmB,YAAY;AAAA,IAChC;AAEA,SAAK,UAAU,WAAW,YAAY;AAAA,EACvC;AAAA,EAEQ,aAAa,OAAgB;AACpC,SAAK,sBAA2B;AAChC,SAAK,OAAO,QAAQ,IAAI,CAAC;AAAA,EAC1B;AAAA,EAEQ,YAAY,OAAe;AAClC,UAAM,OAAO,KAAK,cAAc,KAAK;AACrC,SAAK,OAAO,IAAI;AAChB,YAAQ,MAAM;AAAA,MACb;AACC,aAAK,OAAO,CAAC,KAAK;AAClB;AAAA,MACD;AACC,aAAK,OAAO,KAAK;AACjB;AAAA,MACD;AACC,aAAK,QAAQ,CAAC,KAAK;AACnB;AAAA,MACD;AACC,aAAK,QAAQ,KAAK;AAClB;AAAA,MACD;AACC,aAAK,SAAS,CAAC,KAAK;AACpB;AAAA,MACD;AACC,aAAK,SAAS,KAAK;AACnB;AAAA,MACD;AACC,cAAM,IAAI,MAAM,iDAAiD,IAAI,EAAE;AAAA,IACzE;AAAA,EACD;AAAA,EAEQ,YAAY,OAAe;AAClC,QAAI,UAAU,KAAM,QAAO,KAAK,eAAe;AAG/C,UAAM,KAAK,KAAK,WAAW,IAAI,KAAK;AACpC,QAAI,OAAO,OAAO,SAAU,QAAO,KAAK,oBAAoB,EAAE;AAG9D,SAAK,WAAW,IAAI,OAAO,KAAK,WAAW,IAAI;AAG/C,QAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,KAAK,gBAAgB,KAAK;AAI3D,UAAM,MAAM,OAAO,UAAU,SAAS,KAAK,KAAK;AAChD,YAAQ,KAAK;AAAA,MACZ,KAAK;AACJ,eAAO,KAAK,uBAAuB,KAA0B;AAAA,MAC9D,KAAK;AACJ,eAAO,KAAK,wBAAwB,KAA2B;AAAA,MAChE,KAAK;AACJ,eAAO,KAAK,uBAAuB,KAA0B;AAAA,MAC9D,KAAK;AACJ,eAAO,KAAK,qBAAqB,KAAa;AAAA,MAC/C,KAAK;AACJ,eAAO,KAAK,uBAAuB,KAAe;AAAA,MACnD,KAAK;AACJ,eAAO,KAAK,wBAAwB,KAAK;AAAA,MAC1C,KAAK;AACJ,eAAO,KAAK,oBAAoB,KAA8B;AAAA,MAC/D,KAAK;AACJ,eAAO,KAAK,oBAAoB,KAAqB;AAAA,MACtD,KAAK;AACJ,eAAO,KAAK,4BAA4B,KAAoB;AAAA,MAC7D,KAAK;AACJ,eAAO,KAAK,wBAAwB;AAAA,MACrC,KAAK;AACJ,eAAO,KAAK,wBAAwB;AAAA,MACrC,KAAK;AACJ,eAAO,KAAK,kBAAkB,OAAO,QAAQ;AAAA,MAC9C;AACC,eAAO,KAAK,yBAAyB,OAAO,GAAG;AAAA,IACjD;AAAA,EACD;AAAA,EAEQ,YAAY,OAAe;AAClC,SAAK,qBAA0B;AAC/B,SAAK,iBAAiB,KAAK;AAAA,EAC5B;AAAA,EAEQ,iBAAiB;AACxB,SAAK,wBAA6B;AAAA,EACnC;AAAA,EAEQ,iBAAiB;AACxB,SAAK,mBAAwB;AAAA,EAC9B;AAAA,EAEQ,uBAAuB,OAAe;AAC7C,SAAK,4BAAgC;AACrC,SAAK,iBAAiB,MAAM,QAAQ,CAAC;AAAA,EACtC;AAAA,EAEQ,wBAAwB,OAAgB;AAC/C,SAAK,6BAAiC;AACtC,SAAK,OAAO,MAAM,QAAQ,IAAI,IAAI,CAAC;AAAA,EACpC;AAAA,EAEQ,uBAAuB,OAAe;AAC7C,SAAK,4BAAgC;AACrC,SAAK,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC9B;AAAA,EAEQ,qBAAqB,OAAa;AACzC,SAAK,oBAAwB;AAC7B,SAAK,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC9B;AAAA,EAEQ,uBAAuB,OAAe;AAC7C,SAAK,sBAA0B;AAC/B,SAAK,iBAAiB,MAAM,MAAM;AAClC,SAAK,OAAO,QAAQ,eAAe,KAAK,CAAC;AAAA,EAC1C;AAAA,EAEQ,wBAAwB,OAAyB;AACxD,UAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,QAAI,KAAK,WAAW,GAAG;AACtB,aAAO,KAAK,2BAA+B;AAAA,IAC5C;AAEA,SAAK,sBAA0B;AAC/B,eAAW,YAAY,MAAM;AAC5B,WAAK,MAAM,QAAQ;AACnB,WAAK,MAAM,MAAM,QAAQ,CAAC;AAAA,IAC3B;AAEA,SAAK,0BAA+B;AAAA,EACrC;AAAA,EAEQ,oBAAoB,OAA8B;AACzD,QAAI,MAAM,SAAS,GAAG;AACrB,aAAO,KAAK,wBAA4B;AAAA,IACzC;AAEA,SAAK,mBAAuB;AAC5B,eAAW,CAAC,UAAU,UAAU,KAAK,MAAM,QAAQ,GAAG;AACrD,WAAK,MAAM,QAAQ;AACnB,WAAK,MAAM,UAAU;AAAA,IACtB;AAEA,SAAK,0BAA+B;AAAA,EACrC;AAAA,EAEQ,oBAAoB,OAAqB;AAChD,QAAI,MAAM,SAAS,GAAG;AACrB,aAAO,KAAK,wBAA4B;AAAA,IACzC;AAEA,SAAK,mBAAuB;AAC5B,eAAW,cAAc,OAAO;AAC/B,WAAK,MAAM,UAAU;AAAA,IACtB;AAEA,SAAK,0BAA+B;AAAA,EACrC;AAAA,EAEQ,4BAA4B,OAAoB;AACvD,SAAK,2BAA+B;AAEpC,UAAM,aAAa,IAAI,WAAW,KAAK;AACvC,SAAK,QAAQ,WAAW,MAAM;AAC9B,SAAK,MAAM,UAAU;AAAA,EACtB;AAAA,EAEQ,0BAA0B;AACjC,SAAK,uBAA2B;AAAA,EACjC;AAAA,EAEQ,0BAA0B;AACjC,SAAK,uBAA2B;AAAA,EACjC;AAAA,EAEQ,yBAAyB,OAAe,KAAa;AAC5D,UAAM,gBAAgB,YAAY,eAAe,IAAI,GAAG;AACxD,QAAI,cAAe,MAAK,qBAAqB,OAAqB,aAAa;AAAA,QAC1E,MAAK,wBAAwB,KAAK;AAAA,EACxC;AAAA,EAEQ,oBAAoB,OAAe;AAC1C,SAAK,+BAAmC;AACxC,SAAK,QAAQ,KAAK;AAAA,EACnB;AAAA,EAEQ,gBAAgB,OAAuB;AAC9C,QAAI,MAAM,WAAW,GAAG;AACvB,aAAO,KAAK,0BAA8B;AAAA,IAC3C;AAEA,SAAK,YAAY,CAAC;AAClB,SAAK,qBAAyB;AAE9B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC7C,UAAI,KAAK,OAAO;AACf,aAAK,MAAM,MAAM,CAAC,CAAC;AAAA,MACpB,OAAO;AACN,aAAK,mBAAwB;AAAA,MAC9B;AAAA,IACD;AAEA,SAAK,0BAA+B;AAAA,EACrC;AAAA,EAEQ,qBAAqB,OAAmB,KAAmB;AAClE,SAAK,OAAO,GAAG;AACf,SAAK,QAAQ,MAAM,UAAU;AAE7B,QAAI,6BAAiC;AACpC,cAAQ,IAAI,WAAW,MAAM,MAAM;AAAA,IACpC;AAEA,SAAK,MAAM,KAAmB;AAAA,EAC/B;AAAA,EAEQ,MAAM,OAAmB;AAChC,SAAK,YAAY,MAAM,UAAU;AACjC,SAAK,QAAS,IAAI,OAAO,KAAK,OAAO;AACrC,SAAK,WAAW,MAAM;AAAA,EACvB;AAAA,EAEQ,OAAO,OAAe;AAC7B,SAAK,YAAY,CAAC;AAClB,SAAK,QAAS,KAAK,SAAS,IAAI;AAAA,EACjC;AAAA,EAEQ,QAAQ,OAAe;AAC9B,SAAK,YAAY,CAAC;AAClB,SAAK,UAAU,OAAO,KAAK,OAAO;AAClC,SAAK,WAAW;AAAA,EACjB;AAAA,EAEQ,UAAU,OAAe,QAAgB;AAChD,SAAK,QAAS,SAAS,CAAC,IAAI;AAC5B,eAAW;AACX,SAAK,QAAS,SAAS,CAAC,IAAI;AAC5B,eAAW;AACX,SAAK,QAAS,SAAS,CAAC,IAAI;AAC5B,eAAW;AACX,SAAK,QAAS,MAAM,IAAI;AAAA,EACzB;AAAA,EAEQ,SAAS,OAAe;AAC/B,IAAAA,cAAa,CAAC,IAAI;AAClB,SAAK,MAAMC,kBAAiB;AAAA,EAC7B;AAAA,EAEQ,iBAAiB,OAAe;AACvC,UAAM,aAAa,YAAW,aAAa,OAAO,KAAK;AAGvD,QAAI,WAAW,4BAAiC,GAAG;AAClD,YAAM,IAAI,gBAAgB,gGAAqF;AAAA,IAChH;AAEA,SAAK,MAAM,UAAU;AACrB,SAAK,0BAA+B;AAAA,EACrC;AAAA,EAEQ,cAAc,OAAe;AACpC,UAAM,OAAO,QAAQ;AACrB,QAAI,QAAQ,MAAM,GAAG;AAEpB,UAAI,SAAS,YAAY,SAAS,SAAU,QAAO;AAEnD,UAAI,SAAS,aAAa,SAAS,UAAW,QAAO;AAAA,IAEtD;AAEA,WAAO;AAAA,EACR;AAAA,EAEQ,YAAY,QAAgB;AACnC,SAAK,aAAa,KAAK,UAAU,MAAM;AAAA,EACxC;AAAA,EAEQ,aAAa,QAAgB;AACpC,QAAI,KAAK,QAAS,SAAS,QAAQ;AAClC,YAAM,MAAM,KAAK;AACjB,WAAK,UAAU,IAAI,WAAW,QAAQ,eAAe,MAAM,CAAC;AAC5D,WAAK,QAAQ,IAAI,GAAI;AAAA,IACtB;AAAA,EACD;AAGD;AAjXwB;AAAX,YAgXG,eAAe,IAAI,YAAY;AAhXxC,IAAM,aAAN;;;ACZA,SAAS,UAAuB,MAAS,eAA+B;AAC9E,SAAO,IAAI,WAAW,MAAM,aAAa,EAAE,QAAQ;AACpD;AAFgB;AAIT,SAAS,YAAyB,QAAoB,SAAS,IAAI;AACzE,QAAM,eAAe,IAAI,aAAa,MAAM;AAC5C,MAAI,WAAW,GAAI,cAAa,SAAS;AACzC,QAAM,QAAQ,aAAa,KAAK;AAChC,eAAa,MAAM;AACnB,SAAO;AACR;AANgB;AAQT,SAAS,wBAAqC,QAAoB,SAAS,IAAI;AACrF,QAAM,eAAe,IAAI,aAAa,MAAM;AAC5C,MAAI,WAAW,GAAI,cAAa,SAAS;AACzC,QAAM,QAAQ,aAAa,KAAK;AAChC,QAAM,eAAe,aAAa;AAClC,eAAa,MAAM;AAEnB,SAAO;AAAA,IACN;AAAA,IACA,QAAQ,iBAAiB,OAAO,aAAa,KAAK;AAAA,EACnD;AACD;AAXgB;","names":["DeserializerReason","BinaryTokens","BinaryPrimitives","RegExps","BigIntegers","Numbers","TypedArrays","SerializerReason","float64Array","uInt8Float64Array"]} |
+21
-20
| { | ||
| "name": "binarytf", | ||
| "version": "2.1.4-next.2679186.0", | ||
| "version": "2.1.4-next.5554144", | ||
| "description": "Binary Term Format", | ||
@@ -32,22 +32,23 @@ "author": "kyranet <kyradiscord@gmail.com>", | ||
| "devDependencies": { | ||
| "@commitlint/cli": "^19.3.0", | ||
| "@commitlint/config-conventional": "^19.2.2", | ||
| "@favware/cliff-jumper": "^3.0.3", | ||
| "@sapphire/eslint-config": "^5.0.4", | ||
| "@commitlint/cli": "^20.1.0", | ||
| "@commitlint/config-conventional": "^20.0.0", | ||
| "@favware/cliff-jumper": "^6.0.0", | ||
| "@sapphire/eslint-config": "^5.0.6", | ||
| "@sapphire/prettier-config": "^2.0.0", | ||
| "@sapphire/ts-config": "^5.0.1", | ||
| "@types/node": "^20.11.5", | ||
| "@typescript-eslint/eslint-plugin": "^7.8.0", | ||
| "@typescript-eslint/parser": "^7.8.0", | ||
| "@vitest/coverage-v8": "^1.6.0", | ||
| "@sapphire/ts-config": "^5.0.3", | ||
| "@swc/core": "^1.15.3", | ||
| "@types/node": "^20.19.25", | ||
| "@typescript-eslint/eslint-plugin": "^7.18.0", | ||
| "@typescript-eslint/parser": "^7.18.0", | ||
| "@vitest/coverage-v8": "^4.0.14", | ||
| "cz-conventional-changelog": "^3.3.0", | ||
| "eslint": "^8.57.0", | ||
| "eslint-config-prettier": "^9.1.0", | ||
| "eslint-plugin-prettier": "^5.1.3", | ||
| "lint-staged": "^15.2.2", | ||
| "prettier": "^3.2.5", | ||
| "tsup": "^8.0.2", | ||
| "typedoc": "^0.25.13", | ||
| "typescript": "^5.4.5", | ||
| "vitest": "^1.6.0" | ||
| "eslint": "^8.57.1", | ||
| "eslint-config-prettier": "^10.1.8", | ||
| "eslint-plugin-prettier": "^5.5.4", | ||
| "lint-staged": "^16.2.7", | ||
| "prettier": "^3.7.1", | ||
| "tsup": "^8.5.1", | ||
| "typedoc": "^0.26.1", | ||
| "typescript": "^5.9.3", | ||
| "vitest": "^4.0.14" | ||
| }, | ||
@@ -98,3 +99,3 @@ "repository": { | ||
| "prettier": "@sapphire/prettier-config", | ||
| "packageManager": "yarn@4.2.2" | ||
| "packageManager": "yarn@4.12.0" | ||
| } |
221716
-0.14%21
5%2413
-2.07%