@yume-chan/struct 0.0.5 → 0.0.10

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 +23 -0
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE +21 -21
  4. package/README.md +720 -643
  5. package/dts/basic/context.d.ts +10 -17
  6. package/dts/basic/context.d.ts.map +1 -1
  7. package/dts/basic/definition.d.ts +23 -23
  8. package/dts/basic/definition.d.ts.map +1 -1
  9. package/dts/basic/field-value.d.ts +38 -0
  10. package/dts/basic/field-value.d.ts.map +1 -0
  11. package/dts/basic/index.d.ts +2 -2
  12. package/dts/basic/index.d.ts.map +1 -1
  13. package/dts/basic/struct-value.d.ts +24 -0
  14. package/dts/basic/struct-value.d.ts.map +1 -0
  15. package/dts/index.d.ts +1 -0
  16. package/dts/index.d.ts.map +1 -1
  17. package/dts/struct.d.ts +44 -47
  18. package/dts/struct.d.ts.map +1 -1
  19. package/dts/syncbird.d.ts +20 -0
  20. package/dts/syncbird.d.ts.map +1 -0
  21. package/dts/types/array-buffer.d.ts +22 -20
  22. package/dts/types/array-buffer.d.ts.map +1 -1
  23. package/dts/types/fixed-length-array-buffer.d.ts +1 -3
  24. package/dts/types/fixed-length-array-buffer.d.ts.map +1 -1
  25. package/dts/types/index.d.ts +0 -1
  26. package/dts/types/index.d.ts.map +1 -1
  27. package/dts/types/number.d.ts +11 -10
  28. package/dts/types/number.d.ts.map +1 -1
  29. package/dts/types/variable-length-array-buffer.d.ts +21 -19
  30. package/dts/types/variable-length-array-buffer.d.ts.map +1 -1
  31. package/dts/{types/utils.d.ts → utils.d.ts} +3 -0
  32. package/dts/utils.d.ts.map +1 -0
  33. package/esm/basic/context.js +1 -1
  34. package/esm/basic/context.js.map +1 -1
  35. package/esm/basic/definition.js +9 -11
  36. package/esm/basic/definition.js.map +1 -1
  37. package/esm/basic/field-value.js +35 -0
  38. package/esm/basic/field-value.js.map +1 -0
  39. package/esm/basic/index.js +2 -2
  40. package/esm/basic/index.js.map +1 -1
  41. package/esm/basic/struct-value.js +36 -0
  42. package/esm/basic/struct-value.js.map +1 -0
  43. package/esm/index.js +1 -0
  44. package/esm/index.js.map +1 -1
  45. package/esm/struct.js +103 -176
  46. package/esm/struct.js.map +1 -1
  47. package/esm/syncbird.js +25 -0
  48. package/esm/syncbird.js.map +1 -0
  49. package/esm/types/array-buffer.js +83 -107
  50. package/esm/types/array-buffer.js.map +1 -1
  51. package/esm/types/fixed-length-array-buffer.js +5 -15
  52. package/esm/types/fixed-length-array-buffer.js.map +1 -1
  53. package/esm/types/index.js +0 -1
  54. package/esm/types/index.js.map +1 -1
  55. package/esm/types/number.js +35 -53
  56. package/esm/types/number.js.map +1 -1
  57. package/esm/types/variable-length-array-buffer.js +57 -68
  58. package/esm/types/variable-length-array-buffer.js.map +1 -1
  59. package/esm/utils.js +17 -0
  60. package/esm/utils.js.map +1 -0
  61. package/package.json +47 -50
  62. package/src/basic/context.ts +32 -40
  63. package/src/basic/definition.ts +72 -69
  64. package/src/basic/{runtime-value.ts → field-value.ts} +67 -72
  65. package/src/basic/index.ts +4 -4
  66. package/src/basic/struct-value.ts +39 -0
  67. package/src/index.ts +5 -4
  68. package/src/struct.ts +595 -579
  69. package/src/syncbird.ts +53 -0
  70. package/src/types/array-buffer.ts +194 -171
  71. package/src/types/fixed-length-array-buffer.ts +17 -27
  72. package/src/types/index.ts +4 -5
  73. package/src/types/number.ts +114 -101
  74. package/src/types/variable-length-array-buffer.ts +142 -121
  75. package/src/{types/utils.ts → utils.ts} +62 -47
  76. package/cjs/basic/context.js +0 -7
  77. package/cjs/basic/context.js.map +0 -1
  78. package/cjs/basic/definition.js +0 -26
  79. package/cjs/basic/definition.js.map +0 -1
  80. package/cjs/basic/index.js +0 -8
  81. package/cjs/basic/index.js.map +0 -1
  82. package/cjs/basic/runtime-object.js +0 -34
  83. package/cjs/basic/runtime-object.js.map +0 -1
  84. package/cjs/basic/runtime-value.js +0 -41
  85. package/cjs/basic/runtime-value.js.map +0 -1
  86. package/cjs/index.js +0 -10
  87. package/cjs/index.js.map +0 -1
  88. package/cjs/struct.js +0 -259
  89. package/cjs/struct.js.map +0 -1
  90. package/cjs/types/array-buffer.js +0 -137
  91. package/cjs/types/array-buffer.js.map +0 -1
  92. package/cjs/types/fixed-length-array-buffer.js +0 -21
  93. package/cjs/types/fixed-length-array-buffer.js.map +0 -1
  94. package/cjs/types/index.js +0 -9
  95. package/cjs/types/index.js.map +0 -1
  96. package/cjs/types/number.js +0 -68
  97. package/cjs/types/number.js.map +0 -1
  98. package/cjs/types/utils.js +0 -11
  99. package/cjs/types/utils.js.map +0 -1
  100. package/cjs/types/variable-length-array-buffer.js +0 -85
  101. package/cjs/types/variable-length-array-buffer.js.map +0 -1
  102. package/dts/basic/runtime-object.d.ts +0 -17
  103. package/dts/basic/runtime-object.d.ts.map +0 -1
  104. package/dts/basic/runtime-value.d.ts +0 -39
  105. package/dts/basic/runtime-value.d.ts.map +0 -1
  106. package/dts/types/utils.d.ts.map +0 -1
  107. package/esm/basic/runtime-object.js +0 -28
  108. package/esm/basic/runtime-object.js.map +0 -1
  109. package/esm/basic/runtime-value.js +0 -38
  110. package/esm/basic/runtime-value.js.map +0 -1
  111. package/esm/types/utils.js +0 -7
  112. package/esm/types/utils.js.map +0 -1
  113. package/src/basic/context.spec.ts +0 -9
  114. package/src/basic/definition.spec.ts +0 -26
  115. package/src/basic/runtime-object.spec.ts +0 -38
  116. package/src/basic/runtime-object.ts +0 -36
  117. package/src/basic/runtime-value.spec.ts +0 -71
  118. package/src/types/array-buffer.spec.ts +0 -88
  119. package/src/types/number.spec.ts +0 -262
  120. package/tsconfig.cjs.json +0 -11
  121. package/tsconfig.esm.json +0 -15
