@lagless/binary 0.0.33

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 ADDED
@@ -0,0 +1,231 @@
1
+ # @lagless/binary
2
+
3
+ ## 1. Responsibility & Context
4
+
5
+ This library provides low-level binary serialization primitives for deterministic data encoding/decoding. It handles typed array operations, fixed-layout struct packing/unpacking with strict byte order, memory offset tracking during ArrayBuffer initialization, and variable-length input batch serialization. All ECS world state and network protocol messages rely on this library for byte-level representation.
6
+
7
+ ## 2. Architecture Role
8
+
9
+ **Foundation layer** — sits at the bottom of the dependency graph. No dependencies on other `@lagless/*` packages. Upstream consumers: `@lagless/core` (for Mem ArrayBuffer layout), `@lagless/net-wire` (for protocol messages), `@lagless/math` (for Vector2Buffers), `tools/codegen` (generates schemas). This library defines the serialization contracts that enable deterministic snapshots and rollback.
10
+
11
+ ## 3. Public API
12
+
13
+ ### Core Types
14
+ - `FieldType` — Enum of supported binary types: `Int8`, `Uint8`, `Int16`, `Uint16`, `Int32`, `Uint32`, `Float32`, `Float64`
15
+ - `TypedArrayConstructor` — Union type of all TypedArray constructors (Uint8Array, Int32Array, etc.)
16
+ - `InferBinarySchemaValues<T>` — Extracts value types from a BinarySchema definition
17
+
18
+ ### Binary Schema
19
+ - `BinarySchema<TSchema>` — Type-safe fixed-layout struct serializer. Constructor takes field definitions: `new BinarySchema({ fieldName: FieldType.Uint32, ... })`. Provides `pack(values)` → Uint8Array and `unpack(buffer)` → values.
20
+ - `BinarySchemaPackPipeline` — Accumulates multiple struct writes into a single buffer. Use `pack(schema, values)`, then `toBuffer()` to get final Uint8Array.
21
+ - `BinarySchemaUnpackPipeline` — Reads multiple structs from a single buffer. Initialize with Uint8Array, call `unpack(schema)` repeatedly, use `sliceRemaining()` for variable-length data.
22
+ - `InputBinarySchema<TSchema>` — Variable-length input batch serializer with ordinal support. Used for RPC input history serialization.
23
+
24
+ ### Memory Management
25
+ - `MemoryTracker` — Tracks byte offset during ArrayBuffer initialization. Call `add(bytes)` to advance pointer. Has `ptr` property (current offset) and `reset()` method.
26
+ - `align8(byteOffset: number): number` — Round up to next 8-byte boundary. **Required before all struct allocations** to maintain alignment invariant.
27
+
28
+ ### Utility Functions
29
+ - `binaryRead(dataView: DataView, offset: number, fieldType: FieldType): number` — Read single typed value from buffer at offset
30
+ - `binaryWrite(dataView: DataView, offset: number, fieldType: FieldType, value: number): void` — Write single typed value to buffer at offset
31
+ - `toFloat32(value: number): number` — Coerce to 32-bit float precision for cross-platform determinism
32
+ - `getFastHash(arrayBuffer: ArrayBuffer): number` — Hash of ArrayBuffer contents using hash-31 algorithm. Used for desync detection.
33
+ - `packBatchBuffers(buffers: Uint8Array[]): ArrayBuffer` — Concatenate multiple buffers with length prefixes into single ArrayBuffer
34
+ - `unpackBatchBuffers(buffer: ArrayBuffer): ArrayBuffer[]` — Split concatenated batch into individual ArrayBuffers
35
+
36
+ ### Low-Level Utilities
37
+ - `LE` — `true` constant indicating little-endian byte order (used by all DataView read/write operations)
38
+ - `FieldTypeReverse` — Reverse mapping from FieldType enum values to string names
39
+ - `getTypeSizeBytes(type: string): number` — Byte size of each FieldType
40
+ - `fieldTypeSizeBytes: Record<FieldType, number>` — Map FieldType → byte size (lookup table)
41
+ - `typeToArrayConstructor: Record<string, TypedArrayConstructor>` — Map FieldType string → TypedArray constructor
42
+ - `typedArrayConstructors: Record<FieldType, TypedArrayConstructor>` — Map FieldType enum → TypedArray constructor
43
+ - `typeStringToFieldType: Record<string, FieldType>` — String name → FieldType enum value
44
+
45
+ ## 4. Preconditions
46
+
47
+ - **No async initialization required** — all functions are synchronous
48
+ - ArrayBuffers used with BinarySchema must have sufficient capacity for the struct size
49
+ - Data passed to `unpack()` must match the schema that produced it (no runtime validation)
50
+ - For MemoryTracker: caller must allocate the ArrayBuffer before tracking begins
51
+
52
+ ## 5. Postconditions
53
+
54
+ - **pack()** guarantees little-endian byte order, 8-byte-aligned struct layout if `align8()` was used correctly
55
+ - **unpack()** produces identical values to what was packed (bijection property)
56
+ - MemoryTracker.ptr always points to the next available byte (never regresses unless `reset()` is called)
57
+ - `toFloat32()` guarantees bit-identical float32 representation across platforms (no float64 precision surprises)
58
+
59
+ ## 6. Invariants & Constraints
60
+
61
+ - **Little-endian byte order ALWAYS** — all reads/writes use little-endian (`LE = true` in DataView operations)
62
+ - **8-byte alignment** — all struct allocations in ArrayBuffer must be aligned via `align8()`. Violating this causes misaligned access on some architectures (undefined behavior).
63
+ - **Fixed struct size** — BinarySchema fields cannot be variable-length. Use separate serialization for strings/arrays.
64
+ - **Determinism** — Same input values → same output bytes. No timestamps, no floating-point non-determinism (use `toFloat32()` for consistency).
65
+ - **No validation** — unpacking malformed data produces garbage values, not errors. Validation is the caller's responsibility.
66
+
67
+ ## 7. Safety Notes (AI Agent)
68
+
69
+ ### Critical Rules
70
+ - **DO NOT** change byte order from little-endian — breaks cross-platform compatibility
71
+ - **DO NOT** skip `align8()` before struct allocations — causes memory corruption
72
+ - **DO NOT** add validation logic to pack/unpack — keep serialization fast and dumb
73
+ - **DO NOT** use `toFloat32()` on values that need float64 precision (coordinates, timestamps) — only for values that will be serialized as float32 anyway
74
+ - **DO NOT** reuse MemoryTracker instances across different ArrayBuffers without calling `reset()` — pointer will be invalid
75
+
76
+ ### Common Mistakes
77
+ - Forgetting to align: `tracker.add(structSize)` without `align8(tracker.ptr)` first
78
+ - Using float64 in schema when you meant float32 (causes determinism issues if clients have different precision)
79
+ - Assuming `unpack()` validates data — it doesn't, malformed buffers produce garbage
80
+
81
+ ## 8. Usage Examples
82
+
83
+ ### Basic Struct Serialization
84
+ ```typescript
85
+ import { BinarySchema, FieldType } from '@lagless/binary';
86
+
87
+ const PlayerSchema = new BinarySchema({
88
+ id: FieldType.Uint32,
89
+ health: FieldType.Float32,
90
+ score: FieldType.Uint32,
91
+ });
92
+
93
+ // Pack
94
+ const bytes = PlayerSchema.pack({ id: 42, health: 100.5, score: 1234 });
95
+
96
+ // Unpack
97
+ const player = PlayerSchema.unpack(bytes);
98
+ // { id: 42, health: 100.5, score: 1234 }
99
+ ```
100
+
101
+ ### ArrayBuffer Memory Layout
102
+ ```typescript
103
+ import { MemoryTracker, align8, BinarySchema, FieldType } from '@lagless/binary';
104
+
105
+ const tracker = new MemoryTracker();
106
+
107
+ // Calculate required size
108
+ const HeaderSchema = new BinarySchema({ version: FieldType.Uint32 });
109
+ tracker.add(align8(tracker.ptr)); // Align before header
110
+ tracker.add(HeaderSchema.byteLength);
111
+
112
+ const arrayBuffer = new ArrayBuffer(tracker.ptr);
113
+
114
+ // Initialize
115
+ tracker.reset();
116
+ const headerOffset = align8(tracker.ptr);
117
+ tracker.add(HeaderSchema.byteLength);
118
+
119
+ // Write header at aligned offset
120
+ const view = new DataView(arrayBuffer, headerOffset);
121
+ HeaderSchema.packInto(view, 0, { version: 1 });
122
+ ```
123
+
124
+ ### Pipeline for Multiple Structs
125
+ ```typescript
126
+ import { BinarySchemaPackPipeline, BinarySchemaUnpackPipeline } from '@lagless/binary';
127
+
128
+ // Packing multiple structs
129
+ const pipeline = new BinarySchemaPackPipeline();
130
+ pipeline.pack(HeaderSchema, { version: 1 });
131
+ pipeline.pack(PlayerSchema, { id: 1, health: 100, score: 0 });
132
+ const buffer = pipeline.toBuffer();
133
+
134
+ // Unpacking
135
+ const unpacker = new BinarySchemaUnpackPipeline(buffer);
136
+ const header = unpacker.unpack(HeaderSchema);
137
+ const player = unpacker.unpack(PlayerSchema);
138
+ ```
139
+
140
+ ## 9. Testing Guidance
141
+
142
+ **Test suite:** `libs/binary/src/lib/binary.spec.ts`
143
+
144
+ **Run tests:**
145
+ ```bash
146
+ # From monorepo root
147
+ npm test -- binary
148
+ ```
149
+
150
+ **Test framework:** Vitest (or Jest — check package.json)
151
+
152
+ **Existing patterns:**
153
+ - Round-trip tests: pack → unpack → verify equality
154
+ - Byte-level assertions: check exact buffer contents
155
+ - Alignment tests: verify `align8()` math
156
+ - Edge cases: zero values, max values, negative numbers
157
+
158
+ ## 10. Change Checklist
159
+
160
+ When modifying this library:
161
+
162
+ 1. **Adding new FieldType:** Update `FieldType` enum, `getTypeSizeBytes()`, `typeToArrayConstructor`, `typeStringToFieldType`, `binaryRead()`, `binaryWrite()`
163
+ 2. **Changing alignment rules:** Update all consumers (core Mem layout, codegen templates) — breaking change
164
+ 3. **Modifying pack/unpack logic:** Run full test suite AND verify dependent modules still work (core snapshot, net-wire protocol)
165
+ 4. **Performance optimization:** Benchmark before/after — serialization is hot path
166
+ 5. **Update this README:** Especially Public API and Invariants sections
167
+
168
+ ## 11. Integration Notes
169
+
170
+ ### With @lagless/core
171
+ - Core uses `MemoryTracker` to lay out the `Mem` ArrayBuffer with managers in order
172
+ - Components use `BinarySchema` for generated pack/unpack methods
173
+ - Alignment via `align8()` is critical — misalignment breaks Mem snapshots
174
+
175
+ ### With @lagless/net-wire
176
+ - Protocol messages (TickInput, Pong, etc.) are defined as `BinarySchema` instances
177
+ - `BinarySchemaPackPipeline` is used to concatenate header + payload
178
+ - Little-endian byte order is the wire format
179
+
180
+ ### With tools/codegen
181
+ - Codegen generates `BinarySchema` definitions from YAML field types
182
+ - Generated component classes include `static schema: BinarySchema<...>`
183
+
184
+ ## 12. Appendix
185
+
186
+ ### Memory Layout: Typical ArrayBuffer Structure
187
+
188
+ ```
189
+ ┌─────────────────────────────────────────────────────────┐
190
+ │ Offset │ Size │ Content │
191
+ ├────────┼──────┼─────────────────────────────────────────┤
192
+ │ 0 │ 8 │ <padding for alignment> │
193
+ │ 8 │ 24 │ TickManager data │
194
+ │ 32 │ 0 │ <already aligned> │
195
+ │ 32 │ 40 │ PRNGManager data │
196
+ │ 72 │ 0 │ <already aligned> │
197
+ │ 72 │ ... │ ComponentsManager data │
198
+ │ ... │ ... │ <more managers> │
199
+ └─────────────────────────────────────────────────────────┘
200
+
201
+ Key rules:
202
+ - Each manager allocation starts at align8(current_offset)
203
+ - This ensures 8-byte alignment for all structs
204
+ - Padding is added implicitly by align8() when needed
205
+ ```
206
+
207
+ ### FieldType Byte Sizes
208
+
209
+ | FieldType | Bytes | TypedArray |
210
+ |-----------|-------|----------------|
211
+ | uint8 | 1 | Uint8Array |
212
+ | uint16 | 2 | Uint16Array |
213
+ | uint32 | 4 | Uint32Array |
214
+ | int8 | 1 | Int8Array |
215
+ | int16 | 2 | Int16Array |
216
+ | int32 | 4 | Int32Array |
217
+ | float32 | 4 | Float32Array |
218
+ | float64 | 8 | Float64Array |
219
+
220
+ ### BinarySchema Internal Format
221
+
222
+ When a BinarySchema packs data:
223
+ 1. Allocates buffer of `struct_size` bytes
224
+ 2. Creates DataView for aligned access
225
+ 3. Writes each field sequentially at its byte offset
226
+ 4. Field offsets are computed from cumulative field sizes
227
+ 5. Returns Uint8Array view of the buffer
228
+
229
+ Example: `{ a: uint32, b: float32 }` → 8 bytes total
230
+ - Byte 0-3: `a` (4 bytes, little-endian uint32)
231
+ - Byte 4-7: `b` (4 bytes, little-endian float32)
@@ -0,0 +1,3 @@
1
+ export * from './lib/types.js';
2
+ export * from './lib/binary.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib/types.js';
2
+ export * from './lib/binary.js';
@@ -0,0 +1,121 @@
1
+ import { InputFieldDefinition, TypedArray, TypedArrayConstructor } from './types.js';
2
+ export declare const LE: true;
3
+ export declare enum FieldType {
4
+ Int8 = 0,
5
+ Uint8 = 1,
6
+ Int16 = 2,
7
+ Uint16 = 3,
8
+ Int32 = 4,
9
+ Uint32 = 5,
10
+ Float32 = 6,
11
+ Float64 = 7
12
+ }
13
+ export declare const FieldTypeReverse: {
14
+ 0: string;
15
+ 1: string;
16
+ 2: string;
17
+ 3: string;
18
+ 4: string;
19
+ 5: string;
20
+ 6: string;
21
+ 7: string;
22
+ };
23
+ export declare function getTypeSizeBytes(type: string): number;
24
+ export declare const typeToArrayConstructor: {
25
+ int8: Int8ArrayConstructor;
26
+ uint8: Uint8ArrayConstructor;
27
+ int16: Int16ArrayConstructor;
28
+ uint16: Uint16ArrayConstructor;
29
+ int32: Int32ArrayConstructor;
30
+ uint32: Uint32ArrayConstructor;
31
+ float32: Float32ArrayConstructor;
32
+ float64: Float64ArrayConstructor;
33
+ };
34
+ export declare const typeStringToFieldType: {
35
+ [key in keyof typeof typeToArrayConstructor]: FieldType;
36
+ };
37
+ export declare const fieldTypeSizeBytes: Record<FieldType, number>;
38
+ export declare const typedArrayConstructors: Record<FieldType, TypedArrayConstructor>;
39
+ export declare const binaryWrite: (dataView: DataView, offset: number, fieldType: FieldType, value: number) => void;
40
+ export declare const binaryRead: (dataView: DataView, offset: number, fieldType: FieldType) => number;
41
+ type RawSchema = {
42
+ [key: string]: FieldType;
43
+ };
44
+ type SchemaValues<TSchema extends RawSchema> = {
45
+ [K in keyof TSchema]: number;
46
+ };
47
+ export type InferBinarySchemaValues<T> = T extends BinarySchema<infer U> ? SchemaValues<U> : never;
48
+ export declare class BinarySchemaUnpackPipeline {
49
+ readonly arrayBuffer: ArrayBuffer;
50
+ private _offset;
51
+ private readonly _dataView;
52
+ constructor(arrayBuffer: ArrayBuffer);
53
+ unpack<TSchema extends RawSchema>(schema: BinarySchema<TSchema>): SchemaValues<TSchema>;
54
+ sliceRemaining(): ArrayBuffer;
55
+ getFastHash<TSchema extends RawSchema>(schema: BinarySchema<TSchema>): number;
56
+ }
57
+ export declare class BinarySchemaPackPipeline {
58
+ private _offset;
59
+ private readonly _chunks;
60
+ pack<TSchema extends RawSchema>(schema: BinarySchema<TSchema>, values: SchemaValues<TSchema>): void;
61
+ appendBuffer(buffer: ArrayBuffer): void;
62
+ /**
63
+ * Append a Uint8Array view, correctly handling views that are
64
+ * a slice of a larger ArrayBuffer (only the view's portion is copied).
65
+ */
66
+ appendView(view: Uint8Array): void;
67
+ toUint8Array(): Uint8Array;
68
+ }
69
+ export declare class BinarySchema<TSchema extends RawSchema> {
70
+ private readonly _schema;
71
+ private readonly _schemaEntries;
72
+ private readonly _byteLength;
73
+ get byteLength(): number;
74
+ constructor(_schema: TSchema);
75
+ pack(values: SchemaValues<TSchema>): Uint8Array;
76
+ packInto(dataView: DataView, offset: number, values: SchemaValues<TSchema>): void;
77
+ unpack(uint8: Uint8Array, byteOffset?: number): SchemaValues<TSchema>;
78
+ unpackFrom(dataView: DataView, byteOffset?: number): SchemaValues<TSchema>;
79
+ getFastHashFrom(dataView: DataView, byteOffset?: number): number;
80
+ }
81
+ export declare class InputBinarySchema {
82
+ static packBatch(registry: {
83
+ get(id: number): {
84
+ id: number;
85
+ fields: ReadonlyArray<InputFieldDefinition>;
86
+ byteLength: number;
87
+ };
88
+ }, data: ReadonlyArray<{
89
+ inputId: number;
90
+ ordinal: number;
91
+ values: {
92
+ [key: string]: number | ArrayLike<number>;
93
+ };
94
+ }>): ArrayBuffer;
95
+ static unpackBatch(registry: {
96
+ get(id: number): {
97
+ id: number;
98
+ fields: ReadonlyArray<InputFieldDefinition>;
99
+ byteLength: number;
100
+ };
101
+ }, buffer: ArrayBuffer): Array<{
102
+ inputId: number;
103
+ ordinal: number;
104
+ values: {
105
+ [key: string]: number | TypedArray;
106
+ };
107
+ }>;
108
+ }
109
+ export declare function align8(value: number): number;
110
+ export declare class MemoryTracker {
111
+ private _ptr;
112
+ get ptr(): number;
113
+ constructor(initialOffset?: number);
114
+ add(byteLength: number): number;
115
+ }
116
+ export declare const packBatchBuffers: (buffers: Uint8Array[]) => ArrayBuffer;
117
+ export declare const unpackBatchBuffers: (buffer: ArrayBuffer) => ArrayBuffer[];
118
+ export declare const toFloat32: (value: number) => number;
119
+ export declare const getFastHash: (arrayBuffer: ArrayBuffer) => number;
120
+ export {};
121
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/lib/binary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,476 @@
1
+ export const LE = true; // little-endian
2
+ export var FieldType;
3
+ (function (FieldType) {
4
+ FieldType[FieldType["Int8"] = 0] = "Int8";
5
+ FieldType[FieldType["Uint8"] = 1] = "Uint8";
6
+ FieldType[FieldType["Int16"] = 2] = "Int16";
7
+ FieldType[FieldType["Uint16"] = 3] = "Uint16";
8
+ FieldType[FieldType["Int32"] = 4] = "Int32";
9
+ FieldType[FieldType["Uint32"] = 5] = "Uint32";
10
+ FieldType[FieldType["Float32"] = 6] = "Float32";
11
+ FieldType[FieldType["Float64"] = 7] = "Float64";
12
+ })(FieldType || (FieldType = {}));
13
+ export const FieldTypeReverse = {
14
+ [FieldType.Int8]: 'Int8',
15
+ [FieldType.Uint8]: 'Uint8',
16
+ [FieldType.Int16]: 'Int16',
17
+ [FieldType.Uint16]: 'Uint16',
18
+ [FieldType.Int32]: 'Int32',
19
+ [FieldType.Uint32]: 'Uint32',
20
+ [FieldType.Float32]: 'Float32',
21
+ [FieldType.Float64]: 'Float64',
22
+ };
23
+ export function getTypeSizeBytes(type) {
24
+ switch (type) {
25
+ case 'int8':
26
+ case 'uint8':
27
+ return 1;
28
+ case 'int16':
29
+ case 'uint16':
30
+ return 2;
31
+ case 'int32':
32
+ case 'uint32':
33
+ case 'float32':
34
+ return 4;
35
+ case 'float64':
36
+ return 8;
37
+ default:
38
+ throw new Error(`Unknown type: ${type}`);
39
+ }
40
+ }
41
+ export const typeToArrayConstructor = {
42
+ int8: Int8Array,
43
+ uint8: Uint8Array,
44
+ int16: Int16Array,
45
+ uint16: Uint16Array,
46
+ int32: Int32Array,
47
+ uint32: Uint32Array,
48
+ float32: Float32Array,
49
+ float64: Float64Array,
50
+ };
51
+ export const typeStringToFieldType = {
52
+ int8: FieldType.Int8,
53
+ uint8: FieldType.Uint8,
54
+ int16: FieldType.Int16,
55
+ uint16: FieldType.Uint16,
56
+ int32: FieldType.Int32,
57
+ uint32: FieldType.Uint32,
58
+ float32: FieldType.Float32,
59
+ float64: FieldType.Float64,
60
+ };
61
+ export const fieldTypeSizeBytes = {
62
+ [FieldType.Int8]: Int8Array.BYTES_PER_ELEMENT,
63
+ [FieldType.Uint8]: Uint8Array.BYTES_PER_ELEMENT,
64
+ [FieldType.Int16]: Int16Array.BYTES_PER_ELEMENT,
65
+ [FieldType.Uint16]: Uint16Array.BYTES_PER_ELEMENT,
66
+ [FieldType.Int32]: Int32Array.BYTES_PER_ELEMENT,
67
+ [FieldType.Uint32]: Uint32Array.BYTES_PER_ELEMENT,
68
+ [FieldType.Float32]: Float32Array.BYTES_PER_ELEMENT,
69
+ [FieldType.Float64]: Float64Array.BYTES_PER_ELEMENT,
70
+ };
71
+ export const typedArrayConstructors = {
72
+ [FieldType.Int8]: Int8Array,
73
+ [FieldType.Uint8]: Uint8Array,
74
+ [FieldType.Int16]: Int16Array,
75
+ [FieldType.Uint16]: Uint16Array,
76
+ [FieldType.Int32]: Int32Array,
77
+ [FieldType.Uint32]: Uint32Array,
78
+ [FieldType.Float32]: Float32Array,
79
+ [FieldType.Float64]: Float64Array,
80
+ };
81
+ export const binaryWrite = (dataView, offset, fieldType, value) => {
82
+ switch (fieldType) {
83
+ case FieldType.Int8:
84
+ dataView.setInt8(offset, value);
85
+ break;
86
+ case FieldType.Int16:
87
+ dataView.setInt16(offset, value, LE);
88
+ break;
89
+ case FieldType.Int32:
90
+ dataView.setInt32(offset, value, LE);
91
+ break;
92
+ case FieldType.Uint8:
93
+ dataView.setUint8(offset, value);
94
+ break;
95
+ case FieldType.Uint16:
96
+ dataView.setUint16(offset, value, LE);
97
+ break;
98
+ case FieldType.Uint32:
99
+ dataView.setUint32(offset, value, LE);
100
+ break;
101
+ case FieldType.Float32:
102
+ dataView.setFloat32(offset, value, LE);
103
+ break;
104
+ case FieldType.Float64:
105
+ dataView.setFloat64(offset, value, LE);
106
+ break;
107
+ default:
108
+ throw new Error(`Unsupported field type ${fieldType}`);
109
+ }
110
+ };
111
+ export const binaryRead = (dataView, offset, fieldType) => {
112
+ switch (fieldType) {
113
+ case FieldType.Int8:
114
+ return dataView.getInt8(offset);
115
+ case FieldType.Int16:
116
+ return dataView.getInt16(offset, LE);
117
+ case FieldType.Int32:
118
+ return dataView.getInt32(offset, LE);
119
+ case FieldType.Uint8:
120
+ return dataView.getUint8(offset);
121
+ case FieldType.Uint16:
122
+ return dataView.getUint16(offset, LE);
123
+ case FieldType.Uint32:
124
+ return dataView.getUint32(offset, LE);
125
+ case FieldType.Float32:
126
+ return dataView.getFloat32(offset, LE);
127
+ case FieldType.Float64:
128
+ return dataView.getFloat64(offset, LE);
129
+ default:
130
+ throw new Error(`Unsupported field type ${fieldType}`);
131
+ }
132
+ };
133
+ export class BinarySchemaUnpackPipeline {
134
+ arrayBuffer;
135
+ _offset = 0;
136
+ _dataView;
137
+ constructor(arrayBuffer) {
138
+ this.arrayBuffer = arrayBuffer;
139
+ this._offset = 0;
140
+ this._dataView = new DataView(arrayBuffer);
141
+ }
142
+ unpack(schema) {
143
+ const result = schema.unpackFrom(this._dataView, this._offset);
144
+ this._offset += schema.byteLength;
145
+ return result;
146
+ }
147
+ sliceRemaining() {
148
+ return this.arrayBuffer.slice(this._offset);
149
+ }
150
+ getFastHash(schema) {
151
+ return schema.getFastHashFrom(this._dataView, this._offset);
152
+ }
153
+ }
154
+ export class BinarySchemaPackPipeline {
155
+ _offset = 0;
156
+ _chunks = [];
157
+ pack(schema, values) {
158
+ const buffer = new ArrayBuffer(schema.byteLength);
159
+ const dataView = new DataView(buffer);
160
+ schema.packInto(dataView, 0, values);
161
+ this._chunks.push(buffer);
162
+ this._offset += schema.byteLength;
163
+ }
164
+ appendBuffer(buffer) {
165
+ this._chunks.push(buffer);
166
+ this._offset += buffer.byteLength;
167
+ }
168
+ /**
169
+ * Append a Uint8Array view, correctly handling views that are
170
+ * a slice of a larger ArrayBuffer (only the view's portion is copied).
171
+ */
172
+ appendView(view) {
173
+ const buf = view.buffer;
174
+ const buffer = view.byteOffset === 0 && view.byteLength === buf.byteLength
175
+ ? buf
176
+ : buf.slice(view.byteOffset, view.byteOffset + view.byteLength);
177
+ this._chunks.push(buffer);
178
+ this._offset += buffer.byteLength;
179
+ }
180
+ toUint8Array() {
181
+ const totalLength = this._offset;
182
+ const result = new Uint8Array(totalLength);
183
+ let offset = 0;
184
+ for (const chunk of this._chunks) {
185
+ result.set(new Uint8Array(chunk), offset);
186
+ offset += chunk.byteLength;
187
+ }
188
+ return result;
189
+ }
190
+ }
191
+ export class BinarySchema {
192
+ _schema;
193
+ _schemaEntries;
194
+ _byteLength;
195
+ get byteLength() {
196
+ return this._byteLength;
197
+ }
198
+ constructor(_schema) {
199
+ this._schema = _schema;
200
+ this._schemaEntries = Object.entries(this._schema);
201
+ this._byteLength = this._schemaEntries.reduce((acc, [, fieldType]) => {
202
+ return fieldTypeSizeBytes[fieldType] + acc;
203
+ }, 0);
204
+ }
205
+ pack(values) {
206
+ const buffer = new ArrayBuffer(this._byteLength);
207
+ const dataView = new DataView(buffer);
208
+ this.packInto(dataView, 0, values);
209
+ return new Uint8Array(buffer);
210
+ }
211
+ packInto(dataView, offset, values) {
212
+ ensureCapacity(dataView, offset, this._byteLength, 'BinarySchema.packInto');
213
+ for (const [fieldKey, fieldType] of this._schemaEntries) {
214
+ const rawValue = values[fieldKey];
215
+ if (rawValue === undefined || rawValue === null || !Number.isFinite(rawValue) || isNaN(rawValue))
216
+ throw new Error(`Unexpected value "${rawValue}" field ${fieldKey}`);
217
+ const value = throwIfOutOfBounds(fieldKey, fieldType, rawValue);
218
+ binaryWrite(dataView, offset, fieldType, value);
219
+ offset += fieldTypeSizeBytes[fieldType];
220
+ }
221
+ }
222
+ unpack(uint8, byteOffset = 0) {
223
+ const view = new DataView(uint8.buffer);
224
+ return this.unpackFrom(view, byteOffset); // has ensureCapacity
225
+ }
226
+ unpackFrom(dataView, byteOffset = 0) {
227
+ ensureCapacity(dataView, byteOffset, this._byteLength, 'BinarySchema.unpackFrom');
228
+ let offset = byteOffset;
229
+ const result = Object.create(null);
230
+ for (const [fieldKey, fieldType] of this._schemaEntries) {
231
+ result[fieldKey] = binaryRead(dataView, offset, fieldType);
232
+ offset += fieldTypeSizeBytes[fieldType];
233
+ }
234
+ return result;
235
+ }
236
+ getFastHashFrom(dataView, byteOffset = 0) {
237
+ ensureCapacity(dataView, byteOffset, this._byteLength, 'BinarySchema.getFastHashFrom');
238
+ let hash = 0;
239
+ for (let i = 0; i < this._byteLength; i++) {
240
+ hash = (hash * 31 + dataView.getUint8(byteOffset + i)) >>> 0;
241
+ }
242
+ return hash;
243
+ }
244
+ }
245
+ export class InputBinarySchema {
246
+ static packBatch(registry, data) {
247
+ const totalByteLength = data.reduce((acc, { inputId }) => {
248
+ const struct = registry.get(inputId);
249
+ return (acc +
250
+ fieldTypeSizeBytes[FieldType.Uint8] + // input id
251
+ fieldTypeSizeBytes[FieldType.Uint32] + // ordinal
252
+ struct.byteLength // size of payload for this struct
253
+ );
254
+ }, 0);
255
+ const buffer = new ArrayBuffer(totalByteLength);
256
+ const dataView = new DataView(buffer);
257
+ let offset = 0;
258
+ for (const { inputId, ordinal, values } of data) {
259
+ const struct = registry.get(inputId);
260
+ // write input id
261
+ binaryWrite(dataView, offset, FieldType.Uint8, struct.id);
262
+ offset += fieldTypeSizeBytes[FieldType.Uint8];
263
+ // write ordinal
264
+ binaryWrite(dataView, offset, FieldType.Uint32, ordinal);
265
+ offset += fieldTypeSizeBytes[FieldType.Uint32];
266
+ // write struct fields
267
+ for (const field of struct.fields) {
268
+ if (field.isArray) {
269
+ const rawValue = values[field.name];
270
+ if (!rawValue || rawValue.length === undefined)
271
+ throw new Error(`Expected array for field ${field.name}`);
272
+ const arrayLength = rawValue.length;
273
+ const expectedLength = field.arrayLength;
274
+ if (expectedLength === undefined) {
275
+ throw new Error(`Cannot pack variable-length array without declared arrayLength for field ${field.name}`);
276
+ }
277
+ if (arrayLength > expectedLength) {
278
+ throw new Error(`Array length for field ${field.name} exceeds expected length (${arrayLength} > ${expectedLength})`);
279
+ }
280
+ // Ensure we have room for the *declared* payload (writer may underfill; zero-init covers the rest)
281
+ ensureCapacity(dataView, offset, field.byteLength, `InputBinarySchema.packBatch field ${field.name}`);
282
+ // Write provided elements
283
+ for (let j = 0; j < arrayLength; j++) {
284
+ const rawElement = rawValue[j];
285
+ if (rawElement === undefined || rawElement === null || !Number.isFinite(rawElement) || isNaN(rawElement))
286
+ throw new Error(`Unexpected value "${rawElement}" at index ${j} for field ${field.name}`);
287
+ const element = throwIfOutOfBounds(`${field.name}[${j}]`, field.type, rawElement);
288
+ binaryWrite(dataView, offset, field.type, element);
289
+ offset += fieldTypeSizeBytes[field.type];
290
+ }
291
+ // Skip remaining bytes for padding (buffer is zero-initialized)
292
+ const elementSize = fieldTypeSizeBytes[field.type];
293
+ const padCount = expectedLength - arrayLength;
294
+ offset += padCount * elementSize;
295
+ }
296
+ else {
297
+ const rawValue = values[field.name];
298
+ if (typeof rawValue !== 'number')
299
+ throw new Error(`Expected number for field ${field.name}`);
300
+ if (!Number.isFinite(rawValue) || isNaN(rawValue))
301
+ throw new Error(`Unexpected value "${rawValue}" for field ${field.name}`);
302
+ const element = throwIfOutOfBounds(field.name, field.type, rawValue);
303
+ ensureCapacity(dataView, offset, fieldTypeSizeBytes[field.type], `InputBinarySchema.packBatch field ${field.name}`);
304
+ binaryWrite(dataView, offset, field.type, element);
305
+ offset += fieldTypeSizeBytes[field.type];
306
+ }
307
+ }
308
+ }
309
+ return buffer;
310
+ }
311
+ static unpackBatch(registry, buffer) {
312
+ const dataView = new DataView(buffer);
313
+ const results = [];
314
+ let offset = 0;
315
+ const idSize = fieldTypeSizeBytes[FieldType.Uint8];
316
+ while (offset < buffer.byteLength) {
317
+ // --- Read input id
318
+ // Safety: ensure we have at least one byte for id.
319
+ if (offset + idSize > buffer.byteLength) {
320
+ throw new Error(`Truncated buffer while reading inputId at offset ${offset}`);
321
+ }
322
+ const inputId = binaryRead(dataView, offset, FieldType.Uint8);
323
+ offset += idSize;
324
+ // --- Read ordinal (uint32)
325
+ const ordinalSize = fieldTypeSizeBytes[FieldType.Uint32];
326
+ if (offset + ordinalSize > buffer.byteLength) {
327
+ throw new Error(`Truncated buffer while reading ordinal at offset ${offset}`);
328
+ }
329
+ const ordinal = binaryRead(dataView, offset, FieldType.Uint32);
330
+ offset += ordinalSize;
331
+ const struct = registry.get(inputId);
332
+ if (!struct) {
333
+ throw new Error(`Unknown inputId ${inputId} at offset ${offset - idSize}`);
334
+ }
335
+ const values = {};
336
+ // --- Read fields in declared order
337
+ for (const field of struct.fields) {
338
+ const elementSize = fieldTypeSizeBytes[field.type];
339
+ if (field.isArray) {
340
+ // Without a fixed arrayLength, the reader cannot determine how many elements to consume.
341
+ if (field.arrayLength === undefined) {
342
+ throw new Error(`Cannot unpack variable-length array without declared arrayLength for field ${field.name}`);
343
+ }
344
+ const count = field.arrayLength;
345
+ const totalBytes = count * elementSize;
346
+ // Safety: check that payload fits inside buffer
347
+ if (offset + totalBytes > buffer.byteLength) {
348
+ throw new Error(`Truncated buffer while reading array field ${field.name} (need ${totalBytes} bytes) at offset ${offset}`);
349
+ }
350
+ // Read fixed-length array
351
+ const arr = new typedArrayConstructors[field.type](count);
352
+ for (let j = 0; j < count; j++) {
353
+ arr[j] = binaryRead(dataView, offset, field.type);
354
+ offset += elementSize;
355
+ }
356
+ values[field.name] = arr;
357
+ }
358
+ else {
359
+ // Safety: check that scalar fits
360
+ if (offset + elementSize > buffer.byteLength) {
361
+ throw new Error(`Truncated buffer while reading field ${field.name} (need ${elementSize} bytes) at offset ${offset}`);
362
+ }
363
+ const v = binaryRead(dataView, offset, field.type);
364
+ values[field.name] = v;
365
+ offset += elementSize;
366
+ }
367
+ }
368
+ results.push({ inputId: struct.id, ordinal, values });
369
+ }
370
+ return results;
371
+ }
372
+ }
373
+ export function align8(value) {
374
+ return (value + 7) & ~7;
375
+ }
376
+ export class MemoryTracker {
377
+ _ptr;
378
+ get ptr() {
379
+ return this._ptr;
380
+ }
381
+ constructor(initialOffset = 0) {
382
+ this._ptr = initialOffset;
383
+ }
384
+ add(byteLength) {
385
+ this._ptr += align8(byteLength);
386
+ return this._ptr;
387
+ }
388
+ }
389
+ export const packBatchBuffers = (buffers) => {
390
+ const lengthPrefixSize = fieldTypeSizeBytes[FieldType.Uint32];
391
+ const metaLength = lengthPrefixSize * buffers.length;
392
+ const totalLength = buffers.reduce((acc, buf) => acc + buf.byteLength, metaLength);
393
+ const result = new ArrayBuffer(totalLength);
394
+ const dataView = new DataView(result);
395
+ const uint8View = new Uint8Array(result);
396
+ let offset = 0;
397
+ for (let i = 0; i < buffers.length; i++) {
398
+ const buffer = buffers[i];
399
+ dataView.setUint32(offset, buffer.byteLength, LE);
400
+ offset += lengthPrefixSize;
401
+ uint8View.set(buffer, offset);
402
+ offset += buffer.byteLength;
403
+ }
404
+ return result;
405
+ };
406
+ export const unpackBatchBuffers = (buffer) => {
407
+ const buffers = [];
408
+ const lengthPrefixSize = fieldTypeSizeBytes[FieldType.Uint32];
409
+ const dataView = new DataView(buffer);
410
+ let offset = 0;
411
+ while (offset < buffer.byteLength) {
412
+ if (offset + lengthPrefixSize > buffer.byteLength) {
413
+ throw new Error(`Truncated buffer: cannot read length prefix at offset ${offset}`);
414
+ }
415
+ const length = dataView.getUint32(offset, LE);
416
+ offset += lengthPrefixSize;
417
+ if (offset + length > buffer.byteLength) {
418
+ throw new Error(`Truncated buffer: need ${length} bytes at offset ${offset}, have ${buffer.byteLength - offset}`);
419
+ }
420
+ const buf = buffer.slice(offset, offset + length);
421
+ buffers.push(buf);
422
+ offset += length;
423
+ }
424
+ return buffers;
425
+ };
426
+ const FLOAT32_BUFFER = new Float32Array(1);
427
+ export const toFloat32 = (value) => {
428
+ FLOAT32_BUFFER[0] = value;
429
+ return FLOAT32_BUFFER[0];
430
+ };
431
+ export const getFastHash = (arrayBuffer) => {
432
+ const dataView = new DataView(arrayBuffer);
433
+ let hash = 0;
434
+ for (let i = 0; i < dataView.byteLength; i++) {
435
+ hash = (hash * 31 + dataView.getUint8(i)) >>> 0;
436
+ }
437
+ return hash;
438
+ };
439
+ function throwIfOutOfBounds(fieldKey, fieldType, value) {
440
+ switch (fieldType) {
441
+ case FieldType.Uint8:
442
+ if (value < 0 || value > 0xff)
443
+ throw new Error(`Value ${value} at ${fieldKey} out of bounds for Uint8`);
444
+ return value;
445
+ case FieldType.Uint16:
446
+ if (value < 0 || value > 0xffff)
447
+ throw new Error(`Value ${value} at ${fieldKey} out of bounds for Uint16`);
448
+ return value;
449
+ case FieldType.Uint32:
450
+ if (value < 0 || value > 0xffffffff)
451
+ throw new Error(`Value ${value} at ${fieldKey} out of bounds for Uint32`);
452
+ return value >>> 0;
453
+ case FieldType.Int8:
454
+ if (value < -128 || value > 127)
455
+ throw new Error(`Value ${value} at ${fieldKey} out of bounds for Int8`);
456
+ return value | 0;
457
+ case FieldType.Int16:
458
+ if (value < -32768 || value > 32767)
459
+ throw new Error(`Value ${value} at ${fieldKey} out of bounds for Int16`);
460
+ return value | 0;
461
+ case FieldType.Int32:
462
+ return value | 0; // always in bounds
463
+ case FieldType.Float32:
464
+ return value; // always in bounds
465
+ case FieldType.Float64:
466
+ return value; // always in bounds
467
+ default:
468
+ throw new Error(`Unsupported field type ${fieldType} at ${fieldKey}`);
469
+ }
470
+ }
471
+ function ensureCapacity(view, at, need, where) {
472
+ const remaining = view.byteLength - at;
473
+ if (remaining < need) {
474
+ throw new Error(`${where}: buffer too small (have ${remaining}, need ${need})`);
475
+ }
476
+ }
@@ -0,0 +1,11 @@
1
+ import { FieldType } from './binary.js';
2
+ export type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
3
+ export type TypedArrayConstructor = typeof Int8Array | typeof Uint8Array | typeof Int16Array | typeof Uint16Array | typeof Int32Array | typeof Uint32Array | typeof Float32Array | typeof Float64Array;
4
+ export interface InputFieldDefinition {
5
+ name: string;
6
+ type: FieldType;
7
+ isArray: boolean;
8
+ arrayLength?: number;
9
+ byteLength: number;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,qBAAqB,GAC7B,OAAO,SAAS,GAChB,OAAO,UAAU,GACjB,OAAO,UAAU,GACjB,OAAO,WAAW,GAClB,OAAO,UAAU,GACjB,OAAO,WAAW,GAClB,OAAO,YAAY,GACnB,OAAO,YAAY,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.d.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/modules/index.d.ts","../src/lib/binary.ts","../src/lib/types.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@20.19.9/node_modules/@types/node/index.d.ts"],"fileIdsList":[[59,60,61,68,111],[59,61,68,111],[59,60,68,111],[68,108,111],[68,110,111],[111],[68,111,116,145],[68,111,112,117,123,124,131,142,153],[68,111,112,113,123,131],[68,111],[63,64,65,68,111],[68,111,114,154],[68,111,115,116,124,132],[68,111,116,142,150],[68,111,117,119,123,131],[68,110,111,118],[68,111,119,120],[68,111,121,123],[68,110,111,123],[68,111,123,124,125,142,153],[68,111,123,124,125,138,142,145],[68,106,111],[68,111,119,123,126,131,142,153],[68,111,123,124,126,127,131,142,150,153],[68,111,126,128,142,150,153],[66,67,68,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159],[68,111,123,129],[68,111,130,153,158],[68,111,119,123,131,142],[68,111,132],[68,111,133],[68,110,111,134],[68,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159],[68,111,136],[68,111,137],[68,111,123,138,139],[68,111,138,140,154,156],[68,111,123,142,143,145],[68,111,144,145],[68,111,142,143],[68,111,145],[68,111,146],[68,108,111,142,147],[68,111,123,148,149],[68,111,148,149],[68,111,116,131,142,150],[68,111,151],[68,111,131,152],[68,111,126,137,153],[68,111,116,154],[68,111,142,155],[68,111,130,156],[68,111,157],[68,111,123,125,134,142,145,153,156,158],[68,111,142,159],[58,68,111],[68,78,82,111,153],[68,78,111,142,153],[68,73,111],[68,75,78,111,150,153],[68,111,131,150],[68,111,160],[68,73,111,160],[68,75,78,111,131,153],[68,70,71,74,77,111,123,142,153],[68,78,85,111],[68,70,76,111],[68,78,99,100,111],[68,74,78,111,145,153,160],[68,99,111,160],[68,72,73,111,160],[68,78,111],[68,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,100,101,102,103,104,105,111],[68,78,93,111],[68,78,85,86,111],[68,76,78,86,87,111],[68,77,111],[68,70,73,78,111],[68,78,82,86,87,111],[68,82,111],[68,76,78,81,111,153],[68,70,75,78,85,111],[68,111,142],[68,73,78,99,111,158,160]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"3ded04b4b8824848ad28efb208ce9bbff2c48858a1ed4dda65b3ac26e40b735a","signature":"ac089737c8fddcff7af3b4b11d52ceb4053ecacb1e408186981a121b45d471ae","impliedFormat":99},{"version":"9c41119526e6b5c18bb96f9bd563322b9b7bd3895f051748a21cfd426bc7f0aa","signature":"ddd386b335a31a931a79bb4a4194e4ad53836920f3eb847f9239577df45f0ada","impliedFormat":99},{"version":"21c5388dfa2af6acd9a77f68ace5f393e5f1163b371a7c4346742ebf0e102117","impliedFormat":99},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"49a5a44f2e68241a1d2bd9ec894535797998841c09729e506a7cbfcaa40f2180","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"1ca84b44ad1d8e4576f24904d8b95dd23b94ea67e1575f89614ac90062fc67f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d586db0a09a9495ebb5dece28f54df9684bfbd6e1f568426ca153126dac4a40","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"567b7f607f400873151d7bc63a049514b53c3c00f5f56e9e95695d93b66a138e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"84c1930e33d1bb12ad01bcbe11d656f9646bd21b2fb2afd96e8e10615a021aef","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4b87f767c7bc841511113c876a6b8bf1fd0cb0b718c888ad84478b372ec486b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"2bf469abae4cc9c0f340d4e05d9d26e37f936f9c8ca8f007a6534f109dcc77e4","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4c21aaa8257d7950a5b75a251d9075b6a371208fc948c9c8402f6690ef3b5b55","impliedFormat":1},{"version":"b5895e6353a5d708f55d8685c38a235c3a6d8138e374dee8ceb8ffde5aa8002a","impliedFormat":1},{"version":"54c4f21f578864961efc94e8f42bc893a53509e886370ec7dd602e0151b9266c","impliedFormat":1},{"version":"de735eca2c51dd8b860254e9fdb6d9ec19fe402dfe597c23090841ce3937cfc5","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"5155da3047ef977944d791a2188ff6e6c225f6975cc1910ab7bb6838ab84cede","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"e16d218a30f6a6810b57f7e968124eaa08c7bb366133ea34bbf01e7cd6b8c0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb8692dea24c27821f77e397272d9ed2eda0b95e4a75beb0fdda31081d15a8ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"5b6844ad931dcc1d3aca53268f4bd671428421464b1286746027aede398094f2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"0dbcebe2126d03936c70545e96a6e41007cf065be38a1ce4d32a39fcedefead4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"461e54289e6287e8494a0178ba18182acce51a02bca8dea219149bf2cf96f105","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"e31e51c55800014d926e3f74208af49cb7352803619855c89296074d1ecbb524","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"dfb96ba5177b68003deec9e773c47257da5c4c8a74053d8956389d832df72002","affectsGlobalScope":true,"impliedFormat":1},{"version":"92d3070580cf72b4bb80959b7f16ede9a3f39e6f4ef2ac87cfa4561844fdc69f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"613deebaec53731ff6b74fe1a89f094b708033db6396b601df3e6d5ab0ec0a47","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"e56eb632f0281c9f8210eb8c86cc4839a427a4ffffcfd2a5e40b956050b3e042","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1}],"root":[[60,62]],"options":{"composite":true,"declarationMap":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"experimentalDecorators":true,"importHelpers":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.lib.tsbuildinfo"},"referencedMap":[[62,1],[60,2],[61,3],[108,4],[109,4],[110,5],[68,6],[111,7],[112,8],[113,9],[63,10],[66,11],[64,10],[65,10],[114,12],[115,13],[116,14],[117,15],[118,16],[119,17],[120,17],[122,10],[121,18],[123,19],[124,20],[125,21],[107,22],[67,10],[126,23],[127,24],[128,25],[160,26],[129,27],[130,28],[131,29],[132,30],[133,31],[134,32],[135,33],[136,34],[137,35],[138,36],[139,36],[140,37],[141,10],[142,38],[144,39],[143,40],[145,41],[146,42],[147,43],[148,44],[149,45],[150,46],[151,47],[152,48],[153,49],[154,50],[155,51],[156,52],[157,53],[158,54],[159,55],[69,10],[59,56],[58,10],[56,10],[57,10],[11,10],[10,10],[2,10],[12,10],[13,10],[14,10],[15,10],[16,10],[17,10],[18,10],[19,10],[3,10],[20,10],[21,10],[4,10],[22,10],[26,10],[23,10],[24,10],[25,10],[27,10],[28,10],[29,10],[5,10],[30,10],[31,10],[32,10],[33,10],[6,10],[37,10],[34,10],[35,10],[36,10],[38,10],[7,10],[39,10],[44,10],[45,10],[40,10],[41,10],[42,10],[43,10],[8,10],[49,10],[46,10],[47,10],[48,10],[50,10],[9,10],[51,10],[52,10],[53,10],[55,10],[54,10],[1,10],[85,57],[95,58],[84,57],[105,59],[76,60],[75,61],[104,62],[98,63],[103,64],[78,65],[92,66],[77,67],[101,68],[73,69],[72,62],[102,70],[74,71],[79,72],[80,10],[83,72],[70,10],[106,73],[96,74],[87,75],[88,76],[90,77],[86,78],[89,79],[99,62],[81,80],[82,81],[91,82],[71,83],[94,74],[93,72],[97,10],[100,84]],"latestChangedDtsFile":"./lib/binary.d.ts","version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@lagless/binary",
3
+ "version": "0.0.33",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/ppauel/lagless",
8
+ "directory": "libs/binary"
9
+ },
10
+ "type": "module",
11
+ "main": "./dist/index.js",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ "./package.json": "./package.json",
16
+ ".": {
17
+ "@lagless/source": "./src/index.ts",
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js",
20
+ "default": "./dist/index.js"
21
+ }
22
+ },
23
+ "dependencies": {
24
+ "tslib": "^2.3.0"
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "README.md"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ }
33
+ }