@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,4 +1,4 @@
1
- export * from "./base.js";
2
- export * from "./fixed-length.js";
3
- export * from "./variable-length.js";
1
+ export * from "./base.js";
2
+ export * from "./fixed-length.js";
3
+ export * from "./variable-length.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1,43 +1,45 @@
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
- export declare type LengthField<TFields> = KeysOfType<TFields, number | string>;
5
- export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
6
- /**
7
- * The name of the field that contains the length of the buffer.
8
- *
9
- * This field must be a `number` or `string` (can't be `bigint`) field.
10
- */
11
- lengthField: TLengthField;
12
- /**
13
- * If the `lengthField` refers to a string field,
14
- * what radix to use when converting the string to a number.
15
- *
16
- * @default 10
17
- */
18
- lengthFieldRadix?: number;
19
- }
20
- export declare class VariableLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions, TTypeScriptType = TType["TTypeScriptType"]> extends BufferLikeFieldDefinition<TType, TOptions, TOptions['lengthField'], TTypeScriptType> {
21
- getSize(): number;
22
- protected getDeserializeSize(struct: StructValue): number;
23
- create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType, array?: Uint8Array): VariableLengthBufferLikeStructFieldValue<this>;
24
- }
25
- export declare class VariableLengthBufferLikeStructFieldValue<TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition> extends BufferLikeFieldValue<TDefinition> {
26
- protected length: number | undefined;
27
- protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
28
- constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue'], array?: Uint8Array);
29
- getSize(): number;
30
- set(value: unknown): void;
31
- }
32
- declare type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
33
- export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
34
- protected originalField: StructFieldValue;
35
- protected bufferField: VariableLengthBufferLikeFieldValueLike;
36
- constructor(originalField: StructFieldValue, arrayBufferField: VariableLengthBufferLikeFieldValueLike);
37
- getSize(): number;
38
- get(): string | number;
39
- set(): void;
40
- serialize(dataView: DataView, offset: number): void;
41
- }
42
- export {};
1
+ import type { StructFieldDefinition, StructOptions, StructValue } from "../../basic/index.js";
2
+ import { StructFieldValue } from "../../basic/index.js";
3
+ import type { KeysOfType } from "../../utils.js";
4
+ import type { BufferFieldSubType } from "./base.js";
5
+ import { BufferLikeFieldDefinition, BufferLikeFieldValue } from "./base.js";
6
+ export type LengthField<TFields> = KeysOfType<TFields, number | string>;
7
+ export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
8
+ /**
9
+ * The name of the field that contains the length of the buffer.
10
+ *
11
+ * This field must be a `number` or `string` (can't be `bigint`) field.
12
+ */
13
+ lengthField: TLengthField;
14
+ /**
15
+ * If the `lengthField` refers to a string field,
16
+ * what radix to use when converting the string to a number.
17
+ *
18
+ * @default 10
19
+ */
20
+ lengthFieldRadix?: number;
21
+ }
22
+ export declare class VariableLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions, TTypeScriptType = TType["TTypeScriptType"]> extends BufferLikeFieldDefinition<TType, TOptions, TOptions["lengthField"], TTypeScriptType> {
23
+ getSize(): number;
24
+ protected getDeserializeSize(struct: StructValue): number;
25
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType, array?: Uint8Array): VariableLengthBufferLikeStructFieldValue<this>;
26
+ }
27
+ export declare class VariableLengthBufferLikeStructFieldValue<TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition> extends BufferLikeFieldValue<TDefinition> {
28
+ protected length: number | undefined;
29
+ protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
30
+ constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["TValue"], array?: Uint8Array);
31
+ getSize(): number;
32
+ set(value: unknown): void;
33
+ }
34
+ type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
35
+ export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
36
+ protected originalField: StructFieldValue;
37
+ protected bufferField: VariableLengthBufferLikeFieldValueLike;
38
+ constructor(originalField: StructFieldValue, arrayBufferField: VariableLengthBufferLikeFieldValueLike);
39
+ getSize(): number;
40
+ get(): string | number;
41
+ set(): void;
42
+ serialize(dataView: DataView, offset: number): void;
43
+ }
44
+ export {};
43
45
  //# sourceMappingURL=variable-length.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC1H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAErG,oBAAY,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oCAAoC,CACjD,OAAO,GAAG,MAAM,EAChB,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG;IAE/C;;;;OAIG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,uCAAuC,CAChD,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,oCAAoC,GAAG,oCAAoC,EAC5F,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CACxC,SAAQ,yBAAyB,CACnC,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,EACvB,eAAe,CACd;IACM,OAAO,IAAI,MAAM;cAIL,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQzC,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,KAAK,CAAC,EAAE,UAAU,GACnB,wCAAwC,CAAC,IAAI,CAAC;CASpD;AAED,qBAAa,wCAAwC,CACjD,WAAW,SAAS,uCAAuC,GAAG,uCAAuC,CACnG,SAAQ,oBAAoB,CAAC,WAAW,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;gBAGjE,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,EAAE,UAAU;IAmBN,OAAO;IAYP,GAAG,CAAC,KAAK,EAAE,OAAO;CAKrC;AAGD,aAAK,sCAAsC,GACvC,gBAAgB,CAAC,qBAAqB,CAAC,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE5F,qBAAa,wCACT,SAAQ,gBAAgB;IACxB,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAE1C,SAAS,CAAC,WAAW,EAAE,sCAAsC,CAAC;gBAG1D,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,sCAAsC;IAO5C,OAAO;IAIP,GAAG;IAWH,GAAG;IAKnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAI/C"}