@@ -1,27 +1,20 @@
1
- /**
2
- * Context with enough methods to serialize a struct
3
- */
4
- export interface StructSerializationContext {
1
+ export interface StructDeserializeStream {
5
2
  /**
6
- * Encode the specified string into an ArrayBuffer using UTF-8 encoding
3
+ * Read data from the underlying data source.
4
+ *
5
+ * Stream must return exactly `length` bytes or data. If that's not possible
6
+ * (due to end of file or other error condition), it must throw an error.
7
7
  */
8
- encodeUtf8(input: string): ArrayBuffer;
8
+ read(length: number): ArrayBuffer;
9
9
  }
10
- /**
11
- * Context with enough methods to deserialize a struct
12
- */
13
- export interface StructDeserializationContext extends StructSerializationContext {
14
- /**
15
- * Decode the specified `ArrayBuffer` using UTF-8 encoding
16
- */
17
- decodeUtf8(buffer: ArrayBuffer): string;
10
+ export interface StructAsyncDeserializeStream {
18
11
  /**
19
12
  * Read data from the underlying data source.
20
13
  *
21
- * Context should return exactly `length` bytes or data. If that's not possible
22
- * (due to end of file or other error condition), it should throw an error.
14
+ * Context must return exactly `length` bytes or data. If that's not possible
15
+ * (due to end of file or other error condition), it must throw an error.
23
16
  */
24
- read(length: number): ArrayBuffer | Promise<ArrayBuffer>;
17
+ read(length: number): Promise<ArrayBuffer>;
25
18
  }
26
19
  export interface StructOptions {
27
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/basic/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC5E;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IAExC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAExD,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/basic/context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IACzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAExD,CAAC"}
@@ -1,48 +1,48 @@
1
- import type { StructDeserializationContext, StructOptions, StructSerializationContext } from './context';
2
- import type { FieldRuntimeValue } from './runtime-value';
3
- declare type ValueOrPromise<T> = T | Promise<T>;
1
+ import type { StructAsyncDeserializeStream, StructDeserializeStream, StructOptions } from './context';
2
+ import type { StructFieldValue } from './field-value';
3
+ import type { StructValue } from './struct-value';
4
4
  /**
5
5
  * A field definition is a bridge between its type and its runtime value.
6
6
  *
7
- * `Struct` record fields in a list of `FieldDefinition`s.
7
+ * `Struct` record fields in a list of `StructFieldDefinition`s.
8
8
  *
9
9
  * When `Struct#create` or `Struct#deserialize` are called, each field's definition
10
- * crates its own type of `FieldRuntimeValue` to manage the field value in that `Struct` instance.
10
+ * crates its own type of `StructFieldValue` to manage the field value in that `Struct` instance.
11
11
  *
12
- * One `FieldDefinition` can represents multiple similar types, just returns the corresponding
13
- * `FieldRuntimeValue` when `createValue` was called.
12
+ * One `StructFieldDefinition` can represents multiple similar types, just returns the corresponding
13
+ * `StructFieldValue` when `createValue` was called.
14
14
  *
15
15
  * @template TOptions TypeScript type of this definition's `options`.
16
- * @template TValueType TypeScript type of this field.
17
- * @template TOmitInit Optionally remove some fields from the init type. Should be a union of string literal types.
16
+ * @template TValue TypeScript type of this field.
17
+ * @template TOmitInitKey Optionally remove some fields from the init type. Should be a union of string literal types.
18
18
  */
19
- export declare abstract class FieldDefinition<TOptions = void, TValueType = unknown, TOmitInit = never> {
20
- readonly options: TOptions;
19
+ export declare abstract class StructFieldDefinition<TOptions = void, TValue = unknown, TOmitInitKey extends PropertyKey = never> {
21
20
  /**
22
- * When `T` is a type initiated `FieldDefinition`,
23
- * use `T['valueType']` to retrieve its `TValueType` type parameter.
21
+ * When `T` is a type initiated `StructFieldDefinition`,
22
+ * use `T['TValue']` to retrieve its `TValue` type parameter.
24
23
  */
25
- readonly valueType: TValueType;
24
+ readonly TValue: TValue;
26
25
  /**
27
- * When `T` is a type initiated `FieldDefinition`,
28
- * use `T['omitInitType']` to retrieve its `TOmitInit` type parameter.
26
+ * When `T` is a type initiated `StructFieldDefinition`,
27
+ * use `T['TOmitInitKey']` to retrieve its `TOmitInitKey` type parameter.
29
28
  */
30
- readonly omitInitType: TOmitInit;
29
+ readonly TOmitInitKey: TOmitInitKey;
30
+ readonly options: TOptions;
31
31
  constructor(options: TOptions);
32
32
  /**
33
33
  * When implemented in derived classes, returns the size (or minimal size if it's dynamic) of this field.
34
34
  *
35
- * Actual size can be retrieved from `FieldRuntimeValue#getSize`
35
+ * Actual size can be retrieved from `StructFieldValue#getSize`
36
36
  */
37
37
  abstract getSize(): number;
38
38
  /**
39
- * When implemented in derived classes, creates a `FieldRuntimeValue` by parsing the `context`.
39
+ * When implemented in derived classes, creates a `StructFieldValue` from a given `value`.
40
40
  */
41
- abstract deserialize(options: Readonly<StructOptions>, context: StructDeserializationContext, object: any): ValueOrPromise<FieldRuntimeValue<FieldDefinition<TOptions, TValueType, TOmitInit>>>;
41
+ abstract create(options: Readonly<StructOptions>, struct: StructValue, value: TValue): StructFieldValue<this>;
42
42
  /**
43
- * When implemented in derived classes, creates a `FieldRuntimeValue` from a given `value`.
43
+ * When implemented in derived classes, creates a `StructFieldValue` by parsing `context`.
44
44
  */
45
- abstract createValue(options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TValueType): FieldRuntimeValue<FieldDefinition<TOptions, TValueType, TOmitInit>>;
45
+ abstract deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): StructFieldValue<this>;
46
+ abstract deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<StructFieldValue<this>>;
46
47
  }
47
- export {};
48
48
  //# sourceMappingURL=definition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACzG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,aAAK,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,eAAe,CACjC,QAAQ,GAAG,IAAI,EACf,UAAU,GAAG,OAAO,EACpB,SAAS,GAAG,KAAK;IAEjB,SAAgB,OAAO,EAAE,QAAQ,CAAC;IAElC;;;OAGG;IACH,SAAgB,SAAS,EAAG,UAAU,CAAC;IAEvC;;;OAGG;IACH,SAAgB,YAAY,EAAG,SAAS,CAAC;gBAEtB,OAAO,EAAE,QAAQ;IAIpC;;;;OAIG;aACa,OAAO,IAAI,MAAM;IAEjC;;OAEG;aACa,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,GAAG,GACZ,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtF;;OAEG;aACa,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,UAAU,GAClB,iBAAiB,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;CACzE"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,qBAAqB,CACvC,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,OAAO,EAChB,YAAY,SAAS,WAAW,GAAG,KAAK;IAExC;;;OAGG;IACH,SAAgB,MAAM,EAAG,MAAM,CAAC;IAEhC;;;OAGG;IACH,SAAgB,YAAY,EAAG,YAAY,CAAC;IAE5C,SAAgB,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,QAAQ;IAIpC;;;;OAIG;aACa,OAAO,IAAI,MAAM;IAEjC;;OAEG;aACa,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACd,gBAAgB,CAAC,IAAI,CAAC;IAEzB;;OAEG;aACa,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;aACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CACrC"}
@@ -0,0 +1,38 @@
1
+ import type { StructOptions } from './context';
2
+ import type { StructFieldDefinition } from './definition';
3
+ import type { StructValue } from './struct-value';
4
+ /**
5
+ * Field runtime value manages one field of one `Struct` instance.
6
+ *
7
+ * If one `StructFieldDefinition` needs to change other field's semantics
8
+ * It can override other fields' `StructFieldValue` in its own `StructFieldValue`'s constructor
9
+ */
10
+ export declare abstract class StructFieldValue<TDefinition extends StructFieldDefinition<any, any, any> = StructFieldDefinition<any, any, any>> {
11
+ /** Gets the definition associated with this runtime value */
12
+ readonly definition: TDefinition;
13
+ /** Gets the options of the associated `Struct` */
14
+ readonly options: Readonly<StructOptions>;
15
+ /** Gets the associated `Struct` instance */
16
+ readonly struct: StructValue;
17
+ protected value: TDefinition['TValue'];
18
+ constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue']);
19
+ /**
20
+ * Gets size of this field. By default, it returns its `definition`'s size.
21
+ *
22
+ * When overridden in derived classes, can have custom logic to calculate the actual size.
23
+ */
24
+ getSize(): number;
25
+ /**
26
+ * When implemented in derived classes, returns the current value of this field
27
+ */
28
+ get(): TDefinition['TValue'];
29
+ /**
30
+ * When implemented in derived classes, update the current value of this field
31
+ */
32
+ set(value: TDefinition['TValue']): void;
33
+ /**
34
+ * When implemented in derived classes, serializes this field into `dataView` at `offset`
35
+ */
36
+ abstract serialize(dataView: DataView, offset: number): void;
37
+ }
38
+ //# sourceMappingURL=field-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAE/F,6DAA6D;IAC7D,SAAgB,UAAU,EAAE,WAAW,CAAC;IAExC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAGnC,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC;IAQhC;;;;OAIG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;IAInC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9C;;OAEG;aACa,SAAS,CACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACf,IAAI;CACV"}
@@ -1,5 +1,5 @@
1
1
  export * from './context';
2
2
  export * from './definition';
3
- export * from './runtime-value';
4
- export * from './runtime-object';
3
+ export * from './field-value';
4
+ export * from './struct-value';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/basic/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/basic/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { StructFieldValue } from './field-value';
2
+ /**
3
+ * Manages the initialization process of a struct value
4
+ */
5
+ export declare class StructValue {
6
+ /**
7
+ * Gets the result struct value object
8
+ */
9
+ readonly value: Record<PropertyKey, unknown>;
10
+ /**
11
+ * Sets a `StructFieldValue` for `key`
12
+ *
13
+ * @param key The field name
14
+ * @param value The associated `StructFieldValue`
15
+ */
16
+ set(key: PropertyKey, value: StructFieldValue): void;
17
+ /**
18
+ * Gets a previously `StructFieldValue` for `key`
19
+ *
20
+ * @param key The field name
21
+ */
22
+ get(key: PropertyKey): StructFieldValue;
23
+ }
24
+ //# sourceMappingURL=struct-value.d.ts.map
@@ -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,eAAe,CAAC;AAEtD;;GAEG;AACH,qBAAa,WAAW;IAGpB;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAM;IAEzD;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAW3D;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,gBAAgB;CAGjD"}
package/dts/index.d.ts CHANGED
@@ -2,4 +2,5 @@ export * from './basic';
2
2
  export * from './struct';
3
3
  export { Struct as default } from './struct';
4
4
  export * from './types';
5
+ export * from './utils';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
package/dts/struct.d.ts CHANGED
@@ -1,34 +1,32 @@
1
- import { FieldDefinition, StructDeserializationContext, StructOptions, StructSerializationContext } from './basic';
2
- import { ArrayBufferFieldType, ArrayBufferLikeFieldType, Evaluate, FixedLengthArrayBufferLikeFieldDefinition, FixedLengthArrayBufferLikeFieldOptions, Identity, KeysOfType, NumberFieldType, Overwrite, StringFieldType, Uint8ClampedArrayFieldType, VariableLengthArrayBufferLikeFieldDefinition, VariableLengthArrayBufferLikeFieldOptions } from './types';
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";
3
4
  export interface StructLike<TValue> {
4
- deserialize(context: StructDeserializationContext): Promise<TValue>;
5
+ deserialize(stream: StructDeserializeStream | StructAsyncDeserializeStream): Promise<TValue>;
5
6
  }
6
- export declare type Awaited<T> = T extends Promise<infer R> ? Awaited<R> : T;
7
7
  /**
8
8
  * Extract the value type of the specified `Struct`
9
- *
10
- * The lack of generic constraint is on purpose to allow `StructLike` types
11
9
  */
12
10
  export declare type StructValueType<T extends StructLike<any>> = Awaited<ReturnType<T['deserialize']>>;
13
11
  /**
14
- * Create a new `Struct` type with `TDescriptor` appended
12
+ * Create a new `Struct` type with `TDefinition` appended
15
13
  */
16
- declare type AddFieldDescriptor<TFields extends object, TOmitInit extends string, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends FieldDefinition<any, any, any>> = Identity<Struct<Evaluate<TFields & Record<TFieldName, TDefinition['valueType']>>, TOmitInit | TDefinition['omitInitType'], TExtra, TPostDeserialized>>;
14
+ declare type AddFieldDescriptor<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>> = Identity<Struct<Evaluate<TFields & Record<TFieldName, TDefinition['TValue']>>, TOmitInitKey | TDefinition['TOmitInitKey'], TExtra, TPostDeserialized>>;
17
15
  /**
18
- * Similar to `ArrayBufferLikeFieldCreator`, but bind to a `ArrayBufferLikeFieldType`
16
+ * Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
19
17
  */
20
- interface ArrayBufferTypeFieldDefinitionCreator<TFields extends object, TOmitInit extends string, TExtra extends object, TPostDeserialized, TType extends ArrayBufferLikeFieldType> {
21
- <TName extends PropertyKey, TTypeScriptType = TType['valueType']>(name: TName, options: FixedLengthArrayBufferLikeFieldOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInit, TExtra, TPostDeserialized, TName, FixedLengthArrayBufferLikeFieldDefinition<TType, FixedLengthArrayBufferLikeFieldOptions>>;
22
- <TName extends PropertyKey, TLengthField extends KeysOfType<TFields, number | string>, TOptions extends VariableLengthArrayBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType['valueType']>(name: TName, options: TOptions, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInit, TExtra, TPostDeserialized, TName, VariableLengthArrayBufferLikeFieldDefinition<TType, TOptions>>;
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>>;
23
21
  }
24
- export declare type StructPostDeserialized<TValue, TPostDeserialized> = (this: TValue, object: TValue) => TPostDeserialized;
25
- export declare type StructDeserializedType<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
26
- export declare class Struct<TFields extends object = {}, TOmitInit extends string = never, TExtra extends object = {}, TPostDeserialized = undefined> implements StructLike<StructDeserializedType<TFields, TExtra, TPostDeserialized>> {
27
- readonly fieldsType: TFields;
28
- readonly omitInitType: TOmitInit;
29
- readonly extraType: TExtra;
30
- readonly initType: Evaluate<Omit<TFields, TOmitInit>>;
31
- readonly deserializedType: StructDeserializedType<TFields, TExtra, TPostDeserialized>;
22
+ export declare type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
23
+ export declare type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
24
+ export declare class Struct<TFields extends object = {}, TOmitInitKey extends PropertyKey = never, TExtra extends object = {}, TPostDeserialized = undefined> implements StructLike<StructDeserializedResult<TFields, TExtra, TPostDeserialized>> {
25
+ readonly TFields: TFields;
26
+ readonly TOmitInitKey: TOmitInitKey;
27
+ readonly TExtra: TExtra;
28
+ readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
29
+ readonly TDeserializeResult: StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
32
30
  readonly options: Readonly<StructOptions>;
33
31
  private _size;
34
32
  /**
@@ -38,92 +36,91 @@ export declare class Struct<TFields extends object = {}, TOmitInit extends strin
38
36
  private _fields;
39
37
  private _extra;
40
38
  private _postDeserialized?;
41
- constructor(options?: Partial<StructOptions>);
39
+ constructor(options?: Partial<Readonly<StructOptions>>);
42
40
  /**
43
- * Appends a `FieldDefinition` to the `Struct
41
+ * Appends a `StructFieldDefinition` to the `Struct
44
42
  */
45
- field<TName extends PropertyKey, TDefinition extends FieldDefinition<any, any, any>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInit, TExtra, TPostDeserialized, TName, TDefinition>;
43
+ field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<any, any, any>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
46
44
  /**
47
45
  * Merges (flats) another `Struct`'s fields and extra fields into this one.
48
46
  */
49
- fields<TOther extends Struct<any, any, any, any>>(other: TOther): Struct<TFields & TOther['fieldsType'], TOmitInit | TOther['omitInitType'], TExtra & TOther['extraType'], TPostDeserialized>;
47
+ fields<TOther extends Struct<any, any, any, any>>(other: TOther): Struct<TFields & TOther['TFields'], TOmitInitKey | TOther['TOmitInitKey'], TExtra & TOther['TExtra'], TPostDeserialized>;
50
48
  private number;
51
49
  /**
52
50
  * Appends an `int8` field to the `Struct`
53
51
  */
54
- int8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
52
+ int8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
55
53
  /**
56
54
  * Appends an `uint8` field to the `Struct`
57
55
  */
58
- uint8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
56
+ uint8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
59
57
  /**
60
58
  * Appends an `int16` field to the `Struct`
61
59
  */
62
- int16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
60
+ int16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
63
61
  /**
64
62
  * Appends an `uint16` field to the `Struct`
65
63
  */
66
- uint16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
64
+ uint16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
67
65
  /**
68
66
  * Appends an `int32` field to the `Struct`
69
67
  */
70
- int32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int32']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
68
+ int32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int32']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
71
69
  /**
72
70
  * Appends an `uint32` field to the `Struct`
73
71
  */
74
- uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['valueType']>(name: TName, typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
72
+ uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName, typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
75
73
  /**
76
74
  * Appends an `int64` field to the `Struct`
77
75
  *
78
76
  * Requires native `BigInt` support
79
77
  */
80
- int64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int64']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
78
+ int64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int64']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
81
79
  /**
82
80
  * Appends an `uint64` field to the `Struct`
83
81
  *
84
82
  * Requires native `BigInt` support
85
83
  */
86
- uint64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint64']['valueType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInit, TExtra, TPostDeserialized>;
84
+ uint64<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint64']['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
87
85
  private arrayBufferLike;
88
- arrayBuffer: ArrayBufferTypeFieldDefinitionCreator<TFields, TOmitInit, TExtra, TPostDeserialized, ArrayBufferFieldType>;
89
- uint8ClampedArray: ArrayBufferTypeFieldDefinitionCreator<TFields, TOmitInit, TExtra, TPostDeserialized, Uint8ClampedArrayFieldType>;
90
- string: ArrayBufferTypeFieldDefinitionCreator<TFields, TOmitInit, TExtra, TPostDeserialized, StringFieldType>;
86
+ arrayBuffer: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, ArrayBufferFieldType>;
87
+ uint8ClampedArray: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ClampedArrayFieldType>;
88
+ string: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringFieldType>;
91
89
  /**
92
- * Adds some extra fields into every Struct value.
90
+ * Adds some extra properties into every `Struct` value.
93
91
  *
94
- * Extra fields will not affect serialize or deserialize process.
92
+ * Extra properties will not affect serialize or deserialize process.
95
93
  *
96
- * Multiple calls to `extra` will merge all values together.
94
+ * Multiple calls to `extra` will merge all properties together.
97
95
  *
98
96
  * @param value
99
- * An object containing anything you want to add to the result object. Accessors and methods are also allowed.
97
+ * An object containing properties to be added to the result value. Accessors and methods are also allowed.
100
98
  */
101
- extra<T extends Record<Exclude<keyof T, Exclude<keyof T, keyof TFields>>, never>>(value: T & ThisType<Overwrite<Overwrite<TExtra, T>, TFields>>): Struct<TFields, TOmitInit, Overwrite<TExtra, T>, TPostDeserialized>;
99
+ extra<T extends Record<Exclude<keyof T, Exclude<keyof T, keyof TFields>>, never>>(value: T & ThisType<Overwrite<Overwrite<TExtra, T>, TFields>>): Struct<TFields, TOmitInitKey, Overwrite<TExtra, T>, TPostDeserialized>;
102
100
  /**
103
101
  * Registers (or replaces) a custom callback to be run after deserialized.
104
102
  *
105
103
  * A callback returning `never` (always throw an error)
106
104
  * will also change the return type of `deserialize` to `never`.
107
105
  */
108
- postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInit, TExtra, never>;
106
+ postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInitKey, TExtra, never>;
109
107
  /**
110
108
  * Registers (or replaces) a custom callback to be run after deserialized.
111
109
  *
112
110
  * A callback returning `void` means it modify the result object in-place
113
111
  * (or doesn't modify it at all), so `deserialize` will still return the result object.
114
112
  */
115
- postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInit, TExtra, undefined>;
113
+ postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInitKey, TExtra, undefined>;
116
114
  /**
117
115
  * Registers (or replaces) a custom callback to be run after deserialized.
118
116
  *
119
117
  * A callback returning anything other than `undefined`
120
118
  * will `deserialize` to return that object instead.
121
119
  */
122
- postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInit, TExtra, TPostSerialize>;
123
- private initializeObject;
124
- create(init: Evaluate<Omit<TFields, TOmitInit>>, context: StructSerializationContext): Overwrite<TExtra, TFields>;
125
- deserialize(context: StructDeserializationContext): Promise<StructDeserializedType<TFields, TExtra, TPostDeserialized>>;
126
- serialize(init: Evaluate<Omit<TFields, TOmitInit>>, context: StructSerializationContext): ArrayBuffer;
120
+ postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
121
+ deserialize(stream: StructDeserializeStream): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
122
+ deserialize(stream: StructAsyncDeserializeStream): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
123
+ serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): ArrayBuffer;
127
124
  }
128
125
  export {};
129
126
  //# sourceMappingURL=struct.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import Bluebird from 'bluebird';
2
+ declare type Resolvable<R> = R | PromiseLike<R>;
3
+ export interface Syncbird<R> extends Bluebird<R> {
4
+ valueOrPromise(): R | PromiseLike<R>;
5
+ then<U>(onFulfill?: (value: R) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Syncbird<U>;
6
+ then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => Resolvable<TResult1>) | null, onrejected?: ((reason: any) => Resolvable<TResult2>) | null): Syncbird<TResult1 | TResult2>;
7
+ }
8
+ interface SyncbirdStatic {
9
+ /**
10
+ * Create a promise that is resolved with the given `value`. If `value` is a thenable or promise, the returned promise will assume its state.
11
+ */
12
+ resolve(): Syncbird<void>;
13
+ resolve<R>(value: Resolvable<R>): Syncbird<R>;
14
+ try<R>(fn: () => Resolvable<R>): Syncbird<R>;
15
+ attempt<R>(fn: () => Resolvable<R>): Syncbird<R>;
16
+ new <R>(callback: (resolve: (thenableOrResult?: Resolvable<R>) => void, reject: (error?: any) => void, onCancel?: (callback: () => void) => void) => void): Syncbird<R>;
17
+ }
18
+ export declare const Syncbird: SyncbirdStatic;
19
+ export {};
20
+ //# sourceMappingURL=syncbird.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncbird.d.ts","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,aAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExC,MAAM,WAAW,QAAQ,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC5C,cAAc,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxG,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EACzD,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAC5D,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;CACpC;AAED,UAAU,cAAc;IACpB;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjD,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC3K;AAED,eAAO,MAAM,QAAQ,EAAE,cAAoD,CAAC"}
@@ -1,24 +1,24 @@
1
- import { FieldDefinition, FieldRuntimeValue, StructDeserializationContext, StructOptions, StructSerializationContext } from '../basic';
1
+ import { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
2
2
  /**
3
3
  * Base class for all types that
4
4
  * can be converted from an ArrayBuffer when deserialized,
5
5
  * and need to be converted to an ArrayBuffer when serializing
6
6
  *
7
- * @template TType The actual TypeScript type of this type
7
+ * @template TValue The actual TypeScript type of this type
8
8
  * @template TTypeScriptType Optional another type (should be compatible with `TType`)
9
9
  * specified by user when creating field definitions.
10
10
  */
11
- export declare abstract class ArrayBufferLikeFieldType<TType = unknown, TTypeScriptType = TType> {
12
- readonly valueType: TTypeScriptType;
11
+ export declare abstract class ArrayBufferLikeFieldType<TValue = unknown, TTypeScriptType = TValue> {
12
+ readonly TTypeScriptType: TTypeScriptType;
13
13
  /**
14
14
  * When implemented in derived classes, converts the type-specific `value` to an `ArrayBuffer`
15
15
  *
16
16
  * This function should be "pure", i.e.,
17
17
  * same `value` should always be converted to `ArrayBuffer`s that have same content.
18
18
  */
19
- abstract toArrayBuffer(value: TType, context: StructSerializationContext): ArrayBuffer;
19
+ abstract toArrayBuffer(value: TValue): ArrayBuffer;
20
20
  /** When implemented in derived classes, converts the `ArrayBuffer` to a type-specific value */
21
- abstract fromArrayBuffer(arrayBuffer: ArrayBuffer, context: StructDeserializationContext): TType;
21
+ abstract fromArrayBuffer(arrayBuffer: ArrayBuffer): TValue;
22
22
  /**
23
23
  * When implemented in derived classes, gets the size in byte of the type-specific `value`.
24
24
  *
@@ -26,7 +26,7 @@ export declare abstract class ArrayBufferLikeFieldType<TType = unknown, TTypeScr
26
26
  * implementer should returns `-1` so the caller will get its size by first converting it to
27
27
  * an `ArrayBuffer` (and cache the result).
28
28
  */
29
- abstract getSize(value: TType): number;
29
+ abstract getSize(value: TValue): number;
30
30
  }
31
31
  /** An ArrayBufferLike type that's actually an `ArrayBuffer` */
32
32
  export declare class ArrayBufferFieldType extends ArrayBufferLikeFieldType<ArrayBuffer> {
@@ -36,7 +36,7 @@ export declare class ArrayBufferFieldType extends ArrayBufferLikeFieldType<Array
36
36
  fromArrayBuffer(arrayBuffer: ArrayBuffer): ArrayBuffer;
37
37
  getSize(value: ArrayBuffer): number;
38
38
  }
39
- /** Am ArrayBufferLike type that converts to/from the `ArrayBuffer` from/to a `Uint8ClampedArray` */
39
+ /** Am ArrayBufferLike type that converts between `ArrayBuffer` and `Uint8ClampedArray` */
40
40
  export declare class Uint8ClampedArrayFieldType extends ArrayBufferLikeFieldType<Uint8ClampedArray, Uint8ClampedArray> {
41
41
  static readonly instance: Uint8ClampedArrayFieldType;
42
42
  protected constructor();
@@ -44,26 +44,28 @@ export declare class Uint8ClampedArrayFieldType extends ArrayBufferLikeFieldType
44
44
  fromArrayBuffer(arrayBuffer: ArrayBuffer): Uint8ClampedArray;
45
45
  getSize(value: Uint8ClampedArray): number;
46
46
  }
47
- /** Am ArrayBufferLike type that converts to/from the `ArrayBuffer` from/to a `string` */
47
+ /** An ArrayBufferLike type that converts between `ArrayBuffer` and `string` */
48
48
  export declare class StringFieldType<TTypeScriptType = string> extends ArrayBufferLikeFieldType<string, TTypeScriptType> {
49
49
  static readonly instance: StringFieldType<string>;
50
- toArrayBuffer(value: string, context: StructSerializationContext): ArrayBuffer;
51
- fromArrayBuffer(arrayBuffer: ArrayBuffer, context: StructDeserializationContext): string;
50
+ toArrayBuffer(value: string): ArrayBuffer;
51
+ fromArrayBuffer(arrayBuffer: ArrayBuffer): string;
52
52
  getSize(): number;
53
53
  }
54
- export declare abstract class ArrayBufferLikeFieldDefinition<TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType, TOptions = void, TOmitInit = never> extends FieldDefinition<TOptions, TType['valueType'], TOmitInit> {
54
+ export declare abstract class ArrayBufferLikeFieldDefinition<TType extends ArrayBufferLikeFieldType<any, any> = ArrayBufferLikeFieldType<unknown, unknown>, TOptions = void, TOmitInitKey extends PropertyKey = never> extends StructFieldDefinition<TOptions, TType['TTypeScriptType'], TOmitInitKey> {
55
55
  readonly type: TType;
56
56
  constructor(type: TType, options: TOptions);
57
- protected getDeserializeSize(object: any): number;
58
- deserialize(options: Readonly<StructOptions>, context: StructDeserializationContext, object: any): Promise<ArrayBufferLikeFieldRuntimeValue<ArrayBufferLikeFieldDefinition<TType, TOptions, TOmitInit>>>;
57
+ protected getDeserializeSize(struct: StructValue): number;
59
58
  /**
60
- * When implemented in derived classes, creates a `FieldRuntimeValue` for the current field definition.
59
+ * When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
61
60
  */
62
- abstract createValue(options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TType['valueType']): ArrayBufferLikeFieldRuntimeValue<ArrayBufferLikeFieldDefinition<TType, TOptions, TOmitInit>>;
61
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TType['TTypeScriptType'], arrayBuffer?: ArrayBuffer): ArrayBufferLikeFieldValue<this>;
62
+ deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): ArrayBufferLikeFieldValue<this>;
63
+ deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<ArrayBufferLikeFieldValue<this>>;
63
64
  }
64
- export declare class ArrayBufferLikeFieldRuntimeValue<TDefinition extends ArrayBufferLikeFieldDefinition<any, any, any>> extends FieldRuntimeValue<TDefinition> {
65
- arrayBuffer: ArrayBuffer | undefined;
66
- set(value: TDefinition['valueType']): void;
67
- serialize(dataView: DataView, offset: number, context: StructSerializationContext): void;
65
+ export declare class ArrayBufferLikeFieldValue<TDefinition extends ArrayBufferLikeFieldDefinition<ArrayBufferLikeFieldType<unknown, unknown>, any, any>> extends StructFieldValue<TDefinition> {
66
+ protected arrayBuffer: ArrayBuffer | undefined;
67
+ constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue'], arrayBuffer?: ArrayBuffer);
68
+ set(value: TDefinition['TValue']): void;
69
+ serialize(dataView: DataView, offset: number): void;
68
70
  }
69
71
  //# sourceMappingURL=array-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- import { StructOptions, StructSerializationContext } from '../basic';
2
- import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldRuntimeValue, ArrayBufferLikeFieldType } from './array-buffer';
1
+ import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldType } from './array-buffer';
3
2
  export interface FixedLengthArrayBufferLikeFieldOptions {
4
3
  length: number;
5
4
  }
6
5
  export declare class FixedLengthArrayBufferLikeFieldDefinition<TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType, TOptions extends FixedLengthArrayBufferLikeFieldOptions = FixedLengthArrayBufferLikeFieldOptions> extends ArrayBufferLikeFieldDefinition<TType, TOptions> {
7
6
  getSize(): number;
8
- createValue(options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TType['valueType']): ArrayBufferLikeFieldRuntimeValue<FixedLengthArrayBufferLikeFieldDefinition<TType, TOptions>>;
9
7
  }
10
8
  //# sourceMappingURL=fixed-length-array-buffer.d.ts.map