@yume-chan/struct 0.0.23 → 1.0.0

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 (119) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/LICENSE +1 -1
  3. package/README.md +85 -714
  4. package/esm/bipedal.d.ts +5 -0
  5. package/esm/bipedal.d.ts.map +1 -0
  6. package/esm/bipedal.js +31 -0
  7. package/esm/bipedal.js.map +1 -0
  8. package/esm/buffer.d.ts +21 -0
  9. package/esm/buffer.d.ts.map +1 -0
  10. package/esm/buffer.js +173 -0
  11. package/esm/buffer.js.map +1 -0
  12. package/esm/field.d.ts +21 -0
  13. package/esm/field.d.ts.map +1 -0
  14. package/esm/field.js +2 -0
  15. package/esm/field.js.map +1 -0
  16. package/esm/index.d.ts +6 -4
  17. package/esm/index.d.ts.map +1 -1
  18. package/esm/index.js +6 -4
  19. package/esm/index.js.map +1 -1
  20. package/esm/number.d.ts +13 -0
  21. package/esm/number.d.ts.map +1 -0
  22. package/esm/number.js +59 -0
  23. package/esm/number.js.map +1 -0
  24. package/esm/{basic/stream.d.ts → readable.d.ts} +3 -3
  25. package/esm/readable.d.ts.map +1 -0
  26. package/esm/{basic/stream.js → readable.js} +1 -2
  27. package/esm/readable.js.map +1 -0
  28. package/esm/string.d.ts +16 -0
  29. package/esm/string.d.ts.map +1 -0
  30. package/esm/string.js +14 -0
  31. package/esm/string.js.map +1 -0
  32. package/esm/struct.d.ts +24 -127
  33. package/esm/struct.d.ts.map +1 -1
  34. package/esm/struct.js +72 -214
  35. package/esm/struct.js.map +1 -1
  36. package/esm/utils.d.ts +10 -45
  37. package/esm/utils.d.ts.map +1 -1
  38. package/esm/utils.js +12 -11
  39. package/esm/utils.js.map +1 -1
  40. package/package.json +11 -14
  41. package/src/bipedal.ts +55 -0
  42. package/src/buffer.ts +260 -0
  43. package/src/field.ts +27 -0
  44. package/src/index.ts +6 -4
  45. package/src/number.ts +123 -0
  46. package/src/{basic/stream.ts → readable.ts} +3 -4
  47. package/src/string.ts +43 -0
  48. package/src/struct.ts +156 -628
  49. package/src/utils.ts +18 -69
  50. package/tsconfig.build.json +6 -1
  51. package/tsconfig.build.tsbuildinfo +1 -1
  52. package/CHANGELOG.json +0 -161
  53. package/esm/basic/definition.d.ts +0 -44
  54. package/esm/basic/definition.d.ts.map +0 -1
  55. package/esm/basic/definition.js +0 -24
  56. package/esm/basic/definition.js.map +0 -1
  57. package/esm/basic/field-value.d.ts +0 -39
  58. package/esm/basic/field-value.d.ts.map +0 -1
  59. package/esm/basic/field-value.js +0 -46
  60. package/esm/basic/field-value.js.map +0 -1
  61. package/esm/basic/index.d.ts +0 -6
  62. package/esm/basic/index.d.ts.map +0 -1
  63. package/esm/basic/index.js +0 -6
  64. package/esm/basic/index.js.map +0 -1
  65. package/esm/basic/options.d.ts +0 -10
  66. package/esm/basic/options.d.ts.map +0 -1
  67. package/esm/basic/options.js +0 -4
  68. package/esm/basic/options.js.map +0 -1
  69. package/esm/basic/stream.d.ts.map +0 -1
  70. package/esm/basic/stream.js.map +0 -1
  71. package/esm/basic/struct-value.d.ts +0 -26
  72. package/esm/basic/struct-value.d.ts.map +0 -1
  73. package/esm/basic/struct-value.js +0 -57
  74. package/esm/basic/struct-value.js.map +0 -1
  75. package/esm/sync-promise.d.ts +0 -13
  76. package/esm/sync-promise.d.ts.map +0 -1
  77. package/esm/sync-promise.js +0 -71
  78. package/esm/sync-promise.js.map +0 -1
  79. package/esm/types/bigint.d.ts +0 -26
  80. package/esm/types/bigint.d.ts.map +0 -1
  81. package/esm/types/bigint.js +0 -47
  82. package/esm/types/bigint.js.map +0 -1
  83. package/esm/types/buffer/base.d.ts +0 -65
  84. package/esm/types/buffer/base.d.ts.map +0 -1
  85. package/esm/types/buffer/base.js +0 -101
  86. package/esm/types/buffer/base.js.map +0 -1
  87. package/esm/types/buffer/fixed-length.d.ts +0 -9
  88. package/esm/types/buffer/fixed-length.d.ts.map +0 -1
  89. package/esm/types/buffer/fixed-length.js +0 -7
  90. package/esm/types/buffer/fixed-length.js.map +0 -1
  91. package/esm/types/buffer/index.d.ts +0 -4
  92. package/esm/types/buffer/index.d.ts.map +0 -1
  93. package/esm/types/buffer/index.js +0 -4
  94. package/esm/types/buffer/index.js.map +0 -1
  95. package/esm/types/buffer/variable-length.d.ts +0 -45
  96. package/esm/types/buffer/variable-length.d.ts.map +0 -1
  97. package/esm/types/buffer/variable-length.js +0 -76
  98. package/esm/types/buffer/variable-length.js.map +0 -1
  99. package/esm/types/index.d.ts +0 -4
  100. package/esm/types/index.d.ts.map +0 -1
  101. package/esm/types/index.js +0 -4
  102. package/esm/types/index.js.map +0 -1
  103. package/esm/types/number.d.ts +0 -28
  104. package/esm/types/number.d.ts.map +0 -1
  105. package/esm/types/number.js +0 -111
  106. package/esm/types/number.js.map +0 -1
  107. package/src/basic/definition.ts +0 -68
  108. package/src/basic/field-value.ts +0 -75
  109. package/src/basic/index.ts +0 -5
  110. package/src/basic/options.ts +0 -19
  111. package/src/basic/struct-value.ts +0 -67
  112. package/src/sync-promise.ts +0 -134
  113. package/src/types/bigint.ts +0 -121
  114. package/src/types/buffer/base.ts +0 -197
  115. package/src/types/buffer/fixed-length.ts +0 -17
  116. package/src/types/buffer/index.ts +0 -3
  117. package/src/types/buffer/variable-length.ts +0 -174
  118. package/src/types/index.ts +0 -3
  119. package/src/types/number.ts +0 -173