1
+ {"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EACrB,aAAa,EACb,WAAW,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5E,MAAM,MAAM,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oCAAoC,CACjD,OAAO,GAAG,MAAM,EAChB,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG;IAE/C;;;;OAIG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,uCAAuC,CAChD,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,oCAAoC,GAAG,oCAAoC,EAC5F,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAC5C,SAAQ,yBAAyB,CAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,EACvB,eAAe,CAClB;IACU,OAAO,IAAI,MAAM;cAIL,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQzC,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,KAAK,CAAC,EAAE,UAAU,GACnB,wCAAwC,CAAC,IAAI,CAAC;CASpD;AAED,qBAAa,wCAAwC,CACjD,WAAW,SAAS,uCAAuC,GAAG,uCAAuC,CACvG,SAAQ,oBAAoB,CAAC,WAAW,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;gBAGjE,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,EAAE,UAAU;IAmBN,OAAO;IAYP,GAAG,CAAC,KAAK,EAAE,OAAO;CAKrC;AAGD,KAAK,sCAAsC,GAAG,gBAAgB,CAC1D,qBAAqB,CAAC,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,CACxE,CAAC;AAEF,qBAAa,wCAAyC,SAAQ,gBAAgB;IAC1E,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAE1C,SAAS,CAAC,WAAW,EAAE,sCAAsC,CAAC;gBAG1D,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,sCAAsC;IAY5C,OAAO;IAIP,GAAG;IAaH,GAAG;IAKnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAI/C"}
@@ -1,76 +1,76 @@
1
- import { StructFieldValue } from '../../basic/index.js';
2
- import { BufferLikeFieldDefinition, BufferLikeFieldValue } from './base.js';
3
- export class VariableLengthBufferLikeFieldDefinition extends BufferLikeFieldDefinition {
4
- getSize() {
5
- return 0;
6
- }
7
- getDeserializeSize(struct) {
8
- let value = struct.value[this.options.lengthField];
9
- if (typeof value === 'string') {
10
- value = Number.parseInt(value, this.options.lengthFieldRadix ?? 10);
11
- }
12
- return value;
13
- }
14
- create(options, struct, value, array) {
15
- return new VariableLengthBufferLikeStructFieldValue(this, options, struct, value, array);
16
- }
17
- }
18
- export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldValue {
19
- length;
20
- lengthFieldValue;
21
- constructor(definition, options, struct, value, array) {
22
- super(definition, options, struct, value, array);
23
- if (array) {
24
- this.length = array.byteLength;
25
- }
26
- // Patch the associated length field.
27
- const lengthField = this.definition.options.lengthField;
28
- const originalValue = struct.get(lengthField);
29
- this.lengthFieldValue = new VariableLengthBufferLikeFieldLengthValue(originalValue, this);
30
- struct.set(lengthField, this.lengthFieldValue);
31
- }
32
- getSize() {
33
- if (this.length === undefined) {
34
- this.length = this.definition.type.getSize(this.value);
35
- if (this.length === -1) {
36
- this.array = this.definition.type.toBuffer(this.value);
37
- this.length = this.array.byteLength;
38
- }
39
- }
40
- return this.length;
41
- }
42
- set(value) {
43
- super.set(value);
44
- this.array = undefined;
45
- this.length = undefined;
46
- }
47
- }
48
- export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
49
- originalField;
50
- bufferField;
51
- constructor(originalField, arrayBufferField) {
52
- super(originalField.definition, originalField.options, originalField.struct, 0);
53
- this.originalField = originalField;
54
- this.bufferField = arrayBufferField;
55
- }
56
- getSize() {
57
- return this.originalField.getSize();
58
- }
59
- get() {
60
- let value = this.bufferField.getSize();
61
- const originalValue = this.originalField.get();
62
- if (typeof originalValue === 'string') {
63
- value = value.toString(this.bufferField.definition.options.lengthFieldRadix ?? 10);
64
- }
65
- return value;
66
- }
67
- set() {
68
- // Ignore setting
69
- // It will always be in sync with the buffer size
70
- }
71
- serialize(dataView, offset) {
72
- this.originalField.set(this.get());
73
- this.originalField.serialize(dataView, offset);
74
- }
75
- }
1
+ import { StructFieldValue } from "../../basic/index.js";
2
+ import { BufferLikeFieldDefinition, BufferLikeFieldValue } from "./base.js";
3
+ export class VariableLengthBufferLikeFieldDefinition extends BufferLikeFieldDefinition {
4
+ getSize() {
5
+ return 0;
6
+ }
7
+ getDeserializeSize(struct) {
8
+ let value = struct.value[this.options.lengthField];
9
+ if (typeof value === "string") {
10
+ value = Number.parseInt(value, this.options.lengthFieldRadix ?? 10);
11
+ }
12
+ return value;
13
+ }
14
+ create(options, struct, value, array) {
15
+ return new VariableLengthBufferLikeStructFieldValue(this, options, struct, value, array);
16
+ }
17
+ }
18
+ export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldValue {
19
+ length;
20
+ lengthFieldValue;
21
+ constructor(definition, options, struct, value, array) {
22
+ super(definition, options, struct, value, array);
23
+ if (array) {
24
+ this.length = array.byteLength;
25
+ }
26
+ // Patch the associated length field.
27
+ const lengthField = this.definition.options.lengthField;
28
+ const originalValue = struct.get(lengthField);
29
+ this.lengthFieldValue = new VariableLengthBufferLikeFieldLengthValue(originalValue, this);
30
+ struct.set(lengthField, this.lengthFieldValue);
31
+ }
32
+ getSize() {
33
+ if (this.length === undefined) {
34
+ this.length = this.definition.type.getSize(this.value);
35
+ if (this.length === -1) {
36
+ this.array = this.definition.type.toBuffer(this.value);
37
+ this.length = this.array.byteLength;
38
+ }
39
+ }
40
+ return this.length;
41
+ }
42
+ set(value) {
43
+ super.set(value);
44
+ this.array = undefined;
45
+ this.length = undefined;
46
+ }
47
+ }
48
+ export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
49
+ originalField;
50
+ bufferField;
51
+ constructor(originalField, arrayBufferField) {
52
+ super(originalField.definition, originalField.options, originalField.struct, 0);
53
+ this.originalField = originalField;
54
+ this.bufferField = arrayBufferField;
55
+ }
56
+ getSize() {
57
+ return this.originalField.getSize();
58
+ }
59
+ get() {
60
+ let value = this.bufferField.getSize();
61
+ const originalValue = this.originalField.get();
62
+ if (typeof originalValue === "string") {
63
+ value = value.toString(this.bufferField.definition.options.lengthFieldRadix ?? 10);
64
+ }
65
+ return value;
66
+ }
67
+ set() {
68
+ // Ignore setting
69
+ // It will always be in sync with the buffer size
70
+ }
71
+ serialize(dataView, offset) {
72
+ this.originalField.set(this.get());
73
+ this.originalField.serialize(dataView, offset);
74
+ }
75
+ }
76
76
  //# sourceMappingURL=variable-length.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export * from "./bigint.js";
