@yume-chan/struct 0.0.10 → 0.0.12

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 (121) hide show
  1. package/CHANGELOG.json +27 -0
  2. package/CHANGELOG.md +16 -1
  3. package/LICENSE +1 -1
  4. package/README.md +102 -53
  5. package/{dts → esm}/basic/definition.d.ts +9 -13
  6. package/esm/basic/definition.d.ts.map +1 -0
  7. package/esm/basic/definition.js +13 -9
  8. package/esm/basic/definition.js.map +1 -1
  9. package/{dts → esm}/basic/field-value.d.ts +8 -8
  10. package/esm/basic/field-value.d.ts.map +1 -0
  11. package/esm/basic/field-value.js +12 -5
  12. package/esm/basic/field-value.js.map +1 -1
  13. package/esm/basic/index.d.ts +6 -0
  14. package/esm/basic/index.d.ts.map +1 -0
  15. package/esm/basic/index.js +5 -4
  16. package/esm/basic/index.js.map +1 -1
  17. package/esm/basic/options.d.ts +10 -0
  18. package/esm/basic/options.d.ts.map +1 -0
  19. package/esm/basic/{context.js → options.js} +1 -1
  20. package/esm/basic/options.js.map +1 -0
  21. package/esm/basic/stream.d.ts +19 -0
  22. package/esm/basic/stream.d.ts.map +1 -0
  23. package/esm/basic/stream.js +2 -0
  24. package/esm/basic/stream.js.map +1 -0
  25. package/{dts → esm}/basic/struct-value.d.ts +3 -3
  26. package/esm/basic/struct-value.d.ts.map +1 -0
  27. package/esm/basic/struct-value.js +7 -9
  28. package/esm/basic/struct-value.js.map +1 -1
  29. package/esm/index.d.ts +14 -0
  30. package/esm/index.d.ts.map +1 -0
  31. package/esm/index.js +5 -5
  32. package/esm/index.js.map +1 -1
  33. package/{dts → esm}/struct.d.ts +16 -12
  34. package/esm/struct.d.ts.map +1 -0
  35. package/esm/struct.js +67 -54
  36. package/esm/struct.js.map +1 -1
  37. package/esm/syncbird.d.ts +65 -0
  38. package/esm/syncbird.d.ts.map +1 -0
  39. package/esm/syncbird.js +15 -4
  40. package/esm/syncbird.js.map +1 -1
  41. package/esm/types/bigint.d.ts +25 -0
  42. package/esm/types/bigint.d.ts.map +1 -0
  43. package/esm/types/bigint.js +45 -0
  44. package/esm/types/bigint.js.map +1 -0
  45. package/esm/types/buffer/base.d.ts +63 -0
  46. package/esm/types/buffer/base.d.ts.map +1 -0
  47. package/esm/types/buffer/base.js +100 -0
  48. package/esm/types/buffer/base.js.map +1 -0
  49. package/esm/types/buffer/fixed-length.d.ts +8 -0
  50. package/esm/types/buffer/fixed-length.d.ts.map +1 -0
  51. package/esm/types/buffer/fixed-length.js +8 -0
  52. package/esm/types/buffer/fixed-length.js.map +1 -0
  53. package/esm/types/buffer/index.d.ts +4 -0
  54. package/esm/types/buffer/index.d.ts.map +1 -0
  55. package/esm/types/buffer/index.js +4 -0
  56. package/esm/types/buffer/index.js.map +1 -0
  57. package/esm/types/buffer/variable-length.d.ts +43 -0
  58. package/esm/types/buffer/variable-length.d.ts.map +1 -0
  59. package/esm/types/buffer/variable-length.js +76 -0
  60. package/esm/types/buffer/variable-length.js.map +1 -0
  61. package/esm/types/index.d.ts +4 -0
  62. package/esm/types/index.d.ts.map +1 -0
  63. package/esm/types/index.js +3 -4
  64. package/esm/types/index.js.map +1 -1
  65. package/{dts → esm}/types/number.d.ts +10 -12
  66. package/esm/types/number.d.ts.map +1 -0
  67. package/esm/types/number.js +21 -14
  68. package/esm/types/number.js.map +1 -1
  69. package/{dts → esm}/utils.d.ts +2 -2
  70. package/{dts → esm}/utils.d.ts.map +1 -1
  71. package/esm/utils.js +9 -3
  72. package/esm/utils.js.map +1 -1
  73. package/package.json +47 -47
  74. package/src/basic/definition.ts +11 -13
  75. package/src/basic/field-value.ts +8 -8
  76. package/src/basic/index.ts +5 -4
  77. package/src/basic/options.ts +19 -0
  78. package/src/basic/stream.ts +19 -0
  79. package/src/basic/struct-value.ts +4 -4
  80. package/src/index.ts +17 -5
  81. package/src/struct.ts +89 -75
  82. package/src/syncbird.ts +86 -10
  83. package/src/types/bigint.ts +102 -0
  84. package/src/types/buffer/base.ts +176 -0
  85. package/src/types/buffer/fixed-length.ts +17 -0
  86. package/src/types/buffer/index.ts +3 -0
  87. package/src/types/{variable-length-array-buffer.ts → buffer/variable-length.ts} +48 -34
  88. package/src/types/index.ts +3 -4
  89. package/src/types/number.ts +27 -26
  90. package/src/utils.ts +13 -5
  91. package/dts/basic/context.d.ts +0 -28
  92. package/dts/basic/context.d.ts.map +0 -1
  93. package/dts/basic/definition.d.ts.map +0 -1
  94. package/dts/basic/field-value.d.ts.map +0 -1
  95. package/dts/basic/index.d.ts +0 -5
  96. package/dts/basic/index.d.ts.map +0 -1
  97. package/dts/basic/struct-value.d.ts.map +0 -1
  98. package/dts/index.d.ts +0 -6
  99. package/dts/index.d.ts.map +0 -1
  100. package/dts/struct.d.ts.map +0 -1
  101. package/dts/syncbird.d.ts +0 -20
  102. package/dts/syncbird.d.ts.map +0 -1
  103. package/dts/types/array-buffer.d.ts +0 -71
  104. package/dts/types/array-buffer.d.ts.map +0 -1
  105. package/dts/types/fixed-length-array-buffer.d.ts +0 -8
  106. package/dts/types/fixed-length-array-buffer.d.ts.map +0 -1
  107. package/dts/types/index.d.ts +0 -5
  108. package/dts/types/index.d.ts.map +0 -1
  109. package/dts/types/number.d.ts.map +0 -1
  110. package/dts/types/variable-length-array-buffer.d.ts +0 -32
  111. package/dts/types/variable-length-array-buffer.d.ts.map +0 -1
  112. package/esm/basic/context.js.map +0 -1
  113. package/esm/types/array-buffer.js +0 -110
  114. package/esm/types/array-buffer.js.map +0 -1
  115. package/esm/types/fixed-length-array-buffer.js +0 -8
  116. package/esm/types/fixed-length-array-buffer.js.map +0 -1
  117. package/esm/types/variable-length-array-buffer.js +0 -71
  118. package/esm/types/variable-length-array-buffer.js.map +0 -1
  119. package/src/basic/context.ts +0 -32
  120. package/src/types/array-buffer.ts +0 -194
  121. package/src/types/fixed-length-array-buffer.ts +0 -17
