@sapphire/string-store 1.1.0-next.db356eb0 → 1.1.0-next.f3243e67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,7 +7,6 @@
7
7
  **High-capacity raw data storage in UTF-16 strings.**
8
8
 
9
9
  [![GitHub](https://img.shields.io/github/license/sapphiredev/utilities)](https://github.com/sapphiredev/utilities/blob/main/LICENSE.md)
10
- [![codecov](https://codecov.io/gh/sapphiredev/utilities/branch/main/graph/badge.svg?token=OEGIV6RFDO)](https://codecov.io/gh/sapphiredev/utilities)
11
10
  [![npm bundle size](https://img.shields.io/bundlephobia/min/@sapphire/string-store?logo=webpack&style=flat-square)](https://bundlephobia.com/result?p=@sapphire/string-store)
12
11
  [![npm](https://img.shields.io/npm/v/@sapphire/string-store?color=crimson&logo=npm&style=flat-square)](https://www.npmjs.com/package/@sapphire/string-store)
13
12
 
@@ -42,20 +41,20 @@ npm install @sapphire/string-store
42
41
  const { SchemaStore, Schema, t } = require('@sapphire/string-store');
43
42
 
44
43
  const Id = {
45
- AgeUpdate: 0,
46
- StrengthUpdate: 1,
47
- Planet: 2,
48
- User: 3
44
+ AgeUpdate: 0,
45
+ StrengthUpdate: 1,
46
+ Planet: 2,
47
+ User: 3
49
48
  };
50
49
 
51
50
  // Create the store
52
51
  const store = new SchemaStore()
53
- // Add a schema with an age field stored as a int32:
54
- // Schema<Id.AgeUpdate, { age: number }>
55
- .add(new Schema(Id.AgeUpdate).int32('age'))
56
- // Add a schema with a strength field stored as a float32:
57
- // Schema<Id.StrengthUpdate, { strength: number }>
58
- .add(new Schema(Id.StrengthUpdate).float32('strength'));
52
+ // Add a schema with an age field stored as a int32:
53
+ // Schema<Id.AgeUpdate, { age: number }>
54
+ .add(new Schema(Id.AgeUpdate).int32('age'))
55
+ // Add a schema with a strength field stored as a float32:
56
+ // Schema<Id.StrengthUpdate, { strength: number }>
57
+ .add(new Schema(Id.StrengthUpdate).float32('strength'));
59
58
 
60
59
  // Serialize an `Id.AgeUpdate` object into a string containing:
61
60
  // - The schema ID (0)
@@ -65,11 +64,12 @@ const buffer = store.serialize(Id.AgeUpdate, { age: 20 }).toString();
65
64
 
66
65
  > [!Tip]
67
66
  > The serialized string is encoded in UTF-16, meaning it can store 16 bits per character. Each type stores a different number of bits, for example, a single character can store:
68
- > - 16 booleans
69
- > - 8 2-bit unsigned integers (0-3)
70
- > - 4 4-bit unsigned integers (0-15)
71
- > - 2 8-bit unsigned integers (0-255)
72
- > - 1 16-bit integer (0-65535)
67
+ >
68
+ > - 16 booleans
69
+ > - 8 2-bit unsigned integers (0-3)
70
+ > - 4 4-bit unsigned integers (0-15)
71
+ > - 2 8-bit unsigned integers (0-255)
72
+ > - 1 16-bit integer (0-65535)
73
73
  >
74
74
  > As a use-case, Discord's `custom_id` field in message components can store up to **100** UTF-16 characters, which means it has a storage of **1600 bits**, below you can see the supported types and their storage in bits. Keep in mind that the schema ID is stored as a [16-bit](#int16) integer, and that the property names are **not** stored.
75
75
 
@@ -850,7 +850,7 @@ var ConverterInt32 = new Int32Array(ConverterUint8.buffer);
850
850
  var ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);
851
851
  var ConverterFloat = new Float32Array(ConverterUint8.buffer);
852
852
  var ConverterDouble = new Float64Array(ConverterUint8.buffer);
853
- var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn;
853
+ var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn, bufferWrite16_fn;
854
854
  var _UnalignedUint16Array = class _UnalignedUint16Array {
855
855
  constructor(maxLength) {
856
856
  __privateAdd(this, _UnalignedUint16Array_instances);
@@ -888,41 +888,38 @@ var _UnalignedUint16Array = class _UnalignedUint16Array {
888
888
  this.writeInt4(value >> 4);
889
889
  }
890
890
  writeInt16(value) {
891
- this.writeInt8(value & 255);
892
- this.writeInt8(value >> 8);
891
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value);
893
892
  }
894
893
  writeInt32(value) {
895
- this.writeInt16(value & 65535);
896
- this.writeInt16(value >> 16);
894
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value);
895
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value >> 16);
897
896
  }
898
897
  writeInt64(value) {
899
898
  this.writeBigInt64(BigInt(value));
900
899
  }
901
900
  writeBigInt32(value) {
902
- this.writeInt16(Number(value & 0xffffn));
903
- this.writeInt16(Number(value >> 16n));
901
+ ConverterInt64[0] = value;
902
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
903
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
904
904
  }
905
905
  writeBigInt64(value) {
906
- this.writeInt32(Number(value & 0xffffffffn));
907
- this.writeInt32(Number(value >> 32n));
906
+ ConverterInt64[0] = value;
907
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
908
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
909
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[2]);
910
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[3]);
908
911
  }
909
912
  writeFloat32(value) {
910
913
  ConverterFloat[0] = value;
911
- this.writeInt8(ConverterUint8[0]);
912
- this.writeInt8(ConverterUint8[1]);
913
- this.writeInt8(ConverterUint8[2]);
914
- this.writeInt8(ConverterUint8[3]);
914
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
915
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
915
916
  }
916
917
  writeFloat64(value) {
917
918
  ConverterDouble[0] = value;
918
- this.writeInt8(ConverterUint8[0]);
919
- this.writeInt8(ConverterUint8[1]);
920
- this.writeInt8(ConverterUint8[2]);
921
- this.writeInt8(ConverterUint8[3]);
922
- this.writeInt8(ConverterUint8[4]);
923
- this.writeInt8(ConverterUint8[5]);
924
- this.writeInt8(ConverterUint8[6]);
925
- this.writeInt8(ConverterUint8[7]);
919
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
920
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
921
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[2]);
922
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[3]);
926
923
  }
927
924
  readBit(offset) {
928
925
  const ptr = Pointer.from(offset);
@@ -1062,6 +1059,23 @@ writeBit_fn = /* @__PURE__ */ __name(function(value) {
1062
1059
  __privateWrapper(this, _bitLength)._++;
1063
1060
  if ((__privateGet(this, _bitLength) & 15) === 0) __privateWrapper(this, _wordIndex)._++;
1064
1061
  }, "#writeBit");
1062
+ bufferWrite16_fn = /* @__PURE__ */ __name(function(value) {
1063
+ const wordIndex = __privateGet(this, _wordIndex);
1064
+ const bitIndex = this.bitLength & 15;
1065
+ if (wordIndex + (bitIndex === 0 ? 0 : 1) === this.maxLength) {
1066
+ throw new RangeError(`The buffer is full`);
1067
+ }
1068
+ if (bitIndex === 0) {
1069
+ __privateGet(this, _buffer)[wordIndex] = value;
1070
+ } else {
1071
+ value &= 65535;
1072
+ __privateGet(this, _buffer)[wordIndex] |= value << bitIndex;
1073
+ __privateGet(this, _buffer)[wordIndex + 1] = value >> 16 - bitIndex;
1074
+ }
1075
+ __privateSet(this, _bitLength, __privateGet(this, _bitLength) + 16);
1076
+ __privateWrapper(this, _wordIndex)._++;
1077
+ __privateWrapper(this, _wordLength)._++;
1078
+ }, "#bufferWrite16");
1065
1079
  __name(_UnalignedUint16Array, "UnalignedUint16Array");
1066
1080
  var UnalignedUint16Array = _UnalignedUint16Array;
1067
1081
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/shared/_common.ts","../../src/lib/shared/Pointer.ts","../../src/lib/types/Array.ts","../../src/lib/types/BigInt32.ts","../../src/lib/types/BigInt64.ts","../../src/lib/types/BigUint32.ts","../../src/lib/types/BigUint64.ts","../../src/lib/types/Bit.ts","../../src/lib/types/Boolean.ts","../../src/lib/types/FixedLengthArray.ts","../../src/lib/types/Float32.ts","../../src/lib/types/Float64.ts","../../src/lib/types/Int16.ts","../../src/lib/types/Int2.ts","../../src/lib/types/Int32.ts","../../src/lib/types/Int4.ts","../../src/lib/types/Int64.ts","../../src/lib/types/Int8.ts","../../src/lib/types/Snowflake.ts","../../src/lib/types/String.ts","../../src/lib/types/Uint16.ts","../../src/lib/types/Uint2.ts","../../src/lib/types/Uint32.ts","../../src/lib/types/Uint4.ts","../../src/lib/types/Uint64.ts","../../src/lib/types/Uint8.ts","../../src/lib/types/index.ts","../../src/lib/schema/Schema.ts","../../src/lib/UnalignedUint16Array.ts","../../src/lib/schema/SchemaStore.ts","../../src/lib/utilities.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export function isArrayLike(object: unknown): object is ArrayLike<unknown> {\n\t// If the item is not an object, it is not array-like:\n\tif (!isObject(object)) return false;\n\t// If the item is an array, it is array-like:\n\tif (Array.isArray(object)) return true;\n\t// If the item doesn't have a numeric length property, it is not array-like:\n\tif (!hasLength(object)) return false;\n\t// If the length isn't a valid index, it is not array-like:\n\tif (!isValidLength(object.length)) return false;\n\n\treturn object.length === 0 || object.length - 1 in object;\n}\n\nfunction isObject(item: unknown): item is object {\n\treturn typeof item === 'object' && item !== null;\n}\n\nfunction hasLength(item: object): item is { length: number } {\n\treturn 'length' in item && typeof item.length === 'number';\n}\n\nexport function isValidLength(length: number) {\n\treturn Number.isSafeInteger(length) && length >= 0 && length < 2147483648;\n}\n","import { isValidLength } from './_common';\n\n/**\n * A pointer to a position in a buffer.\n *\n * This is used to keep track of the current position in a buffer while allowing\n * the position to be updated by multiple different functions.\n *\n * @privateRemarks\n *\n * This class draws inspiration from the following constructs:\n * - `int*` in C/C++\n * - `ref int` in C#\n * - `*mut i32` in Rust\n */\nexport class Pointer {\n\t#value = 0;\n\n\tpublic get value() {\n\t\treturn this.#value;\n\t}\n\n\tpublic add(value: number) {\n\t\tconst added = this.#value + value;\n\t\tif (!isValidLength(added)) {\n\t\t\tthrow new RangeError(`The pointer value cannot be an invalid length value`);\n\t\t}\n\n\t\tthis.#value = added;\n\t\treturn this;\n\t}\n\n\tpublic static from(pointer: PointerLike) {\n\t\tif (pointer instanceof Pointer) {\n\t\t\treturn pointer;\n\t\t}\n\n\t\tconst instance = new Pointer();\n\t\tinstance.add(Number(pointer));\n\t\treturn instance;\n\t}\n}\n\nexport type PointerLike = Pointer | { valueOf(): number } | { [Symbol.toPrimitive](hint: 'number'): number };\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function ArrayType<ValueType, ValueBitSize extends number | null>(type: IType<ValueType, ValueBitSize>): IType<ValueType[], null> {\n\treturn {\n\t\tserialize(buffer, values: readonly ValueType[]) {\n\t\t\tif (!isArrayLike(values)) {\n\t\t\t\tthrow new TypeError(`Expected an array, got ${values}`);\n\t\t\t}\n\n\t\t\tbuffer.writeInt16(values.length);\n\t\t\tfor (const value of values) {\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst length = buffer.readUint16(pointer);\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const BigInt32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigInt64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BitType: IType<number, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(value & 0b1);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer);\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport const BooleanType: IType<boolean, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(Number(value));\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer) === 1;\n\t},\n\tBIT_SIZE: 1\n};\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function FixedLengthArrayType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>,\n\tlength: number\n): IType<ValueType[], ValueBitSize extends null ? null : number> {\n\treturn {\n\t\tserialize(buffer, values) {\n\t\t\tif (!isArrayLike(values) || values.length !== length) {\n\t\t\t\tthrow new TypeError(`Expected array of length ${length}, got ${values.length}`);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\ttype.serialize(buffer, values[i]);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: (typeof type.BIT_SIZE === 'number' ? type.BIT_SIZE * length : null) as ValueBitSize extends null ? null : number\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const Float32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Float64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Int2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Int32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Int4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Int64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import type { IType } from './base/IType';\n\nexport const SnowflakeType = {\n\tserialize(buffer, value: bigint | string) {\n\t\tbuffer.writeBigInt64(BigInt(value));\n\t},\n\tdeserialize(buffer, offset) {\n\t\treturn buffer.readBigUint64(offset);\n\t},\n\tBIT_SIZE: 64\n} as const satisfies IType<bigint, 64>;\n","import type { IType } from './base/IType';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nexport const StringType: IType<string, null> = {\n\tserialize(buffer, value) {\n\t\tconst encoded = encoder.encode(value);\n\t\tbuffer.writeInt16(encoded.length);\n\t\tfor (const byte of encoded) {\n\t\t\tbuffer.writeInt8(byte);\n\t\t}\n\t},\n\tdeserialize(buffer, pointer) {\n\t\tconst length = buffer.readInt16(pointer);\n\t\tconst bytes = new Uint8Array(length);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tbytes[i] = buffer.readInt8(pointer);\n\t\t}\n\t\treturn decoder.decode(bytes);\n\t},\n\tBIT_SIZE: null\n};\n","import type { IType } from './base/IType';\n\nexport const Uint16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Uint2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Uint32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Uint4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Uint64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Uint8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import { ArrayType } from './Array';\nimport type { IType } from './base/IType';\nimport { BigInt32Type } from './BigInt32';\nimport { BigInt64Type } from './BigInt64';\nimport { BigUint32Type } from './BigUint32';\nimport { BigUint64Type } from './BigUint64';\nimport { BitType } from './Bit';\nimport { BooleanType } from './Boolean';\nimport { FixedLengthArrayType } from './FixedLengthArray';\nimport { Float32Type } from './Float32';\nimport { Float64Type } from './Float64';\nimport { Int16Type } from './Int16';\nimport { Int2Type } from './Int2';\nimport { Int32Type } from './Int32';\nimport { Int4Type } from './Int4';\nimport { Int64Type } from './Int64';\nimport { Int8Type } from './Int8';\nimport { SnowflakeType } from './Snowflake';\nimport { StringType } from './String';\nimport { Uint16Type } from './Uint16';\nimport { Uint2Type } from './Uint2';\nimport { Uint32Type } from './Uint32';\nimport { Uint4Type } from './Uint4';\nimport { Uint64Type } from './Uint64';\nimport { Uint8Type } from './Uint8';\n\nexport const t = {\n\tarray: ArrayType,\n\tbigInt32: BigInt32Type,\n\tbigInt64: BigInt64Type,\n\tbigUint32: BigUint32Type,\n\tbigUint64: BigUint64Type,\n\tbit: BitType,\n\tboolean: BooleanType,\n\tfixedLengthArray: FixedLengthArrayType,\n\tfloat32: Float32Type,\n\tfloat64: Float64Type,\n\tint16: Int16Type,\n\tint2: Int2Type,\n\tint32: Int32Type,\n\tint4: Int4Type,\n\tint64: Int64Type,\n\tint8: Int8Type,\n\tsnowflake: SnowflakeType,\n\tstring: StringType,\n\tuint16: Uint16Type,\n\tuint2: Uint2Type,\n\tuint32: Uint32Type,\n\tuint4: Uint4Type,\n\tuint64: Uint64Type,\n\tuint8: Uint8Type\n};\n\nexport {\n\tArrayType,\n\tBigInt32Type,\n\tBigInt64Type,\n\tBigUint32Type,\n\tBigUint64Type,\n\tBitType,\n\tBooleanType,\n\tFixedLengthArrayType,\n\tFloat32Type,\n\tFloat64Type,\n\tInt16Type,\n\tInt2Type,\n\tInt32Type,\n\tInt4Type,\n\tInt64Type,\n\tInt8Type,\n\tSnowflakeType,\n\tStringType,\n\tUint16Type,\n\tUint2Type,\n\tUint32Type,\n\tUint4Type,\n\tUint64Type,\n\tUint8Type,\n\ttype IType\n};\n","import { Pointer, type PointerLike } from '../shared/Pointer';\nimport { t, type IType } from '../types/index';\nimport type { UnalignedUint16Array } from '../UnalignedUint16Array';\n\nexport class Schema<Id extends number = number, Entries extends object = object> {\n\treadonly #id: Id;\n\treadonly #types = new Map<string, IType<any, number | null>>();\n\t#bitSize: number | null = 0;\n\n\t/**\n\t * Creates a new schema.\n\t *\n\t * @param id The id of the schema\n\t */\n\tpublic constructor(id: Id) {\n\t\tthis.#id = id;\n\t}\n\n\t/**\n\t * The id of the schema.\n\t */\n\tpublic get id(): Id {\n\t\treturn this.#id;\n\t}\n\n\t/**\n\t * The total bit size of the schema.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the bit size of the\n\t * schema will also be `null`.\n\t */\n\tpublic get bitSize(): number | null {\n\t\treturn this.#bitSize;\n\t}\n\n\t/**\n\t * Get a property from the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The specified property\n\t *\n\t * @remarks\n\t *\n\t * If the property does not exist, an error will be thrown.\n\t */\n\tpublic get<const Name extends keyof Entries & string>(name: Name): Entries[Name] {\n\t\tconst type = this.#types.get(name) as Entries[Name];\n\t\tif (!type) throw new Error(`Schema with id ${this.#id} does not have a property with name \"${name}\"`);\n\t\treturn type;\n\t}\n\n\t/**\n\t * Serialize a value into a buffer.\n\t *\n\t * @param buffer The buffer to serialize\n\t * @param value The value to serialize into the buffer\n\t *\n\t * @remarks\n\t *\n\t * The schema's ID is written to the buffer first, followed by each property\n\t * in the schema.\n\t */\n\tpublic serialize(buffer: UnalignedUint16Array, value: Readonly<UnwrapSchemaEntries<Entries>>): void {\n\t\tbuffer.writeInt16(this.#id);\n\t\tfor (const [name, type] of this) {\n\t\t\t(type as IType<any, number | null>).serialize(buffer, (value as any)[name]);\n\t\t}\n\t}\n\n\t/**\n\t * Deserialize a value from a buffer.\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @param pointer The pointer to where the buffer should be read from\n\t * @returns The deserialized value\n\t *\n\t * @remarks\n\t *\n\t * Unlike {@link Schema.serialize}, this method does not read the schema's ID\n\t * from the buffer, that is reserved for the {@link SchemaStore}.\n\t */\n\tpublic deserialize(buffer: UnalignedUint16Array, pointer: PointerLike): UnwrapSchemaEntries<Entries> {\n\t\tconst ptr = Pointer.from(pointer);\n\t\tconst result = Object.create(null) as UnwrapSchemaEntries<Entries>;\n\t\tfor (const [name, type] of this) {\n\t\t\t// @ts-expect-error Complex types\n\t\t\tresult[name] = type.deserialize(buffer, ptr);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Adds an array property to the schema.\n\t *\n\t * @seealso {@link Schema.fixedLengthArray} for a fixed length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @returns The modified schema\n\t */\n\tpublic array<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.array(type));\n\t}\n\n\t/**\n\t * Adds a fixed length array property to the schema.\n\t *\n\t * @seealso {@link Schema.array} for a dynamic length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @param length The length of the array\n\t * @returns The modified schema\n\t */\n\tpublic fixedLengthArray<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>,\n\t\tlength: number\n\t) {\n\t\treturn this.#addType(name, t.fixedLengthArray(type, length));\n\t}\n\n\t/**\n\t * Adds a string property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic string<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.string);\n\t}\n\n\t/**\n\t * Adds a boolean property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic boolean<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.boolean);\n\t}\n\n\t/**\n\t * Adds a bit property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bit<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bit);\n\t}\n\n\t/**\n\t * Adds a 2-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2 to 1, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int2);\n\t}\n\n\t/**\n\t * Adds a 2-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 3, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint2);\n\t}\n\n\t/**\n\t * Adds a 4-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -8 to 7, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int4);\n\t}\n\n\t/**\n\t * Adds a 4-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 15, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint4);\n\t}\n\n\t/**\n\t * Adds a 8-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -128 to 127, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int8);\n\t}\n\n\t/**\n\t * Adds a 8-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 255, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint8);\n\t}\n\n\t/**\n\t * Adds a 16-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -32768 to 32767, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int16);\n\t}\n\n\t/**\n\t * Adds a 16-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 65535, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint16);\n\t}\n\n\t/**\n\t * Adds a 32-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648 to 2_147_483_647, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int32);\n\t}\n\n\t/**\n\t * Adds a 32-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 4_294_967_295, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808 to 9_223_372_036_854_775_807, inclusive.\n\t *\n\t * However, it may run into precision issues past the range of `-9_007_199_254_740_991` to `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int64);\n\t}\n\n\t/**\n\t * Adds a 64-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 18_446_744_073_709_551_615, inclusive.\n\t *\n\t * However, it may run into precision issues past `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648n to 2_147_483_647n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt32);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 4_294_967_295n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808n to 9_223_372_036_854_775_807n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -3.4028234663852886e+38 to 3.4028234663852886e+38, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float32);\n\t}\n\n\t/**\n\t * Adds a 64-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -1.7976931348623157e+308 to 1.7976931348623157e+308, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema, similar to {@link Schema.bigUint64}.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic snowflake<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.snowflake);\n\t}\n\n\t/**\n\t * Iterates over the schema's property names.\n\t *\n\t * @returns An iterator for the schema's property names\n\t */\n\tpublic keys(): IterableIterator<KeyOfSchema<this>> {\n\t\treturn this.#types.keys() as IterableIterator<KeyOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property values\n\t *\n\t * @returns An iterator for the schema's property values\n\t */\n\tpublic values(): IterableIterator<ValueOfSchema<this>> {\n\t\treturn this.#types.values() as IterableIterator<ValueOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.#types.entries() as IterableIterator<EntryOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.entries();\n\t}\n\n\t#addType<const EntryName extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: EntryName,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t): Merge<Id, Entries, EntryName, typeof type> {\n\t\tif (this.#types.has(name)) {\n\t\t\tthrow new Error(`Schema with id ${this.#id} already has a property with name \"${name}\"`);\n\t\t}\n\n\t\tthis.#types.set(name, type);\n\n\t\tif (type.BIT_SIZE === null) {\n\t\t\tthis.#bitSize = null;\n\t\t} else if (this.#bitSize !== null) {\n\t\t\tthis.#bitSize += type.BIT_SIZE;\n\t\t}\n\n\t\treturn this as unknown as Merge<Id, Entries, EntryName, typeof type>;\n\t}\n}\n\ntype Merge<\n\tId extends number,\n\tEntries extends object,\n\tEntryName extends string,\n\tEntryType extends IType<any, number | null>\n> = EntryName extends keyof Entries ? never : Schema<Id, { [K in EntryName | keyof Entries]: K extends keyof Entries ? Entries[K] : EntryType }>;\n\nexport type KeyOfSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? keyof Type & string : never;\nexport type ValueOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: Type[K] }[keyof Type] : never;\nexport type EntryOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: readonly [K, Type[K]] }[keyof Type] : never;\n\nexport type UnwrapSchemaType<Type extends object> = Type extends IType<infer T, infer _> ? T : never;\nexport type UnwrapSchemaEntries<Entries extends object> = { [K in keyof Entries]: UnwrapSchemaType<Entries[K] & object> } & object;\nexport type UnwrapSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? UnwrapSchemaEntries<Type> : never;\n","import { Pointer, type PointerLike } from './shared/Pointer';\n\nconst ConverterUint8 = new Uint8Array(8);\nconst ConverterUint16 = new Uint16Array(ConverterUint8.buffer);\nconst ConverterUint32 = new Uint32Array(ConverterUint8.buffer);\nconst ConverterUint64 = new BigUint64Array(ConverterUint8.buffer);\n\nconst ConverterInt32 = new Int32Array(ConverterUint8.buffer);\nconst ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);\n\nconst ConverterFloat = new Float32Array(ConverterUint8.buffer);\nconst ConverterDouble = new Float64Array(ConverterUint8.buffer);\n\nexport class UnalignedUint16Array {\n\t#buffer: Uint16Array;\n\t#bitLength = 0;\n\t#wordIndex = 0;\n\t#wordLength = 0;\n\n\tpublic constructor(maxLength: number) {\n\t\tthis.#buffer = new Uint16Array(maxLength);\n\t}\n\n\tpublic get maxLength(): number {\n\t\treturn this.#buffer.length;\n\t}\n\n\tpublic get maxBitLength(): number {\n\t\treturn this.#buffer.length * 16;\n\t}\n\n\tpublic get length(): number {\n\t\treturn this.#wordLength;\n\t}\n\n\tpublic get bitLength(): number {\n\t\treturn this.#bitLength;\n\t}\n\n\tpublic writeBit(value: number): void {\n\t\tthis.#writeBit(value);\n\t}\n\n\tpublic writeInt2(value: number): void {\n\t\tthis.writeBit(value & 1);\n\t\tthis.writeBit(value >> 1);\n\t}\n\n\tpublic writeInt4(value: number): void {\n\t\tthis.writeInt2(value & 0b11);\n\t\tthis.writeInt2(value >> 2);\n\t}\n\n\tpublic writeInt8(value: number): void {\n\t\tthis.writeInt4(value & 0b1111);\n\t\tthis.writeInt4(value >> 4);\n\t}\n\n\tpublic writeInt16(value: number): void {\n\t\tthis.writeInt8(value & 0xff);\n\t\tthis.writeInt8(value >> 8);\n\t}\n\n\tpublic writeInt32(value: number): void {\n\t\tthis.writeInt16(value & 0xffff);\n\t\tthis.writeInt16(value >> 16);\n\t}\n\n\tpublic writeInt64(value: number): void {\n\t\tthis.writeBigInt64(BigInt(value));\n\t}\n\n\tpublic writeBigInt32(value: bigint): void {\n\t\tthis.writeInt16(Number(value & 0xffffn));\n\t\tthis.writeInt16(Number(value >> 16n));\n\t}\n\n\tpublic writeBigInt64(value: bigint): void {\n\t\tthis.writeInt32(Number(value & 0xffffffffn));\n\t\tthis.writeInt32(Number(value >> 32n));\n\t}\n\n\tpublic writeFloat32(value: number): void {\n\t\tConverterFloat[0] = value;\n\t\tthis.writeInt8(ConverterUint8[0]);\n\t\tthis.writeInt8(ConverterUint8[1]);\n\t\tthis.writeInt8(ConverterUint8[2]);\n\t\tthis.writeInt8(ConverterUint8[3]);\n\t}\n\n\tpublic writeFloat64(value: number): void {\n\t\tConverterDouble[0] = value;\n\t\tthis.writeInt8(ConverterUint8[0]);\n\t\tthis.writeInt8(ConverterUint8[1]);\n\t\tthis.writeInt8(ConverterUint8[2]);\n\t\tthis.writeInt8(ConverterUint8[3]);\n\t\tthis.writeInt8(ConverterUint8[4]);\n\t\tthis.writeInt8(ConverterUint8[5]);\n\t\tthis.writeInt8(ConverterUint8[6]);\n\t\tthis.writeInt8(ConverterUint8[7]);\n\t}\n\n\tpublic readBit(offset: PointerLike): 0 | 1 {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) as 0 | 1;\n\t}\n\n\tpublic readInt2(offset: PointerLike): number {\n\t\t// Bit shifting to convert 2-bit signed integer to 32-bit signed integer\n\t\t// 0b01 → 0b0100_0000_0000_0000 → 0b000_0000_0000_0001 (1)\n\t\t// 0b10 → 0b1000_0000_0000_0000 → 0b111_1111_1111_1110 (-2)\n\t\treturn (this.readUint2(offset) << 30) >> 30;\n\t}\n\n\tpublic readUint2(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1);\n\t}\n\n\tpublic readInt4(offset: PointerLike): number {\n\t\t// Bit shifting to convert 4-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint4(offset) << 28) >> 28;\n\t}\n\n\tpublic readUint4(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1) | (this.#readBit(ptr) << 2) | (this.#readBit(ptr) << 3);\n\t}\n\n\tpublic readInt8(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint8(offset) << 24) >> 24;\n\t}\n\n\tpublic readUint8(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readByte(ptr);\n\t}\n\n\tpublic readInt16(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint16(offset) << 16) >> 16;\n\t}\n\n\tpublic readUint16(offset: PointerLike): number {\n\t\tthis.#bufferRead16(Pointer.from(offset));\n\t\treturn ConverterUint16[0];\n\t}\n\n\tpublic readInt32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterInt32[0];\n\t}\n\n\tpublic readUint32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterUint32[0];\n\t}\n\n\tpublic readInt64(offset: PointerLike): number {\n\t\treturn Number(this.readBigInt64(offset));\n\t}\n\n\tpublic readUint64(offset: PointerLike) {\n\t\treturn Number(this.readBigUint64(offset));\n\t}\n\n\tpublic readBigInt32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterInt32[0]);\n\t}\n\n\tpublic readBigUint32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterUint32[0]);\n\t}\n\n\tpublic readBigInt64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterInt64[0];\n\t}\n\n\tpublic readBigUint64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterUint64[0];\n\t}\n\n\tpublic readFloat32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterFloat[0];\n\t}\n\n\tpublic readFloat64(offset: PointerLike): number {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterDouble[0];\n\t}\n\n\tpublic toString() {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < this.length; i++) {\n\t\t\tresult += String.fromCharCode(this.#buffer[i]);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic toArray(): Uint16Array {\n\t\treturn this.#buffer.slice(0, this.length);\n\t}\n\n\t#readBit(pointer: Pointer) {\n\t\tconst bitOffset = pointer.value;\n\t\tconst index = bitOffset >> 4;\n\t\tconst bitIndex = bitOffset & 0xf;\n\t\tpointer.add(1);\n\t\treturn (this.#buffer[index] >> bitIndex) & 1;\n\t}\n\n\t#readByte(ptr: Pointer) {\n\t\treturn (\n\t\t\tthis.#readBit(ptr) |\n\t\t\t(this.#readBit(ptr) << 1) |\n\t\t\t(this.#readBit(ptr) << 2) |\n\t\t\t(this.#readBit(ptr) << 3) |\n\t\t\t(this.#readBit(ptr) << 4) |\n\t\t\t(this.#readBit(ptr) << 5) |\n\t\t\t(this.#readBit(ptr) << 6) |\n\t\t\t(this.#readBit(ptr) << 7)\n\t\t);\n\t}\n\n\t#bufferRead16(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead32(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead64(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t\tConverterUint8[4] = this.#readByte(ptr);\n\t\tConverterUint8[5] = this.#readByte(ptr);\n\t\tConverterUint8[6] = this.#readByte(ptr);\n\t\tConverterUint8[7] = this.#readByte(ptr);\n\t}\n\n\t#writeBit(value: number) {\n\t\tif (this.#wordIndex === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (value) {\n\t\t\tconst index = this.#wordIndex;\n\t\t\tconst bitIndex = this.bitLength & 0xf;\n\t\t\tthis.#buffer[index] |= 1 << bitIndex;\n\t\t}\n\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordLength++;\n\t\tthis.#bitLength++;\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordIndex++;\n\t}\n\n\tpublic static from(value: string | UnalignedUint16Array): UnalignedUint16Array {\n\t\tif (value instanceof UnalignedUint16Array) return value;\n\n\t\tconst buffer = new UnalignedUint16Array(value.length);\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tbuffer.#buffer[i] = value.charCodeAt(i);\n\t\t}\n\n\t\tbuffer.#bitLength = value.length << 4;\n\t\treturn buffer;\n\t}\n}\n","import { Pointer } from '../shared/Pointer';\nimport { UnalignedUint16Array } from '../UnalignedUint16Array';\nimport { Schema, type UnwrapSchema } from './Schema';\n\nexport class SchemaStore<Entries extends object = object> {\n\t/**\n\t * The default maximum array length for schemas\n\t */\n\tpublic defaultMaximumArrayLength: number;\n\n\t#schemas = new Map<number, Schema>();\n\n\t/**\n\t * Creates a new schema store\n\t *\n\t * @param defaultMaximumArrayLength The default maximum array length for schemas\n\t */\n\tpublic constructor(defaultMaximumArrayLength = 100) {\n\t\tthis.defaultMaximumArrayLength = defaultMaximumArrayLength;\n\t}\n\n\t/**\n\t * Adds a schema to the store\n\t *\n\t * @param schema The schema to add to the store\n\t * @returns The modified store\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the same id already exists in the store.\n\t */\n\tpublic add<const Id extends number, const SchemaType extends object>(schema: Schema<Id, SchemaType>): Merge<Entries, Id, typeof schema> {\n\t\tif (this.#schemas.has(schema.id)) {\n\t\t\tthrow new Error(`Schema with id ${schema.id} already exists`);\n\t\t}\n\n\t\tthis.#schemas.set(schema.id, schema as any);\n\t\treturn this as unknown as Merge<Entries, Id, typeof schema>;\n\t}\n\n\t/**\n\t * Gets a schema from the store\n\t *\n\t * @param id The id of the schema to get\n\t * @returns The schema with the given id\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the given id does not exist in the store.\n\t */\n\tpublic get<const Id extends KeyOfStore<this>>(id: Id): Entries[Id] {\n\t\tconst schema = this.#schemas.get(id) as Entries[Id];\n\t\tif (!schema) throw new Error(`Schema with id ${id} does not exist`);\n\t\treturn schema;\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized buffer\n\t */\n\tpublic serialize<const Id extends KeyOfStore<this>>(id: Id, value: Readonly<UnwrapSchema<Entries[Id] & object>>): UnalignedUint16Array {\n\t\tconst schema = this.get(id) as Schema<Id, object>;\n\t\tconst buffer = new UnalignedUint16Array(schema.bitSize ?? this.defaultMaximumArrayLength);\n\t\tschema.serialize(buffer, value);\n\t\treturn buffer;\n\t}\n\n\t/**\n\t * Deserializes a buffer\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @returns The resolved value, including the id of the schema used for deserialization\n\t */\n\tpublic deserialize(buffer: string | UnalignedUint16Array): DeserializationResult<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tconst pointer = new Pointer();\n\t\tconst id = buffer.readInt16(pointer) as KeyOfStore<this>;\n\t\tconst schema = this.get(id) as Schema<number, object>;\n\t\treturn { id, data: schema.deserialize(buffer, pointer) } as unknown as DeserializationResult<Entries>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema identifiers.\n\t *\n\t * @returns An iterator for the stores's schema identifiers\n\t */\n\tpublic keys(): IterableIterator<KeyOfStore<this>> {\n\t\treturn this.#schemas.keys() as IterableIterator<KeyOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schemas.\n\t *\n\t * @returns An iterator for the stores's schemas\n\t */\n\tpublic values(): IterableIterator<ValueOfStore<this>> {\n\t\treturn this.#schemas.values() as IterableIterator<ValueOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.#schemas.entries() as IterableIterator<EntryOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.entries();\n\t}\n}\n\ntype Merge<Entries extends object, Id extends number, Type extends object> = Id extends keyof Entries\n\t? never\n\t: SchemaStore<{ [K in Id | keyof Entries]: K extends keyof Entries ? Entries[K] : Type }>;\n\nexport type KeyOfStore<SchemaStoreValue extends object> = SchemaStoreValue extends SchemaStore<infer Schemas> ? keyof Schemas & number : never;\nexport type ValueOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? Schemas[keyof Schemas & number] : never;\nexport type EntryOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? { [K in keyof Schemas]: readonly [K & number, Schemas[K]] }[keyof Schemas] : never;\n\nexport type DeserializationResult<SchemaStoreEntries extends object> = {\n\t[K in keyof SchemaStoreEntries]: { id: K; data: UnwrapSchema<SchemaStoreEntries[K] & object> };\n}[keyof SchemaStoreEntries];\n","export type TypedArray =\n\t| Int8Array\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Int16Array\n\t| Uint16Array\n\t| Int32Array\n\t| Uint32Array\n\t| Float32Array\n\t| Float64Array\n\t| BigInt64Array\n\t| BigUint64Array;\n\n/**\n * Converts a {@link TypedArray} to a string.\n *\n * @param buffer The buffer to convert\n * @returns The generated UTF16 string\n */\nexport function toUTF16(buffer: TypedArray) {\n\tlet result = '';\n\tfor (const value of new Uint16Array(buffer.buffer)) {\n\t\tresult += String.fromCharCode(value);\n\t}\n\n\treturn result;\n}\n\n/**\n * Converts a string to a {@link Uint16Array}.\n *\n * @param buffer The string to convert\n * @returns The generated {@link Uint16Array}\n */\nexport function fromUTF16(buffer: string): Uint16Array {\n\tconst result = new Uint16Array(buffer.length);\n\tfor (let i = 0; i < buffer.length; i++) {\n\t\tresult[i] = buffer.charCodeAt(i);\n\t}\n\n\treturn result;\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/shared/_common.ts","../../src/lib/shared/Pointer.ts","../../src/lib/types/Array.ts","../../src/lib/types/BigInt32.ts","../../src/lib/types/BigInt64.ts","../../src/lib/types/BigUint32.ts","../../src/lib/types/BigUint64.ts","../../src/lib/types/Bit.ts","../../src/lib/types/Boolean.ts","../../src/lib/types/FixedLengthArray.ts","../../src/lib/types/Float32.ts","../../src/lib/types/Float64.ts","../../src/lib/types/Int16.ts","../../src/lib/types/Int2.ts","../../src/lib/types/Int32.ts","../../src/lib/types/Int4.ts","../../src/lib/types/Int64.ts","../../src/lib/types/Int8.ts","../../src/lib/types/Snowflake.ts","../../src/lib/types/String.ts","../../src/lib/types/Uint16.ts","../../src/lib/types/Uint2.ts","../../src/lib/types/Uint32.ts","../../src/lib/types/Uint4.ts","../../src/lib/types/Uint64.ts","../../src/lib/types/Uint8.ts","../../src/lib/types/index.ts","../../src/lib/schema/Schema.ts","../../src/lib/UnalignedUint16Array.ts","../../src/lib/schema/SchemaStore.ts","../../src/lib/utilities.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export function isArrayLike(object: unknown): object is ArrayLike<unknown> {\n\t// If the item is not an object, it is not array-like:\n\tif (!isObject(object)) return false;\n\t// If the item is an array, it is array-like:\n\tif (Array.isArray(object)) return true;\n\t// If the item doesn't have a numeric length property, it is not array-like:\n\tif (!hasLength(object)) return false;\n\t// If the length isn't a valid index, it is not array-like:\n\tif (!isValidLength(object.length)) return false;\n\n\treturn object.length === 0 || object.length - 1 in object;\n}\n\nfunction isObject(item: unknown): item is object {\n\treturn typeof item === 'object' && item !== null;\n}\n\nfunction hasLength(item: object): item is { length: number } {\n\treturn 'length' in item && typeof item.length === 'number';\n}\n\nexport function isValidLength(length: number) {\n\treturn Number.isSafeInteger(length) && length >= 0 && length < 2147483648;\n}\n","import { isValidLength } from './_common';\n\n/**\n * A pointer to a position in a buffer.\n *\n * This is used to keep track of the current position in a buffer while allowing\n * the position to be updated by multiple different functions.\n *\n * @privateRemarks\n *\n * This class draws inspiration from the following constructs:\n * - `int*` in C/C++\n * - `ref int` in C#\n * - `*mut i32` in Rust\n */\nexport class Pointer {\n\t#value = 0;\n\n\tpublic get value() {\n\t\treturn this.#value;\n\t}\n\n\tpublic add(value: number) {\n\t\tconst added = this.#value + value;\n\t\tif (!isValidLength(added)) {\n\t\t\tthrow new RangeError(`The pointer value cannot be an invalid length value`);\n\t\t}\n\n\t\tthis.#value = added;\n\t\treturn this;\n\t}\n\n\tpublic static from(pointer: PointerLike) {\n\t\tif (pointer instanceof Pointer) {\n\t\t\treturn pointer;\n\t\t}\n\n\t\tconst instance = new Pointer();\n\t\tinstance.add(Number(pointer));\n\t\treturn instance;\n\t}\n}\n\nexport type PointerLike = Pointer | { valueOf(): number } | { [Symbol.toPrimitive](hint: 'number'): number };\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function ArrayType<ValueType, ValueBitSize extends number | null>(type: IType<ValueType, ValueBitSize>): IType<ValueType[], null> {\n\treturn {\n\t\tserialize(buffer, values: readonly ValueType[]) {\n\t\t\tif (!isArrayLike(values)) {\n\t\t\t\tthrow new TypeError(`Expected an array, got ${values}`);\n\t\t\t}\n\n\t\t\tbuffer.writeInt16(values.length);\n\t\t\tfor (const value of values) {\n\t\t\t\ttype.serialize(buffer, value);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst length = buffer.readUint16(pointer);\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: null\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const BigInt32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigInt64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint32Type: IType<bigint, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const BigUint64Type: IType<bigint, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBigInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBigUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const BitType: IType<number, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(value & 0b1);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer);\n\t},\n\tBIT_SIZE: 1\n};\n","import type { IType } from './base/IType';\n\nexport const BooleanType: IType<boolean, 1> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeBit(Number(value));\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readBit(pointer) === 1;\n\t},\n\tBIT_SIZE: 1\n};\n","import { isArrayLike } from '../shared/_common';\nimport type { IType } from './base/IType';\n\nexport function FixedLengthArrayType<ValueType, ValueBitSize extends number | null>(\n\ttype: IType<ValueType, ValueBitSize>,\n\tlength: number\n): IType<ValueType[], ValueBitSize extends null ? null : number> {\n\treturn {\n\t\tserialize(buffer, values) {\n\t\t\tif (!isArrayLike(values) || values.length !== length) {\n\t\t\t\tthrow new TypeError(`Expected array of length ${length}, got ${values.length}`);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\ttype.serialize(buffer, values[i]);\n\t\t\t}\n\t\t},\n\t\tdeserialize(buffer, pointer) {\n\t\t\tconst value = [];\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tvalue.push(type.deserialize(buffer, pointer));\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tBIT_SIZE: (typeof type.BIT_SIZE === 'number' ? type.BIT_SIZE * length : null) as ValueBitSize extends null ? null : number\n\t};\n}\n","import type { IType } from './base/IType';\n\nexport const Float32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Float64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeFloat64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readFloat64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Int2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Int32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Int4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Int64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Int8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readInt8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import type { IType } from './base/IType';\n\nexport const SnowflakeType = {\n\tserialize(buffer, value: bigint | string) {\n\t\tbuffer.writeBigInt64(BigInt(value));\n\t},\n\tdeserialize(buffer, offset) {\n\t\treturn buffer.readBigUint64(offset);\n\t},\n\tBIT_SIZE: 64\n} as const satisfies IType<bigint, 64>;\n","import type { IType } from './base/IType';\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nexport const StringType: IType<string, null> = {\n\tserialize(buffer, value) {\n\t\tconst encoded = encoder.encode(value);\n\t\tbuffer.writeInt16(encoded.length);\n\t\tfor (const byte of encoded) {\n\t\t\tbuffer.writeInt8(byte);\n\t\t}\n\t},\n\tdeserialize(buffer, pointer) {\n\t\tconst length = buffer.readInt16(pointer);\n\t\tconst bytes = new Uint8Array(length);\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tbytes[i] = buffer.readInt8(pointer);\n\t\t}\n\t\treturn decoder.decode(bytes);\n\t},\n\tBIT_SIZE: null\n};\n","import type { IType } from './base/IType';\n\nexport const Uint16Type: IType<number, 16> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt16(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint16(pointer);\n\t},\n\tBIT_SIZE: 16\n};\n","import type { IType } from './base/IType';\n\nexport const Uint2Type: IType<number, 2> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt2(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint2(pointer);\n\t},\n\tBIT_SIZE: 2\n};\n","import type { IType } from './base/IType';\n\nexport const Uint32Type: IType<number, 32> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt32(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint32(pointer);\n\t},\n\tBIT_SIZE: 32\n};\n","import type { IType } from './base/IType';\n\nexport const Uint4Type: IType<number, 4> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt4(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint4(pointer);\n\t},\n\tBIT_SIZE: 4\n};\n","import type { IType } from './base/IType';\n\nexport const Uint64Type: IType<number, 64> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt64(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint64(pointer);\n\t},\n\tBIT_SIZE: 64\n};\n","import type { IType } from './base/IType';\n\nexport const Uint8Type: IType<number, 8> = {\n\tserialize(buffer, value) {\n\t\tbuffer.writeInt8(value);\n\t},\n\tdeserialize(buffer, pointer) {\n\t\treturn buffer.readUint8(pointer);\n\t},\n\tBIT_SIZE: 8\n};\n","import { ArrayType } from './Array';\nimport type { IType } from './base/IType';\nimport { BigInt32Type } from './BigInt32';\nimport { BigInt64Type } from './BigInt64';\nimport { BigUint32Type } from './BigUint32';\nimport { BigUint64Type } from './BigUint64';\nimport { BitType } from './Bit';\nimport { BooleanType } from './Boolean';\nimport { FixedLengthArrayType } from './FixedLengthArray';\nimport { Float32Type } from './Float32';\nimport { Float64Type } from './Float64';\nimport { Int16Type } from './Int16';\nimport { Int2Type } from './Int2';\nimport { Int32Type } from './Int32';\nimport { Int4Type } from './Int4';\nimport { Int64Type } from './Int64';\nimport { Int8Type } from './Int8';\nimport { SnowflakeType } from './Snowflake';\nimport { StringType } from './String';\nimport { Uint16Type } from './Uint16';\nimport { Uint2Type } from './Uint2';\nimport { Uint32Type } from './Uint32';\nimport { Uint4Type } from './Uint4';\nimport { Uint64Type } from './Uint64';\nimport { Uint8Type } from './Uint8';\n\nexport const t = {\n\tarray: ArrayType,\n\tbigInt32: BigInt32Type,\n\tbigInt64: BigInt64Type,\n\tbigUint32: BigUint32Type,\n\tbigUint64: BigUint64Type,\n\tbit: BitType,\n\tboolean: BooleanType,\n\tfixedLengthArray: FixedLengthArrayType,\n\tfloat32: Float32Type,\n\tfloat64: Float64Type,\n\tint16: Int16Type,\n\tint2: Int2Type,\n\tint32: Int32Type,\n\tint4: Int4Type,\n\tint64: Int64Type,\n\tint8: Int8Type,\n\tsnowflake: SnowflakeType,\n\tstring: StringType,\n\tuint16: Uint16Type,\n\tuint2: Uint2Type,\n\tuint32: Uint32Type,\n\tuint4: Uint4Type,\n\tuint64: Uint64Type,\n\tuint8: Uint8Type\n};\n\nexport {\n\tArrayType,\n\tBigInt32Type,\n\tBigInt64Type,\n\tBigUint32Type,\n\tBigUint64Type,\n\tBitType,\n\tBooleanType,\n\tFixedLengthArrayType,\n\tFloat32Type,\n\tFloat64Type,\n\tInt16Type,\n\tInt2Type,\n\tInt32Type,\n\tInt4Type,\n\tInt64Type,\n\tInt8Type,\n\tSnowflakeType,\n\tStringType,\n\tUint16Type,\n\tUint2Type,\n\tUint32Type,\n\tUint4Type,\n\tUint64Type,\n\tUint8Type,\n\ttype IType\n};\n","import { Pointer, type PointerLike } from '../shared/Pointer';\nimport { t, type IType } from '../types/index';\nimport type { UnalignedUint16Array } from '../UnalignedUint16Array';\n\nexport class Schema<Id extends number = number, Entries extends object = object> {\n\treadonly #id: Id;\n\treadonly #types = new Map<string, IType<any, number | null>>();\n\t#bitSize: number | null = 0;\n\n\t/**\n\t * Creates a new schema.\n\t *\n\t * @param id The id of the schema\n\t */\n\tpublic constructor(id: Id) {\n\t\tthis.#id = id;\n\t}\n\n\t/**\n\t * The id of the schema.\n\t */\n\tpublic get id(): Id {\n\t\treturn this.#id;\n\t}\n\n\t/**\n\t * The total bit size of the schema.\n\t *\n\t * @remarks\n\t *\n\t * If any of the entries have a bit size of `null`, the bit size of the\n\t * schema will also be `null`.\n\t */\n\tpublic get bitSize(): number | null {\n\t\treturn this.#bitSize;\n\t}\n\n\t/**\n\t * Get a property from the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The specified property\n\t *\n\t * @remarks\n\t *\n\t * If the property does not exist, an error will be thrown.\n\t */\n\tpublic get<const Name extends keyof Entries & string>(name: Name): Entries[Name] {\n\t\tconst type = this.#types.get(name) as Entries[Name];\n\t\tif (!type) throw new Error(`Schema with id ${this.#id} does not have a property with name \"${name}\"`);\n\t\treturn type;\n\t}\n\n\t/**\n\t * Serialize a value into a buffer.\n\t *\n\t * @param buffer The buffer to serialize\n\t * @param value The value to serialize into the buffer\n\t *\n\t * @remarks\n\t *\n\t * The schema's ID is written to the buffer first, followed by each property\n\t * in the schema.\n\t */\n\tpublic serialize(buffer: UnalignedUint16Array, value: Readonly<UnwrapSchemaEntries<Entries>>): void {\n\t\tbuffer.writeInt16(this.#id);\n\t\tfor (const [name, type] of this) {\n\t\t\t(type as IType<any, number | null>).serialize(buffer, (value as any)[name]);\n\t\t}\n\t}\n\n\t/**\n\t * Deserialize a value from a buffer.\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @param pointer The pointer to where the buffer should be read from\n\t * @returns The deserialized value\n\t *\n\t * @remarks\n\t *\n\t * Unlike {@link Schema.serialize}, this method does not read the schema's ID\n\t * from the buffer, that is reserved for the {@link SchemaStore}.\n\t */\n\tpublic deserialize(buffer: UnalignedUint16Array, pointer: PointerLike): UnwrapSchemaEntries<Entries> {\n\t\tconst ptr = Pointer.from(pointer);\n\t\tconst result = Object.create(null) as UnwrapSchemaEntries<Entries>;\n\t\tfor (const [name, type] of this) {\n\t\t\t// @ts-expect-error Complex types\n\t\t\tresult[name] = type.deserialize(buffer, ptr);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Adds an array property to the schema.\n\t *\n\t * @seealso {@link Schema.fixedLengthArray} for a fixed length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @returns The modified schema\n\t */\n\tpublic array<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t) {\n\t\treturn this.#addType(name, t.array(type));\n\t}\n\n\t/**\n\t * Adds a fixed length array property to the schema.\n\t *\n\t * @seealso {@link Schema.array} for a dynamic length array\n\t *\n\t * @param name The name of the property\n\t * @param type The type of the entry in the array\n\t * @param length The length of the array\n\t * @returns The modified schema\n\t */\n\tpublic fixedLengthArray<const Name extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: Name,\n\t\ttype: IType<ValueType, ValueBitSize>,\n\t\tlength: number\n\t) {\n\t\treturn this.#addType(name, t.fixedLengthArray(type, length));\n\t}\n\n\t/**\n\t * Adds a string property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic string<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.string);\n\t}\n\n\t/**\n\t * Adds a boolean property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic boolean<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.boolean);\n\t}\n\n\t/**\n\t * Adds a bit property to the schema.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bit<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bit);\n\t}\n\n\t/**\n\t * Adds a 2-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2 to 1, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int2);\n\t}\n\n\t/**\n\t * Adds a 2-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 3, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint2<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint2);\n\t}\n\n\t/**\n\t * Adds a 4-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -8 to 7, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int4);\n\t}\n\n\t/**\n\t * Adds a 4-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 15, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint4<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint4);\n\t}\n\n\t/**\n\t * Adds a 8-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -128 to 127, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int8);\n\t}\n\n\t/**\n\t * Adds a 8-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 255, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint8<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint8);\n\t}\n\n\t/**\n\t * Adds a 16-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -32768 to 32767, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int16);\n\t}\n\n\t/**\n\t * Adds a 16-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 65535, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint16<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint16);\n\t}\n\n\t/**\n\t * Adds a 32-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648 to 2_147_483_647, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int32);\n\t}\n\n\t/**\n\t * Adds a 32-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 4_294_967_295, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808 to 9_223_372_036_854_775_807, inclusive.\n\t *\n\t * However, it may run into precision issues past the range of `-9_007_199_254_740_991` to `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic int64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.int64);\n\t}\n\n\t/**\n\t * Adds a 64-bit unsigned integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0 to 18_446_744_073_709_551_615, inclusive.\n\t *\n\t * However, it may run into precision issues past `9_007_199_254_740_991`\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic uint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.uint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -2_147_483_648n to 2_147_483_647n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt32);\n\t}\n\n\t/**\n\t * Adds a 32-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 4_294_967_295n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint32);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -9_223_372_036_854_775_808n to 9_223_372_036_854_775_807n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigInt64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigInt64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic bigUint64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.bigUint64);\n\t}\n\n\t/**\n\t * Adds a 32-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -3.4028234663852886e+38 to 3.4028234663852886e+38, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float32<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float32);\n\t}\n\n\t/**\n\t * Adds a 64-bit floating point number property to the schema.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from -1.7976931348623157e+308 to 1.7976931348623157e+308, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic float64<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.float64);\n\t}\n\n\t/**\n\t * Adds a 64-bit big integer property to the schema, similar to {@link Schema.bigUint64}.\n\t *\n\t * @remarks\n\t *\n\t * The range of values is from 0n to 18_446_744_073_709_551_615n, inclusive.\n\t *\n\t * @param name The name of the property\n\t * @returns The modified schema\n\t */\n\tpublic snowflake<const Name extends string>(name: Name) {\n\t\treturn this.#addType(name, t.snowflake);\n\t}\n\n\t/**\n\t * Iterates over the schema's property names.\n\t *\n\t * @returns An iterator for the schema's property names\n\t */\n\tpublic keys(): IterableIterator<KeyOfSchema<this>> {\n\t\treturn this.#types.keys() as IterableIterator<KeyOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property values\n\t *\n\t * @returns An iterator for the schema's property values\n\t */\n\tpublic values(): IterableIterator<ValueOfSchema<this>> {\n\t\treturn this.#types.values() as IterableIterator<ValueOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.#types.entries() as IterableIterator<EntryOfSchema<this>>;\n\t}\n\n\t/**\n\t * Iterates over the schema's property entries\n\t *\n\t * @returns An iterator for the schema's property entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfSchema<this>> {\n\t\treturn this.entries();\n\t}\n\n\t#addType<const EntryName extends string, const ValueType, const ValueBitSize extends number | null>(\n\t\tname: EntryName,\n\t\ttype: IType<ValueType, ValueBitSize>\n\t): Merge<Id, Entries, EntryName, typeof type> {\n\t\tif (this.#types.has(name)) {\n\t\t\tthrow new Error(`Schema with id ${this.#id} already has a property with name \"${name}\"`);\n\t\t}\n\n\t\tthis.#types.set(name, type);\n\n\t\tif (type.BIT_SIZE === null) {\n\t\t\tthis.#bitSize = null;\n\t\t} else if (this.#bitSize !== null) {\n\t\t\tthis.#bitSize += type.BIT_SIZE;\n\t\t}\n\n\t\treturn this as unknown as Merge<Id, Entries, EntryName, typeof type>;\n\t}\n}\n\ntype Merge<\n\tId extends number,\n\tEntries extends object,\n\tEntryName extends string,\n\tEntryType extends IType<any, number | null>\n> = EntryName extends keyof Entries ? never : Schema<Id, { [K in EntryName | keyof Entries]: K extends keyof Entries ? Entries[K] : EntryType }>;\n\nexport type KeyOfSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? keyof Type & string : never;\nexport type ValueOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: Type[K] }[keyof Type] : never;\nexport type EntryOfSchema<SchemaValue extends object> =\n\tSchemaValue extends Schema<infer _, infer Type> ? { [K in keyof Type]: readonly [K, Type[K]] }[keyof Type] : never;\n\nexport type UnwrapSchemaType<Type extends object> = Type extends IType<infer T, infer _> ? T : never;\nexport type UnwrapSchemaEntries<Entries extends object> = { [K in keyof Entries]: UnwrapSchemaType<Entries[K] & object> } & object;\nexport type UnwrapSchema<SchemaValue extends object> = SchemaValue extends Schema<infer _, infer Type> ? UnwrapSchemaEntries<Type> : never;\n","import { Pointer, type PointerLike } from './shared/Pointer';\n\nconst ConverterUint8 = new Uint8Array(8);\nconst ConverterUint16 = new Uint16Array(ConverterUint8.buffer);\nconst ConverterUint32 = new Uint32Array(ConverterUint8.buffer);\nconst ConverterUint64 = new BigUint64Array(ConverterUint8.buffer);\n\nconst ConverterInt32 = new Int32Array(ConverterUint8.buffer);\nconst ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);\n\nconst ConverterFloat = new Float32Array(ConverterUint8.buffer);\nconst ConverterDouble = new Float64Array(ConverterUint8.buffer);\n\nexport class UnalignedUint16Array {\n\t#buffer: Uint16Array;\n\t#bitLength = 0;\n\t#wordIndex = 0;\n\t#wordLength = 0;\n\n\tpublic constructor(maxLength: number) {\n\t\tthis.#buffer = new Uint16Array(maxLength);\n\t}\n\n\tpublic get maxLength(): number {\n\t\treturn this.#buffer.length;\n\t}\n\n\tpublic get maxBitLength(): number {\n\t\treturn this.#buffer.length * 16;\n\t}\n\n\tpublic get length(): number {\n\t\treturn this.#wordLength;\n\t}\n\n\tpublic get bitLength(): number {\n\t\treturn this.#bitLength;\n\t}\n\n\tpublic writeBit(value: number): void {\n\t\tthis.#writeBit(value);\n\t}\n\n\tpublic writeInt2(value: number): void {\n\t\tthis.writeBit(value & 1);\n\t\tthis.writeBit(value >> 1);\n\t}\n\n\tpublic writeInt4(value: number): void {\n\t\tthis.writeInt2(value & 0b11);\n\t\tthis.writeInt2(value >> 2);\n\t}\n\n\tpublic writeInt8(value: number): void {\n\t\tthis.writeInt4(value & 0b1111);\n\t\tthis.writeInt4(value >> 4);\n\t}\n\n\tpublic writeInt16(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t}\n\n\tpublic writeInt32(value: number): void {\n\t\tthis.#bufferWrite16(value);\n\t\tthis.#bufferWrite16(value >> 16);\n\t}\n\n\tpublic writeInt64(value: number): void {\n\t\tthis.writeBigInt64(BigInt(value));\n\t}\n\n\tpublic writeBigInt32(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeBigInt64(value: bigint): void {\n\t\tConverterInt64[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic writeFloat32(value: number): void {\n\t\tConverterFloat[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t}\n\n\tpublic writeFloat64(value: number): void {\n\t\tConverterDouble[0] = value;\n\t\tthis.#bufferWrite16(ConverterUint16[0]);\n\t\tthis.#bufferWrite16(ConverterUint16[1]);\n\t\tthis.#bufferWrite16(ConverterUint16[2]);\n\t\tthis.#bufferWrite16(ConverterUint16[3]);\n\t}\n\n\tpublic readBit(offset: PointerLike): 0 | 1 {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) as 0 | 1;\n\t}\n\n\tpublic readInt2(offset: PointerLike): number {\n\t\t// Bit shifting to convert 2-bit signed integer to 32-bit signed integer\n\t\t// 0b01 → 0b0100_0000_0000_0000 → 0b000_0000_0000_0001 (1)\n\t\t// 0b10 → 0b1000_0000_0000_0000 → 0b111_1111_1111_1110 (-2)\n\t\treturn (this.readUint2(offset) << 30) >> 30;\n\t}\n\n\tpublic readUint2(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1);\n\t}\n\n\tpublic readInt4(offset: PointerLike): number {\n\t\t// Bit shifting to convert 4-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint4(offset) << 28) >> 28;\n\t}\n\n\tpublic readUint4(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readBit(ptr) | (this.#readBit(ptr) << 1) | (this.#readBit(ptr) << 2) | (this.#readBit(ptr) << 3);\n\t}\n\n\tpublic readInt8(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint8(offset) << 24) >> 24;\n\t}\n\n\tpublic readUint8(offset: PointerLike): number {\n\t\tconst ptr = Pointer.from(offset);\n\t\treturn this.#readByte(ptr);\n\t}\n\n\tpublic readInt16(offset: PointerLike): number {\n\t\t// Bit shifting to convert 8-bit signed integer to 32-bit signed integer,\n\t\t// as shown in `readInt2`.\n\t\treturn (this.readUint16(offset) << 16) >> 16;\n\t}\n\n\tpublic readUint16(offset: PointerLike): number {\n\t\tthis.#bufferRead16(Pointer.from(offset));\n\t\treturn ConverterUint16[0];\n\t}\n\n\tpublic readInt32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterInt32[0];\n\t}\n\n\tpublic readUint32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterUint32[0];\n\t}\n\n\tpublic readInt64(offset: PointerLike): number {\n\t\treturn Number(this.readBigInt64(offset));\n\t}\n\n\tpublic readUint64(offset: PointerLike) {\n\t\treturn Number(this.readBigUint64(offset));\n\t}\n\n\tpublic readBigInt32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterInt32[0]);\n\t}\n\n\tpublic readBigUint32(offset: PointerLike): bigint {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn BigInt(ConverterUint32[0]);\n\t}\n\n\tpublic readBigInt64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterInt64[0];\n\t}\n\n\tpublic readBigUint64(offset: PointerLike): bigint {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterUint64[0];\n\t}\n\n\tpublic readFloat32(offset: PointerLike): number {\n\t\tthis.#bufferRead32(Pointer.from(offset));\n\t\treturn ConverterFloat[0];\n\t}\n\n\tpublic readFloat64(offset: PointerLike): number {\n\t\tthis.#bufferRead64(Pointer.from(offset));\n\t\treturn ConverterDouble[0];\n\t}\n\n\tpublic toString() {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < this.length; i++) {\n\t\t\tresult += String.fromCharCode(this.#buffer[i]);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic toArray(): Uint16Array {\n\t\treturn this.#buffer.slice(0, this.length);\n\t}\n\n\t#readBit(pointer: Pointer) {\n\t\tconst bitOffset = pointer.value;\n\t\tconst index = bitOffset >> 4;\n\t\tconst bitIndex = bitOffset & 0xf;\n\t\tpointer.add(1);\n\t\treturn (this.#buffer[index] >> bitIndex) & 1;\n\t}\n\n\t#readByte(ptr: Pointer) {\n\t\treturn (\n\t\t\tthis.#readBit(ptr) |\n\t\t\t(this.#readBit(ptr) << 1) |\n\t\t\t(this.#readBit(ptr) << 2) |\n\t\t\t(this.#readBit(ptr) << 3) |\n\t\t\t(this.#readBit(ptr) << 4) |\n\t\t\t(this.#readBit(ptr) << 5) |\n\t\t\t(this.#readBit(ptr) << 6) |\n\t\t\t(this.#readBit(ptr) << 7)\n\t\t);\n\t}\n\n\t#bufferRead16(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead32(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t}\n\n\t#bufferRead64(ptr: Pointer): void {\n\t\tConverterUint8[0] = this.#readByte(ptr);\n\t\tConverterUint8[1] = this.#readByte(ptr);\n\t\tConverterUint8[2] = this.#readByte(ptr);\n\t\tConverterUint8[3] = this.#readByte(ptr);\n\t\tConverterUint8[4] = this.#readByte(ptr);\n\t\tConverterUint8[5] = this.#readByte(ptr);\n\t\tConverterUint8[6] = this.#readByte(ptr);\n\t\tConverterUint8[7] = this.#readByte(ptr);\n\t}\n\n\t#writeBit(value: number) {\n\t\tif (this.#wordIndex === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (value) {\n\t\t\tconst index = this.#wordIndex;\n\t\t\tconst bitIndex = this.bitLength & 0xf;\n\t\t\tthis.#buffer[index] |= 1 << bitIndex;\n\t\t}\n\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordLength++;\n\t\tthis.#bitLength++;\n\t\tif ((this.#bitLength & 0xf) === 0) this.#wordIndex++;\n\t}\n\n\t#bufferWrite16(value: number) {\n\t\tconst wordIndex = this.#wordIndex;\n\t\tconst bitIndex = this.bitLength & 0xf;\n\n\t\t// If `bitIndex` is `0`:\n\t\t// - Then the value will fit in the current word.\n\t\t// - In this case, we validate that we can write the current word.\n\t\t//\n\t\t// Otherwise:\n\t\t// - The value will be split between the current word and the next word.\n\t\t// - In this case, we validate that we can write the next word.\n\t\tif (wordIndex + (bitIndex === 0 ? 0 : 1) === this.maxLength) {\n\t\t\tthrow new RangeError(`The buffer is full`);\n\t\t}\n\n\t\tif (bitIndex === 0) {\n\t\t\tthis.#buffer[wordIndex] = value;\n\t\t} else {\n\t\t\tvalue &= 0xffff;\n\t\t\tthis.#buffer[wordIndex] |= value << bitIndex;\n\t\t\tthis.#buffer[wordIndex + 1] = value >> (16 - bitIndex);\n\t\t}\n\n\t\tthis.#bitLength += 16;\n\t\tthis.#wordIndex++;\n\t\tthis.#wordLength++;\n\t}\n\n\tpublic static from(value: string | UnalignedUint16Array): UnalignedUint16Array {\n\t\tif (value instanceof UnalignedUint16Array) return value;\n\n\t\tconst buffer = new UnalignedUint16Array(value.length);\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tbuffer.#buffer[i] = value.charCodeAt(i);\n\t\t}\n\n\t\tbuffer.#bitLength = value.length << 4;\n\t\treturn buffer;\n\t}\n}\n","import { Pointer } from '../shared/Pointer';\nimport { UnalignedUint16Array } from '../UnalignedUint16Array';\nimport { Schema, type UnwrapSchema } from './Schema';\n\nexport class SchemaStore<Entries extends object = object> {\n\t/**\n\t * The default maximum array length for schemas\n\t */\n\tpublic defaultMaximumArrayLength: number;\n\n\t#schemas = new Map<number, Schema>();\n\n\t/**\n\t * Creates a new schema store\n\t *\n\t * @param defaultMaximumArrayLength The default maximum array length for schemas\n\t */\n\tpublic constructor(defaultMaximumArrayLength = 100) {\n\t\tthis.defaultMaximumArrayLength = defaultMaximumArrayLength;\n\t}\n\n\t/**\n\t * Adds a schema to the store\n\t *\n\t * @param schema The schema to add to the store\n\t * @returns The modified store\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the same id already exists in the store.\n\t */\n\tpublic add<const Id extends number, const SchemaType extends object>(schema: Schema<Id, SchemaType>): Merge<Entries, Id, typeof schema> {\n\t\tif (this.#schemas.has(schema.id)) {\n\t\t\tthrow new Error(`Schema with id ${schema.id} already exists`);\n\t\t}\n\n\t\tthis.#schemas.set(schema.id, schema as any);\n\t\treturn this as unknown as Merge<Entries, Id, typeof schema>;\n\t}\n\n\t/**\n\t * Gets a schema from the store\n\t *\n\t * @param id The id of the schema to get\n\t * @returns The schema with the given id\n\t *\n\t * @remarks\n\t *\n\t * An error will be thrown if a schema with the given id does not exist in the store.\n\t */\n\tpublic get<const Id extends KeyOfStore<this>>(id: Id): Entries[Id] {\n\t\tconst schema = this.#schemas.get(id) as Entries[Id];\n\t\tif (!schema) throw new Error(`Schema with id ${id} does not exist`);\n\t\treturn schema;\n\t}\n\n\t/**\n\t * Serializes a value using the schema with the given id\n\t *\n\t * @param id The id of the schema to use for serialization\n\t * @param value The value to serialize\n\t * @returns The serialized buffer\n\t */\n\tpublic serialize<const Id extends KeyOfStore<this>>(id: Id, value: Readonly<UnwrapSchema<Entries[Id] & object>>): UnalignedUint16Array {\n\t\tconst schema = this.get(id) as Schema<Id, object>;\n\t\tconst buffer = new UnalignedUint16Array(schema.bitSize ?? this.defaultMaximumArrayLength);\n\t\tschema.serialize(buffer, value);\n\t\treturn buffer;\n\t}\n\n\t/**\n\t * Deserializes a buffer\n\t *\n\t * @param buffer The buffer to deserialize\n\t * @returns The resolved value, including the id of the schema used for deserialization\n\t */\n\tpublic deserialize(buffer: string | UnalignedUint16Array): DeserializationResult<Entries> {\n\t\tbuffer = UnalignedUint16Array.from(buffer);\n\t\tconst pointer = new Pointer();\n\t\tconst id = buffer.readInt16(pointer) as KeyOfStore<this>;\n\t\tconst schema = this.get(id) as Schema<number, object>;\n\t\treturn { id, data: schema.deserialize(buffer, pointer) } as unknown as DeserializationResult<Entries>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema identifiers.\n\t *\n\t * @returns An iterator for the stores's schema identifiers\n\t */\n\tpublic keys(): IterableIterator<KeyOfStore<this>> {\n\t\treturn this.#schemas.keys() as IterableIterator<KeyOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schemas.\n\t *\n\t * @returns An iterator for the stores's schemas\n\t */\n\tpublic values(): IterableIterator<ValueOfStore<this>> {\n\t\treturn this.#schemas.values() as IterableIterator<ValueOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic entries(): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.#schemas.entries() as IterableIterator<EntryOfStore<this>>;\n\t}\n\n\t/**\n\t * Iterates over the stores's schema entries.\n\t *\n\t * @returns An iterator for the stores's schema entries\n\t */\n\tpublic [Symbol.iterator](): IterableIterator<EntryOfStore<this>> {\n\t\treturn this.entries();\n\t}\n}\n\ntype Merge<Entries extends object, Id extends number, Type extends object> = Id extends keyof Entries\n\t? never\n\t: SchemaStore<{ [K in Id | keyof Entries]: K extends keyof Entries ? Entries[K] : Type }>;\n\nexport type KeyOfStore<SchemaStoreValue extends object> = SchemaStoreValue extends SchemaStore<infer Schemas> ? keyof Schemas & number : never;\nexport type ValueOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? Schemas[keyof Schemas & number] : never;\nexport type EntryOfStore<SchemaStoreValue extends object> =\n\tSchemaStoreValue extends SchemaStore<infer Schemas> ? { [K in keyof Schemas]: readonly [K & number, Schemas[K]] }[keyof Schemas] : never;\n\nexport type DeserializationResult<SchemaStoreEntries extends object> = {\n\t[K in keyof SchemaStoreEntries]: { id: K; data: UnwrapSchema<SchemaStoreEntries[K] & object> };\n}[keyof SchemaStoreEntries];\n","export type TypedArray =\n\t| Int8Array\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Int16Array\n\t| Uint16Array\n\t| Int32Array\n\t| Uint32Array\n\t| Float32Array\n\t| Float64Array\n\t| BigInt64Array\n\t| BigUint64Array;\n\n/**\n * Converts a {@link TypedArray} to a string.\n *\n * @param buffer The buffer to convert\n * @returns The generated UTF16 string\n */\nexport function toUTF16(buffer: TypedArray) {\n\tlet result = '';\n\tfor (const value of new Uint16Array(buffer.buffer)) {\n\t\tresult += String.fromCharCode(value);\n\t}\n\n\treturn result;\n}\n\n/**\n * Converts a string to a {@link Uint16Array}.\n *\n * @param buffer The string to convert\n * @returns The generated {@link Uint16Array}\n */\nexport function fromUTF16(buffer: string): Uint16Array {\n\tconst result = new Uint16Array(buffer.length);\n\tfor (let i = 0; i < buffer.length; i++) {\n\t\tresult[i] = buffer.charCodeAt(i);\n\t}\n\n\treturn result;\n}\n"]}
@@ -848,7 +848,7 @@ var ConverterInt32 = new Int32Array(ConverterUint8.buffer);
848
848
  var ConverterInt64 = new BigInt64Array(ConverterUint8.buffer);
849
849
  var ConverterFloat = new Float32Array(ConverterUint8.buffer);
850
850
  var ConverterDouble = new Float64Array(ConverterUint8.buffer);
851
- var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn;
851
+ var _buffer, _bitLength, _wordIndex, _wordLength, _UnalignedUint16Array_instances, readBit_fn, readByte_fn, bufferRead16_fn, bufferRead32_fn, bufferRead64_fn, writeBit_fn, bufferWrite16_fn;
852
852
  var _UnalignedUint16Array = class _UnalignedUint16Array {
853
853
  constructor(maxLength) {
854
854
  __privateAdd(this, _UnalignedUint16Array_instances);
@@ -886,41 +886,38 @@ var _UnalignedUint16Array = class _UnalignedUint16Array {
886
886
  this.writeInt4(value >> 4);
887
887
  }
888
888
  writeInt16(value) {
889
- this.writeInt8(value & 255);
890
- this.writeInt8(value >> 8);
889
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value);
891
890
  }
892
891
  writeInt32(value) {
893
- this.writeInt16(value & 65535);
894
- this.writeInt16(value >> 16);
892
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value);
893
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, value >> 16);
895
894
  }
896
895
  writeInt64(value) {
897
896
  this.writeBigInt64(BigInt(value));
898
897
  }
899
898
  writeBigInt32(value) {
900
- this.writeInt16(Number(value & 0xffffn));
901
- this.writeInt16(Number(value >> 16n));
899
+ ConverterInt64[0] = value;
900
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
901
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
902
902
  }
903
903
  writeBigInt64(value) {
904
- this.writeInt32(Number(value & 0xffffffffn));
905
- this.writeInt32(Number(value >> 32n));
904
+ ConverterInt64[0] = value;
905
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
906
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
907
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[2]);
908
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[3]);
906
909
  }
907
910
  writeFloat32(value) {
908
911
  ConverterFloat[0] = value;
909
- this.writeInt8(ConverterUint8[0]);
910
- this.writeInt8(ConverterUint8[1]);
911
- this.writeInt8(ConverterUint8[2]);
912
- this.writeInt8(ConverterUint8[3]);
912
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
913
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
913
914
  }
914
915
  writeFloat64(value) {
915
916
  ConverterDouble[0] = value;
916
- this.writeInt8(ConverterUint8[0]);
917
- this.writeInt8(ConverterUint8[1]);
918
- this.writeInt8(ConverterUint8[2]);
919
- this.writeInt8(ConverterUint8[3]);
920
- this.writeInt8(ConverterUint8[4]);
921
- this.writeInt8(ConverterUint8[5]);
922
- this.writeInt8(ConverterUint8[6]);
923
- this.writeInt8(ConverterUint8[7]);
917
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[0]);
918
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[1]);
919
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[2]);
920
+ __privateMethod(this, _UnalignedUint16Array_instances, bufferWrite16_fn).call(this, ConverterUint16[3]);
924
921
  }
