@zzzeros0/nbsp 0.1.1 → 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 +87 -124
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +4 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +46 -5
- package/dist/memory.js.map +1 -1
- package/dist/structure.d.ts +43 -13
- package/dist/structure.d.ts.map +1 -1
- package/dist/structure.js +57 -42
- package/dist/structure.js.map +1 -1
- package/dist/transformer.d.ts +16 -0
- package/dist/transformer.d.ts.map +1 -0
- package/dist/transformer.js +11 -0
- package/dist/transformer.js.map +1 -0
- package/dist/type.d.ts +3 -2
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js.map +1 -1
- package/package.json +1 -1
- package/dist/size.d.ts +0 -4
- package/dist/size.d.ts.map +0 -1
- package/dist/size.js +0 -46
- package/dist/size.js.map +0 -1
package/README.md
CHANGED
|
@@ -33,16 +33,33 @@ interface Packet {
|
|
|
33
33
|
content: string;
|
|
34
34
|
} // domain Packet
|
|
35
35
|
|
|
36
|
-
|
|
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
|
-
|
|
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
154
|
|
|
116
|
-
4. You can create a plain object using `toJson` instance or static methods:
|
|
117
|
-
|
|
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
160
|
|
|
126
|
-
|
|
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.
|
|
127
164
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
const PacketStructure = structure<Packet>(
|
|
165
|
+
const PersonStructure = structure<Person, { name: PropertyTransform }>(
|
|
132
166
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
content: charDataType(64),
|
|
167
|
+
age: DataType.UINT8,
|
|
168
|
+
name: charDataType(4),
|
|
136
169
|
},
|
|
137
170
|
{
|
|
138
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
255
|
+
name: "Jack",
|
|
267
256
|
},
|
|
268
257
|
{
|
|
269
|
-
name:
|
|
258
|
+
name: "Rose",
|
|
270
259
|
},
|
|
271
260
|
{
|
|
272
|
-
name:
|
|
261
|
+
name: "Dave",
|
|
273
262
|
},
|
|
274
263
|
...
|
|
275
264
|
],
|
|
@@ -282,38 +271,6 @@ 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
|
|
286
|
-
|
|
287
|
-
You can access the `buffer` of the `instance` with `data` method:
|
|
288
|
-
|
|
289
|
-
```ts
|
|
290
|
-
instance.data(); // Returns the internal Buffer (no copy)
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
You can reset the `buffer` of the `instance` with `reset` method:
|
|
294
|
-
|
|
295
|
-
```ts
|
|
296
|
-
instance.reset(); // Resets the internal Buffer (0)
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
You can `copy` the data from other `instance` or `buffer`:
|
|
300
|
-
|
|
301
|
-
```ts
|
|
302
|
-
instance.copy(instanceOrBuffer);
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
You can create a `new instance` of the `Structure`, copying the data `from` other `buffer` or `instance`:
|
|
306
|
-
|
|
307
|
-
```ts
|
|
308
|
-
const copiedInstance = PersonStructure.from(instanceOrBuffer);
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
> **Important**
|
|
312
|
-
>
|
|
313
|
-
> Buffers must be the same size when copying.
|
|
314
|
-
>
|
|
315
|
-
> Each instance has its own buffer.
|
|
316
|
-
|
|
317
274
|
### JSON
|
|
318
275
|
|
|
319
276
|
Instances can be converted to plain JavaScript object with all the resolved properties and nested attributes of your structure using `toJson` method:
|
|
@@ -330,11 +287,17 @@ PersonStructure.toJson(Buffer.from("4a616b655a000000", "hex")); // { name: [ 68,
|
|
|
330
287
|
|
|
331
288
|
> **Important**
|
|
332
289
|
>
|
|
333
|
-
>
|
|
290
|
+
> Transformers will also run when serializing JSON.
|
|
291
|
+
|
|
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
|
+
> ```
|
|
334
297
|
|
|
335
298
|
### Endianness
|
|
336
299
|
|
|
337
|
-
`DataType` difference between `LE` and `BE` types:
|
|
300
|
+
Data types defined in the enum `DataType` difference between `LE` and `BE` types:
|
|
338
301
|
|
|
339
302
|
```ts
|
|
340
303
|
structure({
|
|
@@ -352,7 +315,7 @@ This means that some decimal values cannot be represented exactly in binary.
|
|
|
352
315
|
|
|
353
316
|
FLOAT32 is a 32-bit single-precision IEEE-754 float.
|
|
354
317
|
|
|
355
|
-
|
|
318
|
+
Some decimal numbers, like 0.4, cannot be represented exactly using a finite binary fraction, so the closest representable value is stored instead.
|
|
356
319
|
|
|
357
320
|
Example:
|
|
358
321
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { toString, toUint8Array } from "./memory.js";
|
|
2
|
-
export { structure, type Structure, type StructureConstructor, type StructureFields, type StructureMethods, } from "./structure.js";
|
|
3
|
-
export { charDataType, DataType, type
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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";
|
|
1
|
+
export { toString, toUint8Array, sizeof } from "./memory.js";
|
|
2
2
|
export { structure, } from "./structure.js";
|
|
3
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;
|
|
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
|
|
6
|
-
export declare function
|
|
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
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
|
-
|
|
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);
|
package/dist/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/structure.d.ts
CHANGED
|
@@ -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
|
|
4
|
+
export type StructureFields<T extends DomainObject> = {
|
|
3
5
|
[K in keyof Record<keyof T, Type>]: AlignedData;
|
|
4
6
|
};
|
|
5
|
-
|
|
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<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
49
|
+
copy(structure: Structure<T>, offset?: number): void;
|
|
28
50
|
/**
|
|
29
51
|
* Returns the buffer
|
|
30
52
|
*/
|
|
@@ -38,8 +60,16 @@ export interface StructureMethods<T extends DomainObject> {
|
|
|
38
60
|
*/
|
|
39
61
|
toJson(): T;
|
|
40
62
|
}
|
|
41
|
-
export type
|
|
42
|
-
|
|
63
|
+
export type StructureOptions<T extends DomainObject, TR extends Transformers<T> | undefined> = TR extends undefined ? {
|
|
64
|
+
packed?: boolean;
|
|
65
|
+
tranform?: undefined;
|
|
66
|
+
} : {
|
|
43
67
|
packed?: boolean;
|
|
44
|
-
|
|
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 {};
|
|
45
75
|
//# sourceMappingURL=structure.d.ts.map
|
package/dist/structure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,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,IAAI;KACnD,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,WAAW;CAChD,CAAC;AAEF,UAAU,sBAAsB,CAAC,CAAC,SAAS,YAAY;IACrD;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD;;;OAGG;IACH,IAAI,CACF,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,CAAC,CAAC,CAAC,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC3B;AACD,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,YAAY,GAAG,YAAY,CACrC,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAEpC,KAAK,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,YAAY;IACtD;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD;;OAEG;IACH,IAAI,IAAI,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,MAAM,IAAI,CAAC,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,YAAY,EACtB,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,IACpC,EAAE,SAAS,SAAS,GACpB;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAC1C;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,EAAE,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,YAAY,EACtB,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,IACpC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAkTlE,wBAAgB,SAAS,CAAC,CAAC,SAAS,YAAY,EAC9C,IAAI,EAAE,2BAA2B,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,GACpC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvC,wBAAgB,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAC1E,IAAI,EAAE,2BAA2B,CAAC,CAAC,CAAC,EACpC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,GAC7B,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC"}
|
package/dist/structure.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { alloc, read, write } from "./memory.js";
|
|
2
|
-
import {
|
|
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);
|
|
@@ -28,48 +28,51 @@ 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
|
-
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
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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,
|
|
61
|
+
writeStructure(field, buffer, val, offset + data.offset);
|
|
60
62
|
}
|
|
61
63
|
else if (Array.isArray(field.type)) {
|
|
62
|
-
writeArray(field,
|
|
64
|
+
writeArray(field, val, buffer, offset + data.offset);
|
|
63
65
|
}
|
|
64
66
|
else
|
|
65
|
-
write(field, buffer,
|
|
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,
|
|
164
|
+
writeArray(field, val, buffer, offset);
|
|
162
165
|
}
|
|
163
166
|
else {
|
|
164
|
-
if (
|
|
165
|
-
write(field, buffer,
|
|
167
|
+
if (val)
|
|
168
|
+
write(field, buffer, val, offset);
|
|
166
169
|
}
|
|
167
170
|
}
|
|
168
|
-
|
|
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__;
|
package/dist/structure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure.js","sourceRoot":"","sources":["../src/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
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
|
|
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 ?
|
|
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;
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAA;IACL,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,QAAQ,IAAA;IACR,OAAO,KAAA;IACP,OAAO,KAAA;IACP,QAAQ,KAAA;IACR,QAAQ,KAAA;IACR,SAAS,KAAA;IACT,SAAS,KAAA;IACT,SAAS,KAAA;IACT,SAAS,KAAA;CACV;AACD,MAAM,MAAM,cAAc,GACtB,QAAQ,CAAC,OAAO,GAChB,QAAQ,CAAC,OAAO,GAChB,QAAQ,CAAC,QAAQ,GACjB,QAAQ,CAAC,QAAQ,CAAC;AACtB,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;IAClE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,MAAM,GACpD,oBAAoB,GACpB,CAAC,SAAS,YAAY,GACpB,sBAAsB,CAAC,CAAC,CAAC,GACzB,KAAK,CAAC;AACZ,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,sBAAsB,CAAC,YAAY,CAAC,CAAC;AAEzC,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAClD,QAAQ,GACR,aAAa,GACb,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,MAAM,
|
|
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;
|
|
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
package/dist/size.d.ts
DELETED
package/dist/size.d.ts.map
DELETED
|
@@ -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"}
|