@@ -0,0 +1,176 @@
1
+ // cspell: ignore syncbird
2
+
3
+ import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from '../../basic/index.js';
4
+ import { Syncbird } from "../../syncbird.js";
5
+ import { decodeUtf8, encodeUtf8, type ValueOrPromise } from "../../utils.js";
6
+
7
+ /**
8
+ * Base class for all types that
9
+ * can be converted from an `Uint8Array` when deserialized,
10
+ * and need to be converted to an `Uint8Array` when serializing
11
+ *
12
+ * @template TValue The actual TypeScript type of this type
13
+ * @template TTypeScriptType Optional another type (should be compatible with `TType`)
14
+ * specified by user when creating field definitions.
15
+ */
16
+ export abstract class BufferFieldSubType<TValue = unknown, TTypeScriptType = TValue> {
17
+ public readonly TTypeScriptType!: TTypeScriptType;
18
+
19
+ /**
20
+ * When implemented in derived classes, converts the type-specific `value` to an `Uint8Array`
21
+ *
22
+ * This function should be "pure", i.e.,
23
+ * same `value` should always be converted to `Uint8Array`s that have same content.
24
+ */
25
+ public abstract toBuffer(value: TValue): Uint8Array;
26
+
27
+ /** When implemented in derived classes, converts the `Uint8Array` to a type-specific value */
28
+ public abstract toValue(array: Uint8Array): TValue;
29
+
30
+ /**
31
+ * When implemented in derived classes, gets the size in byte of the type-specific `value`.
32
+ *
33
+ * If the size can't be calculated without first converting the `value` back to an `Uint8Array`,
34
+ * implementer can returns `-1`, so the caller will get its size by first converting it to
35
+ * an `Uint8Array` (and cache the result).
36
+ */
37
+ public abstract getSize(value: TValue): number;
38
+ }
39
+
40
+ /** An `BufferFieldSubType` that's actually an `Uint8Array` */
41
+ export class Uint8ArrayBufferFieldSubType extends BufferFieldSubType<Uint8Array> {
42
+ public static readonly Instance = new Uint8ArrayBufferFieldSubType();
43
+
44
+ protected constructor() {
45
+ super();
46
+ }
47
+
48
+ public toBuffer(value: Uint8Array): Uint8Array {
49
+ return value;
50
+ }
51
+
52
+ public toValue(buffer: Uint8Array): Uint8Array {
53
+ return buffer;
54
+ }
55
+
56
+ public getSize(value: Uint8Array): number {
57
+ return value.byteLength;
58
+ }
59
+ }
60
+
61
+ /** An `BufferFieldSubType` that converts between `Uint8Array` and `string` */
62
+ export class StringBufferFieldSubType<TTypeScriptType = string>
63
+ extends BufferFieldSubType<string, TTypeScriptType> {
64
+ public static readonly Instance = new StringBufferFieldSubType();
65
+
66
+ public toBuffer(value: string): Uint8Array {
67
+ return encodeUtf8(value);
68
+ }
69
+
70
+ public toValue(array: Uint8Array): string {
71
+ return decodeUtf8(array);
72
+ }
73
+
74
+ public getSize(): number {
75
+ // Return `-1`, so `BufferLikeFieldDefinition` will
76
+ // convert this `value` into an `Uint8Array` (and cache the result),
77
+ // Then get the size from that `Uint8Array`
78
+ return -1;
79
+ }
80
+ }
81
+
82
+ const EmptyBuffer = new Uint8Array(0);
83
+
84
+ export abstract class BufferLikeFieldDefinition<
85
+ TType extends BufferFieldSubType<any, any> = BufferFieldSubType<unknown, unknown>,
86
+ TOptions = void,
87
+ TOmitInitKey extends PropertyKey = never,
88
+ > extends StructFieldDefinition<
89
+ TOptions,
90
+ TType['TTypeScriptType'],
91
+ TOmitInitKey
92
+ >{
93
+ public readonly type: TType;
94
+
95
+ public constructor(type: TType, options: TOptions) {
96
+ super(options);
97
+ this.type = type;
98
+ }
99
+
100
+ protected getDeserializeSize(struct: StructValue): number {
101
+ return this.getSize();
102
+ }
103
+
104
+ /**
105
+ * When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
106
+ */
107
+ public create(
108
+ options: Readonly<StructOptions>,
109
+ struct: StructValue,
110
+ value: TType['TTypeScriptType'],
111
+ array?: Uint8Array,
112
+ ): BufferLikeFieldValue<this> {
113
+ return new BufferLikeFieldValue(this, options, struct, value, array);
114
+ }
115
+
116
+ public override deserialize(
117
+ options: Readonly<StructOptions>,
118
+ stream: StructDeserializeStream,
119
+ struct: StructValue,
120
+ ): BufferLikeFieldValue<this>;
121
+ public override deserialize(
122
+ options: Readonly<StructOptions>,
123
+ stream: StructAsyncDeserializeStream,
124
+ struct: StructValue,
125
+ ): Promise<BufferLikeFieldValue<this>>;
126
+ public override deserialize(
127
+ options: Readonly<StructOptions>,
128
+ stream: StructDeserializeStream | StructAsyncDeserializeStream,
129
+ struct: StructValue,
130
+ ): ValueOrPromise<BufferLikeFieldValue<this>> {
131
+ return Syncbird.try(() => {
132
+ const size = this.getDeserializeSize(struct);
133
+ if (size === 0) {
134
+ return EmptyBuffer;
135
+ } else {
136
+ return stream.read(size);
137
+ }
138
+ }).then(array => {
139
+ const value = this.type.toValue(array);
140
+ return this.create(options, struct, value, array);
141
+ }).valueOrPromise();
142
+ }
143
+ }
144
+
145
+ export class BufferLikeFieldValue<
146
+ TDefinition extends BufferLikeFieldDefinition<BufferFieldSubType<unknown, unknown>, any, any>,
147
+ > extends StructFieldValue<TDefinition> {
148
+ protected array: Uint8Array | undefined;
149
+
150
+ public constructor(
151
+ definition: TDefinition,
152
+ options: Readonly<StructOptions>,
153
+ struct: StructValue,
154
+ value: TDefinition['TValue'],
155
+ array?: Uint8Array,
156
+ ) {
157
+ super(definition, options, struct, value);
158
+ this.array = array;
159
+ }
160
+
161
+ public override set(value: TDefinition['TValue']): void {
162
+ super.set(value);
163
+ // When value changes, clear the cached `array`
164
+ // It will be lazily calculated in `serialize()`
165
+ this.array = undefined;
166
+ }
167
+
168
+ public serialize(dataView: DataView, offset: number): void {
169
+ if (!this.array) {
170
+ this.array = this.definition.type.toBuffer(this.value);
171
+ }
172
+
173
+ new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength)
174
+ .set(this.array, offset);
175
+ }
176
+ }
@@ -0,0 +1,17 @@
1
+ import { BufferLikeFieldDefinition, type BufferFieldSubType } from "./base.js";
2
+
3
+ export interface FixedLengthBufferLikeFieldOptions {
4
+ length: number;
5
+ }
6
+
7
+ export class FixedLengthBufferLikeFieldDefinition<
8
+ TType extends BufferFieldSubType = BufferFieldSubType,
9
+ TOptions extends FixedLengthBufferLikeFieldOptions = FixedLengthBufferLikeFieldOptions,
10
+ > extends BufferLikeFieldDefinition<
11
+ TType,
12
+ TOptions
13
+ > {
14
+ public getSize(): number {
15
+ return this.options.length;
16
+ }
17
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./base.js";
2
+ export * from "./fixed-length.js";
3
+ export * from "./variable-length.js";
@@ -1,22 +1,33 @@
1
- import { StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
2
- import type { KeysOfType } from '../utils';
3
- import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldType, ArrayBufferLikeFieldValue } from './array-buffer';
1
+ import { StructFieldValue, type StructFieldDefinition, type StructOptions, type StructValue } from '../../basic/index.js';
2
+ import type { KeysOfType } from '../../utils.js';
3
+ import { BufferLikeFieldDefinition, BufferLikeFieldValue, type BufferFieldSubType } from './base.js';
4
4
 
5
5
  export type LengthField<TFields> = KeysOfType<TFields, number | string>;
6
6
 
7
- export interface VariableLengthArrayBufferLikeFieldOptions<
7
+ export interface VariableLengthBufferLikeFieldOptions<
8
8
  TFields = object,
9
9
  TLengthField extends LengthField<TFields> = any,
10
10
  > {
11
+ /**
12
+ * The name of the field that contains the length of the buffer.
13
+ *
14
+ * This field must be a `number` or `string` (can't be `bigint`) field.
15
+ */
11
16
  lengthField: TLengthField;
12
17
 
13
- lengthFieldBase?: number;
18
+ /**
19
+ * If the `lengthField` refers to a string field,
20
+ * what radix to use when converting the string to a number.
21
+ *
22
+ * @default 10
23
+ */
24
+ lengthFieldRadix?: number;
14
25
  }
15
26
 
16
- export class VariableLengthArrayBufferLikeFieldDefinition<
17
- TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType,
18
- TOptions extends VariableLengthArrayBufferLikeFieldOptions = VariableLengthArrayBufferLikeFieldOptions
19
- > extends ArrayBufferLikeFieldDefinition<
27
+ export class VariableLengthBufferLikeFieldDefinition<
28
+ TType extends BufferFieldSubType = BufferFieldSubType,
29
+ TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions
30
+ > extends BufferLikeFieldDefinition<
20
31
  TType,
21
32
  TOptions,
22
33
  TOptions['lengthField']
@@ -28,7 +39,7 @@ export class VariableLengthArrayBufferLikeFieldDefinition<
28
39
  protected override getDeserializeSize(struct: StructValue) {
29
40
  let value = struct.value[this.options.lengthField] as number | string;
30
41
  if (typeof value === 'string') {
31
- value = Number.parseInt(value, this.options.lengthFieldBase ?? 10);
42
+ value = Number.parseInt(value, this.options.lengthFieldRadix ?? 10);
32
43
  }
33
44
  return value;
34
45
  }
@@ -37,43 +48,43 @@ export class VariableLengthArrayBufferLikeFieldDefinition<
37
48
  options: Readonly<StructOptions>,
38
49
  struct: StructValue,
39
50
  value: TType['TTypeScriptType'],
40
- arrayBuffer?: ArrayBuffer
41
- ): VariableLengthArrayBufferLikeStructFieldValue<this> {
42
- return new VariableLengthArrayBufferLikeStructFieldValue(
51
+ array?: Uint8Array
52
+ ): VariableLengthBufferLikeStructFieldValue<this> {
53
+ return new VariableLengthBufferLikeStructFieldValue(
43
54
  this,
44
55
  options,
45
56
  struct,
46
57
  value,
47
- arrayBuffer,
58
+ array,
48
59
  );
49
60
  }
50
61
  }
