@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 +1 @@
1
- {"version":3,"file":"fixed-length-array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/fixed-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE5H,MAAM,WAAW,sCAAsC;IACnD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yCAAyC,CAClD,KAAK,SAAS,wBAAwB,GAAG,wBAAwB,EACjE,QAAQ,SAAS,sCAAsC,GAAG,sCAAsC,CAC9F,SAAQ,8BAA8B,CACxC,KAAK,EACL,QAAQ,CACP;IACM,OAAO,IAAI,MAAM;IAIjB,WAAW,CACd,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAC1B,gCAAgC,CAAC,yCAAyC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;CAGlG"}
1
+ {"version":3,"file":"fixed-length-array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/fixed-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,MAAM,WAAW,sCAAsC;IACnD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yCAAyC,CAClD,KAAK,SAAS,wBAAwB,GAAG,wBAAwB,EACjE,QAAQ,SAAS,sCAAsC,GAAG,sCAAsC,CAC9F,SAAQ,8BAA8B,CACxC,KAAK,EACL,QAAQ,CACP;IACM,OAAO,IAAI,MAAM;CAG3B"}
@@ -1,6 +1,5 @@
1
1
  export * from './array-buffer';
2
2
  export * from './fixed-length-array-buffer';
3
3
  export * from './number';
4
- export * from './utils';
5
4
  export * from './variable-length-array-buffer';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,gCAAgC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { FieldDefinition, FieldRuntimeValue, StructDeserializationContext, StructOptions, StructSerializationContext } from '../basic';
