@yume-chan/struct 0.0.18 → 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 (66) hide show
  1. package/CHANGELOG.json +6 -0
  2. package/CHANGELOG.md +6 -1
  3. package/esm/basic/definition.d.ts +43 -43
  4. package/esm/basic/definition.d.ts.map +1 -1
  5. package/esm/basic/definition.js +23 -23
  6. package/esm/basic/field-value.d.ts +38 -38
  7. package/esm/basic/field-value.d.ts.map +1 -1
  8. package/esm/basic/field-value.js +45 -45
  9. package/esm/basic/index.d.ts +5 -5
  10. package/esm/basic/index.js +5 -5
  11. package/esm/basic/options.d.ts +9 -9
  12. package/esm/basic/options.js +3 -3
  13. package/esm/basic/stream.d.ts +19 -19
  14. package/esm/basic/stream.d.ts.map +1 -1
  15. package/esm/basic/stream.js +1 -1
  16. package/esm/basic/struct-value.d.ts +25 -25
  17. package/esm/basic/struct-value.d.ts.map +1 -1
  18. package/esm/basic/struct-value.js +56 -56
  19. package/esm/index.d.ts +13 -13
  20. package/esm/index.js +5 -5
  21. package/esm/struct.d.ts +130 -129
  22. package/esm/struct.d.ts.map +1 -1
  23. package/esm/struct.js +210 -210
  24. package/esm/struct.js.map +1 -1
  25. package/esm/sync-promise.d.ts +12 -12
  26. package/esm/sync-promise.js +70 -70
  27. package/esm/types/bigint.d.ts +25 -24
  28. package/esm/types/bigint.d.ts.map +1 -1
  29. package/esm/types/bigint.js +47 -46
  30. package/esm/types/bigint.js.map +1 -1
  31. package/esm/types/buffer/base.d.ts +64 -63
  32. package/esm/types/buffer/base.d.ts.map +1 -1
  33. package/esm/types/buffer/base.js +102 -100
  34. package/esm/types/buffer/base.js.map +1 -1
  35. package/esm/types/buffer/fixed-length.d.ts +8 -7
  36. package/esm/types/buffer/fixed-length.d.ts.map +1 -1
  37. package/esm/types/buffer/fixed-length.js +6 -6
  38. package/esm/types/buffer/fixed-length.js.map +1 -1
  39. package/esm/types/buffer/index.d.ts +3 -3
  40. package/esm/types/buffer/index.js +3 -3
  41. package/esm/types/buffer/variable-length.d.ts +44 -42
  42. package/esm/types/buffer/variable-length.d.ts.map +1 -1
  43. package/esm/types/buffer/variable-length.js +75 -75
  44. package/esm/types/buffer/variable-length.js.map +1 -1
  45. package/esm/types/index.d.ts +3 -3
  46. package/esm/types/index.js +3 -3
  47. package/esm/types/number.d.ts +27 -26
  48. package/esm/types/number.d.ts.map +1 -1
  49. package/esm/types/number.js +113 -113
  50. package/esm/types/number.js.map +1 -1
  51. package/esm/utils.d.ts +47 -47
  52. package/esm/utils.js +15 -15
  53. package/package.json +7 -6
  54. package/src/basic/definition.ts +6 -6
  55. package/src/basic/field-value.ts +3 -3
  56. package/src/basic/index.ts +5 -5
  57. package/src/basic/stream.ts +1 -1
  58. package/src/basic/struct-value.ts +1 -1
  59. package/src/index.ts +5 -5
  60. package/src/struct.ts +14 -15
  61. package/src/types/bigint.ts +7 -8
  62. package/src/types/buffer/base.ts +8 -8
  63. package/src/types/buffer/fixed-length.ts +2 -1
  64. package/src/types/buffer/variable-length.ts +8 -11
  65. package/src/types/number.ts +7 -8
  66. package/tsconfig.build.tsbuildinfo +1 -1
@@ -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 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
- 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,EACH,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,kBAAkB,EAC1B,MAAM,WAAW,CAAC;AAEnB,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
+ {"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,27 +1,28 @@
1
- import { StructFieldDefinition, StructFieldValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions, type StructValue } from "../basic/index.js";
2
- export interface NumberFieldType {
3
- signed: boolean;
4
- size: number;
5
- deserialize(array: Uint8Array, littleEndian: boolean): number;
6
- serialize(dataView: DataView, offset: number, value: number, littleEndian: boolean): void;
7
- }
8
- export declare namespace NumberFieldType {
9
- const Uint8: NumberFieldType;
10
- const Int8: NumberFieldType;
11
- const Uint16: NumberFieldType;
12
- const Int16: NumberFieldType;
13
- const Uint32: NumberFieldType;
14
- const Int32: NumberFieldType;
15
- }
16
- export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = number> extends StructFieldDefinition<void, TTypeScriptType> {
17
- readonly type: TType;
18
- constructor(type: TType, typescriptType?: TTypeScriptType);
19
- getSize(): number;
20
- create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
21
- deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): NumberFieldValue<this>;
22
- deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<NumberFieldValue<this>>;
23
- }
24
- export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldType, any>> extends StructFieldValue<TDefinition> {
25
- serialize(dataView: DataView, offset: number): void;
26
- }
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
+ }
27
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,EACH,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,WAAW,EACnB,MAAM,mBAAmB,CAAC;AAI3B,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
+ {"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,114 +1,114 @@
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
- }
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
+ }
114
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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"}