@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,19 @@
1
+ export interface StructDeserializeStream {
2
+ /**
3
+ * Read data from the underlying data source.
4
+ *
5
+ * The 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): Uint8Array;
9
+ }
10
+ export interface StructAsyncDeserializeStream {
11
+ /**
12
+ * Read data from the underlying data source.
13
+ *
14
+ * The stream 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<Uint8Array>;
18
+ }
19
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/basic/stream.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IACzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/basic/stream.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
- import type { StructFieldValue } from './field-value';
1
+ import type { StructFieldValue } from "./field-value.js";
2
2
  /**
3
- * Manages the initialization process of a struct value
3
+ * A struct value is a map between keys in a struct and their field values.
4
4
  */
5
5
  export declare class StructValue {
6
6
  /**
@@ -15,7 +15,7 @@ export declare class StructValue {
15
15
  */
16
16
  set(key: PropertyKey, value: StructFieldValue): void;
17
17
  /**
18
- * Gets a previously `StructFieldValue` for `key`
18
+ * Gets the `StructFieldValue` for `key`
19
19
  *
20
20
  * @param key The field name
21
21
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;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"}
@@ -1,14 +1,12 @@
1
1
  /**
2
- * Manages the initialization process of a struct value
2
+ * A struct value is a map between keys in a struct and their field values.
3
3
  */
4
4
  export class StructValue {
5
- constructor() {
6
- /** @internal */ this.fieldValues = {};
7
- /**
8
- * Gets the result struct value object
9
- */
10
- this.value = {};
11
- }
5
+ /** @internal */ fieldValues = {};
6
+ /**
7
+ * Gets the result struct value object
8
+ */
9
+ value = {};
12
10
  /**
13
11
  * Sets a `StructFieldValue` for `key`
14
12
  *
@@ -25,7 +23,7 @@ export class StructValue {
25
23
  });
26
24
  }
27
25
  /**
28
- * Gets a previously `StructFieldValue` for `key`
26
+ * Gets the `StructFieldValue` for `key`
29
27
  *
30
28
  * @param key The field name
31
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;IAAxB;QACI,gBAAgB,CAAU,gBAAW,GAA0C,EAAE,CAAC;QAElF;;WAEG;QACa,UAAK,GAAiC,EAAE,CAAC;IA2B7D,CAAC;IAzBG;;;;;OAKG;IACI,GAAG,CAAC,GAAgB,EAAE,KAAuB;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACnC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAgB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACJ"}
1
+ {"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,GAA0C,EAAE,CAAC;IAElF;;OAEG;IACa,KAAK,GAAiC,EAAE,CAAC;IAEzD;;;;;OAKG;IACI,GAAG,CAAC,GAAgB,EAAE,KAAuB;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACnC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAgB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC;IAClC,CAAC;CACJ"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ declare global {
2
+ interface ArrayBuffer {
3
+ __brand: never;
4
+ }
5
+ interface SharedArrayBuffer {
6
+ __brand: never;
7
+ }
8
+ }
9
+ export * from './basic/index.js';
10
+ export * from './struct.js';
11
+ export { Struct as default } from './struct.js';
12
+ export * from './types/index.js';
13
+ export * from './utils.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW;QAEjB,OAAO,EAAE,KAAK,CAAC;KAClB;IAED,UAAU,iBAAiB;QAEvB,OAAO,EAAE,KAAK,CAAC;KAClB;CACJ;AAED,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
package/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export * from './basic';
2
- export * from './struct';
3
- export { Struct as default } from './struct';
4
- export * from './types';
5
- export * from './utils';
1
+ export * from './basic/index.js';
2
+ export * from './struct.js';
3
+ export { Struct as default } from './struct.js';
4
+ export * from './types/index.js';
5
+ export * from './utils.js';
6
6
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from './basic';
2
- import { ArrayBufferFieldType, ArrayBufferLikeFieldType, FixedLengthArrayBufferLikeFieldDefinition, FixedLengthArrayBufferLikeFieldOptions, LengthField, NumberFieldType, StringFieldType, Uint8ClampedArrayFieldType, VariableLengthArrayBufferLikeFieldDefinition, VariableLengthArrayBufferLikeFieldOptions } from './types';
3
- import { Evaluate, Identity, Overwrite } from "./utils";
1
+ import type { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from './basic/index.js';
2
+ import { BigIntFieldType, BufferFieldSubType, FixedLengthBufferLikeFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition, type FixedLengthBufferLikeFieldOptions, type LengthField, type VariableLengthBufferLikeFieldOptions } from './types/index.js';
3
+ import type { Evaluate, Identity, Overwrite } from "./utils.js";
4
4
  export interface StructLike<TValue> {
5
5
  deserialize(stream: StructDeserializeStream | StructAsyncDeserializeStream): Promise<TValue>;
6
6
  }
@@ -15,9 +15,9 @@ declare type AddFieldDescriptor<TFields extends object, TOmitInitKey extends Pro
15
15
  /**
16
16
  * Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
17
17
  */
18
- interface BindedArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends ArrayBufferLikeFieldType<any, any>> {
19
- <TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: FixedLengthArrayBufferLikeFieldOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthArrayBufferLikeFieldDefinition<TType, FixedLengthArrayBufferLikeFieldOptions>>;
20
- <TName extends PropertyKey, TLengthField extends LengthField<TFields>, TOptions extends VariableLengthArrayBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: TOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthArrayBufferLikeFieldDefinition<TType, TOptions>>;
18
+ interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldSubType<any, any>> {
19
+ <TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: FixedLengthBufferLikeFieldOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions>>;
20
+ <TName extends PropertyKey, TLengthField extends LengthField<TFields>, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: TOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthBufferLikeFieldDefinition<TType, TOptions>>;
21
21
  }
22
22
  export declare type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
23
23
  export declare type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
@@ -70,22 +70,22 @@ export declare class Struct<TFields extends object = {}, TOmitInitKey extends Pr
70
70
  * Appends an `uint32` field to the `Struct`
71
71
  */
72
72
  uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName, typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
73
+ private bigint;
73
74
  /**
74
75
  * Appends an `int64` field to the `Struct`
75
76
  *
76
77
  * Requires native `BigInt` support
77
78
  */
78
- int64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int64']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
79
+ int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
79
80
  /**
80
81
  * Appends an `uint64` field to the `Struct`
81
82
  *
82
83
  * Requires native `BigInt` support
83
84
  */
84
- uint64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint64']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
85
+ uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
85
86
  private arrayBufferLike;
86
- arrayBuffer: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, ArrayBufferFieldType>;
87
- uint8ClampedArray: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ClampedArrayFieldType>;
88
- string: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringFieldType>;
87
+ uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
88
+ string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
89
89
  /**
90
90
  * Adds some extra properties into every `Struct` value.
91
91
  *
@@ -118,9 +118,13 @@ export declare class Struct<TFields extends object = {}, TOmitInitKey extends Pr
118
118
  * will `deserialize` to return that object instead.
119
119
  */
120
120
  postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
121
+ /**
122
+ * Deserialize a struct value from `stream`.
123
+ */
121
124
  deserialize(stream: StructDeserializeStream): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
122
125
  deserialize(stream: StructAsyncDeserializeStream): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
123
- serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): ArrayBuffer;
126
+ serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): Uint8Array;
127
+ serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output: Uint8Array): number;
124
128
  }
