@zzzeros0/nbsp 0.1.0 → 0.2.1

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
@@ -33,16 +33,33 @@ interface Packet {
33
33
  content: string;
34
34
  } // domain Packet
35
35
 
36
- const AckPacketStructure = structure<AckPacket>(
36
+ // Transformers
37
+
38
+ // Transforms string <-> number[]
39
+ const stringTransform = {
40
+ input: [(data: string) => toUint8Array(data)],
41
+ output: [(data: bytes) => toString(data)],
42
+ };
43
+
44
+ // Transforms hex string <-> hex number[]
45
+ const hexStringTransform = {
46
+ input: [(data: string) => toUint8Array(data, true)],
47
+ output: [(data: bytes) => toString(data, true)],
48
+ };
49
+
50
+ const AckPacketStructure = structure<AckPacket, Transformers<AckPacket>>(
37
51
  {
38
52
  id: charDataType(6),
39
53
  },
40
54
  {
41
55
  packed: true,
56
+ transform: {
57
+ id: hexStringTransform,
58
+ },
42
59
  },
43
- );
60
+ ); // AckPacketStructure Constructor (class)
44
61
 
45
- const PacketStructure = structure<Packet>(
62
+ const PacketStructure = structure<Packet, Transformers<Packet>>(
46
63
  {
47
64
  header: DataType.UINT32LE,
48
65
  id: charDataType(6),
@@ -51,8 +68,13 @@ const PacketStructure = structure<Packet>(
51
68
  },
52
69
  {
53
70
  packed: true,
71
+ transform: {
72
+ id: hexStringTransform,
73
+ method: stringTransform,
74
+ content: stringTransform,
75
+ },
54
76
  },
55
- );
77
+ ); // PacketStructure Constructor (class)
56
78
 
57
79
  console.log(AckPacketStructure.size); // 6 (Unpacked: 10)
58
80
  console.log(PacketStructure.size); // 78 (Unpacked: 128)
@@ -60,21 +82,39 @@ console.log(PacketStructure.size); // 78 (Unpacked: 128)
60
82
  mqttClient.on("message", (topic, msg) => {
61
83
  const packet = PacketStructure.from(msg);
62
84
 
63
- processMessage(
64
- topic,
65
- toString(packet.id),
66
- toString(packet.method),
67
- toString(packet.content),
68
- ).then(() => {
69
- const ackMessage = new AckPacketStructure({
70
- id: packet.id,
71
- });
85
+ processMessage(topic, packet.id, packet.method, packet.content).then(() => {
86
+ const ackMessage = AckPacketStructure.from(msg, sizeof(DataType.UINT32LE)); // Offset the 'header' property
72
87
 
73
88
  mqttClient.publish("ack", ackMessage.data());
74
89
  });
75
90
  });
76
91
  ```
77
92
 
93
+ ### Structure Constructor methods
94
+
95
+ | Method | Description | Arguments | Returned type |
96
+ | ------ | ----------------------------------------------------------------- | -------------------------------------------------- | -------------- |
97
+ | from | Creates a new instance and copies the buffer content from target. | `(target: Structure \| Buffer,offset: number = 0)` | `Structure<T>` |
98
+ | toJson | Creates a plain object, resolving with the data of the buffer. | | T |
99
+
100
+ ### Structure methods
101
+
102
+ | Method | Description | Arguments | Returned type |
103
+ | ------ | -------------------------------------- | --------------------------------------------------- | ------------- |
104
+ | data | Returns the internal buffer (no copy). | | `boolean` |
105
+ | reset | Zero the internal buffer content. | | `void` |
106
+ | toJson | Returns a plain object. | | `T` |
107
+ | copy | Copies the buffer content from target. | `(target: Buffer \| Structure, offset: number = 0)` | `void` |
108
+
109
+ ### Structure Options
110
+
111
+ Second argument in `structure` function.
112
+
113
+ | Property | Description | Type | Default |
114
+ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------- |
115
+ | packed | When false, fields of the structure are aligned or padded. This is really important especially for binary communications, improving performance and usage. | `boolean` | `false` |
116
+ | transform | An object that contains keys from the domain object. Transforms the data obtained from the buffer data. | `Transformers<T>` | `{}` |
117
+
78
118
  ## Usage
79
119
 
80
120
  1. Create a domain interface.
@@ -111,103 +151,52 @@ const person2 = PersonStructure.from(Buffer.from("526f73655a000000", "hex"));
111
151
  console.log("Name: %s, age: %d", toString(person2.name), person2.age); // Name: Rose, age: 90
112
152
 
113
153
  console.log(person2.data()); // <Buffer 52 6f 73 65 5a 00 00 00>
114
- ```
115
-
116
- 4. You can create a plain object using `toJson` instance or static methods:
117
154
 
118
- ```ts
119
155
  console.log(person2.toJson()); // { name: [ 82, 111, 115, 101 ], age: 90 }
120
156
 
121
157
  const person3 = PersonStructure.toJson(Buffer.from("4a616b655a000000", "hex"));
122
158
 
123
159
  console.log("Name: %s, age: %d", toString(person3.name), person3.age); // Name: Jake, age: 90
124
- ```
125
-
126
- ### Packing
127
160
 
128
- When creating a `Structure`, you can provide the argument `packed` (default is `false`):
161
+ // Transformers help to transform data.
162
+ // When a property has transformers, its exposed TypeScript type becomes the transformed type instead of the raw BindedType<T>.
163
+ // You can have multiple transforms in input/output; each one will receive the last transformed value.
129
164
 
130
- ```ts
131
- const PacketStructure = structure<Packet>(
165
+ const PersonStructure = structure<Person, { name: PropertyTransform }>(
132
166
  {
133
- header: DataType.UINT32LE,
134
- id: charDataType(6),
135
- content: charDataType(64),
167
+ age: DataType.UINT8,
168
+ name: charDataType(4),
136
169
  },
137
170
  {
138
- packed: true,
171
+ transform: {
172
+ name: {
173
+ // Executed when data is written to the buffer
174
+ input: [(data: string) => toUint8Array(data)],
175
+ // Executed when data is retrieved from the buffer
176
+ output: [(data: bytes) => toString(data)],
177
+ },
178
+ },
139
179
  },
140
180
  );
141
- ```
142
-
143
- When `packed` is `true`, no padding or alignment will be applied to the fields. This is really important especially for binary communications, improving performance and usage.
144
-
145
- ```ts
146
- console.log(PersonStructure.size); // Unpacked: 8 bytes
147
- console.log(PersonStructure.size); // Packed: 5 bytes
148
- ```
149
-
150
- ### Strings
151
-
152
- NBSP does not store strings dynamically.
153
- Strings are represented as fixed-length arrays of `UINT8`. You can use `charDataType` as a shorthand:
154
-
155
- ```ts
156
- charDataType(6); // returns [DataType.UINT8, 6]
157
- ```
158
-
159
- This is intentional and ensures:
160
-
161
- - Deterministic payload size
162
- - Protocol compatibility
163
- - Zero dynamic allocation
164
-
165
- ### Working with hex
166
-
167
- You can serialize/retrieve hex data:
168
-
169
- ```ts
170
- interface User {
171
- id: string;
172
- role: number;
173
- } // domain Person
174
-
175
- const UserStructure = structure<User>({
176
- id: charDataType(4),
177
- role: DataType.UINT8,
178
- });
179
-
180
- const instance = new UserStructure({
181
- id: toUint8Array("1a2b4c6d", true), // Transform to hex array
182
- role: 2,
181
+ const person = new PersonStructure({
182
+ age: 24,
183
+ name: "Dave", // Input transformer
183
184
  });
184
- // HEX string length 8 -> HEX array length 4
185
-
186
- console.log(instance.name); // Prints [ 26, 43, 76, 109 ]
187
- console.log(toString(instance.name, true)); // "1a2b4c6d"
185
+ person.name = "Jack"; // Input transformer
186
+ console.log(person.name); // "Jack", output transformer
188
187
  ```
189
188
 
190
- ### Arrays
189
+ ### Arrays & Nesting
191
190
 
192
191
  `Arrays` are defined with a `type` and a fixed `length` of items:
193
192
 
194
193
  ```ts
195
- interface Person {
196
- name: string;
197
- } // domain Person
198
-
199
194
  const PersonStructure = structure<Person>({
200
- name: charDataType(4), // [ DataType.UINT8, 4 ]
201
- });
202
-
203
- const person = new PersonStructure({
204
- name: toUint8Array("Jake"),
195
+ name: [DataType.UINT8, 4], // or charDataType(4)
205
196
  });
206
197
  ```
207
198
 
208
- This specifies that there will be `4` items in this field, each of them of type `DataType.UINT8` (strings will always be stored as arrays of `DataType.UINT8`).
209
-
210
- ### Nested Structures
199
+ > Strings are represented as a fixed array of `UINT8` if no transformer was applied for that property.
211
200
 
212
201
  You can nest `Structures`:
213
202
 
@@ -263,13 +252,13 @@ const groupInstance = new GroupStructure({
263
252
  // DO NOT use PersonStructure constructor
264
253
  // it will cause unnecessary allocations
265
254
  {
266
- name: toUint8Array("Jack"),
255
+ name: "Jack",
267
256
  },
268
257
  {
269
- name: toUint8Array("Rose"),
258
+ name: "Rose",
270
259
  },
271
260
  {
272
- name: toUint8Array("Dave"),
261
+ name: "Dave",
273
262
  },
274
263
  ...
275
264
  ],
@@ -282,63 +271,88 @@ console.log(groupInstance.people); // Array<100> [ { name: [Getter/Setter] }, ..
282
271
  >
283
272
  > Structures must be instantiated with plain objects when are nested, `do not` use the `Structure's constructor`; doing so will make unnecessary allocations.
284
273
 
285
- ### Buffer and copying
274
+ ### JSON
286
275
 
287
- You can access the `buffer` of the `instance` with `data` method:
276
+ Instances can be converted to plain JavaScript object with all the resolved properties and nested attributes of your structure using `toJson` method:
288
277
 
289
278
  ```ts
290
- instance.data(); // Returns the internal Buffer (no copy)
279
+ personInstance.toJson(); // { name: [ 68, 97, 118, 101 ], age: 24 }
291
280
  ```
292
281
 
293
- You can reset the `buffer` of the `instance` with `reset` method:
282
+ You can serialize directly to a plain JavaScript object from a buffer by using the static method `toJson`:
294
283
 
295
284
  ```ts
296
- instance.reset(); // Resets the internal Buffer (0)
285
+ PersonStructure.toJson(Buffer.from("4a616b655a000000", "hex")); // { name: [ 68, 97, 118, 101 ], age: 24 }
297
286
  ```
298
287
 
299
- You can `copy` the data from other `instance` or `buffer`:
288
+ > **Important**
289
+ >
290
+ > Transformers will also run when serializing JSON.
300
291
 
301
- ```ts
302
- instance.copy(instanceOrBuffer);
303
- ```
292
+ > Prefer the static `toJson` when working with raw buffers; there's no point on doing this:
293
+ >
294
+ > ```ts
295
+ > PersonStructure.toJson(personInstance.data());
296
+ > ```
297
+
298
+ ### Endianness
304
299
 
305
- You can create a `new instance` of the `Structure`, copying the data `from` other `buffer` or `instance`:
300
+ Data types defined in the enum `DataType` difference between `LE` and `BE` types:
306
301
 
307
302
  ```ts
308
- const copiedInstance = PersonStructure.from(instanceOrBuffer);
303
+ structure({
304
+ property1: DataType.UINT32BE,
305
+ property2: DataType.INT64LE,
306
+ });
309
307
  ```
310
308
 
311
- > **Important**
312
- >
313
- > Buffers must be the same size when copying.
314
- >
315
- > Each instance has its own buffer.
309
+ ### Floating point (FLOAT32) precision
316
310
 
317
- ### JSON
311
+ NBSP uses IEEE-754 floating point representations for FLOAT32 and FLOAT64, exactly like C, C++, Rust, Java, etc.
312
+ This means that some decimal values cannot be represented exactly in binary.
318
313
 
319
- Instances can be converted to plain JavaScript object with all the resolved properties and nested attributes of your structure using `toJson` method:
314
+ **Why does `0.4` become `0.4000000059604645`?**
315
+
316
+ FLOAT32 is a 32-bit single-precision IEEE-754 float.
317
+
318
+ Some decimal numbers, like 0.4, cannot be represented exactly using a finite binary fraction, so the closest representable value is stored instead.
319
+
320
+ Example:
320
321
 
321
322
  ```ts
322
- personInstance.toJson(); // { name: [ 68, 97, 118, 101 ], age: 24 }
323
+ const value = 0.4;
324
+
325
+ instance.floatValue = value;
326
+ console.log(instance.floatValue); // 0.4000000059604645
323
327
  ```
324
328
 
325
- You can serialize directly to a plain JavaScript object from a buffer by using the static method `toJson`:
329
+ This is not a bug in NBSP.
330
+ It is the actual value stored in memory and this behavior is universal
326
331
 
327
- ```ts
328
- PersonStructure.toJson(Buffer.from("4a616b655a000000", "hex")); // { name: [ 68, 97, 118, 101 ], age: 24 }
332
+ The same thing happens in other languages:
333
+
334
+ ```cpp
335
+ float x = 0.4f;
336
+ printf("%.17f\n", x); // 0.4000000059604645
329
337
  ```
330
338
 
331
- > **Important**
332
- >
333
- > Strings are still represented as numeric arrays in JSON output.
339
+ NBSP intentionally exposes the real binary value, without rounding or post-processing, to ensure:
334
340
 
335
- ### Endianness
341
+ - Full transparency
342
+ - Bit-exact compatibility with C/C++ structures
343
+ - Deterministic binary payloads
344
+
345
+ If you need to compare floating point values, never use strict equality:
346
+
347
+ a === b // ❌ unsafe for floats
336
348
 
337
- `DataType` difference between `LE` and `BE` types:
349
+ Instead, compare with a tolerance:
338
350
 
339
351
  ```ts
340
- structure({
341
- property1: DataType.UINT32BE,
342
- property2: DataType.INT64LE,
343
- });
352
+ Math.abs(a - b) < 1e-6; // ✅ safe
344
353
  ```
354
+
355
+ Or, when possible:
356
+
357
+ - Use integers (scaled values, fixed-point)
358
+ - Use FLOAT64 if higher precision is required.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { toString, toUint8Array } from "./memory.js";
2
- export { structure } from "./structure.js";
3
- export { charDataType, DataType } from "./type.js";
1
+ export { toString, toUint8Array, sizeof } from "./memory.js";
2
+ export { structure, type Structure, type StructureConstructor, type StructureFields, type StructureMethods, type StructureReturn, } from "./structure.js";
3
+ export { charDataType, DataType, type ArrayDataType, type BigIntDataType, type BindedType, type DataValue, type DomainObject, type NumericArrayDataType, type StructureArrayDataType, type StructureDefinitionDataType, type Type, type bytes, } from "./type.js";
4
+ export { type Transformer, type Transformers, type ApplyTransformers, type InputTransformer, type OuputTransformer, type PropertyTransformer, } from "./transformer.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,SAAS,EACT,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,IAAI,EACT,KAAK,KAAK,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
- export { toString, toUint8Array } from "./memory.js";
2
- export { structure } from "./structure.js";
3
- export { charDataType, DataType } from "./type.js";
1
+ export { toString, toUint8Array, sizeof } from "./memory.js";
2
+ export { structure, } from "./structure.js";
3
+ export { charDataType, DataType, } from "./type.js";
4
+ export {} from "./transformer.js";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,SAAS,GAMV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,QAAQ,GAWT,MAAM,WAAW,CAAC;AACnB,OAAO,EAON,MAAM,kBAAkB,CAAC"}
package/dist/memory.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { type AlignedData } from "./type.js";
1
+ import { type AlignedData, type bytes, type Type } from "./type.js";
2
2
  export declare function alloc(s: number): Buffer<ArrayBuffer>;
3
3
  export declare function read(data: AlignedData, buffer: Buffer, offset: number): number | bigint;
4
4
  export declare function write(data: AlignedData, buffer: Buffer, value: number, offset: number): void;
5
- export declare function toUint8Array(s: string, hex?: boolean): number[];
6
- export declare function toString(n: number[], hex?: boolean): string;
5
+ export declare function sizeof(type: Type): number;
6
+ export declare function toUint8Array(s: string, hex?: boolean): bytes;
7
+ export declare function toString(n: bytes, hex?: boolean): string;
7
8
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AA4BvD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,uBAG9B;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBA2CrE;AAED,wBAAgB,KAAK,CACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,QA0Ff;AAyBD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,MAAM,EAAE,CAMtE;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAe,GAAG,MAAM,CAKlE"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,KAAK,EACV,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AA8BnB,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,uBAG9B;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBA2CrE;AAED,wBAAgB,KAAK,CACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,QA0Ff;AAsCD,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQzC;AAuBD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,OAAe,GAAG,KAAK,CAInE;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAE,OAAe,GAAG,MAAM,CAK/D"}
package/dist/memory.js CHANGED
@@ -1,4 +1,5 @@
1
- import { DataType } from "./type.js";
1
+ import { DataType, } from "./type.js";
2
+ let encoder, decoder;
2
3
  function assertInteger(value, min, max, type) {
3
4
  if (!Number.isInteger(value)) {
4
5
  throw new Error(`${type}: value is not an integer`);
@@ -155,7 +156,49 @@ export function write(data, buffer, value, offset) {
155
156
  throw new Error("Invalid type");
156
157
  }
157
158
  }
158
- let encoder, decoder;
159
+ function getDataTypeSize(type) {
160
+ switch (type) {
161
+ case DataType.INT8:
162
+ case DataType.UINT8:
163
+ return 1;
164
+ case DataType.INT16LE:
165
+ case DataType.INT16BE:
166
+ case DataType.UINT16LE:
167
+ case DataType.UINT16BE:
168
+ return 2;
169
+ case DataType.INT32BE:
170
+ case DataType.INT32LE:
171
+ case DataType.UINT32LE:
172
+ case DataType.UINT32BE:
173
+ return 4;
174
+ case DataType.INT64LE:
175
+ case DataType.INT64BE:
176
+ case DataType.UINT64LE:
177
+ case DataType.UINT64BE:
178
+ return 8;
179
+ case DataType.FLOAT32LE:
180
+ case DataType.FLOAT32BE:
181
+ return 4;
182
+ case DataType.FLOAT64LE:
183
+ case DataType.FLOAT64BE:
184
+ return 8;
185
+ }
186
+ }
187
+ function getStructureDataSize(structure) {
188
+ return structure.size;
189
+ }
190
+ function getArrrayDataSize(type) {
191
+ return sizeof(type[0]) * type[1];
192
+ }
193
+ export function sizeof(type) {
194
+ return typeof type === "number"
195
+ ? getDataTypeSize(type)
196
+ : typeof type === "string"
197
+ ? 0
198
+ : Array.isArray(type)
199
+ ? getArrrayDataSize(type)
200
+ : getStructureDataSize(type);
201
+ }
159
202
  function hexToBytes(hex) {
160
203
  let bytes = [];
161
204
  for (let c = 0; c < hex.length; c += 2)
@@ -180,9 +223,7 @@ export function toUint8Array(s, hex = false) {
180
223
  return hexToBytes(s);
181
224
  if (!encoder)
182
225
  encoder = new TextEncoder(); // UTF-8 por defecto
183
- const bytes = encoder.encode(s);
184
- // console.log("Raw", bytes);
185
- return Array.from(bytes);
226
+ return Array.from(encoder.encode(s));
186
227
  }
187
228
  export function toString(n, hex = false) {
188
229
  // console.log("String", n);
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,52 @@
1
+ import type { Transformers } from "./transformer.js";
2
+ import { type ApplyTransformers } from "./transformer.js";
1
3
  import { type AlignedData, type BindedType, type DomainObject, type StructureDefinitionDataType, type Type } from "./type.js";
2
- export type StructureFields<T extends DomainObject = DomainObject> = {
4
+ export type StructureFields<T extends DomainObject> = {
3
5
  [K in keyof Record<keyof T, Type>]: AlignedData;
4
6
  };
5
- export interface StructureConstructor<T extends DomainObject = DomainObject> {
6
- readonly size: number;
7
- readonly fields: StructureFields;
7
+ interface StructureStaticMethods<T extends DomainObject> {
8
8
  /**
9
9
  * Copys the contents of the buffer. Returns a new Instance.
10
10
  * @param buffer
11
11
  */
12
- from(buffer: Buffer): Structure<BindedType<T>>;
13
- from(buffer: Structure<BindedType<T>>): Structure<BindedType<T>>;
14
- toJson(buffer: Buffer): BindedType<T>;
15
- new (args: BindedType<T>): Structure<BindedType<T>>;
12
+ from(buffer: Buffer, offset?: number): Structure<T>;
13
+ /**
14
+ * Copys the contents of the instance's buffer. Returns a new instance.
15
+ * @param buffer
16
+ */
17
+ from(structure: Structure<BindedType<T>>, offset?: number, length?: number): Structure<T>;
18
+ /**
19
+ * Serializes the buffer directly to a plain object
20
+ * @param buffer
21
+ */
22
+ toJson(buffer: Buffer): T;
23
+ }
24
+ export interface StructureConstructor<T extends DomainObject = DomainObject> extends StructureStaticMethods<T> {
25
+ /**
26
+ * The size of the structure
27
+ */
28
+ readonly size: number;
29
+ /**
30
+ * The fields of the structure
31
+ */
32
+ readonly fields: StructureFields<T>;
33
+ /**
34
+ * The transformers
35
+ */
36
+ readonly transform: Transformers<T>;
37
+ new (args: T): Structure<T>;
16
38
  }
17
39
  export interface StructureMethods<T extends DomainObject> {
18
40
  /**
19
41
  * Copies the contents of the buffer
20
42
  * @param buffer
21
43
  */
22
- copy(buffer: Buffer): void;
44
+ copy(buffer: Buffer, offset?: number): void;
23
45
  /**
24
46
  * Copies the contents of the structure buffer
25
47
  * @param buffer
26
48
  */
27
- copy(structure: Structure<T>): void;
49
+ copy(structure: Structure<T>, offset?: number): void;
28
50
  /**
29
51
  * Returns the buffer
30
52
  */
@@ -38,13 +60,16 @@ export interface StructureMethods<T extends DomainObject> {
38
60
  */
39
61
  toJson(): T;
40
62
  }
41
- export type Structure<T extends DomainObject> = T & StructureMethods<T>;
42
- export declare function alignFields<T extends Record<string, Type>>(data: T, packed?: boolean): {
43
- fields: StructureFields<T>;
44
- size: number;
45
- };
46
- export declare function defineProxyProperty(target: Record<string, any>, key: string, field: AlignedData, buffer: Buffer, offset?: number): void;
47
- export declare function structure<T extends DomainObject>(data: StructureDefinitionDataType<T>, opts?: {
63
+ export type StructureOptions<T extends DomainObject, TR extends Transformers<T> | undefined> = TR extends undefined ? {
64
+ packed?: boolean;
65
+ tranform?: undefined;
66
+ } : {
48
67
  packed?: boolean;
49
- }): StructureConstructor<T>;
68
+ transform?: TR;
69
+ };
70
+ export type Structure<T extends DomainObject> = T & StructureMethods<T>;
71
+ export type StructureReturn<T extends DomainObject, TR extends Transformers<T> | undefined> = StructureConstructor<ApplyTransformers<T, BindedType<T>, TR>>;
72
+ export declare function structure<T extends DomainObject>(data: StructureDefinitionDataType<T>, opts?: StructureOptions<T, undefined>): StructureConstructor<BindedType<T>>;
73
+ export declare function structure<T extends DomainObject, TR extends Transformers<T>>(data: StructureDefinitionDataType<T>, opts?: StructureOptions<T, TR>): StructureReturn<T, TR>;
74
+ export {};
50
75
  //# sourceMappingURL=structure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,UAAU,EAEf,KAAK,YAAY,EACjB,KAAK,2BAA2B,EAChC,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI;KAClE,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,WAAW;CAChD,CAAC;AACF,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,YAAY;IACtD;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,MAAM,IAAI,CAAC,CAAC;CACb;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAKxE,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EACxD,IAAI,EAAE,CAAC,EACP,MAAM,GAAE,OAAe,GACtB;IAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAsB9C;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAU,GACjB,IAAI,CA0BN;AA8MD,wBAAgB,SAAS,CAAC,CAAC,SAAS,YAAY,EAC9C,IAAI,EAAE,2BAA2B,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,oBAAoB,CAAC,CAAC,CAAC,CAsEzB"}
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"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"}
package/dist/structure.js CHANGED
@@ -1,10 +1,10 @@
1
- import { alloc, read, write } from "./memory.js";
2
- import { sizeof } from "./size.js";
1
+ import { alloc, read, write, sizeof } from "./memory.js";
2
+ import { applyTransform } from "./transformer.js";
3
3
  import { DataType, isArrayDataType, isStructureDataType, } from "./type.js";
4
4
  function alignUp(n, align) {
5
5
  return (n + align - 1) & ~(align - 1);
6
6
  }
7
- export function alignFields(data, packed = false) {
7
+ function alignFields(data, packed = false) {
8
8
  const fields = {};
9
9
  let offset = 0;
10
10
  let maxAlign = 1;
@@ -28,48 +28,51 @@ export function alignFields(data, packed = false) {
28
28
  const structSize = packed ? offset : alignUp(offset, maxAlign);
29
29
  return { fields: Object.freeze(fields), size: structSize };
30
30
  }
31
- export function defineProxyProperty(target, key, field, buffer, offset = 0) {
32
- // console.log("Define property", target, key, field);
31
+ function defineProxyProperty(target, key, field, buffer, transformer, offset = 0) {
33
32
  const isStructField = isStructureDataType(field.type);
34
33
  const isArrayField = isArrayDataType(field.type);
35
34
  Object.defineProperty(target, key, {
36
35
  get() {
37
- // console.log("Get", key, field, isStructField);
38
36
  if (isStructField)
39
37
  return target[key];
40
- else if (isArrayField)
41
- return readArray(field, buffer, offset);
42
- return read(field, buffer, offset);
38
+ else if (isArrayField) {
39
+ const out = readArray(field, buffer, offset);
40
+ return applyTransform(transformer?.output, out);
41
+ }
42
+ const out = read(field, buffer, offset);
43
+ return applyTransform(transformer?.output, out);
43
44
  },
44
45
  set(v) {
45
- // console.log("Set", key, isStructField);
46
46
  if (isStructField)
47
- return writeStructure(field, buffer, v, offset);
47
+ return writeStructure(field, buffer, applyTransform(transformer?.input, v), offset);
48
48
  else if (isArrayField)
49
- writeArray(field, v, buffer, offset);
49
+ writeArray(field, applyTransform(transformer?.input, v), buffer, offset);
50
50
  else
51
- write(field, buffer, v, offset);
51
+ write(field, buffer, applyTransform(transformer?.input, v), offset);
52
52
  },
53
53
  });
54
54
  }
55
55
  function writeStructure(data, buffer, value, offset) {
56
- // console.log("Write structure", data, offset, value);
56
+ console.log("Write structure", data, offset, value);
57
57
  for (const [k, field] of Object.entries(data.type.fields)) {
58
+ const transformer = data.type.transform[k];
59
+ const val = applyTransform(transformer?.input, value[k]);
58
60
  if (isStructureDataType(field.type)) {
59
- writeStructure(field, buffer, value[k], offset + data.offset);
61
+ writeStructure(field, buffer, val, offset + data.offset);
60
62
  }
61
63
  else if (Array.isArray(field.type)) {
62
- writeArray(field, value[k], buffer, offset + data.offset);
64
+ writeArray(field, val, buffer, offset + data.offset);
63
65
  }
64
66
  else
65
- write(field, buffer, value[k], offset + data.offset);
67
+ write(field, buffer, val, offset + data.offset);
66
68
  }
67
69
  }
68
70
  function writeArray(data, arr, buffer, offset) {
69
- // console.log("Write array", data, offset, arr);
70
71
  const [type, length] = data.type;
71
72
  const isStructure = isStructureDataType(type);
72
73
  const size = sizeof(type);
74
+ if (arr.length !== length)
75
+ throw new RangeError("Invalid array length");
73
76
  for (let i = 0; i < length; i++) {
74
77
  const value = arr[i];
75
78
  if (isStructure) {
@@ -96,7 +99,6 @@ function writeArray(data, arr, buffer, offset) {
96
99
  }
97
100
  }
98
101
  function readArray(data, buffer, offset = 0, mutable = true) {
99
- // console.log("Read array", data, offset);
100
102
  const t = [];
101
103
  const [type, length] = data.type;
102
104
  const size = sizeof(type);
@@ -128,69 +130,82 @@ function readArray(data, buffer, offset = 0, mutable = true) {
128
130
  return t;
129
131
  }
130
132
  function readStructure(data, buffer, offset = 0, mutable = true) {
131
- // console.log("readStructure", offset);
132
133
  const t = {};
133
134
  for (const [k, field] of Object.entries(data.type.fields)) {
135
+ const transformer = data.type.transform[k];
134
136
  if (mutable)
135
- defineProxyProperty(t, k, field, buffer, data.offset + offset);
137
+ defineProxyProperty(t, k, field, buffer, data.type.transform[k], data.offset + offset);
136
138
  else {
137
139
  if (isStructureDataType(field.type)) {
138
- t[k] = readStructure(field, buffer, data.offset + offset, mutable);
139
- continue;
140
+ t[k] = applyTransform(transformer?.output, readStructure(field, buffer, data.offset + offset, mutable));
140
141
  }
141
- if (isArrayDataType(field.type)) {
142
- t[k] = readArray(field, buffer, data.offset + offset, mutable);
142
+ else if (isArrayDataType(field.type)) {
143
+ t[k] = applyTransform(transformer?.output, readArray(field, buffer, data.offset + offset, mutable));
144
+ }
145
+ else {
146
+ t[k] = applyTransform(transformer?.output, read(field, buffer, data.offset + offset));
143
147
  }
144
- else
145
- t[k] = read(field, buffer, data.offset + offset);
146
148
  }
147
149
  }
148
150
  return t;
149
151
  }
150
- function construct(target, fields, args, buffer, offset = 0, writeData = true) {
151
- // console.log("Construct", target, offset);
152
+ function construct(target, fields, transformers, args, buffer, offset = 0, writeData = true) {
152
153
  for (const [k, field] of Object.entries(fields)) {
153
154
  const arg = args[k];
155
+ const transformer = transformers[k];
156
+ const val = arg ? applyTransform(transformer?.input, arg) : arg;
154
157
  if (writeData) {
155
158
  if (isStructureDataType(field.type)) {
156
159
  target[k] = {};
157
- construct(target[k], field.type.fields, arg ?? {}, buffer, offset + field.offset);
160
+ construct(target[k], field.type.fields, field.type.transform, arg ?? {}, buffer, offset + field.offset, writeData);
158
161
  continue;
159
162
  }
160
163
  if (Array.isArray(field.type)) {
161
- writeArray(field, arg ?? [], buffer, offset);
164
+ writeArray(field, val, buffer, offset);
162
165
  }
163
166
  else {
164
- if (arg)
165
- write(field, buffer, arg, offset);
167
+ if (val)
168
+ write(field, buffer, val, offset);
166
169
  }
167
170
  }
168
- defineProxyProperty(target, k, field, buffer, offset);
171
+ else {
172
+ if (isStructureDataType(field.type)) {
173
+ target[k] = {};
174
+ construct(target[k], field.type.fields, field.type.transform, val ?? {}, buffer, offset + field.offset, writeData);
175
+ }
176
+ else
177
+ defineProxyProperty(target, k, field, buffer, transformer, offset);
178
+ }
169
179
  }
170
180
  }
171
181
  export function structure(data, opts) {
182
+ const transformers = opts?.transform ?? {};
172
183
  const { fields, size } = alignFields(data, opts?.packed);
173
184
  let writeData = true;
174
185
  const t = class {
175
186
  static fields = fields;
187
+ static transform = transformers;
176
188
  static size = size;
177
189
  __buff__ = alloc(size);
178
- static from(arg) {
190
+ static from(arg, offset = 0) {
179
191
  writeData = false;
192
+ const bsize = arg instanceof Buffer ? arg.length : arg.size;
193
+ if (size > bsize)
194
+ throw new Error("Invalid buffer size");
180
195
  if (arg instanceof Buffer) {
181
- if (arg.length !== size)
182
- throw new Error("Invalid buffer size");
183
196
  const inst = new this({});
184
- arg.copy(inst.data());
197
+ arg.copy(inst.data(), 0, offset, offset + size);
185
198
  return inst;
186
199
  }
187
200
  else {
188
201
  const inst = new this({});
189
- arg.data().copy(inst.data());
202
+ arg.data().copy(inst.data(), 0, offset, offset + size);
190
203
  return inst;
191
204
  }
192
205
  }
193
206
  static toJson(buffer) {
207
+ if (buffer.length < size)
208
+ throw new Error("Invalid buffer size");
194
209
  return readStructure({
195
210
  type: this,
196
211
  offset: 0,
@@ -198,16 +213,16 @@ export function structure(data, opts) {
198
213
  }, buffer, 0, false);
199
214
  }
200
215
  constructor(args) {
201
- construct(this, fields, args, this.__buff__, 0, writeData);
216
+ construct(this, fields, transformers, args, this.__buff__, 0, writeData);
202
217
  writeData = true;
203
218
  }
204
- copy(target) {
219
+ copy(target, offset = 0) {
205
220
  if (target instanceof Buffer) {
206
- target.copy(this.__buff__);
221
+ target.copy(this.__buff__, 0, offset, offset + size);
207
222
  return;
208
223
  }
209
224
  else
210
- target.data().copy(this.__buff__);
225
+ target.data().copy(this.__buff__, 0, offset, offset + size);
211
226
  }
212
227
  data() {
213
228
  return this.__buff__;
@@ -1 +1 @@
1
- {"version":3,"file":"structure.js","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BindedType, DomainObject } from "./type.js";
2
+ export type Transformer<T, R> = (data: T) => R;
3
+ export type InputTransformer = Transformer<any, any>;
4
+ export type OuputTransformer<T> = Transformer<any, T>;
5
+ export interface PropertyTransformer {
6
+ readonly input?: Transformer<any, any>[];
7
+ readonly output?: Transformer<any, any>[];
8
+ }
9
+ export type Transformers<T extends DomainObject> = Partial<{
10
+ [K in keyof T]: PropertyTransformer;
11
+ }>;
12
+ export type ApplyTransformers<T extends DomainObject, B extends BindedType<T>, TR extends Partial<Transformers<T>> | undefined> = {
13
+ [K in keyof T]: TR extends undefined ? B[K] : K extends keyof TR ? T[K] : B[K];
14
+ };
15
+ export declare function applyTransform(transformer: Transformer<any, any>[] | undefined, v: any): any;
16
+ //# sourceMappingURL=transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,YAAY,EAAE,MAAM,WAAW,CAAC;AAErE,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;CAC3C;AACD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,YAAY,IAAI,OAAO,CAAC;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB;CACpC,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,CAC3B,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EACvB,EAAE,SAAS,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAC7C;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,SAAS,GAChC,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,MAAM,EAAE,GAChB,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,CAAC,CAAC,CAAC;CACX,CAAC;AASF,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAChD,CAAC,EAAE,GAAG,OAGP"}
@@ -0,0 +1,11 @@
1
+ function transform(v, transformers) {
2
+ let rv = v;
3
+ for (const t of transformers) {
4
+ rv = t(rv);
5
+ }
6
+ return rv;
7
+ }
8
+ export function applyTransform(transformer, v) {
9
+ return transformer && transformer.length ? transform(v, transformer) : v;
10
+ }
11
+ //# sourceMappingURL=transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AA0BA,SAAS,SAAS,CAAC,CAAM,EAAE,YAAqC;IAC9D,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,MAAM,UAAU,cAAc,CAC5B,WAAgD,EAChD,CAAM;IAEN,OAAO,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC"}
package/dist/type.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type StructureConstructor } from "./structure.js";
2
+ export type bytes = number[];
2
3
  export declare enum DataType {
3
4
  INT8 = 0,
4
5
  UINT8 = 1,
@@ -29,9 +30,9 @@ export type DomainObject = Record<string, any>;
29
30
  export type InferArray<T extends any> = T extends number ? NumericArrayDataType : T extends DomainObject ? StructureArrayDataType<T> : never;
30
31
  export type ArrayDataType = NumericArrayDataType | StructureArrayDataType<DomainObject>;
31
32
  export type Type<D extends DomainObject = DomainObject> = DataType | ArrayDataType | StructureConstructor<D>;
32
- export type DataVale = number | Array<number> | bigint | object;
33
+ export type DataValue = number | bytes | bigint | object;
33
34
  export type BindedType<T extends Record<string, any>> = {
34
- [K in keyof T]: T[K] extends string ? number[] : T[K] extends DomainObject ? BindedType<T[K]> : T[K];
35
+ [K in keyof T]: T[K] extends string ? bytes : T[K] extends DomainObject ? BindedType<T[K]> : T[K];
35
36
  };
36
37
  export type StructureDefinitionDataType<T extends DomainObject> = {
37
38
  [K in keyof T]: T[K] extends readonly (infer P)[] ? InferArray<P> : T[K] extends number ? DataType : T[K] extends bigint ? BigIntDataType : T[K] extends string ? NumericArrayDataType : T[K] extends DomainObject ? StructureConstructor<T[K]> : never;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
package/dist/type.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,gBAAgB,CAAC;AAE3D,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAK,CAAA;IACL,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,8CAAO,CAAA;IACP,8CAAO,CAAA;IACP,gDAAQ,CAAA;IACR,gDAAQ,CAAA;IACR,kDAAS,CAAA;IACT,kDAAS,CAAA;IACT,kDAAS,CAAA;IACT,kDAAS,CAAA;AACX,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB;AAqDD,MAAM,UAAU,mBAAmB,CAAC,CAAO;IACzC,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAO;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,gBAAgB,CAAC;AAI3D,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAK,CAAA;IACL,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,8CAAO,CAAA;IACP,8CAAO,CAAA;IACP,gDAAQ,CAAA;IACR,gDAAQ,CAAA;IACR,kDAAS,CAAA;IACT,kDAAS,CAAA;IACT,kDAAS,CAAA;IACT,kDAAS,CAAA;AACX,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB;AAqDD,MAAM,UAAU,mBAAmB,CAAC,CAAO;IACzC,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAO;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zzzeros0/nbsp",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Zero-copy fixed-size binary structures for NodeJS TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,9 @@
9
9
  "build": "tsc",
10
10
  "prepublishOnly": "npm run build"
11
11
  },
12
- "files": ["dist"],
12
+ "files": [
13
+ "dist"
14
+ ],
13
15
  "exports": {
14
16
  ".": {
15
17
  "import": "./dist/index.js",
package/dist/size.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { type StructureConstructor } from "./structure.js";
2
- import { type Type } from "./type.js";
3
- export declare function sizeof(type: Type | StructureConstructor): number;
4
- //# sourceMappingURL=size.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../src/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAgC,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAsCpE,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,MAAM,CAQhE"}
package/dist/size.js DELETED
@@ -1,46 +0,0 @@
1
- import {} from "./structure.js";
2
- import { DataType } from "./type.js";
3
- function getDataTypeSize(type) {
4
- switch (type) {
5
- case DataType.INT8:
6
- case DataType.UINT8:
7
- return 1;
8
- case DataType.INT16LE:
9
- case DataType.INT16BE:
10
- case DataType.UINT16LE:
11
- case DataType.UINT16BE:
12
- return 2;
13
- case DataType.INT32BE:
14
- case DataType.INT32LE:
15
- case DataType.UINT32LE:
16
- case DataType.UINT32BE:
17
- return 4;
18
- case DataType.INT64LE:
19
- case DataType.INT64BE:
20
- case DataType.UINT64LE:
21
- case DataType.UINT64BE:
22
- return 8;
23
- case DataType.FLOAT32LE:
24
- case DataType.FLOAT32BE:
25
- return 4;
26
- case DataType.FLOAT64LE:
27
- case DataType.FLOAT64BE:
28
- return 8;
29
- }
30
- }
31
- function getStructureDataSize(structure) {
32
- return structure.size;
33
- }
34
- function getArrrayDataSize(type) {
35
- return sizeof(type[0]) * type[1];
36
- }
37
- export function sizeof(type) {
38
- return typeof type === "number"
39
- ? getDataTypeSize(type)
40
- : typeof type === "string"
41
- ? 0
42
- : Array.isArray(type)
43
- ? getArrrayDataSize(type)
44
- : getStructureDataSize(type);
45
- }
46
- //# sourceMappingURL=size.js.map
package/dist/size.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../src/size.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAiC,MAAM,WAAW,CAAC;AAEpE,SAAS,eAAe,CAAC,IAAc;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,IAAI,CAAC;QACnB,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,QAAQ,CAAC;QACvB,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,QAAQ,CAAC;QACvB,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,OAAO,CAAC;QACtB,KAAK,QAAQ,CAAC,QAAQ,CAAC;QACvB,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,SAAS,CAAC;QACxB,KAAK,QAAQ,CAAC,SAAS;YACrB,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,SAAS,CAAC;QACxB,KAAK,QAAQ,CAAC,SAAS;YACrB,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,SAA+B;IAC3D,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAmB;IAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,IAAiC;IACtD,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACzB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}