@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.
Files changed (75) hide show
  1. package/CHANGELOG.json +18 -0
  2. package/CHANGELOG.md +13 -1
  3. package/LICENSE +1 -1
  4. package/esm/basic/definition.d.ts +43 -43
  5. package/esm/basic/definition.d.ts.map +1 -1
  6. package/esm/basic/definition.js +23 -23
  7. package/esm/basic/definition.js.map +1 -1
  8. package/esm/basic/field-value.d.ts +38 -38
  9. package/esm/basic/field-value.d.ts.map +1 -1
  10. package/esm/basic/field-value.js +45 -45
  11. package/esm/basic/field-value.js.map +1 -1
  12. package/esm/basic/index.d.ts +5 -5
  13. package/esm/basic/index.js +5 -5
  14. package/esm/basic/options.d.ts +9 -9
  15. package/esm/basic/options.js +3 -3
  16. package/esm/basic/stream.d.ts +19 -19
  17. package/esm/basic/stream.js +1 -1
  18. package/esm/basic/struct-value.d.ts +25 -25
  19. package/esm/basic/struct-value.d.ts.map +1 -1
  20. package/esm/basic/struct-value.js +56 -49
  21. package/esm/basic/struct-value.js.map +1 -1
  22. package/esm/index.d.ts +13 -13
  23. package/esm/index.js +5 -5
  24. package/esm/struct.d.ts +130 -129
  25. package/esm/struct.d.ts.map +1 -1
  26. package/esm/struct.js +210 -208
  27. package/esm/struct.js.map +1 -1
  28. package/esm/sync-promise.d.ts +12 -12
  29. package/esm/sync-promise.d.ts.map +1 -1
  30. package/esm/sync-promise.js +70 -70
  31. package/esm/sync-promise.js.map +1 -1
  32. package/esm/types/bigint.d.ts +25 -24
  33. package/esm/types/bigint.d.ts.map +1 -1
  34. package/esm/types/bigint.js +47 -46
  35. package/esm/types/bigint.js.map +1 -1
  36. package/esm/types/buffer/base.d.ts +64 -63
  37. package/esm/types/buffer/base.d.ts.map +1 -1
  38. package/esm/types/buffer/base.js +102 -101
  39. package/esm/types/buffer/base.js.map +1 -1
  40. package/esm/types/buffer/fixed-length.d.ts +8 -7
  41. package/esm/types/buffer/fixed-length.d.ts.map +1 -1
  42. package/esm/types/buffer/fixed-length.js +6 -7
  43. package/esm/types/buffer/fixed-length.js.map +1 -1
  44. package/esm/types/buffer/index.d.ts +3 -3
  45. package/esm/types/buffer/index.js +3 -3
  46. package/esm/types/buffer/variable-length.d.ts +44 -42
  47. package/esm/types/buffer/variable-length.d.ts.map +1 -1
  48. package/esm/types/buffer/variable-length.js +75 -75
  49. package/esm/types/buffer/variable-length.js.map +1 -1
  50. package/esm/types/index.d.ts +3 -3
  51. package/esm/types/index.js +3 -3
  52. package/esm/types/number.d.ts +27 -32
  53. package/esm/types/number.d.ts.map +1 -1
  54. package/esm/types/number.js +113 -64
  55. package/esm/types/number.js.map +1 -1
  56. package/esm/utils.d.ts +47 -47
  57. package/esm/utils.d.ts.map +1 -1
  58. package/esm/utils.js +15 -22
  59. package/esm/utils.js.map +1 -1
  60. package/package.json +13 -9
  61. package/src/basic/definition.ts +10 -7
  62. package/src/basic/field-value.ts +15 -12
  63. package/src/basic/index.ts +5 -5
  64. package/src/basic/struct-value.ts +16 -10
  65. package/src/index.ts +5 -5
  66. package/src/struct.ts +205 -200
  67. package/src/sync-promise.ts +32 -12
  68. package/src/types/bigint.ts +56 -30
  69. package/src/types/buffer/base.ts +54 -36
  70. package/src/types/buffer/fixed-length.ts +5 -9
  71. package/src/types/buffer/variable-length.ts +38 -24
  72. package/src/types/number.ts +128 -77
  73. package/src/utils.ts +30 -8
  74. package/tsconfig.build.json +1 -1
  75. 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, { enumerable: false, value: this });
