@yume-chan/struct 0.0.22 → 0.0.24
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/CHANGELOG.json +18 -0
- package/CHANGELOG.md +13 -1
- package/LICENSE +1 -1
- package/esm/basic/field-value.d.ts +2 -2
- package/esm/basic/field-value.d.ts.map +1 -1
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/struct-value.d.ts +6 -2
- package/esm/basic/struct-value.d.ts.map +1 -1
- package/esm/basic/struct-value.js +5 -0
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/struct.d.ts +27 -14
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +31 -18
- package/esm/struct.js.map +1 -1
- package/esm/sync-promise.d.ts +2 -2
- package/esm/sync-promise.d.ts.map +1 -1
- package/esm/sync-promise.js.map +1 -1
- package/esm/types/bigint.d.ts +13 -14
- package/esm/types/bigint.d.ts.map +1 -1
- package/esm/types/bigint.js +16 -17
- package/esm/types/bigint.js.map +1 -1
- package/esm/types/buffer/base.d.ts +31 -27
- package/esm/types/buffer/base.d.ts.map +1 -1
- package/esm/types/buffer/base.js +25 -26
- package/esm/types/buffer/base.js.map +1 -1
- package/esm/types/buffer/fixed-length.d.ts +2 -2
- package/esm/types/buffer/fixed-length.d.ts.map +1 -1
- package/esm/types/buffer/fixed-length.js.map +1 -1
- package/esm/types/buffer/variable-length.d.ts +10 -9
- package/esm/types/buffer/variable-length.d.ts.map +1 -1
- package/esm/types/buffer/variable-length.js +30 -19
- package/esm/types/buffer/variable-length.js.map +1 -1
- package/esm/types/number.d.ts +13 -13
- package/esm/types/number.d.ts.map +1 -1
- package/esm/types/number.js +22 -34
- package/esm/types/number.js.map +1 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +6 -4
- package/esm/utils.js.map +1 -1
- package/package.json +9 -11
- package/src/basic/field-value.ts +7 -7
- package/src/basic/struct-value.ts +21 -3
- package/src/struct.ts +106 -65
- package/src/sync-promise.ts +9 -9
- package/src/types/bigint.ts +40 -37
- package/src/types/buffer/base.ts +48 -47
- package/src/types/buffer/fixed-length.ts +9 -4
- package/src/types/buffer/variable-length.ts +55 -31
- package/src/types/number.ts +32 -39
- package/src/utils.ts +6 -4
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/struct",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.0.24",
|
|
6
|
+
"tag": "@yume-chan/struct_v0.0.24",
|
|
7
|
+
"date": "Tue, 18 Jun 2024 02:49:43 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"none": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Rename some internal types to make them more distinguishable"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"version": "0.0.23",
|
|
18
|
+
"tag": "@yume-chan/struct_v0.0.23",
|
|
19
|
+
"date": "Thu, 21 Mar 2024 03:15:10 GMT",
|
|
20
|
+
"comments": {}
|
|
21
|
+
},
|
|
4
22
|
{
|
|
5
23
|
"version": "0.0.22",
|
|
6
24
|
"tag": "@yume-chan/struct_v0.0.22",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# Change Log - @yume-chan/struct
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Tue, 18 Jun 2024 02:49:43 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.0.24
|
|
6
|
+
Tue, 18 Jun 2024 02:49:43 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Rename some internal types to make them more distinguishable
|
|
11
|
+
|
|
12
|
+
## 0.0.23
|
|
13
|
+
Thu, 21 Mar 2024 03:15:10 GMT
|
|
14
|
+
|
|
15
|
+
_Version update only_
|
|
4
16
|
|
|
5
17
|
## 0.0.22
|
|
6
18
|
Wed, 13 Dec 2023 05:57:27 GMT
|
package/LICENSE
CHANGED
|
@@ -7,7 +7,7 @@ import type { StructValue } from "./struct-value.js";
|
|
|
7
7
|
* It may contains extra metadata about the value which are essential or
|
|
8
8
|
* helpful for the serialization process.
|
|
9
9
|
*/
|
|
10
|
-
export declare abstract class StructFieldValue<TDefinition extends StructFieldDefinition<
|
|
10
|
+
export declare abstract class StructFieldValue<TDefinition extends StructFieldDefinition<unknown, unknown, PropertyKey>> {
|
|
11
11
|
/** Gets the definition associated with this runtime value */
|
|
12
12
|
readonly definition: TDefinition;
|
|
13
13
|
/** Gets the options of the associated `Struct` */
|
|
@@ -34,6 +34,6 @@ export declare abstract class StructFieldValue<TDefinition extends StructFieldDe
|
|
|
34
34
|
/**
|
|
35
35
|
* When implemented in derived classes, serializes this field into `dataView` at `offset`
|
|
36
36
|
*/
|
|
37
|
-
abstract serialize(dataView: DataView, offset: number): void;
|
|
37
|
+
abstract serialize(dataView: DataView, array: Uint8Array, offset: number): void;
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=field-value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,
|
|
1
|
+
{"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;IAExE,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE1C,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,IAAI,kBAAkB,IAAI,OAAO,CAKhC;IAED,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAGnC,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC;IAQhC;;;;OAIG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;IAI5B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIvC;;OAEG;IACH,QAAQ,CAAC,SAAS,CACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,GACf,IAAI;CACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-value.js","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"field-value.js","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAGlC,6DAA6D;IACpD,UAAU,CAAc;IAEjC,kDAAkD;IACzC,OAAO,CAA0B;IAE1C,4CAA4C;IACnC,MAAM,CAAc;IAE7B,IAAI,kBAAkB;QAClB,OAAO,CACH,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG;YAC3C,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAC9C,CAAC;IACN,CAAC;IAES,KAAK,CAAwB;IAEvC,YACI,UAAuB,EACvB,OAAgC,EAChC,MAAmB,EACnB,KAA4B;QAE5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,GAAG;QACC,OAAO,IAAI,CAAC,KAAc,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAA4B;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CAUJ"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import type { StructFieldDefinition } from "./definition.js";
|
|
1
2
|
import type { StructFieldValue } from "./field-value.js";
|
|
2
3
|
export declare const STRUCT_VALUE_SYMBOL: unique symbol;
|
|
4
|
+
export declare function isStructValueInit(value: unknown): value is {
|
|
5
|
+
[STRUCT_VALUE_SYMBOL]: StructValue;
|
|
6
|
+
};
|
|
3
7
|
/**
|
|
4
8
|
* A struct value is a map between keys in a struct and their field values.
|
|
5
9
|
*/
|
|
@@ -15,12 +19,12 @@ export declare class StructValue {
|
|
|
15
19
|
* @param name The field name
|
|
16
20
|
* @param fieldValue The associated `StructFieldValue`
|
|
17
21
|
*/
|
|
18
|
-
set(name: PropertyKey, fieldValue: StructFieldValue): void;
|
|
22
|
+
set(name: PropertyKey, fieldValue: StructFieldValue<StructFieldDefinition<unknown, unknown, PropertyKey>>): void;
|
|
19
23
|
/**
|
|
20
24
|
* Gets the `StructFieldValue` for `key`
|
|
21
25
|
*
|
|
22
26
|
* @param name The field name
|
|
23
27
|
*/
|
|
24
|
-
get(name: PropertyKey): StructFieldValue
|
|
28
|
+
get(name: PropertyKey): StructFieldValue<StructFieldDefinition<unknown, unknown, PropertyKey>>;
|
|
25
29
|
}
|
|
26
30
|
//# sourceMappingURL=struct-value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAE1D;;GAEG;AACH,qBAAa,WAAW;IAMpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEjC,SAAS,EAAE,MAAM;IAa7B;;;;;OAKG;IACH,GAAG,
|
|
1
|
+
{"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAE1D,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,OAAO,GACf,KAAK,IAAI;IAAE,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAA;CAAE,CAMjD;AAED;;GAEG;AACH,qBAAa,WAAW;IAMpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEjC,SAAS,EAAE,MAAM;IAa7B;;;;;OAKG;IACH,GAAG,CACC,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,gBAAgB,CACxB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CACvD,GACF,IAAI;IAqBP;;;;OAIG;IACH,GAAG,CACC,IAAI,EAAE,WAAW,GAClB,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;CAG5E"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export const STRUCT_VALUE_SYMBOL = Symbol("struct-value");
|
|
2
|
+
export function isStructValueInit(value) {
|
|
3
|
+
return (typeof value === "object" &&
|
|
4
|
+
value !== null &&
|
|
5
|
+
STRUCT_VALUE_SYMBOL in value);
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* A struct value is a map between keys in a struct and their field values.
|
|
4
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAC7B,KAAc;IAEd,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,mBAAmB,IAAI,KAAK,CAC/B,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,GAGjC,EAAE,CAAC;IAEP;;OAEG;IACM,KAAK,CAA+B;IAE7C,YAAY,SAAiB;QACzB,6CAA6C;QAC7C,oDAAoD;QACpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAiC,CAAC;QAEtE,wCAAwC;QACxC,sCAAsC;QACtC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,mBAAmB,EAAE;YACnD,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,GAAG,CACC,IAAiB,EACjB,UAEC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAEpC,wCAAwC;QACxC,oCAAoC;QACpC,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;gBACpC,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,GAAG;oBACC,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC;gBAC5B,CAAC;gBACD,GAAG,CAAC,CAAC;oBACD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QACxC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,GAAG,CACC,IAAiB;QAEjB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;IACnC,CAAC;CACJ"}
|
package/esm/struct.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AsyncExactReadable, ExactReadable, StructFieldDefinition, StructOptions } from "./basic/index.js";
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
2
|
+
import type { BufferFieldConverter, FixedLengthBufferLikeFieldOptions, LengthField, VariableLengthBufferLikeFieldOptions } from "./types/index.js";
|
|
3
|
+
import { BigIntFieldVariant, FixedLengthBufferLikeFieldDefinition, StringBufferFieldConverter, Uint8ArrayBufferFieldConverter, VariableLengthBufferLikeFieldDefinition } from "./types/index.js";
|
|
4
4
|
import type { Evaluate, Identity, Overwrite } from "./utils.js";
|
|
5
5
|
export interface StructLike<TValue> {
|
|
6
6
|
deserialize(stream: ExactReadable | AsyncExactReadable): Promise<TValue>;
|
|
@@ -12,13 +12,13 @@ export type StructValueType<T extends StructLike<unknown>> = Awaited<ReturnType<
|
|
|
12
12
|
/**
|
|
13
13
|
* Create a new `Struct` type with `TDefinition` appended
|
|
14
14
|
*/
|
|
15
|
-
type AddFieldDescriptor<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends StructFieldDefinition<
|
|
15
|
+
type AddFieldDescriptor<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends StructFieldDefinition<unknown, unknown, PropertyKey>> = Identity<Struct<Evaluate<TFields & Record<TFieldName, TDefinition["TValue"]>>, TOmitInitKey | TDefinition["TOmitInitKey"], TExtra, TPostDeserialized>>;
|
|
16
16
|
/**
|
|
17
17
|
* Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
|
|
18
18
|
*/
|
|
19
|
-
interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends
|
|
19
|
+
interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldConverter<unknown, unknown>> {
|
|
20
20
|
<TName extends PropertyKey, TTypeScriptType = TType["TTypeScriptType"]>(name: TName, options: FixedLengthBufferLikeFieldOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions, TTypeScriptType>>;
|
|
21
|
-
<TName extends PropertyKey,
|
|
21
|
+
<TName extends PropertyKey, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, LengthField<TFields>>, TTypeScriptType = TType["TTypeScriptType"]>(name: TName, options: TOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthBufferLikeFieldDefinition<TType, TOptions, TTypeScriptType>>;
|
|
22
22
|
}
|
|
23
23
|
export type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
|
|
24
24
|
export type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
|
|
@@ -31,6 +31,12 @@ export declare class StructNotEnoughDataError extends StructDeserializeError {
|
|
|
31
31
|
export declare class StructEmptyError extends StructDeserializeError {
|
|
32
32
|
constructor();
|
|
33
33
|
}
|
|
34
|
+
interface StructDefinition<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object> {
|
|
35
|
+
readonly TFields: TFields;
|
|
36
|
+
readonly TOmitInitKey: TOmitInitKey;
|
|
37
|
+
readonly TExtra: TExtra;
|
|
38
|
+
readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
|
|
39
|
+
}
|
|
34
40
|
export declare class Struct<TFields extends object = Record<never, never>, TOmitInitKey extends PropertyKey = never, TExtra extends object = Record<never, never>, TPostDeserialized = undefined> implements StructLike<StructDeserializedResult<TFields, TExtra, TPostDeserialized>> {
|
|
35
41
|
#private;
|
|
36
42
|
readonly TFields: TFields;
|
|
@@ -45,17 +51,19 @@ export declare class Struct<TFields extends object = Record<never, never>, TOmit
|
|
|
45
51
|
get size(): number;
|
|
46
52
|
get fields(): readonly [
|
|
47
53
|
name: PropertyKey,
|
|
48
|
-
definition: StructFieldDefinition<
|
|
54
|
+
definition: StructFieldDefinition<unknown, unknown, PropertyKey>
|
|
49
55
|
][];
|
|
50
56
|
constructor(options?: Partial<Readonly<StructOptions>>);
|
|
51
57
|
/**
|
|
52
58
|
* Appends a `StructFieldDefinition` to the `Struct
|
|
53
59
|
*/
|
|
54
|
-
field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<
|
|
60
|
+
field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<unknown, unknown, PropertyKey>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
|
|
55
61
|
/**
|
|
56
62
|
* Merges (flats) another `Struct`'s fields and extra fields into this one.
|
|
63
|
+
*
|
|
64
|
+
* `other`'s `postDeserialize` will be ignored.
|
|
57
65
|
*/
|
|
58
|
-
concat<TOther extends
|
|
66
|
+
concat<TOther extends StructDefinition<object, PropertyKey, object>>(other: TOther): Struct<TFields & TOther["TFields"], TOmitInitKey | TOther["TOmitInitKey"], TExtra & TOther["TExtra"], TPostDeserialized>;
|
|
59
67
|
/**
|
|
60
68
|
* Appends an `int8` field to the `Struct`
|
|
61
69
|
*/
|
|
@@ -85,15 +93,15 @@ export declare class Struct<TFields extends object = Record<never, never>, TOmit
|
|
|
85
93
|
*
|
|
86
94
|
* Requires native `BigInt` support
|
|
87
95
|
*/
|
|
88
|
-
int64<TName extends PropertyKey, TTypeScriptType =
|
|
96
|
+
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldVariant["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
89
97
|
/**
|
|
90
98
|
* Appends an `uint64` field to the `Struct`
|
|
91
99
|
*
|
|
92
100
|
* Requires native `BigInt` support
|
|
93
101
|
*/
|
|
94
|
-
uint64<TName extends PropertyKey, TTypeScriptType =
|
|
95
|
-
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized,
|
|
96
|
-
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized,
|
|
102
|
+
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldVariant["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
103
|
+
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldConverter>;
|
|
104
|
+
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldConverter>;
|
|
97
105
|
/**
|
|
98
106
|
* Adds some extra properties into every `Struct` value.
|
|
99
107
|
*
|
|
@@ -131,8 +139,13 @@ export declare class Struct<TFields extends object = Record<never, never>, TOmit
|
|
|
131
139
|
*/
|
|
132
140
|
deserialize(stream: ExactReadable): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
133
141
|
deserialize(stream: AsyncExactReadable): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
|
|
134
|
-
|
|
135
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Serialize a struct value to a buffer.
|
|
144
|
+
* @param init Fields of the struct
|
|
145
|
+
* @param output The buffer to serialize the struct to. It must be large enough to hold the entire struct. If not provided, a new buffer will be created.
|
|
146
|
+
* @returns A view of `output` that contains the serialized struct, or a new buffer if `output` is not provided.
|
|
147
|
+
*/
|
|
148
|
+
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output?: Uint8Array): Uint8Array;
|
|
136
149
|
}
|
|
137
150
|
export {};
|
|
138
151
|
//# sourceMappingURL=struct.d.ts.map
|
package/esm/struct.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|
package/esm/struct.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { ExactReadableEndedError, STRUCT_VALUE_SYMBOL, StructDefaultOptions, StructValue, isStructValueInit, } from "./basic/index.js";
|
|
2
3
|
import { SyncPromise } from "./sync-promise.js";
|
|
3
|
-
import { BigIntFieldDefinition,
|
|
4
|
+
import { BigIntFieldDefinition, BigIntFieldVariant, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldVariant, StringBufferFieldConverter, Uint8ArrayBufferFieldConverter, VariableLengthBufferLikeFieldDefinition, } from "./types/index.js";
|
|
4
5
|
export class StructDeserializeError extends Error {
|
|
5
6
|
constructor(message) {
|
|
6
7
|
super(message);
|
|
@@ -59,8 +60,13 @@ export class Struct {
|
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
61
62
|
* Merges (flats) another `Struct`'s fields and extra fields into this one.
|
|
63
|
+
*
|
|
64
|
+
* `other`'s `postDeserialize` will be ignored.
|
|
62
65
|
*/
|
|
63
66
|
concat(other) {
|
|
67
|
+
if (!(other instanceof Struct)) {
|
|
68
|
+
throw new TypeError("The other value must be a `Struct` instance");
|
|
69
|
+
}
|
|
64
70
|
for (const field of other.#fields) {
|
|
65
71
|
this.#fields.push(field);
|
|
66
72
|
}
|
|
@@ -75,37 +81,37 @@ export class Struct {
|
|
|
75
81
|
* Appends an `int8` field to the `Struct`
|
|
76
82
|
*/
|
|
77
83
|
int8(name, typeScriptType) {
|
|
78
|
-
return this.#number(name,
|
|
84
|
+
return this.#number(name, NumberFieldVariant.Int8, typeScriptType);
|
|
79
85
|
}
|
|
80
86
|
/**
|
|
81
87
|
* Appends an `uint8` field to the `Struct`
|
|
82
88
|
*/
|
|
83
89
|
uint8(name, typeScriptType) {
|
|
84
|
-
return this.#number(name,
|
|
90
|
+
return this.#number(name, NumberFieldVariant.Uint8, typeScriptType);
|
|
85
91
|
}
|
|
86
92
|
/**
|
|
87
93
|
* Appends an `int16` field to the `Struct`
|
|
88
94
|
*/
|
|
89
95
|
int16(name, typeScriptType) {
|
|
90
|
-
return this.#number(name,
|
|
96
|
+
return this.#number(name, NumberFieldVariant.Int16, typeScriptType);
|
|
91
97
|
}
|
|
92
98
|
/**
|
|
93
99
|
* Appends an `uint16` field to the `Struct`
|
|
94
100
|
*/
|
|
95
101
|
uint16(name, typeScriptType) {
|
|
96
|
-
return this.#number(name,
|
|
102
|
+
return this.#number(name, NumberFieldVariant.Uint16, typeScriptType);
|
|
97
103
|
}
|
|
98
104
|
/**
|
|
99
105
|
* Appends an `int32` field to the `Struct`
|
|
100
106
|
*/
|
|
101
107
|
int32(name, typeScriptType) {
|
|
102
|
-
return this.#number(name,
|
|
108
|
+
return this.#number(name, NumberFieldVariant.Int32, typeScriptType);
|
|
103
109
|
}
|
|
104
110
|
/**
|
|
105
111
|
* Appends an `uint32` field to the `Struct`
|
|
106
112
|
*/
|
|
107
113
|
uint32(name, typeScriptType) {
|
|
108
|
-
return this.#number(name,
|
|
114
|
+
return this.#number(name, NumberFieldVariant.Uint32, typeScriptType);
|
|
109
115
|
}
|
|
110
116
|
#bigint(name, type, typeScriptType) {
|
|
111
117
|
return this.field(name, new BigIntFieldDefinition(type, typeScriptType));
|
|
@@ -116,7 +122,7 @@ export class Struct {
|
|
|
116
122
|
* Requires native `BigInt` support
|
|
117
123
|
*/
|
|
118
124
|
int64(name, typeScriptType) {
|
|
119
|
-
return this.#bigint(name,
|
|
125
|
+
return this.#bigint(name, BigIntFieldVariant.Int64, typeScriptType);
|
|
120
126
|
}
|
|
121
127
|
/**
|
|
122
128
|
* Appends an `uint64` field to the `Struct`
|
|
@@ -124,7 +130,7 @@ export class Struct {
|
|
|
124
130
|
* Requires native `BigInt` support
|
|
125
131
|
*/
|
|
126
132
|
uint64(name, typeScriptType) {
|
|
127
|
-
return this.#bigint(name,
|
|
133
|
+
return this.#bigint(name, BigIntFieldVariant.Uint64, typeScriptType);
|
|
128
134
|
}
|
|
129
135
|
#arrayBufferLike = (name, type, options) => {
|
|
130
136
|
if ("length" in options) {
|
|
@@ -135,10 +141,10 @@ export class Struct {
|
|
|
135
141
|
}
|
|
136
142
|
};
|
|
137
143
|
uint8Array = (name, options, typeScriptType) => {
|
|
138
|
-
return this.#arrayBufferLike(name,
|
|
144
|
+
return this.#arrayBufferLike(name, Uint8ArrayBufferFieldConverter.Instance, options, typeScriptType);
|
|
139
145
|
};
|
|
140
146
|
string = (name, options, typeScriptType) => {
|
|
141
|
-
return this.#arrayBufferLike(name,
|
|
147
|
+
return this.#arrayBufferLike(name, StringBufferFieldConverter.Instance, options, typeScriptType);
|
|
142
148
|
};
|
|
143
149
|
/**
|
|
144
150
|
* Adds some extra properties into every `Struct` value.
|
|
@@ -195,9 +201,15 @@ export class Struct {
|
|
|
195
201
|
})
|
|
196
202
|
.valueOrPromise();
|
|
197
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Serialize a struct value to a buffer.
|
|
206
|
+
* @param init Fields of the struct
|
|
207
|
+
* @param output The buffer to serialize the struct to. It must be large enough to hold the entire struct. If not provided, a new buffer will be created.
|
|
208
|
+
* @returns A view of `output` that contains the serialized struct, or a new buffer if `output` is not provided.
|
|
209
|
+
*/
|
|
198
210
|
serialize(init, output) {
|
|
199
211
|
let structValue;
|
|
200
|
-
if (
|
|
212
|
+
if (isStructValueInit(init)) {
|
|
201
213
|
structValue = init[STRUCT_VALUE_SYMBOL];
|
|
202
214
|
for (const [key, value] of Object.entries(init)) {
|
|
203
215
|
const fieldValue = structValue.get(key);
|
|
@@ -221,19 +233,20 @@ export class Struct {
|
|
|
221
233
|
fieldsInfo.push({ fieldValue, size });
|
|
222
234
|
structSize += size;
|
|
223
235
|
}
|
|
224
|
-
let outputType = "number";
|
|
225
236
|
if (!output) {
|
|
226
237
|
output = new Uint8Array(structSize);
|
|
227
|
-
|
|
238
|
+
}
|
|
239
|
+
else if (output.length < structSize) {
|
|
240
|
+
throw new TypeError("Output buffer is too small");
|
|
228
241
|
}
|
|
229
242
|
const dataView = new DataView(output.buffer, output.byteOffset, output.byteLength);
|
|
230
243
|
let offset = 0;
|
|
231
244
|
for (const { fieldValue, size } of fieldsInfo) {
|
|
232
|
-
fieldValue.serialize(dataView, offset);
|
|
245
|
+
fieldValue.serialize(dataView, output, offset);
|
|
233
246
|
offset += size;
|
|
234
247
|
}
|
|
235
|
-
if (
|
|
236
|
-
return structSize;
|
|
248
|
+
if (output.length !== structSize) {
|
|
249
|
+
return output.subarray(0, structSize);
|
|
237
250
|
}
|
|
238
251
|
else {
|
|
239
252
|
return output;
|
package/esm/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|
package/esm/sync-promise.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export interface SyncPromise<T> {
|
|
2
|
-
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason:
|
|
2
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined): SyncPromise<TResult1 | TResult2>;
|
|
3
3
|
valueOrPromise(): T | PromiseLike<T>;
|
|
4
4
|
}
|
|
5
5
|
interface SyncPromiseStatic {
|
|
6
|
-
reject<T = never>(reason?:
|
|
6
|
+
reject<T = never>(reason?: unknown): SyncPromise<T>;
|
|
7
7
|
resolve(): SyncPromise<void>;
|
|
8
8
|
resolve<T>(value: T | PromiseLike<T>): SyncPromise<T>;
|
|
9
9
|
try<T>(executor: () => T | PromiseLike<T>): SyncPromise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-promise.d.ts","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC/B,WAAW,CAAC,EACN,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAChD,IAAI,GACJ,SAAS,EACf,UAAU,CAAC,EACL,CAAC,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sync-promise.d.ts","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC/B,WAAW,CAAC,EACN,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAChD,IAAI,GACJ,SAAS,EACf,UAAU,CAAC,EACL,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACvD,IAAI,GACJ,SAAS,GAChB,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEpC,cAAc,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CACxC;AAED,UAAU,iBAAiB;IACvB,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEpD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEtD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,WAAW,EAAE,iBA8BzB,CAAC"}
|
package/esm/sync-promise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-promise.js","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC1C,MAAM,CAAY,
|
|
1
|
+
{"version":3,"file":"sync-promise.js","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC1C,MAAM,CAAY,MAAgB;QAC9B,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAI,KAA0B;QACjC,IACI,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,EACtD,CAAC;YACC,IACI,KAAK,YAAY,kBAAkB;gBACnC,KAAK,YAAY,mBAAmB;gBACpC,KAAK,YAAY,mBAAmB,EACtC,CAAC;gBACC,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,OAAO,IAAI,kBAAkB,CAAC,KAAuB,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,mBAAmB,CAAC,KAAU,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IACD,GAAG,CAAI,QAAkC;QACrC,IAAI,CAAC;YACD,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ,CAAC;AAEF,MAAM,kBAAkB;IACpB,QAAQ,CAAiB;IAEzB,YAAY,OAAuB;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAI,CACA,WAGe,EACf,UAGe;QAEf,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAC9C,CAAC;IACN,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,mBAAmB;IACrB,MAAM,CAAI;IAEV,YAAY,KAAQ;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,CACA,WAGe;QAEf,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAa,CAAC;QACzB,CAAC;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAED,MAAM,mBAAmB;IACrB,OAAO,CAAU;IAEjB,YAAY,MAAe;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,CACA,WAGe,EACf,UAGe;QAEf,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,IAAa,CAAC;QACzB,CAAC;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACV,MAAM,IAAI,CAAC,OAAO,CAAC;IACvB,CAAC;CACJ"}
|
package/esm/types/bigint.d.ts
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import type { AsyncExactReadable, ExactReadable, StructOptions, StructValue } from "../basic/index.js";
|
|
2
2
|
import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
|
|
3
|
-
type
|
|
4
|
-
type
|
|
5
|
-
export declare class
|
|
3
|
+
export type BigIntDeserializer = (array: Uint8Array, byteOffset: number, littleEndian: boolean) => bigint;
|
|
4
|
+
export type BigIntSerializer = (array: Uint8Array, byteOffset: number, value: bigint, littleEndian: boolean) => void;
|
|
5
|
+
export declare class BigIntFieldVariant {
|
|
6
6
|
readonly TTypeScriptType: bigint;
|
|
7
7
|
readonly size: number;
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
constructor(size: number,
|
|
11
|
-
static readonly Int64:
|
|
12
|
-
static readonly Uint64:
|
|
8
|
+
readonly deserialize: BigIntDeserializer;
|
|
9
|
+
readonly serialize: BigIntSerializer;
|
|
10
|
+
constructor(size: number, deserialize: BigIntDeserializer, serialize: BigIntSerializer);
|
|
11
|
+
static readonly Int64: BigIntFieldVariant;
|
|
12
|
+
static readonly Uint64: BigIntFieldVariant;
|
|
13
13
|
}
|
|
14
|
-
export declare class BigIntFieldDefinition<
|
|
15
|
-
readonly
|
|
16
|
-
constructor(
|
|
14
|
+
export declare class BigIntFieldDefinition<TVariant extends BigIntFieldVariant = BigIntFieldVariant, TTypeScriptType = TVariant["TTypeScriptType"]> extends StructFieldDefinition<void, TTypeScriptType> {
|
|
15
|
+
readonly variant: TVariant;
|
|
16
|
+
constructor(variant: TVariant, typescriptType?: TTypeScriptType);
|
|
17
17
|
getSize(): number;
|
|
18
18
|
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): BigIntFieldValue<this>;
|
|
19
19
|
deserialize(options: Readonly<StructOptions>, stream: ExactReadable, struct: StructValue): BigIntFieldValue<this>;
|
|
20
20
|
deserialize(options: Readonly<StructOptions>, stream: AsyncExactReadable, struct: StructValue): Promise<BigIntFieldValue<this>>;
|
|
21
21
|
}
|
|
22
|
-
export declare class BigIntFieldValue<TDefinition extends BigIntFieldDefinition<
|
|
23
|
-
serialize(dataView: DataView, offset: number): void;
|
|
22
|
+
export declare class BigIntFieldValue<TDefinition extends BigIntFieldDefinition<BigIntFieldVariant, unknown>> extends StructFieldValue<TDefinition> {
|
|
23
|
+
serialize(dataView: DataView, array: Uint8Array, offset: number): void;
|
|
24
24
|
}
|
|
25
|
-
export {};
|
|
26
25
|
//# sourceMappingURL=bigint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,
|
|
1
|
+
{"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,MAAM,MAAM,kBAAkB,GAAG,CAC7B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KACpB,MAAM,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAC3B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,OAAO,KACpB,IAAI,CAAC;AAEV,qBAAa,kBAAkB;IAC3B,QAAQ,CAAC,eAAe,EAAG,MAAM,CAAC;IAElC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAEzC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBAGjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,gBAAgB;IAO/B,MAAM,CAAC,QAAQ,CAAC,KAAK,qBAAiD;IAEtE,MAAM,CAAC,QAAQ,CAAC,MAAM,qBAAmD;CAC5E;AAED,qBAAa,qBAAqB,CAC9B,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,EACxD,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAC/C,SAAQ,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,eAAe;IAM/D,OAAO,IAAI,MAAM;IAIjB,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIhB,WAAW,CAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IAChB,WAAW,CAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAmBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CACxE,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAC1B,SAAS,CACd,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,GACf,IAAI;CAQV"}
|
package/esm/types/bigint.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getInt64, getUint64, setInt64, setUint64, } from "@yume-chan/no-data-view";
|
|
2
2
|
import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
|
|
3
3
|
import { SyncPromise } from "../sync-promise.js";
|
|
4
|
-
export class
|
|
4
|
+
export class BigIntFieldVariant {
|
|
5
5
|
TTypeScriptType;
|
|
6
6
|
size;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
constructor(size,
|
|
7
|
+
deserialize;
|
|
8
|
+
serialize;
|
|
9
|
+
constructor(size, deserialize, serialize) {
|
|
10
10
|
this.size = size;
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
11
|
+
this.deserialize = deserialize;
|
|
12
|
+
this.serialize = serialize;
|
|
13
13
|
}
|
|
14
|
-
static Int64 = new
|
|
15
|
-
static Uint64 = new
|
|
14
|
+
static Int64 = new BigIntFieldVariant(8, getInt64, setInt64);
|
|
15
|
+
static Uint64 = new BigIntFieldVariant(8, getUint64, setUint64);
|
|
16
16
|
}
|
|
17
17
|
export class BigIntFieldDefinition extends StructFieldDefinition {
|
|
18
|
-
|
|
19
|
-
constructor(
|
|
18
|
+
variant;
|
|
19
|
+
constructor(variant, typescriptType) {
|
|
20
20
|
void typescriptType;
|
|
21
21
|
super();
|
|
22
|
-
this.
|
|
22
|
+
this.variant = variant;
|
|
23
23
|
}
|
|
24
24
|
getSize() {
|
|
25
|
-
return this.
|
|
25
|
+
return this.variant.size;
|
|
26
26
|
}
|
|
27
27
|
create(options, struct, value) {
|
|
28
28
|
return new BigIntFieldValue(this, options, struct, value);
|
|
@@ -32,16 +32,15 @@ export class BigIntFieldDefinition extends StructFieldDefinition {
|
|
|
32
32
|
return stream.readExactly(this.getSize());
|
|
33
33
|
})
|
|
34
34
|
.then((array) => {
|
|
35
|
-
const
|
|
36
|
-
const value = this.type.getter(view, 0, options.littleEndian);
|
|
35
|
+
const value = this.variant.deserialize(array, 0, options.littleEndian);
|
|
37
36
|
return this.create(options, struct, value);
|
|
38
37
|
})
|
|
39
38
|
.valueOrPromise();
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
export class BigIntFieldValue extends StructFieldValue {
|
|
43
|
-
serialize(dataView, offset) {
|
|
44
|
-
this.definition.
|
|
42
|
+
serialize(dataView, array, offset) {
|
|
43
|
+
this.definition.variant.serialize(array, offset, this.value, this.options.littleEndian);
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
//# sourceMappingURL=bigint.js.map
|