51
62
 
52
- export class VariableLengthArrayBufferLikeStructFieldValue<
53
- TDefinition extends VariableLengthArrayBufferLikeFieldDefinition = VariableLengthArrayBufferLikeFieldDefinition,
54
- > extends ArrayBufferLikeFieldValue<TDefinition> {
63
+ export class VariableLengthBufferLikeStructFieldValue<
64
+ TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition,
65
+ > extends BufferLikeFieldValue<TDefinition> {
55
66
  protected length: number | undefined;
56
67
 
57
- protected lengthFieldValue: VariableLengthArrayBufferLikeFieldLengthValue;
68
+ protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
58
69
 
59
70
  public constructor(
60
71
  definition: TDefinition,
61
72
  options: Readonly<StructOptions>,
62
73
  struct: StructValue,
63
74
  value: TDefinition['TValue'],
64
- arrayBuffer?: ArrayBuffer,
75
+ array?: Uint8Array,
65
76
  ) {
66
- super(definition, options, struct, value, arrayBuffer);
77
+ super(definition, options, struct, value, array);
67
78
 
68
- if (arrayBuffer) {
69
- this.length = arrayBuffer.byteLength;
79
+ if (array) {
80
+ this.length = array.byteLength;
70
81
  }
71
82
 
72
83
  // Patch the associated length field.
73
84
  const lengthField = this.definition.options.lengthField;
74
85
 
75
86
  const originalValue = struct.get(lengthField);
76
- this.lengthFieldValue = new VariableLengthArrayBufferLikeFieldLengthValue(
87
+ this.lengthFieldValue = new VariableLengthBufferLikeFieldLengthValue(
77
88
  originalValue,
78
89
  this,
79
90
  );
@@ -84,8 +95,8 @@ export class VariableLengthArrayBufferLikeStructFieldValue<
84
95
  if (this.length === undefined) {
85
96
  this.length = this.definition.type.getSize(this.value);
86
97
  if (this.length === -1) {
87
- this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
88
- this.length = this.arrayBuffer.byteLength;
98
+ this.array = this.definition.type.toBuffer(this.value);
99
+ this.length = this.array.byteLength;
89
100
  }
90
101
  }
91
102
 
@@ -94,24 +105,24 @@ export class VariableLengthArrayBufferLikeStructFieldValue<
94
105
 
95
106
  public override set(value: unknown) {
96
107
  super.set(value);
97
- this.arrayBuffer = undefined;
108
+ this.array = undefined;
98
109
  this.length = undefined;
99
110
  }
100
111
  }
101
112
 
102
- // Not using `VariableLengthArrayBufferLikeStructFieldValue` directly makes writing tests much easier...
103
- type VariableLengthArrayBufferLikeFieldValueLike =
104
- StructFieldValue<StructFieldDefinition<VariableLengthArrayBufferLikeFieldOptions, any, any>>;
113
+ // Not using `VariableLengthBufferLikeStructFieldValue` directly makes writing tests much easier...
114
+ type VariableLengthBufferLikeFieldValueLike =
115
+ StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
105
116
 
106
- export class VariableLengthArrayBufferLikeFieldLengthValue
117
+ export class VariableLengthBufferLikeFieldLengthValue
107
118
  extends StructFieldValue {
108
119
  protected originalField: StructFieldValue;
109
120
 
110
- protected arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike;
121
+ protected arrayBufferField: VariableLengthBufferLikeFieldValueLike;
111
122
 
112
123
  public constructor(
113
124
  originalField: StructFieldValue,
114
- arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike,
125
+ arrayBufferField: VariableLengthBufferLikeFieldValueLike,
115
126
  ) {
116
127
  super(originalField.definition, originalField.options, originalField.struct, 0);
117
128
  this.originalField = originalField;
@@ -127,13 +138,16 @@ export class VariableLengthArrayBufferLikeFieldLengthValue
127
138
 
128
139
  const originalValue = this.originalField.get();
129
140
  if (typeof originalValue === 'string') {
130
- value = value.toString(this.arrayBufferField.definition.options.lengthFieldBase ?? 10);
141
+ value = value.toString(this.arrayBufferField.definition.options.lengthFieldRadix ?? 10);
131
142
  }
132
143
 
133
144
  return value;
134
145
  }
135
146
 
136
- public override set() { }
147
+ public override set() {
148
+ // Ignore setting
149
+ // It will always be in sync with the buffer size
150
+ }
137
151
 
138
152
  serialize(dataView: DataView, offset: number) {
139
153
  this.originalField.set(this.get());
@@ -1,4 +1,3 @@
1
- export * from './array-buffer';
2
- export * from './fixed-length-array-buffer';
3
- export * from './number';
4
- export * from './variable-length-array-buffer';
1
+ export * from "./bigint.js";
2
+ export * from "./buffer/index.js";
3
+ export * from "./number.js";
@@ -1,6 +1,8 @@
1
- import { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
2
- import { Syncbird } from "../syncbird";
3
- import { ValueOrPromise } from "../utils";
1
+ // cspell: ignore syncbird
2
+
3
+ import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from '../basic/index.js';
4
+ import { Syncbird } from "../syncbird.js";
5
+ import type { ValueOrPromise } from "../utils.js";
4
6
 
5
7
  export type DataViewGetters =
6
8
  { [TKey in keyof DataView]: TKey extends `get${string}` ? TKey : never }[keyof DataView];
@@ -8,8 +10,8 @@ export type DataViewGetters =
8
10
  export type DataViewSetters =
9
11
  { [TKey in keyof DataView]: TKey extends `set${string}` ? TKey : never }[keyof DataView];
10
12
 
11
- export class NumberFieldType<TTypeScriptType extends number | bigint = number | bigint> {
12
- public readonly TTypeScriptType!: TTypeScriptType;
13
+ export class NumberFieldType {
14
+ public readonly TTypeScriptType!: number;
13
15
 
14
16
  public readonly size: number;
15
17
 
@@ -27,26 +29,22 @@ export class NumberFieldType<TTypeScriptType extends number | bigint = number |
27
29
  this.dataViewSetter = dataViewSetter;
28
30
  }
29
31
 
30
- public static readonly Int8 = new NumberFieldType<number>(1, 'getInt8', 'setInt8');
31
-
32
- public static readonly Uint8 = new NumberFieldType<number>(1, 'getUint8', 'setUint8');
33
-
34
- public static readonly Int16 = new NumberFieldType<number>(2, 'getInt16', 'setInt16');
32
+ public static readonly Int8 = new NumberFieldType(1, 'getInt8', 'setInt8');
35
33
 
36
- public static readonly Uint16 = new NumberFieldType<number>(2, 'getUint16', 'setUint16');
34
+ public static readonly Uint8 = new NumberFieldType(1, 'getUint8', 'setUint8');
37
35
 
38
- public static readonly Int32 = new NumberFieldType<number>(4, 'getInt32', 'setInt32');
36
+ public static readonly Int16 = new NumberFieldType(2, 'getInt16', 'setInt16');
39
37
 
40
- public static readonly Uint32 = new NumberFieldType<number>(4, 'getUint32', 'setUint32');
38
+ public static readonly Uint16 = new NumberFieldType(2, 'getUint16', 'setUint16');
41
39
 
42
- public static readonly Int64 = new NumberFieldType<bigint>(8, 'getBigInt64', 'setBigInt64');
40
+ public static readonly Int32 = new NumberFieldType(4, 'getInt32', 'setInt32');
43
41
 
44
- public static readonly Uint64 = new NumberFieldType<bigint>(8, 'getBigUint64', 'setBigUint64');
42
+ public static readonly Uint32 = new NumberFieldType(4, 'getUint32', 'setUint32');
45
43
  }
46
44
 
47
45
  export class NumberFieldDefinition<
48
46
  TType extends NumberFieldType = NumberFieldType,
49
- TTypeScriptType = TType['TTypeScriptType'],
47
+ TTypeScriptType = TType["TTypeScriptType"],
50
48
  > extends StructFieldDefinition<
51
49
  void,
52
50
  TTypeScriptType
@@ -85,16 +83,19 @@ export class NumberFieldDefinition<
85
83
  stream: StructDeserializeStream | StructAsyncDeserializeStream,
86
84
  struct: StructValue,
87
85
  ): ValueOrPromise<NumberFieldValue<this>> {
88
- return Syncbird.try(() => {
89
- return stream.read(this.getSize());
90
- }).then(buffer => {
91
- const view = new DataView(buffer);
92
- const value = view[this.type.dataViewGetter](
93
- 0,
94
- options.littleEndian
95
- ) as any;
96
- return this.create(options, struct, value);
97
- }).valueOrPromise();
86
+ return Syncbird
87
+ .try(() => {
88
+ return stream.read(this.getSize());
89
+ })
90
+ .then(array => {
91
+ const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
92
+ const value = view[this.type.dataViewGetter](
93
+ 0,
94
+ options.littleEndian
95
+ );
96
+ return this.create(options, struct, value as any);
97
+ })
98
+ .valueOrPromise();
98
99
  }
99
100
  }
100
101
 
package/src/utils.ts CHANGED
@@ -48,15 +48,23 @@ export function placeholder<T>(): T {
48
48
  return undefined as unknown as T;
49
49
  }
50
50
 
51
- // @ts-expect-error @types/node missing `TextEncoder`
51
+ // This library can't use `@types/node` or `lib: dom`
52
+ // because they will pollute the global scope
53
+ // So `TextEncoder` and `TextDecoder` are not available
54
+
55
+ // Node.js 8.3 ships `TextEncoder` and `TextDecoder` in `util` module.
56
+ // But using top level await to load them requires Node.js 14.1.
57
+ // So there is no point to do that. Let's just assume they exists in global.
58
+
59
+ // @ts-expect-error
52
60
  const Utf8Encoder = new TextEncoder();
53
- // @ts-expect-error @types/node missing `TextDecoder`
61
+ // @ts-expect-error
54
62
  const Utf8Decoder = new TextDecoder();
55
63
 
56
- export function encodeUtf8(input: string): ArrayBuffer {
57
- return Utf8Encoder.encode(input).buffer;
64
+ export function encodeUtf8(input: string): Uint8Array {
65
+ return Utf8Encoder.encode(input);
58
66
  }
59
67
 
60
- export function decodeUtf8(buffer: ArrayBuffer): string {
68
+ export function decodeUtf8(buffer: Uint8Array): string {
61
69
  return Utf8Decoder.decode(buffer);
62
70
  }
@@ -1,28 +0,0 @@
1
- export interface StructDeserializeStream {
2
- /**
3
- * Read data from the underlying data source.
4
- *
5
- * Stream must return exactly `length` bytes or data. If that's not possible
6
- * (due to end of file or other error condition), it must throw an error.
7
- */
8
- read(length: number): ArrayBuffer;
9
- }
10
- export interface StructAsyncDeserializeStream {
11
- /**
12
- * Read data from the underlying data source.
13
- *
14
- * Context must return exactly `length` bytes or data. If that's not possible
15
- * (due to end of file or other error condition), it must throw an error.
16
- */
17
- read(length: number): Promise<ArrayBuffer>;
18
- }
19
- export interface StructOptions {
20
- /**
21
- * Whether all multi-byte fields in this struct are little-endian encoded.
22
- *
23
- * Default to `false`
24
- */
25
- littleEndian: boolean;
26
- }
27
- export declare const StructDefaultOptions: Readonly<StructOptions>;
28
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/basic/context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IACzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAExD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,qBAAqB,CACvC,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,OAAO,EAChB,YAAY,SAAS,WAAW,GAAG,KAAK;IAExC;;;OAGG;IACH,SAAgB,MAAM,EAAG,MAAM,CAAC;IAEhC;;;OAGG;IACH,SAAgB,YAAY,EAAG,YAAY,CAAC;IAE5C,SAAgB,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,QAAQ;IAIpC;;;;OAIG;aACa,OAAO,IAAI,MAAM;IAEjC;;OAEG;aACa,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACd,gBAAgB,CAAC,IAAI,CAAC;IAEzB;;OAEG;aACa,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;aACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CACrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAE/F,6DAA6D;IAC7D,SAAgB,UAAU,EAAE,WAAW,CAAC;IAExC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,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;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;IAInC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9C;;OAEG;aACa,SAAS,CACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACf,IAAI;CACV"}
@@ -1,5 +0,0 @@
1
- export * from './context';
2
- export * from './definition';
3
- export * from './field-value';
4
- export * from './struct-value';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/basic/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,qBAAa,WAAW;IAGpB;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAM;IAEzD;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAW3D;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,gBAAgB;CAGjD"}
package/dts/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export * from './basic';
2
- export * from './struct';
3
- export { Struct as default } from './struct';
4
- export * from './types';
5
- export * from './utils';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
package/dts/syncbird.d.ts DELETED
@@ -1,20 +0,0 @@
1
- import Bluebird from 'bluebird';
2
- declare type Resolvable<R> = R | PromiseLike<R>;
3
- export interface Syncbird<R> extends Bluebird<R> {
4
- valueOrPromise(): R | PromiseLike<R>;
5
- then<U>(onFulfill?: (value: R) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Syncbird<U>;
6
- then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => Resolvable<TResult1>) | null, onrejected?: ((reason: any) => Resolvable<TResult2>) | null): Syncbird<TResult1 | TResult2>;
7
- }
8
- interface SyncbirdStatic {
9
- /**
10
- * Create a promise that is resolved with the given `value`. If `value` is a thenable or promise, the returned promise will assume its state.
11
- */
12
- resolve(): Syncbird<void>;
13
- resolve<R>(value: Resolvable<R>): Syncbird<R>;
14
- try<R>(fn: () => Resolvable<R>): Syncbird<R>;
15
- attempt<R>(fn: () => Resolvable<R>): Syncbird<R>;
16
- new <R>(callback: (resolve: (thenableOrResult?: Resolvable<R>) => void, reject: (error?: any) => void, onCancel?: (callback: () => void) => void) => void): Syncbird<R>;
17
- }
18
- export declare const Syncbird: SyncbirdStatic;
19
- export {};
20
- //# sourceMappingURL=syncbird.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"syncbird.d.ts","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,aAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExC,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC5C,cAAc,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxG,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EACzD,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC5D,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;CACpC;AAED,UAAU,cAAc;IACpB;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjD,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC3K;AAED,eAAO,MAAM,QAAQ,EAAE,cAAoD,CAAC"}