1
+ import { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
2
2
  export declare type DataViewGetters = {
3
3
  [TKey in keyof DataView]: TKey extends `get${string}` ? TKey : never;
4
4
  }[keyof DataView];
@@ -6,6 +6,11 @@ export declare type DataViewSetters = {
6
6
  [TKey in keyof DataView]: TKey extends `set${string}` ? TKey : never;
7
7
  }[keyof DataView];
8
8
  export declare class NumberFieldType<TTypeScriptType extends number | bigint = number | bigint> {
9
+ readonly TTypeScriptType: TTypeScriptType;
10
+ readonly size: number;
11
+ readonly dataViewGetter: DataViewGetters;
12
+ readonly dataViewSetter: DataViewSetters;
13
+ constructor(size: number, dataViewGetter: DataViewGetters, dataViewSetter: DataViewSetters);
9
14
  static readonly Int8: NumberFieldType<number>;
10
15
  static readonly Uint8: NumberFieldType<number>;
11
16
  static readonly Int16: NumberFieldType<number>;
@@ -14,20 +19,16 @@ export declare class NumberFieldType<TTypeScriptType extends number | bigint = n
14
19
  static readonly Uint32: NumberFieldType<number>;
15
20
  static readonly Int64: NumberFieldType<bigint>;
16
21
  static readonly Uint64: NumberFieldType<bigint>;
17
- readonly valueType: TTypeScriptType;
18
- readonly size: number;
19
- readonly dataViewGetter: DataViewGetters;
20
- readonly dataViewSetter: DataViewSetters;
21
- constructor(size: number, dataViewGetter: DataViewGetters, dataViewSetter: DataViewSetters);
22
22
  }
23
- export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType['valueType']> extends FieldDefinition<void, TTypeScriptType> {
23
+ export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType['TTypeScriptType']> extends StructFieldDefinition<void, TTypeScriptType> {
24
24
  readonly type: TType;
25
25
  constructor(type: TType, _typescriptType?: TTypeScriptType);
26
26
  getSize(): number;
27
- deserialize(options: Readonly<StructOptions>, context: StructDeserializationContext, object: any): Promise<NumberFieldRuntimeValue<TType, TTypeScriptType>>;
28
- createValue(options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TTypeScriptType): NumberFieldRuntimeValue<TType, TTypeScriptType>;
27
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
28
+ deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): NumberFieldValue<this>;
29
+ deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<NumberFieldValue<this>>;
29
30
  }
30
- export declare class NumberFieldRuntimeValue<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = TType['valueType']> extends FieldRuntimeValue<NumberFieldDefinition<TType, TTypeScriptType>> {
31
+ export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldType, any>> extends StructFieldValue<TDefinition> {
31
32
  serialize(dataView: DataView, offset: number): void;
32
33
  }
33
34
  //# sourceMappingURL=number.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAEvI,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,qBAAa,eAAe,CAAC,eAAe,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAClF,gBAAuB,IAAI,0BAAwD;IAEnF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,MAAM,0BAA4D;IAEzF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,MAAM,0BAA4D;IAEzF,gBAAuB,KAAK,0BAAgE;IAE5F,gBAAuB,MAAM,0BAAkE;IAE/F,SAAgB,SAAS,EAAG,eAAe,CAAC;IAE5C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,cAAc,EAAE,eAAe,CAAC;IAEhD,SAAgB,cAAc,EAAE,eAAe,CAAC;gBAG5C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe;CAMtC;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAClC,SAAQ,eAAe,CACzB,IAAI,EACJ,eAAe,CACd;IACD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,eAAe;IAK1D,OAAO,IAAI,MAAM;IAIX,WAAW,CACpB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,GAAG,GACZ,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAUpD,WAAW,CACd,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,eAAe,GACvB,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;CAGrD;AAED,qBAAa,uBAAuB,CAChC,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAClC,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACnE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAU7D"}
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAItJ,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,oBAAY,eAAe,GACvB;KAAG,IAAI,IAAI,MAAM,QAAQ,GAAG,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,QAAQ,CAAC,CAAC;AAE7F,qBAAa,eAAe,CAAC,eAAe,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAClF,SAAgB,eAAe,EAAG,eAAe,CAAC;IAElD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,cAAc,EAAE,eAAe,CAAC;IAEhD,SAAgB,cAAc,EAAE,eAAe,CAAC;gBAG5C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe;IAOnC,gBAAuB,IAAI,0BAAwD;IAEnF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,MAAM,0BAA4D;IAEzF,gBAAuB,KAAK,0BAA0D;IAEtF,gBAAuB,MAAM,0BAA4D;IAEzF,gBAAuB,KAAK,0BAAgE;IAE5F,gBAAuB,MAAM,0BAAkE;CAClG;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;CAiBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,CAC7D,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAU7D"}
@@ -1,30 +1,32 @@
1
- import { FieldRuntimeValue, StructOptions, StructSerializationContext } from '../basic';
2
- import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldRuntimeValue, ArrayBufferLikeFieldType } from './array-buffer';
3
- import { KeysOfType } from './utils';
4
- export interface VariableLengthArrayBufferLikeFieldOptions<TFields = object, TLengthField extends KeysOfType<TFields, number | string> = any> {
1
+ import { StructFieldDefinition, StructFieldValue, StructOptions, StructValue } from '../basic';
2
+ import type { KeysOfType } from '../utils';
3
+ import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldType, ArrayBufferLikeFieldValue } from './array-buffer';
4
+ export declare type LengthField<TFields> = KeysOfType<TFields, number | string>;
5
+ export interface VariableLengthArrayBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
5
6
  lengthField: TLengthField;
7
+ lengthFieldBase?: number;
6
8
  }
7
9
  export declare class VariableLengthArrayBufferLikeFieldDefinition<TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType, TOptions extends VariableLengthArrayBufferLikeFieldOptions = VariableLengthArrayBufferLikeFieldOptions> extends ArrayBufferLikeFieldDefinition<TType, TOptions, TOptions['lengthField']> {
8
10
  getSize(): number;
9
- protected getDeserializeSize(object: any): number;
10
- createValue(options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TType['valueType']): VariableLengthArrayBufferLikeFieldRuntimeValue<TType, TOptions>;
11
+ protected getDeserializeSize(struct: StructValue): number;
12
+ create(options: Readonly<StructOptions>, struct: StructValue, value: TType['TTypeScriptType'], arrayBuffer?: ArrayBuffer): VariableLengthArrayBufferLikeStructFieldValue<this>;
11
13
  }