18
- }
19
- /**
20
- * Sets a `StructFieldValue` for `key`
21
- *
22
- * @param name The field name
23
- * @param fieldValue The associated `StructFieldValue`
24
- */
25
- set(name, fieldValue) {
26
- this.fieldValues[name] = fieldValue;
27
- // PERF: `Object.defineProperty` is slow
28
- // use normal property when possible
29
- if (fieldValue.hasCustomAccessors) {
30
- Object.defineProperty(this.value, name, {
31
- configurable: true,
32
- enumerable: true,
33
- get() { return fieldValue.get(); },
34
- set(v) { fieldValue.set(v); },
35
- });
36
- }
37
- else {
38
- this.value[name] = fieldValue.get();
39
- }
40
- }
41
- /**
42
- * Gets the `StructFieldValue` for `key`
43
- *
44
- * @param name The field name
45
- */
46
- get(name) {
47
- return this.fieldValues[name];
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,GAA0C,EAAE,CAAC;IAElF;;OAEG;IACa,KAAK,CAA+B;IAEpD,YAAmB,SAAc;QAC7B,6CAA6C;QAC7C,oDAAoD;QACpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEtC,wCAAwC;QACxC,sCAAsC;QACtC,MAAM,CAAC,cAAc,CACjB,IAAI,CAAC,KAAK,EACV,mBAAmB,EACnB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CACrC,CAAC;IACN,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,KAAK,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAClC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC,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"}
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 './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';
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 './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';
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 './basic/index.js';
2
- import { BigIntFieldType, BufferFieldSubType, FixedLengthBufferLikeFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition, type FixedLengthBufferLikeFieldOptions, type LengthField, type VariableLengthBufferLikeFieldOptions } from './types/index.js';
3
- import type { Evaluate, Identity, Overwrite } from "./utils.js";
4
- export interface StructLike<TValue> {
5
- deserialize(stream: StructDeserializeStream | StructAsyncDeserializeStream): Promise<TValue>;
6
- }
7
- /**
8
- * Extract the value type of the specified `Struct`
9
- */
10
- export declare type StructValueType<T extends StructLike<any>> = Awaited<ReturnType<T['deserialize']>>;
11
- /**
12
- * Create a new `Struct` type with `TDefinition` appended
13
- */
14
- declare 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>>;
15
- /**
16
- * Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
17
- */
18
- interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldSubType<any, any>> {
19
- <TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: FixedLengthBufferLikeFieldOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions, TTypeScriptType>>;
20
- <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>>;
21
- }
22
- export declare type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
23
- export declare type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
24
- export declare class Struct<TFields extends object = {}, TOmitInitKey extends PropertyKey = never, TExtra extends object = {}, TPostDeserialized = undefined> implements StructLike<StructDeserializedResult<TFields, TExtra, TPostDeserialized>> {
25
- readonly TFields: TFields;
26
- readonly TOmitInitKey: TOmitInitKey;
27
- readonly TExtra: TExtra;
28
- readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
29
- readonly TDeserializeResult: StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
30
- readonly options: Readonly<StructOptions>;
31
- private _size;
32
- /**
33
- * Gets the static size (exclude fields that can change size at runtime)
34
- */
35
- get size(): number;
36
- private _fields;
37
- private _extra;
38
- private _postDeserialized?;
39
- constructor(options?: Partial<Readonly<StructOptions>>);
40
- /**
41
- * Appends a `StructFieldDefinition` to the `Struct
42
- */
43
- field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
44
- /**
45
- * Merges (flats) another `Struct`'s fields and extra fields into this one.
46
- */
47
- fields<TOther extends Struct<any, any, any, any>>(other: TOther): Struct<TFields & TOther['TFields'], TOmitInitKey | TOther['TOmitInitKey'], TExtra & TOther['TExtra'], TPostDeserialized>;
48
- private number;
49
- /**
50
- * Appends an `int8` field to the `Struct`
51
- */
52
- int8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
53
- /**
54
- * Appends an `uint8` field to the `Struct`
55
- */
56
- uint8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
57
- /**
58
- * Appends an `int16` field to the `Struct`
59
- */
60
- int16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
61
- /**
62
- * Appends an `uint16` field to the `Struct`
63
- */
64
- uint16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
65
- /**
66
- * Appends an `int32` field to the `Struct`
67
- */
68
- int32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int32']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
69
- /**
70
- * Appends an `uint32` field to the `Struct`
71
- */
72
- uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
73
- private bigint;
74
- /**
75
- * Appends an `int64` field to the `Struct`
76
- *
77
- * Requires native `BigInt` support
78
- */
79
- int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
80
- /**
81
- * Appends an `uint64` field to the `Struct`
82
- *
83
- * Requires native `BigInt` support
84
- */
85
- uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
86
- private arrayBufferLike;
87
- uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
88
- string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
89
- /**
90
- * Adds some extra properties into every `Struct` value.
91
- *
92
- * Extra properties will not affect serialize or deserialize process.
93
- *
94
- * Multiple calls to `extra` will merge all properties together.
95
- *
96
- * @param value
97
- * An object containing properties to be added to the result value. Accessors and methods are also allowed.
98
- */
99
- 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>;
100
- /**
101
- * Registers (or replaces) a custom callback to be run after deserialized.
102
- *
103
- * A callback returning `never` (always throw an error)
104
- * will also change the return type of `deserialize` to `never`.
105
- */
106
- postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInitKey, TExtra, never>;
107
- /**
108
- * Registers (or replaces) a custom callback to be run after deserialized.
109
- *
110
- * A callback returning `void` means it modify the result object in-place
111
- * (or doesn't modify it at all), so `deserialize` will still return the result object.
112
- */
113
- postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInitKey, TExtra, undefined>;
114
- /**
115
- * Registers (or replaces) a custom callback to be run after deserialized.
116
- *
117
- * A callback returning anything other than `undefined`
118
- * will `deserialize` to return that object instead.
119
- */
120
- postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
121
- /**
122
- * Deserialize a struct value from `stream`.
123
- */
124
- deserialize(stream: StructDeserializeStream): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
125
- deserialize(stream: StructAsyncDeserializeStream): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
126
- serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): Uint8Array;
127
- serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output: Uint8Array): number;
128
- }
129
- export {};
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
@@ -1 +1 @@
1
- {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}