package/esm/struct.d.ts CHANGED
@@ -1,27 +1,13 @@
1
- import type { AsyncExactReadable, ExactReadable, 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: ExactReadable | AsyncExactReadable): 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;
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
+ import type { Field } from "./field.js";
3
+ import type { AsyncExactReadable, ExactReadable } from "./readable.js";
4
+ export type FieldsType<T extends Record<string, Field<unknown, string, unknown>>> = {
5
+ [K in keyof T]: T[K] extends Field<infer TK, string, unknown> ? TK : never;
6
+ };
7
+ export type StructInit<T extends Struct<any, any, any>> = Omit<FieldsType<T["fields"]>, {
8
+ [K in keyof T["fields"]]: T["fields"][K] extends Field<unknown, infer U, unknown> ? U : never;
9
+ }[keyof T["fields"]]>;
10
+ export type StructValue<T extends Struct<any, any, any>> = T extends Struct<any, any, infer P> ? P : never;
25
11
  export declare class StructDeserializeError extends Error {
26
12
  constructor(message: string);
27
13
  }
@@ -31,108 +17,19 @@ export declare class StructNotEnoughDataError extends StructDeserializeError {
31
17
  export declare class StructEmptyError extends StructDeserializeError {
32
18
  constructor();
33
19
  }
34
- 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
- #private;
36
- readonly TFields: TFields;
37
- readonly TOmitInitKey: TOmitInitKey;
38
- readonly TExtra: TExtra;
39
- readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
40
- readonly TDeserializeResult: StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
41
- readonly options: Readonly<StructOptions>;
42
- /**
43
- * Gets the static size (exclude fields that can change size at runtime)
44
- */
45
- get size(): number;
46
- get fields(): readonly [
47
- name: PropertyKey,
48
- definition: StructFieldDefinition<any, any, any>
49
- ][];
50
- constructor(options?: Partial<Readonly<StructOptions>>);
51
- /**
52
- * Appends a `StructFieldDefinition` to the `Struct
53
- */
54
- field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
55
- /**
56
- * Merges (flats) another `Struct`'s fields and extra fields into this one.
57
- */
58
- concat<TOther extends Struct<any, any, any, any>>(other: TOther): Struct<TFields & TOther["TFields"], TOmitInitKey | TOther["TOmitInitKey"], TExtra & TOther["TExtra"], TPostDeserialized>;
59
- /**
60
- * Appends an `int8` field to the `Struct`
61
- */
62
- int8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
63
- /**
64
- * Appends an `uint8` field to the `Struct`
65
- */
66
- uint8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
67
- /**
68
- * Appends an `int16` field to the `Struct`
69
- */
70
- int16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
71
- /**
72
- * Appends an `uint16` field to the `Struct`
73
- */
74
- uint16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
75
- /**
76
- * Appends an `int32` field to the `Struct`
77
- */
78
- int32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
79
- /**
80
- * Appends an `uint32` field to the `Struct`
81
- */
82
- uint32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
83
- /**
84
- * Appends an `int64` field to the `Struct`
85
- *
86
- * Requires native `BigInt` support
87
- */
88
- int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
89
- /**
90
- * Appends an `uint64` field to the `Struct`
91
- *
92
- * Requires native `BigInt` support
93
- */
94
- uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
95
- uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
96
- string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
97
- /**
98
- * Adds some extra properties into every `Struct` value.
99
- *
100
- * Extra properties will not affect serialize or deserialize process.
101
- *
102
- * Multiple calls to `extra` will merge all properties together.
103
- *
104
- * @param value
105
- * An object containing properties to be added to the result value. Accessors and methods are also allowed.
106
- */
107
- 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>;
108
- /**
109
- * Registers (or replaces) a custom callback to be run after deserialized.
110
- *
111
- * A callback returning `never` (always throw an error)
112
- * will also change the return type of `deserialize` to `never`.
113
- */
114
- postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInitKey, TExtra, never>;
115
- /**
116
- * Registers (or replaces) a custom callback to be run after deserialized.
117
- *
118
- * A callback returning `void` means it modify the result object in-place
119
- * (or doesn't modify it at all), so `deserialize` will still return the result object.
120
- */
121
- postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInitKey, TExtra, undefined>;
122
- /**
123
- * Registers (or replaces) a custom callback to be run after deserialized.
124
- *
125
- * A callback returning anything other than `undefined`
126
- * will `deserialize` to return that object instead.
127
- */
128
- postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
129
- /**
130
- * Deserialize a struct value from `stream`.
131
- */
132
- deserialize(stream: ExactReadable): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
133
- deserialize(stream: AsyncExactReadable): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
134
- serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): Uint8Array;
135
- serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output: Uint8Array): number;
20
+ export type StructLike<T> = Struct<any, any, T>;
21
+ export interface Struct<T extends Record<string, Field<unknown, string, Partial<FieldsType<T>>>>, Extra extends Record<PropertyKey, unknown> | undefined = undefined, PostDeserialize = FieldsType<T> & Extra> {
22
+ fields: T;
23
+ size: number;
24
+ extra: Extra;
25
+ serialize(runtimeStruct: StructInit<this>): Uint8Array;
26
+ serialize(runtimeStruct: StructInit<this>, buffer: Uint8Array): number;
27
+ deserialize(reader: ExactReadable): PostDeserialize;
28
+ deserialize(reader: AsyncExactReadable): MaybePromiseLike<PostDeserialize>;
136
29
  }
