@yume-chan/struct 0.0.17 → 0.0.19
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/definition.d.ts +43 -43
- package/esm/basic/definition.d.ts.map +1 -1
- package/esm/basic/definition.js +23 -23
- package/esm/basic/definition.js.map +1 -1
- package/esm/basic/field-value.d.ts +38 -38
- package/esm/basic/field-value.d.ts.map +1 -1
- package/esm/basic/field-value.js +45 -45
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/index.d.ts +5 -5
- package/esm/basic/index.js +5 -5
- package/esm/basic/options.d.ts +9 -9
- package/esm/basic/options.js +3 -3
- package/esm/basic/stream.d.ts +19 -19
- package/esm/basic/stream.js +1 -1
- package/esm/basic/struct-value.d.ts +25 -25
- package/esm/basic/struct-value.d.ts.map +1 -1
- package/esm/basic/struct-value.js +56 -49
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/index.d.ts +13 -13
- package/esm/index.js +5 -5
- package/esm/struct.d.ts +130 -129
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +210 -208
- package/esm/struct.js.map +1 -1
- package/esm/sync-promise.d.ts +12 -12
- package/esm/sync-promise.d.ts.map +1 -1
- package/esm/sync-promise.js +70 -70
- package/esm/sync-promise.js.map +1 -1
- package/esm/types/bigint.d.ts +25 -24
- package/esm/types/bigint.d.ts.map +1 -1
- package/esm/types/bigint.js +47 -46
- package/esm/types/bigint.js.map +1 -1
- package/esm/types/buffer/base.d.ts +64 -63
- package/esm/types/buffer/base.d.ts.map +1 -1
- package/esm/types/buffer/base.js +102 -101
- package/esm/types/buffer/base.js.map +1 -1
- package/esm/types/buffer/fixed-length.d.ts +8 -7
- package/esm/types/buffer/fixed-length.d.ts.map +1 -1
- package/esm/types/buffer/fixed-length.js +6 -7
- package/esm/types/buffer/fixed-length.js.map +1 -1
- package/esm/types/buffer/index.d.ts +3 -3
- package/esm/types/buffer/index.js +3 -3
- package/esm/types/buffer/variable-length.d.ts +44 -42
- package/esm/types/buffer/variable-length.d.ts.map +1 -1
- package/esm/types/buffer/variable-length.js +75 -75
- package/esm/types/buffer/variable-length.js.map +1 -1
- package/esm/types/index.d.ts +3 -3
- package/esm/types/index.js +3 -3
- package/esm/types/number.d.ts +27 -32
- package/esm/types/number.d.ts.map +1 -1
- package/esm/types/number.js +113 -64
- package/esm/types/number.js.map +1 -1
- package/esm/utils.d.ts +47 -47
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +15 -22
- package/esm/utils.js.map +1 -1
- package/package.json +13 -9
- package/src/basic/definition.ts +10 -7
- package/src/basic/field-value.ts +15 -12
- package/src/basic/index.ts +5 -5
- package/src/basic/struct-value.ts +16 -10
- package/src/index.ts +5 -5
- package/src/struct.ts +205 -200
- package/src/sync-promise.ts +32 -12
- package/src/types/bigint.ts +56 -30
- package/src/types/buffer/base.ts +54 -36
- package/src/types/buffer/fixed-length.ts +5 -9
- package/src/types/buffer/variable-length.ts +38 -24
- package/src/types/number.ts +128 -77
- package/src/utils.ts +30 -8
- package/tsconfig.build.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,50 +1,57 @@
|
|
|
1
|
-
export const STRUCT_VALUE_SYMBOL = Symbol("struct-value");
|
|
2
|
-
/**
|
|
3
|
-
* A struct value is a map between keys in a struct and their field values.
|
|
4
|
-
*/
|
|
5
|
-
export class StructValue {
|
|
6
|
-
/** @internal */ fieldValues = {};
|
|
7
|
-
/**
|
|
8
|
-
* Gets the result struct value object
|
|
9
|
-
*/
|
|
10
|
-
value;
|
|
11
|
-
constructor(prototype) {
|
|
12
|
-
// PERF: `Object.create(extra)` is 50% faster
|
|
13
|
-
// than `Object.defineProperties(this.value, extra)`
|
|
14
|
-
this.value = Object.create(prototype);
|
|
15
|
-
// PERF: `Object.defineProperty` is slow
|
|
16
|
-
// but we need it to be non-enumerable
|
|
17
|
-
Object.defineProperty(this.value, STRUCT_VALUE_SYMBOL, {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
1
|
+
export const STRUCT_VALUE_SYMBOL = Symbol("struct-value");
|
|
2
|
+
/**
|
|
3
|
+
* A struct value is a map between keys in a struct and their field values.
|
|
4
|
+
*/
|
|
5
|
+
export class StructValue {
|
|
6
|
+
/** @internal */ fieldValues = {};
|
|
7
|
+
/**
|
|
8
|
+
* Gets the result struct value object
|
|
9
|
+
*/
|
|
10
|
+
value;
|
|
11
|
+
constructor(prototype) {
|
|
12
|
+
// PERF: `Object.create(extra)` is 50% faster
|
|
13
|
+
// than `Object.defineProperties(this.value, extra)`
|
|
14
|
+
this.value = Object.create(prototype);
|
|
15
|
+
// PERF: `Object.defineProperty` is slow
|
|
16
|
+
// but we need it to be non-enumerable
|
|
17
|
+
Object.defineProperty(this.value, STRUCT_VALUE_SYMBOL, {
|
|
18
|
+
enumerable: false,
|
|
19
|
+
value: this,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sets a `StructFieldValue` for `key`
|
|
24
|
+
*
|
|
25
|
+
* @param name The field name
|
|
26
|
+
* @param fieldValue The associated `StructFieldValue`
|
|
27
|
+
*/
|
|
28
|
+
set(name, fieldValue) {
|
|
29
|
+
this.fieldValues[name] = fieldValue;
|
|
30
|
+
// PERF: `Object.defineProperty` is slow
|
|
31
|
+
// use normal property when possible
|
|
32
|
+
if (fieldValue.hasCustomAccessors) {
|
|
33
|
+
Object.defineProperty(this.value, name, {
|
|
34
|
+
configurable: true,
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get() {
|
|
37
|
+
return fieldValue.get();
|
|
38
|
+
},
|
|
39
|
+
set(v) {
|
|
40
|
+
fieldValue.set(v);
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.value[name] = fieldValue.get();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets the `StructFieldValue` for `key`
|
|
50
|
+
*
|
|
51
|
+
* @param name The field name
|
|
52
|
+
*/
|
|
53
|
+
get(name) {
|
|
54
|
+
return this.fieldValues[name];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
50
57
|
//# sourceMappingURL=struct-value.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,GAGjC,EAAE,CAAC;IAEP;;OAEG;IACa,KAAK,CAA+B;IAEpD,YAAmB,SAAiB;QAChC,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;IACI,GAAG,CAAC,IAAiB,EAAE,UAA4B;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAEpC,wCAAwC;QACxC,oCAAoC;QACpC,IAAI,UAAU,CAAC,kBAAkB,EAAE;YAC/B,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;SACN;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;SACvC;IACL,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAiB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;IACnC,CAAC;CACJ"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface ArrayBuffer {
|
|
3
|
-
__brand: never;
|
|
4
|
-
}
|
|
5
|
-
interface SharedArrayBuffer {
|
|
6
|
-
__brand: never;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export { Struct as default } from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
1
|
+
declare global {
|
|
2
|
+
interface ArrayBuffer {
|
|
3
|
+
__brand: never;
|
|
4
|
+
}
|
|
5
|
+
interface SharedArrayBuffer {
|
|
6
|
+
__brand: never;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export * from "./basic/index.js";
|
|
10
|
+
export * from "./struct.js";
|
|
11
|
+
export { Struct as default } from "./struct.js";
|
|
12
|
+
export * from "./types/index.js";
|
|
13
|
+
export * from "./utils.js";
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export { Struct as default } from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
1
|
+
export * from "./basic/index.js";
|
|
2
|
+
export * from "./struct.js";
|
|
3
|
+
export { Struct as default } from "./struct.js";
|
|
4
|
+
export * from "./types/index.js";
|
|
5
|
+
export * from "./utils.js";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/esm/struct.d.ts
CHANGED
|
@@ -1,130 +1,131 @@
|
|
|
1
|
-
import { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<TName extends PropertyKey,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
readonly
|
|
27
|
-
readonly
|
|
28
|
-
readonly
|
|
29
|
-
readonly
|
|
30
|
-
readonly
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
deserialize(stream:
|
|
126
|
-
|
|
127
|
-
serialize(init: Evaluate<Omit<TFields, TOmitInitKey
|
|
128
|
-
|
|
129
|
-
|
|
1
|
+
import type { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from "./basic/index.js";
|
|
2
|
+
import type { BufferFieldSubType, FixedLengthBufferLikeFieldOptions, LengthField, VariableLengthBufferLikeFieldOptions } from "./types/index.js";
|
|
3
|
+
import { BigIntFieldType, FixedLengthBufferLikeFieldDefinition, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition } from "./types/index.js";
|
|
4
|
+
import type { Evaluate, Identity, Overwrite } from "./utils.js";
|
|
5
|
+
export interface StructLike<TValue> {
|
|
6
|
+
deserialize(stream: StructDeserializeStream | StructAsyncDeserializeStream): Promise<TValue>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Extract the value type of the specified `Struct`
|
|
10
|
+
*/
|
|
11
|
+
export type StructValueType<T extends StructLike<unknown>> = Awaited<ReturnType<T["deserialize"]>>;
|
|
12
|
+
/**
|
|
13
|
+
* Create a new `Struct` type with `TDefinition` appended
|
|
14
|
+
*/
|
|
15
|
+
type AddFieldDescriptor<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>> = Identity<Struct<Evaluate<TFields & Record<TFieldName, TDefinition["TValue"]>>, TOmitInitKey | TDefinition["TOmitInitKey"], TExtra, TPostDeserialized>>;
|
|
16
|
+
/**
|
|
17
|
+
* Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
|
|
18
|
+
*/
|
|
19
|
+
interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldSubType<any, any>> {
|
|
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, TLengthField extends LengthField<TFields>, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType["TTypeScriptType"]>(name: TName, options: TOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthBufferLikeFieldDefinition<TType, TOptions, TTypeScriptType>>;
|
|
22
|
+
}
|
|
23
|
+
export type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
|
|
24
|
+
export type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
|
|
25
|
+
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>> {
|
|
26
|
+
readonly TFields: TFields;
|
|
27
|
+
readonly TOmitInitKey: TOmitInitKey;
|
|
28
|
+
readonly TExtra: TExtra;
|
|
29
|
+
readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
|
|
30
|
+
readonly TDeserializeResult: StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
31
|
+
readonly options: Readonly<StructOptions>;
|
|
32
|
+
private _size;
|
|
33
|
+
/**
|
|
34
|
+
* Gets the static size (exclude fields that can change size at runtime)
|
|
35
|
+
*/
|
|
36
|
+
get size(): number;
|
|
37
|
+
private _fields;
|
|
38
|
+
private _extra;
|
|
39
|
+
private _postDeserialized?;
|
|
40
|
+
constructor(options?: Partial<Readonly<StructOptions>>);
|
|
41
|
+
/**
|
|
42
|
+
* Appends a `StructFieldDefinition` to the `Struct
|
|
43
|
+
*/
|
|
44
|
+
field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
|
|
45
|
+
/**
|
|
46
|
+
* Merges (flats) another `Struct`'s fields and extra fields into this one.
|
|
47
|
+
*/
|
|
48
|
+
fields<TOther extends Struct<any, any, any, any>>(other: TOther): Struct<TFields & TOther["TFields"], TOmitInitKey | TOther["TOmitInitKey"], TExtra & TOther["TExtra"], TPostDeserialized>;
|
|
49
|
+
private number;
|
|
50
|
+
/**
|
|
51
|
+
* Appends an `int8` field to the `Struct`
|
|
52
|
+
*/
|
|
53
|
+
int8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
54
|
+
/**
|
|
55
|
+
* Appends an `uint8` field to the `Struct`
|
|
56
|
+
*/
|
|
57
|
+
uint8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
58
|
+
/**
|
|
59
|
+
* Appends an `int16` field to the `Struct`
|
|
60
|
+
*/
|
|
61
|
+
int16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
62
|
+
/**
|
|
63
|
+
* Appends an `uint16` field to the `Struct`
|
|
64
|
+
*/
|
|
65
|
+
uint16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
66
|
+
/**
|
|
67
|
+
* Appends an `int32` field to the `Struct`
|
|
68
|
+
*/
|
|
69
|
+
int32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
70
|
+
/**
|
|
71
|
+
* Appends an `uint32` field to the `Struct`
|
|
72
|
+
*/
|
|
73
|
+
uint32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
74
|
+
private bigint;
|
|
75
|
+
/**
|
|
76
|
+
* Appends an `int64` field to the `Struct`
|
|
77
|
+
*
|
|
78
|
+
* Requires native `BigInt` support
|
|
79
|
+
*/
|
|
80
|
+
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
81
|
+
/**
|
|
82
|
+
* Appends an `uint64` field to the `Struct`
|
|
83
|
+
*
|
|
84
|
+
* Requires native `BigInt` support
|
|
85
|
+
*/
|
|
86
|
+
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
87
|
+
private arrayBufferLike;
|
|
88
|
+
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
|
|
89
|
+
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
|
|
90
|
+
/**
|
|
91
|
+
* Adds some extra properties into every `Struct` value.
|
|
92
|
+
*
|
|
93
|
+
* Extra properties will not affect serialize or deserialize process.
|
|
94
|
+
*
|
|
95
|
+
* Multiple calls to `extra` will merge all properties together.
|
|
96
|
+
*
|
|
97
|
+
* @param value
|
|
98
|
+
* An object containing properties to be added to the result value. Accessors and methods are also allowed.
|
|
99
|
+
*/
|
|
100
|
+
extra<T extends Record<Exclude<keyof T, Exclude<keyof T, keyof TFields>>, never>>(value: T & ThisType<Overwrite<Overwrite<TExtra, T>, TFields>>): Struct<TFields, TOmitInitKey, Overwrite<TExtra, T>, TPostDeserialized>;
|
|
101
|
+
/**
|
|
102
|
+
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
103
|
+
*
|
|
104
|
+
* A callback returning `never` (always throw an error)
|
|
105
|
+
* will also change the return type of `deserialize` to `never`.
|
|
106
|
+
*/
|
|
107
|
+
postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInitKey, TExtra, never>;
|
|
108
|
+
/**
|
|
109
|
+
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
110
|
+
*
|
|
111
|
+
* A callback returning `void` means it modify the result object in-place
|
|
112
|
+
* (or doesn't modify it at all), so `deserialize` will still return the result object.
|
|
113
|
+
*/
|
|
114
|
+
postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInitKey, TExtra, undefined>;
|
|
115
|
+
/**
|
|
116
|
+
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
117
|
+
*
|
|
118
|
+
* A callback returning anything other than `undefined`
|
|
119
|
+
* will `deserialize` to return that object instead.
|
|
120
|
+
*/
|
|
121
|
+
postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
|
|
122
|
+
/**
|
|
123
|
+
* Deserialize a struct value from `stream`.
|
|
124
|
+
*/
|
|
125
|
+
deserialize(stream: StructDeserializeStream): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
126
|
+
deserialize(stream: StructAsyncDeserializeStream): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
|
|
127
|
+
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): Uint8Array;
|
|
128
|
+
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output: Uint8Array): number;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
130
131
|
//# 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":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|