2
- export * from "./buffer/index.js";
3
- export * from "./number.js";
1
+ export * from "./bigint.js";
2
+ export * from "./buffer/index.js";
3
+ export * from "./number.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from "./bigint.js";
2
- export * from "./buffer/index.js";
3
- export * from "./number.js";
1
+ export * from "./bigint.js";
2
+ export * from "./buffer/index.js";
3
+ export * from "./number.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1,33 +1,28 @@
1
- import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from '../basic/index.js';
2
- declare type NumberTypeDeserializer = (array: Uint8Array, littleEndian: boolean) => number;
3
- export declare type DataViewSetters = {
4
- [TKey in keyof DataView]: TKey extends `set${string}` ? TKey : never;
5
- }[keyof DataView];
6
- export declare class NumberFieldType {
7
- readonly TTypeScriptType: number;
8
- readonly signed: boolean;
9
- readonly size: number;
10
- readonly deserializer: NumberTypeDeserializer;
11
- readonly convertSign: (value: number) => number;
12
- readonly dataViewSetter: DataViewSetters;
13
- constructor(size: number, signed: boolean, convertSign: (value: number) => number, dataViewSetter: DataViewSetters);
14
- static readonly Int8: NumberFieldType;
15
- static readonly Uint8: NumberFieldType;
16
- static readonly Int16: NumberFieldType;
17
- static readonly Uint16: NumberFieldType;
18
- static readonly Int32: NumberFieldType;
19
- static readonly Uint32: NumberFieldType;
20
- }
21
- export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType["TTypeScriptType"]> extends StructFieldDefinition<void, TTypeScriptType> {
22
- readonly type: TType;
23
- constructor(type: TType, _typescriptType?: TTypeScriptType);
24
- getSize(): number;
25
- create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
26
- deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): NumberFieldValue<this>;
27
- deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<NumberFieldValue<this>>;
28
- }
29
- export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldType, any>> extends StructFieldValue<TDefinition> {
30
- serialize(dataView: DataView, offset: number): void;
31
- }
32
- export {};
1
+ import type { StructAsyncDeserializeStream, StructDeserializeStream, StructOptions, StructValue } from "../basic/index.js";
2
+ import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
3
+ export interface NumberFieldType {
4
+ signed: boolean;
5
+ size: number;
6
+ deserialize(array: Uint8Array, littleEndian: boolean): number;
7
+ serialize(dataView: DataView, offset: number, value: number, littleEndian: boolean): void;
8
+ }
9
+ export declare namespace NumberFieldType {
10
+ const Uint8: NumberFieldType;
11
+ const Int8: NumberFieldType;
12
+ const Uint16: NumberFieldType;
13
+ const Int16: NumberFieldType;
14
+ const Uint32: NumberFieldType;
15
+ const Int32: NumberFieldType;
16
+ }
17
+ export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = number> extends StructFieldDefinition<void, TTypeScriptType> {
18
+ readonly type: TType;
19
+ constructor(type: TType, typescriptType?: TTypeScriptType);
20
+ getSize(): number;
21
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
22
+ deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): NumberFieldValue<this>;
23
+ deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<NumberFieldValue<this>>;
24
+ }
25
+ export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldType, any>> extends StructFieldValue<TDefinition> {
26
+ serialize(dataView: DataView, offset: number): void;
27
+ }
33
28
  //# sourceMappingURL=number.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,4BAA4B,EAAE,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI9K,aAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,KAAK,MAAM,CAAC;AAanF,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,qBAAa,eAAe;IACxB,SAAgB,eAAe,EAAG,MAAM,CAAC;IAEzC,SAAgB,MAAM,EAAE,OAAO,CAAC;IAEhC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvD,SAAgB,cAAc,EAAE,eAAe,CAAC;gBAG5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACtC,cAAc,EAAE,eAAe;IASnC,gBAAuB,IAAI,kBAAuE;IAElG,gBAAuB,KAAK,kBAA6D;IAEzF,gBAAuB,KAAK,kBAAwE;IAEpG,gBAAuB,MAAM,kBAA8D;IAE3F,gBAAuB,KAAK,kBAA4D;IAExF,gBAAuB,MAAM,kBAAoE;CACpG;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CACxC,SAAQ,qBAAqB,CAC/B,IAAI,EACJ,eAAe,CACd;IACD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,eAAe;IAK1D,OAAO,IAAI,MAAM;IAIjB,MAAM,CACT,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAkBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,CAC7D,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAU7D"}
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,4BAA4B,EAC5B,uBAAuB,EACvB,aAAa,EACb,WAAW,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9D,SAAS,CACL,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,OAAO,GACtB,IAAI,CAAC;CACX;AAGD,yBAAiB,eAAe,CAAC;IACtB,MAAM,KAAK,EAAE,eASnB,CAAC;IAEK,MAAM,IAAI,EAAE,eAUlB,CAAC;IAEK,MAAM,MAAM,EAAE,eAiBpB,CAAC;IAEK,MAAM,KAAK,EAAE,eAUnB,CAAC;IAEK,MAAM,MAAM,EAAE,eAUpB,CAAC;IAEK,MAAM,KAAK,EAAE,eAoBnB,CAAC;CACL;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,MAAM,CAC1B,SAAQ,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC;IAClD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,eAAe;IAMzD,OAAO,IAAI,MAAM;IAIjB,MAAM,CACT,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAkBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,CACjE,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ7D"}
@@ -1,65 +1,114 @@
1
- import { StructFieldDefinition, StructFieldValue } from '../basic/index.js';
2
- import { SyncPromise } from "../sync-promise.js";
3
- const DESERIALIZERS = {
4
- 1: (array, littleEndian) => array[0],
5
- 2: (array, littleEndian) => ((array[1] << 8) | array[0]) * littleEndian |
6
- ((array[0] << 8) | array[1]) * !littleEndian,
7
- 4: (array, littleEndian) => ((array[3] << 24) | (array[2] << 16) | (array[1] << 8) | array[0]) * littleEndian |
8
- ((array[0] << 24) | (array[1] << 16) | (array[2] << 8) | array[3]) * !littleEndian,
9
- };
10
- export class NumberFieldType {
11
- TTypeScriptType;
12
- signed;
13
- size;
14
- deserializer;
15
- convertSign;
16
- dataViewSetter;
17
- constructor(size, signed, convertSign, dataViewSetter) {
18
- this.size = size;
19
- this.signed = signed;
20
- this.deserializer = DESERIALIZERS[size];
21
- this.convertSign = convertSign;
22
- this.dataViewSetter = dataViewSetter;
23
- }
24
- static Int8 = new NumberFieldType(1, true, value => value << 24 >> 24, 'setInt8');
25
- static Uint8 = new NumberFieldType(1, false, value => value, 'setUint8');
26
- static Int16 = new NumberFieldType(2, true, value => value << 16 >> 16, 'setInt16');
27
- static Uint16 = new NumberFieldType(2, false, value => value, 'setUint16');
28
- static Int32 = new NumberFieldType(4, true, value => value, 'setInt32');
29
- static Uint32 = new NumberFieldType(4, false, value => value >>> 0, 'setUint32');
30
- }
31
- export class NumberFieldDefinition extends StructFieldDefinition {
32
- type;
33
- constructor(type, _typescriptType) {
34
- super();
35
- this.type = type;
36
- }
37
- getSize() {
38
- return this.type.size;
39
- }
40
- create(options, struct, value) {
41
- return new NumberFieldValue(this, options, struct, value);
42
- }
43
- deserialize(options, stream, struct) {
44
- return SyncPromise
45
- .try(() => {
46
- return stream.read(this.getSize());
47
- })
48
- .then(array => {
49
- let value;
50
- value = this.type.deserializer(array, options.littleEndian);
51
- value = this.type.convertSign(value);
52
- return this.create(options, struct, value);
53
- })
54
- .valueOrPromise();
55
- }
56
- }
57
- export class NumberFieldValue extends StructFieldValue {
58
- serialize(dataView, offset) {
59
- // `setBigInt64` requires a `bigint` while others require `number`
60
- // So `dataView[DataViewSetters]` requires `bigint & number`
61
- // and that is, `never`
62
- dataView[this.definition.type.dataViewSetter](offset, this.value, this.options.littleEndian);
63
- }
64
- }
1
+ import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
2
+ import { SyncPromise } from "../sync-promise.js";
3
+ // eslint-disable-next-line @typescript-eslint/no-namespace
4
+ export var NumberFieldType;
5
+ (function (NumberFieldType) {
6
+ NumberFieldType.Uint8 = {
7
+ signed: false,
8
+ size: 1,
9
+ deserialize(array) {
10
+ return array[0];
11
+ },
12
+ serialize(dataView, offset, value) {
13
+ dataView.setUint8(offset, value);
14
+ },
15
+ };
16
+ NumberFieldType.Int8 = {
17
+ signed: true,
18
+ size: 1,
19
+ deserialize(array) {
20
+ const value = NumberFieldType.Uint8.deserialize(array, false);
21
+ return (value << 24) >> 24;
22
+ },
23
+ serialize(dataView, offset, value) {
24
+ dataView.setInt8(offset, value);
25
+ },
26
+ };
27
+ NumberFieldType.Uint16 = {
28
+ signed: false,
29
+ size: 2,
30
+ deserialize(array, littleEndian) {
31
+ // PERF: Chrome's `DataView#getUint16` uses inefficient operations,
32
+ // including branching, bit extending and 32-bit bit swapping.
33
+ // The best way should use 16-bit bit rotation and conditional move,
34
+ // like LLVM does for code similar to the below one.
35
+ // This code is much faster on V8, but the actual generated assembly is unknown.
36
+ return ((((array[1] << 8) | array[0]) * littleEndian) |
37
+ (((array[0] << 8) | array[1]) * !littleEndian));
38
+ },
39
+ serialize(dataView, offset, value, littleEndian) {
40
+ dataView.setUint16(offset, value, littleEndian);
41
+ },
42
+ };
43
+ NumberFieldType.Int16 = {
44
+ signed: true,
45
+ size: 2,
46
+ deserialize(array, littleEndian) {
47
+ const value = NumberFieldType.Uint16.deserialize(array, littleEndian);
48
+ return (value << 16) >> 16;
49
+ },
50
+ serialize(dataView, offset, value, littleEndian) {
51
+ dataView.setInt16(offset, value, littleEndian);
52
+ },
53
+ };
54
+ NumberFieldType.Uint32 = {
55
+ signed: false,
56
+ size: 4,
57
+ deserialize(array, littleEndian) {
58
+ const value = NumberFieldType.Int32.deserialize(array, littleEndian);
59
+ return value >>> 0;
60
+ },
61
+ serialize(dataView, offset, value, littleEndian) {
62
+ dataView.setUint32(offset, value, littleEndian);
63
+ },
64
+ };
65
+ NumberFieldType.Int32 = {
66
+ signed: true,
67
+ size: 4,
68
+ deserialize(array, littleEndian) {
69
+ return ((((array[3] << 24) |
70
+ (array[2] << 16) |
71
+ (array[1] << 8) |
72
+ array[0]) *
73
+ littleEndian) |
74
+ (((array[0] << 24) |
75
+ (array[1] << 16) |
76
+ (array[2] << 8) |
77
+ array[3]) *
78
+ !littleEndian));
79
+ },
80
+ serialize(dataView, offset, value, littleEndian) {
81
+ dataView.setInt32(offset, value, littleEndian);
82
+ },
83
+ };
84
+ })(NumberFieldType = NumberFieldType || (NumberFieldType = {}));
85
+ export class NumberFieldDefinition extends StructFieldDefinition {
86
+ type;
87
+ constructor(type, typescriptType) {
88
+ void typescriptType;
89
+ super();
90
+ this.type = type;
91
+ }
92
+ getSize() {
93
+ return this.type.size;
94
+ }
95
+ create(options, struct, value) {
96
+ return new NumberFieldValue(this, options, struct, value);
97
+ }
98
+ deserialize(options, stream, struct) {
99
+ return SyncPromise.try(() => {
100
+ return stream.read(this.getSize());
101
+ })
102
+ .then((array) => {
103
+ const value = this.type.deserialize(array, options.littleEndian);
104
+ return this.create(options, struct, value);
105
+ })
106
+ .valueOrPromise();
107
+ }
108
+ }
109
+ export class NumberFieldValue extends StructFieldValue {
110
+ serialize(dataView, offset) {
111
+ this.definition.type.serialize(dataView, offset, this.value, this.options.littleEndian);
112
+ }
113
+ }
65
114
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"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"}