137
- export {};
30
+ export declare function struct<T extends Record<string, Field<unknown, string, Partial<FieldsType<T>>>>, Extra extends Record<PropertyKey, unknown> = {}, PostDeserialize = FieldsType<T> & Extra>(fields: T, options: {
31
+ littleEndian?: boolean;
32
+ extra?: Extra & ThisType<FieldsType<T>>;
33
+ postDeserialize?: (this: FieldsType<T> & Extra, fields: FieldsType<T> & Extra) => PostDeserialize;
34
+ }): Struct<T, Extra, PostDeserialize>;
138
35
  //# 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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"}
package/esm/struct.js CHANGED
@@ -1,10 +1,8 @@
1
- import { ExactReadableEndedError, STRUCT_VALUE_SYMBOL, StructDefaultOptions, StructValue, } from "./basic/index.js";
2
- import { SyncPromise } from "./sync-promise.js";
3
- import { BigIntFieldDefinition, BigIntFieldType, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition, } from "./types/index.js";
1
+ import { bipedal } from "./bipedal.js";
2
+ import { ExactReadableEndedError } from "./readable.js";
4
3
  export class StructDeserializeError extends Error {
5
4
  constructor(message) {
6
5
  super(message);
7
- Object.setPrototypeOf(this, new.target.prototype);
8
6
  }
9
7
  }