925
922
  readBit(offset) {
926
923
  const ptr = Pointer.from(offset);
@@ -1060,6 +1057,23 @@ writeBit_fn = /* @__PURE__ */ __name(function(value) {
1060
1057
  __privateWrapper(this, _bitLength)._++;
1061
1058
  if ((__privateGet(this, _bitLength) & 15) === 0) __privateWrapper(this, _wordIndex)._++;
1062
1059
  }, "#writeBit");
1060
+ bufferWrite16_fn = /* @__PURE__ */ __name(function(value) {
1061
+ const wordIndex = __privateGet(this, _wordIndex);
1062
+ const bitIndex = this.bitLength & 15;
1063
+ if (wordIndex + (bitIndex === 0 ? 0 : 1) === this.maxLength) {
1064
+ throw new RangeError(`The buffer is full`);
1065
+ }
1066
+ if (bitIndex === 0) {
1067
+ __privateGet(this, _buffer)[wordIndex] = value;
1068
+ } else {
1069
+ value &= 65535;
1070
+ __privateGet(this, _buffer)[wordIndex] |= value << bitIndex;
1071
+ __privateGet(this, _buffer)[wordIndex + 1] = value >> 16 - bitIndex;
1072
+ }
1073
+ __privateSet(this, _bitLength, __privateGet(this, _bitLength) + 16);
1074
+ __privateWrapper(this, _wordIndex)._++;
1075
+ __privateWrapper(this, _wordLength)._++;
1076
+ }, "#bufferWrite16");
1063
1077
  __name(_UnalignedUint16Array, "UnalignedUint16Array");
1064
1078
  var UnalignedUint16Array = _UnalignedUint16Array;
1065
1079