12
- declare class VariableLengthArrayBufferLikeLengthFieldRuntimeValue extends FieldRuntimeValue {
13
- protected originalValue: FieldRuntimeValue;
14
- protected arrayBufferValue: VariableLengthArrayBufferLikeFieldRuntimeValue;
15
- constructor(originalValue: FieldRuntimeValue, arrayBufferValue: VariableLengthArrayBufferLikeFieldRuntimeValue);
16
- getSize(): number;
17
- get(): number;
18
- set(): void;
19
- serialize(dataView: DataView, offset: number, context: StructSerializationContext): void;
20
- }
21
- declare class VariableLengthArrayBufferLikeFieldRuntimeValue<TType extends ArrayBufferLikeFieldType = ArrayBufferLikeFieldType, TOptions extends VariableLengthArrayBufferLikeFieldOptions = VariableLengthArrayBufferLikeFieldOptions> extends ArrayBufferLikeFieldRuntimeValue<VariableLengthArrayBufferLikeFieldDefinition<TType, TOptions>> {
22
- static getSize(): number;
14
+ export declare class VariableLengthArrayBufferLikeStructFieldValue<TDefinition extends VariableLengthArrayBufferLikeFieldDefinition = VariableLengthArrayBufferLikeFieldDefinition> extends ArrayBufferLikeFieldValue<TDefinition> {
23
15
  protected length: number | undefined;
24
- protected lengthFieldValue: VariableLengthArrayBufferLikeLengthFieldRuntimeValue;
25
- constructor(definition: VariableLengthArrayBufferLikeFieldDefinition<TType, TOptions>, options: Readonly<StructOptions>, context: StructSerializationContext, object: any, value: TType['valueType']);
16
+ protected lengthFieldValue: VariableLengthArrayBufferLikeFieldLengthValue;
17
+ constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue'], arrayBuffer?: ArrayBuffer);
26
18
  getSize(): number;
27
19
  set(value: unknown): void;
28
20
  }
21
+ declare type VariableLengthArrayBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthArrayBufferLikeFieldOptions, any, any>>;
22
+ export declare class VariableLengthArrayBufferLikeFieldLengthValue extends StructFieldValue {
23
+ protected originalField: StructFieldValue;
24
+ protected arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike;
25
+ constructor(originalField: StructFieldValue, arrayBufferField: VariableLengthArrayBufferLikeFieldValueLike);
26
+ getSize(): number;
27
+ get(): string | number;
28
+ set(): void;
29
+ serialize(dataView: DataView, offset: number): void;
30
+ }
29
31
  export {};
30
32
  //# sourceMappingURL=variable-length-array-buffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-length-array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/variable-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoC,aAAa,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAC1H,OAAO,EAAE,8BAA8B,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,yCAAyC,CACtD,OAAO,GAAG,MAAM,EAChB,YAAY,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG;IAE/D,WAAW,EAAE,YAAY,CAAC;CAC7B;AAED,qBAAa,4CAA4C,CACrD,KAAK,SAAS,wBAAwB,GAAG,wBAAwB,EACjE,QAAQ,SAAS,yCAAyC,GAAG,yCAAyC,CACpG,SAAQ,8BAA8B,CACxC,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,CACtB;IACM,OAAO,IAAI,MAAM;IAIxB,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG;IAQjC,WAAW,CACd,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,GAC1B,8CAA8C,CAAC,KAAK,EAAE,QAAQ,CAAC;CAGrE;AAED,cAAM,oDAAqD,SAAQ,iBAAiB;IAChF,SAAS,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAE3C,SAAS,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;gBAGvE,aAAa,EAAE,iBAAiB,EAChC,gBAAgB,EAAE,8CAA8C;IAO7D,OAAO;IAId,GAAG;IAKH,GAAG;IAEH,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B;CAIpF;AAED,cAAM,8CAA8C,CAChD,KAAK,SAAS,wBAAwB,GAAG,wBAAwB,EACjE,QAAQ,SAAS,yCAAyC,GAAG,yCAAyC,CACpG,SAAQ,gCAAgC,CAAC,4CAA4C,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;WAC3F,OAAO;IAIrB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,oDAAoD,CAAC;gBAG7E,UAAU,EAAE,4CAA4C,CAAC,KAAK,EAAE,QAAQ,CAAC,EACzE,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;IAWtB,OAAO;IAgBP,GAAG,CAAC,KAAK,EAAE,OAAO;CAI5B"}
1
+ {"version":3,"file":"variable-length-array-buffer.d.ts","sourceRoot":"","sources":["../../src/types/variable-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAErH,oBAAY,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,yCAAyC,CACtD,OAAO,GAAG,MAAM,EAChB,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG;IAE/C,WAAW,EAAE,YAAY,CAAC;IAE1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,4CAA4C,CACrD,KAAK,SAAS,wBAAwB,GAAG,wBAAwB,EACjE,QAAQ,SAAS,yCAAyC,GAAG,yCAAyC,CACpG,SAAQ,8BAA8B,CACxC,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,CACtB;IACM,OAAO,IAAI,MAAM;cAIL,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQzC,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAC/B,WAAW,CAAC,EAAE,WAAW,GAC1B,6CAA6C,CAAC,IAAI,CAAC;CASzD;AAED,qBAAa,6CAA6C,CACtD,WAAW,SAAS,4CAA4C,GAAG,4CAA4C,CAC7G,SAAQ,yBAAyB,CAAC,WAAW,CAAC;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;gBAGtE,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,WAAW,CAAC,EAAE,WAAW;IAmBb,OAAO;IAYP,GAAG,CAAC,KAAK,EAAE,OAAO;CAKrC;AAGD,aAAK,2CAA2C,GAC5C,gBAAgB,CAAC,qBAAqB,CAAC,yCAAyC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEjG,qBAAa,6CACT,SAAQ,gBAAgB;IACxB,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAE1C,SAAS,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;gBAGpE,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,2CAA2C;IAOjD,OAAO;IAIP,GAAG;IAWH,GAAG;IAEnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAI/C"}
@@ -38,8 +38,11 @@ export declare type OmitNever<T> = Pick<T, {
38
38
  export declare type KeysOfType<T, TValue> = {
39
39
  [TKey in keyof T]: T[TKey] extends TValue ? TKey : never;
40
40
  }[keyof T];
41
+ export declare type ValueOrPromise<T> = T | PromiseLike<T>;
41
42
  /**
42
43
  * Returns a (fake) value of the given type.
43
44
  */
44
45
  export declare function placeholder<T>(): T;
46
+ export declare function encodeUtf8(input: string): ArrayBuffer;
47
+ export declare function decodeUtf8(buffer: ArrayBuffer): string;
45
48
  //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,oBAAY,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAE7C;;GAEG;AACH,oBAAY,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEpG;;GAEG;AACH,oBAAY,UAAU,CAAC,CAAC,EAAE,MAAM,IAC5B;KAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAE1E,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,CAAC,CAElC;AAOD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAErD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEtD"}
@@ -1,4 +1,4 @@
1
- export var StructDefaultOptions = {
1
+ export const StructDefaultOptions = {
2
2
  littleEndian: false,
3
3
  };
4
4
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/basic/context.ts"],"names":[],"mappings":"AAqCA,MAAM,CAAC,IAAM,oBAAoB,GAA4B;IACzD,YAAY,EAAE,KAAK;CACtB,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/basic/context.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,oBAAoB,GAA4B;IACzD,YAAY,EAAE,KAAK;CACtB,CAAC"}
@@ -1,23 +1,21 @@
1
1
  /**
2
2
  * A field definition is a bridge between its type and its runtime value.
3
3
  *
4
- * `Struct` record fields in a list of `FieldDefinition`s.
4
+ * `Struct` record fields in a list of `StructFieldDefinition`s.
5
5
  *
6
6
  * When `Struct#create` or `Struct#deserialize` are called, each field's definition
7
- * crates its own type of `FieldRuntimeValue` to manage the field value in that `Struct` instance.
7
+ * crates its own type of `StructFieldValue` to manage the field value in that `Struct` instance.
8
8
  *
9
- * One `FieldDefinition` can represents multiple similar types, just returns the corresponding
10
- * `FieldRuntimeValue` when `createValue` was called.
9
+ * One `StructFieldDefinition` can represents multiple similar types, just returns the corresponding
10
+ * `StructFieldValue` when `createValue` was called.
11
11
  *
12
12
  * @template TOptions TypeScript type of this definition's `options`.
13
- * @template TValueType TypeScript type of this field.
14
- * @template TOmitInit Optionally remove some fields from the init type. Should be a union of string literal types.
13
+ * @template TValue TypeScript type of this field.
14
+ * @template TOmitInitKey Optionally remove some fields from the init type. Should be a union of string literal types.
15
15
  */
16
- var FieldDefinition = /** @class */ (function () {
17
- function FieldDefinition(options) {
16
+ export class StructFieldDefinition {
17
+ constructor(options) {
18
18
  this.options = options;
19
19
  }
20
- return FieldDefinition;
21
- }());
22
- export { FieldDefinition };
20
+ }
23
21
  //# sourceMappingURL=definition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;GAcG;AACH;IAmBI,yBAAmB,OAAiB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IA2BL,sBAAC;AAAD,CAAC,AAhDD,IAgDC"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAgB,qBAAqB;IAmBvC,YAAmB,OAAiB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CA+BJ"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Field runtime value manages one field of one `Struct` instance.
3
+ *
4
+ * If one `StructFieldDefinition` needs to change other field's semantics
5
+ * It can override other fields' `StructFieldValue` in its own `StructFieldValue`'s constructor
6
+ */
7
+ export class StructFieldValue {
8
+ constructor(definition, options, struct, value) {
9
+ this.definition = definition;
10
+ this.options = options;
11
+ this.struct = struct;
12
+ this.value = value;
13
+ }
14
+ /**
15
+ * Gets size of this field. By default, it returns its `definition`'s size.
16
+ *
17
+ * When overridden in derived classes, can have custom logic to calculate the actual size.
18
+ */
19
+ getSize() {
20
+ return this.definition.getSize();
21
+ }
22
+ /**
23
+ * When implemented in derived classes, returns the current value of this field
24
+ */
25
+ get() {
26
+ return this.value;
27
+ }
28
+ /**
29
+ * When implemented in derived classes, update the current value of this field
30
+ */
31
+ set(value) {
32
+ this.value = value;
33
+ }
34
+ }
35
+ //# sourceMappingURL=field-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-value.js","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAclC,YACI,UAAuB,EACvB,OAAgC,EAChC,MAAmB,EACnB,KAA4B;QAE5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,OAAO;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAA4B;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CASJ"}
@@ -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.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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.js","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,36 @@
1
+ /**
2
+ * Manages the initialization process of a struct value
3
+ */
4
+ export class StructValue {
5
+ constructor() {
6
+ /** @internal */ this.fieldValues = {};
7
+ /**
8
+ * Gets the result struct value object
9
+ */
10
+ this.value = {};
11
+ }
12
+ /**
13
+ * Sets a `StructFieldValue` for `key`
14
+ *
15
+ * @param key The field name
16
+ * @param value The associated `StructFieldValue`
17
+ */
18
+ set(key, value) {
19
+ this.fieldValues[key] = value;
20
+ Object.defineProperty(this.value, key, {
21
+ configurable: true,
22
+ enumerable: true,
23
+ get() { return value.get(); },
24
+ set(v) { value.set(v); },
25
+ });
26
+ }
27
+ /**
28
+ * Gets a previously `StructFieldValue` for `key`
29
+ *
30
+ * @param key The field name
31
+ */
32
+ get(key) {
33
+ return this.fieldValues[key];
34
+ }
35
+ }
36
+ //# sourceMappingURL=struct-value.js.map
@@ -0,0 +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"}
package/esm/index.js 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.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"}
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"}