10
8
  export class StructNotEnoughDataError extends StructDeserializeError {
@@ -17,227 +15,87 @@ export class StructEmptyError extends StructDeserializeError {
17
15
  super("The underlying readable doesn't contain any more struct");
18
16
  }
19
17
  }
20
- export class Struct {
21
- TFields;
22
- TOmitInitKey;
23
- TExtra;
24
- TInit;
25
- TDeserializeResult;
26
- options;
27
- #size = 0;
28
- /**
29
- * Gets the static size (exclude fields that can change size at runtime)
30
- */
31
- get size() {
32
- return this.#size;
33
- }
34
- #fields = [];
35
- get fields() {
36
- return this.#fields;
37
- }
38
- #extra = {};
39
- #postDeserialized;
40
- constructor(options) {
41
- this.options = { ...StructDefaultOptions, ...options };
42
- }
43
- /**
44
- * Appends a `StructFieldDefinition` to the `Struct
45
- */
46
- field(name, definition) {
47
- for (const field of this.#fields) {
48
- if (field[0] === name) {
49
- // Convert Symbol to string
50
- const nameString = String(name);
51
- throw new Error(`This struct already have a field with name '${nameString}'`);
18
+ /* #__NO_SIDE_EFFECTS__ */
19
+ export function struct(fields, options) {
20
+ const fieldList = Object.entries(fields);
21
+ const size = fieldList.reduce((sum, [, field]) => sum + field.size, 0);
22
+ const littleEndian = !!options.littleEndian;
23
+ const extra = options.extra
24
+ ? Object.getOwnPropertyDescriptors(options.extra)
25
+ : undefined;
26
+ return {
27
+ fields,
28
+ size,
29
+ extra: options.extra,
30
+ serialize(runtimeStruct, buffer) {
31
+ for (const [key, field] of fieldList) {
32
+ if (key in runtimeStruct) {
33
+ field.preSerialize?.(runtimeStruct[key], runtimeStruct);
34
+ }
52
35
  }
53
- }
54
- this.#fields.push([name, definition]);
55
- const size = definition.getSize();
56
- this.#size += size;
57
- // Force cast `this` to another type
58
- return this;
59
- }
60
- /**
61
- * Merges (flats) another `Struct`'s fields and extra fields into this one.
62
- */
63
- concat(other) {
64
- for (const field of other.#fields) {
65
- this.#fields.push(field);
66
- }
67
- this.#size += other.#size;
68
- Object.defineProperties(this.#extra, Object.getOwnPropertyDescriptors(other.#extra));
69
- return this;
70
- }
71
- #number(name, type, typeScriptType) {
72
- return this.field(name, new NumberFieldDefinition(type, typeScriptType));
73
- }
74
- /**
75
- * Appends an `int8` field to the `Struct`
76
- */
77
- int8(name, typeScriptType) {
78
- return this.#number(name, NumberFieldType.Int8, typeScriptType);
79
- }
80
- /**
81
- * Appends an `uint8` field to the `Struct`
82
- */
83
- uint8(name, typeScriptType) {
84
- return this.#number(name, NumberFieldType.Uint8, typeScriptType);
85
- }
86
- /**
87
- * Appends an `int16` field to the `Struct`
88
- */
89
- int16(name, typeScriptType) {
90
- return this.#number(name, NumberFieldType.Int16, typeScriptType);
91
- }
92
- /**
93
- * Appends an `uint16` field to the `Struct`
94
- */
95
- uint16(name, typeScriptType) {
96
- return this.#number(name, NumberFieldType.Uint16, typeScriptType);
97
- }
98
- /**
99
- * Appends an `int32` field to the `Struct`
100
- */
101
- int32(name, typeScriptType) {
102
- return this.#number(name, NumberFieldType.Int32, typeScriptType);
103
- }
104
- /**
105
- * Appends an `uint32` field to the `Struct`
106
- */
107
- uint32(name, typeScriptType) {
108
- return this.#number(name, NumberFieldType.Uint32, typeScriptType);
109
- }
110
- #bigint(name, type, typeScriptType) {
111
- return this.field(name, new BigIntFieldDefinition(type, typeScriptType));
112
- }
113
- /**
114
- * Appends an `int64` field to the `Struct`
115
- *
116
- * Requires native `BigInt` support
117
- */
118
- int64(name, typeScriptType) {
119
- return this.#bigint(name, BigIntFieldType.Int64, typeScriptType);
120
- }
121
- /**
122
- * Appends an `uint64` field to the `Struct`
123
- *
124
- * Requires native `BigInt` support
125
- */
126
- uint64(name, typeScriptType) {
127
- return this.#bigint(name, BigIntFieldType.Uint64, typeScriptType);
128
- }
129
- #arrayBufferLike = (name, type, options) => {
130
- if ("length" in options) {
131
- return this.field(name, new FixedLengthBufferLikeFieldDefinition(type, options));
132
- }
133
- else {
134
- return this.field(name, new VariableLengthBufferLikeFieldDefinition(type, options));
135
- }
136
- };
137
- uint8Array = (name, options, typeScriptType) => {
138
- return this.#arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options, typeScriptType);
139
- };
140
- string = (name, options, typeScriptType) => {
141
- return this.#arrayBufferLike(name, StringBufferFieldSubType.Instance, options, typeScriptType);
142
- };
143
- /**
144
- * Adds some extra properties into every `Struct` value.
145
- *
146
- * Extra properties will not affect serialize or deserialize process.
147
- *
148
- * Multiple calls to `extra` will merge all properties together.
149
- *
150
- * @param value
151
- * An object containing properties to be added to the result value. Accessors and methods are also allowed.
152
- */
153
- extra(value) {
154
- Object.defineProperties(this.#extra, Object.getOwnPropertyDescriptors(value));
155
- return this;
156
- }
157
- postDeserialize(callback) {
158
- this.#postDeserialized = callback;
159
- return this;
160
- }
161
- deserialize(stream) {
162
- const structValue = new StructValue(this.#extra);
163
- let promise = SyncPromise.resolve();
164
- const startPosition = stream.position;
165
- for (const [name, definition] of this.#fields) {
166
- promise = promise
167
- .then(() => definition.deserialize(this.options, stream, structValue))
168
- .then((fieldValue) => {
169
- structValue.set(name, fieldValue);
170
- }, (e) => {
36
+ const sizes = fieldList.map(([key, field]) => field.dynamicSize?.(runtimeStruct[key]) ??
37
+ field.size);
38
+ const size = sizes.reduce((sum, size) => sum + size, 0);
39
+ let externalBuffer = false;
40
+ if (buffer) {
41
+ if (buffer.length < size) {
42
+ throw new Error("Buffer too small");
43
+ }
44
+ externalBuffer = true;
45
+ }
46
+ else {
47
+ buffer = new Uint8Array(size);
48
+ }
49
+ const context = {
50
+ buffer,
51
+ index: 0,
52
+ littleEndian,
53
+ };
54
+ for (const [index, [key, field]] of fieldList.entries()) {
55
+ field.serialize(runtimeStruct[key], context);
56
+ context.index += sizes[index];
57
+ }
58
+ if (externalBuffer) {
59
+ return size;
60
+ }
61
+ else {
62
+ return buffer;
63
+ }
64
+ },
65
+ deserialize: bipedal(function* (then, reader) {
66
+ const startPosition = reader.position;
67
+ const runtimeStruct = {};
68
+ const context = {
69
+ reader,
70
+ runtimeStruct: runtimeStruct,
71
+ littleEndian: littleEndian,
72
+ };
73
+ try {
74
+ for (const [key, field] of fieldList) {
75
+ runtimeStruct[key] = yield* then(field.deserialize(context));
76
+ }
77
+ }
78
+ catch (e) {
171
79
  if (!(e instanceof ExactReadableEndedError)) {
172
80
  throw e;
173
81
  }
174
- if (stream.position === startPosition) {
82
+ if (reader.position === startPosition) {
175
83
  throw new StructEmptyError();
176
84
  }
177
85
  else {
178
86
  throw new StructNotEnoughDataError();
179
87
  }
180
- });
181
- }
182
- return promise
183
- .then(() => {
184
- const value = structValue.value;
185
- // Run `postDeserialized`
186
- if (this.#postDeserialized) {
187
- const override = this.#postDeserialized.call(value, value);
188
- // If it returns a new value, use that as result
189
- // Otherwise it only inspects/mutates the object in place.
190
- if (override !== undefined) {
191
- return override;
192
- }
193
88
  }
194
- return value;
195
- })
196
- .valueOrPromise();
197
- }
198
- serialize(init, output) {
199
- let structValue;
200
- if (STRUCT_VALUE_SYMBOL in init) {
201
- structValue = init[STRUCT_VALUE_SYMBOL];
202
- for (const [key, value] of Object.entries(init)) {
203
- const fieldValue = structValue.get(key);
204
- if (fieldValue) {
205
- fieldValue.set(value);
206
- }
89
+ if (extra) {
90
+ Object.defineProperties(runtimeStruct, extra);
207
91
  }
208
- }
209
- else {
210
- structValue = new StructValue({});
211
- for (const [name, definition] of this.#fields) {
212
- const fieldValue = definition.create(this.options, structValue, init[name]);
213
- structValue.set(name, fieldValue);
92
+ if (options.postDeserialize) {
93
+ return options.postDeserialize.call(runtimeStruct, runtimeStruct);
214
94
  }
215
- }
216
- let structSize = 0;
217
- const fieldsInfo = [];
218
- for (const [name] of this.#fields) {
219
- const fieldValue = structValue.get(name);
220
- const size = fieldValue.getSize();
221
- fieldsInfo.push({ fieldValue, size });
222
- structSize += size;
223
- }
224
- let outputType = "number";
225
- if (!output) {
226
- output = new Uint8Array(structSize);
227
- outputType = "Uint8Array";
228
- }
229
- const dataView = new DataView(output.buffer, output.byteOffset, output.byteLength);
230
- let offset = 0;
231
- for (const { fieldValue, size } of fieldsInfo) {
232
- fieldValue.serialize(dataView, offset);
233
- offset += size;
234
- }
235
- if (outputType === "number") {
236
- return structSize;
237
- }
238
- else {
239
- return output;
240
- }
241
- }
95
+ else {
96
+ return runtimeStruct;
97
+ }
98
+ }),
99
+ };
242
100
  }
243
101
  //# sourceMappingURL=struct.js.map
package/esm/struct.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
package/esm/utils.d.ts CHANGED
@@ -1,48 +1,13 @@
1
- /**
2
- * When evaluating a very complex generic type alias,
3
- * tell TypeScript to use `T`, instead of current type alias' name, as the result type name
4
- *
5
- * Example:
6
- *
7
- * ```ts
8
- * type WithIdentity<T> = Identity<SomeType<T>>;
9
- * type WithoutIdentity<T> = SomeType<T>;
10
- *
11
- * type WithIdentityResult = WithIdentity<number>;
12
- * // Hover on this one shows `SomeType<number>`
13
- *
14
- * type WithoutIdentityResult = WithoutIdentity<number>;
15
- * // Hover on this one shows `WithoutIdentity<number>`
16
- * ```
17
- */
18
- export type Identity<T> = T;
19
- /**
20
- * Collapse an intersection type (`{ foo: string } & { bar: number }`) to a simple type (`{ foo: string, bar: number }`)
21
- */
22
- export type Evaluate<T> = T extends infer U ? {
23
- [K in keyof U]: U[K];
24
- } : never;
25
- /**
26
- * Overwrite fields in `TBase` with fields in `TNew`
27
- */
28
- export type Overwrite<TBase extends object, TNew extends object> = Evaluate<Omit<TBase, keyof TNew> & TNew>;
29
- /**
30
- * Remove fields with `never` type
31
- */
32
- export type OmitNever<T> = Pick<T, {
33
- [K in keyof T]: [T[K]] extends [never] ? never : K;
34
- }[keyof T]>;
35
- /**
36
- * Extract keys of fields in `T` that has type `TValue`
37
- */
38
- export type KeysOfType<T, TValue> = {
39
- [TKey in keyof T]: T[TKey] extends TValue ? TKey : never;
40
- }[keyof T];
41
- export type ValueOrPromise<T> = T | PromiseLike<T>;
42
- /**
43
- * Returns a (fake) value of the given type.
44
- */
45
- export declare function placeholder<T>(): T;
1
+ interface TextEncoder {
2
+ encode(input: string): Uint8Array;
3
+ }
4
+ interface TextDecoder {
5
+ decode(buffer?: ArrayBufferView | ArrayBuffer, options?: {
6
+ stream?: boolean;
7
+ }): string;
8
+ }
9
+ export declare const TextEncoder: new () => TextEncoder, TextDecoder: new () => TextDecoder;
46
10
  export declare function encodeUtf8(input: string): Uint8Array;
47
11
  export declare function decodeUtf8(buffer: ArrayBufferView | ArrayBuffer): string;
12
+ export {};
48
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAAI,QAAQ,CACvE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,IAAI,CAC3B,CAAC,EACD;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI;KAC/B,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK;CAC3D,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,CAAC,CAElC;AAgCD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,MAAM,CAExE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACjB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CACrC;AAED,UAAU,WAAW;IACjB,MAAM,CACF,MAAM,CAAC,EAAE,eAAe,GAAG,WAAW,EACtC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,MAAM,CAAC;CACb;AAOD,eAAO,MAAQ,WAAW,YAJC,WAAW,EAIV,WAAW,YAHZ,WAIiB,CAAC;AAM7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,MAAM,CAIxE"}