125
129
  export {};
126
130
  //# sourceMappingURL=struct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
package/esm/struct.js CHANGED
@@ -1,41 +1,32 @@
1
- import { StructDefaultOptions, StructValue } from './basic';
2
- import { Syncbird } from "./syncbird";
3
- import { ArrayBufferFieldType, FixedLengthArrayBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringFieldType, Uint8ClampedArrayFieldType, VariableLengthArrayBufferLikeFieldDefinition } from './types';
1
+ // cspell: ignore Syncbird
2
+ import { StructDefaultOptions, StructValue } from './basic/index.js';
3
+ import { Syncbird } from "./syncbird.js";
4
+ import { BigIntFieldDefinition, BigIntFieldType, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition } from './types/index.js';
4
5
  export class Struct {
5
- constructor(options) {
6
- this._size = 0;
7
- this._fields = [];
8
- this._extra = {};
9
- this.arrayBufferLike = (name, type, options) => {
10
- if ('length' in options) {
11
- return this.field(name, new FixedLengthArrayBufferLikeFieldDefinition(type, options));
12
- }
13
- else {
14
- return this.field(name, new VariableLengthArrayBufferLikeFieldDefinition(type, options));
15
- }
16
- };
17
- this.arrayBuffer = (name, options) => {
18
- return this.arrayBufferLike(name, ArrayBufferFieldType.instance, options);
19
- };
20
- this.uint8ClampedArray = (name, options) => {
21
- return this.arrayBufferLike(name, Uint8ClampedArrayFieldType.instance, options);
22
- };
23
- this.string = (name, options) => {
24
- return this.arrayBufferLike(name, StringFieldType.instance, options);
25
- };
26
- this.options = Object.assign(Object.assign({}, StructDefaultOptions), options);
27
- }
6
+ TFields;
7
+ TOmitInitKey;
8
+ TExtra;
9
+ TInit;
10
+ TDeserializeResult;
11
+ options;
12
+ _size = 0;
28
13
  /**
29
14
  * Gets the static size (exclude fields that can change size at runtime)
30
15
  */
31
16
  get size() { return this._size; }
17
+ _fields = [];
18
+ _extra = {};
19
+ _postDeserialized;
20
+ constructor(options) {
21
+ this.options = { ...StructDefaultOptions, ...options };
22
+ }
32
23
  /**
33
24
  * Appends a `StructFieldDefinition` to the `Struct
34
25
  */
35
26
  field(name, definition) {
36
27
  for (const field of this._fields) {
37
28
  if (field[0] === name) {
38
- throw new Error(`This struct already have a field with name '${name}'`);
29
+ throw new Error(`This struct already have a field with name '${String(name)}'`);
39
30
  }
40
31
  }
41
32
  this._fields.push([name, definition]);
@@ -94,13 +85,16 @@ export class Struct {
94
85
  uint32(name, typescriptType) {
95
86
  return this.number(name, NumberFieldType.Uint32, typescriptType);
96
87
  }
88
+ bigint(name, type, _typescriptType) {
89
+ return this.field(name, new BigIntFieldDefinition(type, _typescriptType));
90
+ }
97
91
  /**
98
92
  * Appends an `int64` field to the `Struct`
99
93
  *
100
94
  * Requires native `BigInt` support
101
95
  */
102
96
  int64(name, _typescriptType) {
103
- return this.number(name, NumberFieldType.Int64, _typescriptType);
97
+ return this.bigint(name, BigIntFieldType.Int64, _typescriptType);
104
98
  }
105
99
  /**
106
100
  * Appends an `uint64` field to the `Struct`
@@ -108,8 +102,22 @@ export class Struct {
108
102
  * Requires native `BigInt` support
109
103
  */
110
104
  uint64(name, _typescriptType) {
111
- return this.number(name, NumberFieldType.Uint64, _typescriptType);
105
+ return this.bigint(name, BigIntFieldType.Int64, _typescriptType);
112
106
  }
107
+ arrayBufferLike = (name, type, options) => {
108
+ if ('length' in options) {
109
+ return this.field(name, new FixedLengthBufferLikeFieldDefinition(type, options));
110
+ }
111
+ else {
112
+ return this.field(name, new VariableLengthBufferLikeFieldDefinition(type, options));
113
+ }
114
+ };
115
+ uint8Array = (name, options) => {
116
+ return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options);
117
+ };
118
+ string = (name, options) => {
119
+ return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options);
120
+ };
113
121
  /**
114
122
  * Adds some extra properties into every `Struct` value.
115
123
  *
@@ -131,32 +139,28 @@ export class Struct {
131
139
  deserialize(stream) {
132
140
  const value = new StructValue();
133
141
  Object.defineProperties(value.value, this._extra);
134
- return Syncbird.try(() => {
135
- const iterator = this._fields[Symbol.iterator]();
136
- const iterate = () => {
137
- const result = iterator.next();
138
- if (result.done) {
139
- return value;
140
- }
141
- const [name, definition] = result.value;
142
- return Syncbird.resolve(definition.deserialize(this.options, stream, value)).then(fieldValue => {
143
- value.set(name, fieldValue);
144
- return iterate();
145
- });
146
- };
147
- return iterate();
148
- }).then(value => {
142
+ return Syncbird
143
+ .each(this._fields, ([name, definition]) => {
144
+ return Syncbird.resolve(definition.deserialize(this.options, stream, value)).then(fieldValue => {
145
+ value.set(name, fieldValue);
146
+ });
147
+ })
148
+ .then(() => {
149
+ const object = value.value;
150
+ // Run `postDeserialized`
149
151
  if (this._postDeserialized) {
150
- const object = value.value;
151
- const result = this._postDeserialized.call(object, object);
152
- if (result) {
153
- return result;
152
+ const override = this._postDeserialized.call(object, object);
153
+ // If it returns a new value, use that as result
154
+ // Otherwise it only inspects/mutates the object in place.
155
+ if (override) {
156
+ return override;
154
157
  }
155
158
  }
156
- return value.value;
157
- }).valueOrPromise();
159
+ return object;
160
+ })
161
+ .valueOrPromise();
158
162
  }
159
- serialize(init) {
163
+ serialize(init, output) {
160
164
  const value = new StructValue();
161
165
  for (const [name, definition] of this._fields) {
162
166
  const fieldValue = definition.create(this.options, value, init[name]);
@@ -170,14 +174,23 @@ export class Struct {
170
174
  fieldsInfo.push({ fieldValue, size });
171
175
  structSize += size;
172
176
  }
173
- const buffer = new ArrayBuffer(structSize);
174
- const dataView = new DataView(buffer);
177
+ let outputType = 'number';
178
+ if (!output) {
179
+ output = new Uint8Array(structSize);
180
+ outputType = 'Uint8Array';
181
+ }
182
+ const dataView = new DataView(output.buffer, output.byteOffset, output.byteLength);
175
183
  let offset = 0;
176
184
  for (const { fieldValue, size } of fieldsInfo) {
177
185
  fieldValue.serialize(dataView, offset);
178
186
  offset += size;
179
187
  }
180
- return buffer;
188
+ if (outputType === 'number') {
189
+ return structSize;
190
+ }
191
+ else {
192
+ return output;
193
+ }
181
194
  }
182
195
  }
183
196
  //# sourceMappingURL=struct.js.map
package/esm/struct.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import Bluebird from 'bluebird';
2
+ export declare type Resolvable<R> = R | PromiseLike<R>;
3
+ export declare type IterateFunction<T, R> = (item: T, index: number, arrayLength: number) => Resolvable<R>;
4
+ export interface Syncbird<R> extends Bluebird<R> {
5
+ valueOrPromise(): R | PromiseLike<R>;
6
+ then<U>(onFulfill?: (value: R) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Syncbird<U>;
7
+ then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => Resolvable<TResult1>) | null, onrejected?: ((reason: any) => Resolvable<TResult2>) | null): Syncbird<TResult1 | TResult2>;
8
+ }
9
+ interface SyncbirdStatic {
10
+ /**
11
+ * Iterate over an array, or a promise of an array,
12
+ * which contains promises (or a mix of promises and values) with the given iterator function with the signature `(item, index, value)`
13
+ * where item is the resolved value of a respective promise in the input array.
14
+ * Iteration happens serially. If any promise in the input array is rejected the returned promise is rejected as well.
15
+ *
16
+ * Resolves to the original array unmodified, this method is meant to be used for side effects.
17
+ * If the iterator function returns a promise or a thenable, the result for the promise is awaited for before continuing with next iteration.
18
+ */
19
+ each<R>(values: Resolvable<Iterable<Resolvable<R>>>, iterator: IterateFunction<R, any>): Syncbird<R[]>;
20
+ /**
21
+ * Reduce an array, or a promise of an array,
22
+ * which contains a promises (or a mix of promises and values) with the given `reducer` function with the signature `(total, current, index, arrayLength)`
23
+ * where `item` is the resolved value of a respective promise in the input array.
24
+ * If any promise in the input array is rejected the returned promise is rejected as well.
25
+ *
26
+ * If the reducer function returns a promise or a thenable, the result for the promise is awaited for before continuing with next iteration.
27
+ *
28
+ * *The original array is not modified. If no `initialValue` is given and the array doesn't contain at least 2 items,
29
+ * the callback will not be called and `undefined` is returned.
30
+ *
31
+ * If `initialValue` is given and the array doesn't have at least 1 item, `initialValue` is returned.*
32
+ */
33
+ reduce<R, U>(values: Resolvable<Iterable<Resolvable<R>>>, reducer: (total: U, current: R, index: number, arrayLength: number) => Resolvable<U>, initialValue?: U): Syncbird<U>;
34
+ /**
35
+ * Create a promise that is resolved with the given `value`. If `value` is a thenable or promise, the returned promise will assume its state.
36
+ */
37
+ resolve(): Syncbird<void>;
38
+ resolve<R>(value: Resolvable<R>): Syncbird<R>;
39
+ try<R>(fn: () => Resolvable<R>): Syncbird<R>;
40
+ attempt<R>(fn: () => Resolvable<R>): Syncbird<R>;
41
+ /**
42
+ * Configure long stack traces, warnings, monitoring and cancellation.
43
+ * Note that even though false is the default here, a development environment might be detected which automatically
44
+ * enables long stack traces and warnings.
45
+ */
46
+ config(options: {
47
+ /** Enable warnings */
48
+ warnings?: boolean | {
49
+ /** Enables all warnings except forgotten return statements. */
50
+ wForgottenReturn: boolean;
51
+ } | undefined;
52
+ /** Enable long stack traces */
53
+ longStackTraces?: boolean | undefined;
54
+ /** Enable cancellation */
55
+ cancellation?: boolean | undefined;
56
+ /** Enable monitoring */
57
+ monitoring?: boolean | undefined;
58
+ /** Enable async hooks */
59
+ asyncHooks?: boolean | undefined;
60
+ }): void;
61
+ new <R>(callback: (resolve: (thenableOrResult?: Resolvable<R>) => void, reject: (error?: any) => void, onCancel?: (callback: () => void) => void) => void): Syncbird<R>;
62
+ }
63
+ export declare const Syncbird: SyncbirdStatic;
64
+ export {};
65
+ //# sourceMappingURL=syncbird.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncbird.d.ts","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"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"}
package/esm/syncbird.js CHANGED
@@ -1,17 +1,28 @@
1
+ // cspell: ignore syncbird
1
2
  import Bluebird from 'bluebird';
2
3
  export const Syncbird = Bluebird.getNewLibraryCopy();
3
- const _then = Bluebird.prototype.then;
4
- Syncbird.prototype.then = function (onfulfilled, onrejected) {
4
+ Syncbird.config({
5
+ asyncHooks: false,
6
+ cancellation: false,
7
+ longStackTraces: false,
8
+ monitoring: false,
9
+ warnings: false,
10
+ });
11
+ // Bluebird uses `_then` internally.
12
+ const _then = Syncbird.prototype._then;
13
+ Syncbird.prototype._then = function (onfulfilled, onrejected, _, receiver, internalData) {
5
14
  if (this.isFulfilled()) {
6
15
  if (!onfulfilled) {
7
16
  return this;
8
17
  }
9
18
  else {
10
- return Syncbird.resolve(onfulfilled(this.value()));
19
+ // Synchronously call `onfulfilled`, and wrap the result in a new `Syncbird` object.
20
+ return Syncbird.resolve(onfulfilled.call(receiver, this.value()));
11
21
  }
12
22
  }
13
23
  else {
14
- return _then.call(this, onfulfilled, onrejected);
24
+ // Forward to Bluebird's `_then` method.
25
+ return _then.call(this, onfulfilled, onrejected, _, receiver, internalData);
15
26
  }
16
27
  };
17
28
  Syncbird.prototype.valueOrPromise = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"syncbird.js","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA2BhC,MAAM,CAAC,MAAM,QAAQ,GAAmB,QAAQ,CAAC,iBAAiB,EAAS,CAAC;AAE5E,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACtC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAEtB,WAAiF,EACjF,UAAmF;IAEnF,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QACpB,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,IAAqC,CAAC;SAChD;aAAM;YACH,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAkC,CAAC;SACvF;KACJ;SAAM;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAkC,CAAC;KACrF;AACL,CAAC,CAAC;AAED,QAAQ,CAAC,SAAiB,CAAC,cAAc,GAAG;IACzC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACvB;SAAM;QACH,OAAO,IAAkB,CAAC;KAC7B;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"syncbird.js","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAkFhC,MAAM,CAAC,MAAM,QAAQ,GAAmB,QAAQ,CAAC,iBAAiB,EAAS,CAAC;AAE5E,QAAQ,CAAC,MAAM,CAAC;IACZ,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;CAClB,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,KAAK,GAAI,QAAQ,CAAC,SAAiB,CAAC,KAAK,CAAC;AAChD,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,UAEvB,WAAuD,EACvD,UAAyD,EACzD,CAAQ,EACR,QAAiB,EACjB,YAAqB;IAErB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QACpB,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,IAAI,CAAC;SACf;aAAM;YACH,oFAAoF;YACpF,OAAO,QAAQ,CAAC,OAAO,CACnB,WAAW,CAAC,IAAI,CACZ,QAAQ,EACR,IAAI,CAAC,KAAK,EAAE,CACf,CACJ,CAAC;SACL;KACJ;SAAM;QACH,wCAAwC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC/E;AACL,CAAC,CAAC;AAED,QAAQ,CAAC,SAAiB,CAAC,cAAc,GAAG;IACzC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACvB;SAAM;QACH,OAAO,IAAkB,CAAC;KAC7B;AACL,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from "../basic/index.js";
2
+ declare type DataViewBigInt64Getter = (dataView: DataView, byteOffset: number, littleEndian: boolean | undefined) => bigint;
3
+ declare type DataViewBigInt64Setter = (dataView: DataView, byteOffset: number, value: bigint, littleEndian: boolean | undefined) => void;
4
+ export declare class BigIntFieldType {
5
+ readonly TTypeScriptType: bigint;
6
+ readonly size: number;
7
+ readonly getter: DataViewBigInt64Getter;
8
+ readonly setter: DataViewBigInt64Setter;
9
+ constructor(size: number, getter: DataViewBigInt64Getter, setter: DataViewBigInt64Setter);
10
+ static readonly Int64: BigIntFieldType;
11
+ static readonly Uint64: BigIntFieldType;
12
+ }
13
+ export declare class BigIntFieldDefinition<TType extends BigIntFieldType = BigIntFieldType, TTypeScriptType = TType["TTypeScriptType"]> extends StructFieldDefinition<void, TTypeScriptType> {
14
+ readonly type: TType;
15
+ constructor(type: TType, _typescriptType?: TTypeScriptType);
16
+ getSize(): number;
17
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): BigIntFieldValue<this>;
18
+ deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): BigIntFieldValue<this>;
19
+ deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<BigIntFieldValue<this>>;
20
+ }
21
+ export declare class BigIntFieldValue<TDefinition extends BigIntFieldDefinition<BigIntFieldType, any>> extends StructFieldValue<TDefinition> {
22
+ serialize(dataView: DataView, offset: number): void;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=bigint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAGA,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,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,SAAS,KAAK,MAAM,CAAC;AAEpH,aAAK,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;AAEjI,qBAAa,eAAe;IACxB,SAAgB,eAAe,EAAG,MAAM,CAAC;IAEzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,MAAM,EAAE,sBAAsB,CAAC;IAE/C,SAAgB,MAAM,EAAE,sBAAsB,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,sBAAsB;IAOlC,gBAAuB,KAAK,kBAAoD;IAEhF,gBAAuB,MAAM,kBAAsD;CACtF;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;CAQ7D"}
@@ -0,0 +1,45 @@
1
+ // cspell: ignore syncbird
2
+ import { getBigInt64, getBigUint64, setBigInt64, setBigUint64 } from '@yume-chan/dataview-bigint-polyfill/esm/fallback.js';
3
+ import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
4
+ import { Syncbird } from "../syncbird.js";
5
+ export class BigIntFieldType {
6
+ TTypeScriptType;
7
+ size;
8
+ getter;
9
+ setter;
10
+ constructor(size, getter, setter) {
11
+ this.size = size;
12
+ this.getter = getter;
13
+ this.setter = setter;
14
+ }
15
+ static Int64 = new BigIntFieldType(8, getBigInt64, setBigInt64);
16
+ static Uint64 = new BigIntFieldType(8, getBigUint64, setBigUint64);
17
+ }
18
+ export class BigIntFieldDefinition extends StructFieldDefinition {
19
+ type;
20
+ constructor(type, _typescriptType) {
21
+ super();
22
+ this.type = type;
23
+ }
24
+ getSize() {
25
+ return this.type.size;
26
+ }
27
+ create(options, struct, value) {
28
+ return new BigIntFieldValue(this, options, struct, value);
29
+ }
30
+ deserialize(options, stream, struct) {
31
+ return Syncbird.try(() => {
32
+ return stream.read(this.getSize());
33
+ }).then(array => {
34
+ const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
35
+ const value = this.type.getter(view, 0, options.littleEndian);
36
+ return this.create(options, struct, value);
37
+ }).valueOrPromise();
38
+ }
39
+ }
40
+ export class BigIntFieldValue extends StructFieldValue {
41
+ serialize(dataView, offset) {
42
+ this.definition.type.setter(dataView, offset, this.value, this.options.littleEndian);
43
+ }
44
+ }
45
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAoG,MAAM,mBAAmB,CAAC;AAC9K,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,MAAM,OAAO,eAAe;IACR,eAAe,CAAU;IAEzB,IAAI,CAAS;IAEb,MAAM,CAAyB;IAE/B,MAAM,CAAyB;IAE/C,YACI,IAAY,EACZ,MAA8B,EAC9B,MAA8B;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,MAAM,CAAU,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEzE,MAAM,CAAU,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;;AAGvF,MAAM,OAAO,qBAGP,SAAQ,qBAGT;IACe,IAAI,CAAQ;IAE5B,YAAmB,IAAW,EAAE,eAAiC;QAC7D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,MAAM,CACT,OAAgC,EAChC,MAAmB,EACnB,KAAsB;QAEtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAYe,WAAW,CACvB,OAAgC,EAChC,MAA8D,EAC9D,MAAmB;QAEnB,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;YACrB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACZ,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAC1B,IAAI,EACJ,CAAC,EACD,OAAO,CAAC,YAAY,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAO,gBAEP,SAAQ,gBAA6B;IAChC,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CACvB,QAAQ,EACR,MAAM,EACN,IAAI,CAAC,KAAM,EACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}