@yume-chan/struct 0.0.9 → 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 (84) hide show
  1. package/CHANGELOG.json +23 -0
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE +21 -21
  4. package/README.md +720 -709
  5. package/dts/basic/context.d.ts +10 -18
  6. package/dts/basic/context.d.ts.map +1 -1
  7. package/dts/basic/definition.d.ts +4 -4
  8. package/dts/basic/definition.d.ts.map +1 -1
  9. package/dts/basic/field-value.d.ts +3 -5
  10. package/dts/basic/field-value.d.ts.map +1 -1
  11. package/dts/basic/struct-value.d.ts.map +1 -1
  12. package/dts/struct.d.ts +16 -17
  13. package/dts/struct.d.ts.map +1 -1
  14. package/dts/syncbird.d.ts +20 -0
  15. package/dts/syncbird.d.ts.map +1 -0
  16. package/dts/types/array-buffer.d.ts +13 -12
  17. package/dts/types/array-buffer.d.ts.map +1 -1
  18. package/dts/types/number.d.ts +4 -3
  19. package/dts/types/number.d.ts.map +1 -1
  20. package/dts/types/variable-length-array-buffer.d.ts +4 -4
  21. package/dts/types/variable-length-array-buffer.d.ts.map +1 -1
  22. package/dts/utils.d.ts +3 -2
  23. package/dts/utils.d.ts.map +1 -1
  24. package/esm/basic/context.js.map +1 -1
  25. package/esm/basic/definition.js.map +1 -1
  26. package/esm/basic/field-value.js +1 -2
  27. package/esm/basic/field-value.js.map +1 -1
  28. package/esm/basic/struct-value.js +0 -6
  29. package/esm/basic/struct-value.js.map +1 -1
  30. package/esm/struct.js +27 -17
  31. package/esm/struct.js.map +1 -1
  32. package/esm/syncbird.js +25 -0
  33. package/esm/syncbird.js.map +1 -0
  34. package/esm/types/array-buffer.js +21 -20
  35. package/esm/types/array-buffer.js.map +1 -1
  36. package/esm/types/number.js +9 -8
  37. package/esm/types/number.js.map +1 -1
  38. package/esm/types/variable-length-array-buffer.js +8 -8
  39. package/esm/types/variable-length-array-buffer.js.map +1 -1
  40. package/esm/utils.js +10 -0
  41. package/esm/utils.js.map +1 -1
  42. package/package.json +47 -50
  43. package/src/basic/context.ts +32 -42
  44. package/src/basic/definition.ts +72 -69
  45. package/src/basic/field-value.ts +67 -73
  46. package/src/basic/index.ts +4 -4
  47. package/src/basic/struct-value.ts +39 -45
  48. package/src/index.ts +5 -5
  49. package/src/struct.ts +595 -575
  50. package/src/syncbird.ts +53 -0
  51. package/src/types/array-buffer.ts +194 -184
  52. package/src/types/fixed-length-array-buffer.ts +17 -17
  53. package/src/types/index.ts +4 -4
  54. package/src/types/number.ts +114 -100
  55. package/src/types/variable-length-array-buffer.ts +142 -145
  56. package/src/utils.ts +62 -51
  57. package/cjs/basic/context.js +0 -7
  58. package/cjs/basic/context.js.map +0 -1
  59. package/cjs/basic/definition.js +0 -25
  60. package/cjs/basic/definition.js.map +0 -1
  61. package/cjs/basic/field-value.js +0 -40
  62. package/cjs/basic/field-value.js.map +0 -1
  63. package/cjs/basic/index.js +0 -8
  64. package/cjs/basic/index.js.map +0 -1
  65. package/cjs/basic/struct-value.js +0 -46
  66. package/cjs/basic/struct-value.js.map +0 -1
  67. package/cjs/index.js +0 -11
  68. package/cjs/index.js.map +0 -1
  69. package/cjs/struct.js +0 -177
  70. package/cjs/struct.js.map +0 -1
  71. package/cjs/types/array-buffer.js +0 -118
  72. package/cjs/types/array-buffer.js.map +0 -1
  73. package/cjs/types/fixed-length-array-buffer.js +0 -12
  74. package/cjs/types/fixed-length-array-buffer.js.map +0 -1
  75. package/cjs/types/index.js +0 -8
  76. package/cjs/types/index.js.map +0 -1
  77. package/cjs/types/number.js +0 -52
  78. package/cjs/types/number.js.map +0 -1
  79. package/cjs/types/variable-length-array-buffer.js +0 -77
  80. package/cjs/types/variable-length-array-buffer.js.map +0 -1
  81. package/cjs/utils.js +0 -11
  82. package/cjs/utils.js.map +0 -1
  83. package/tsconfig.cjs.json +0 -11
  84. package/tsconfig.esm.json +0 -15
@@ -0,0 +1,25 @@
1
+ import Bluebird from 'bluebird';
2
+ export const Syncbird = Bluebird.getNewLibraryCopy();
3
+ const _then = Bluebird.prototype.then;
4
+ Syncbird.prototype.then = function (onfulfilled, onrejected) {
5
+ if (this.isFulfilled()) {
6
+ if (!onfulfilled) {
7
+ return this;
8
+ }
9
+ else {
10
+ return Syncbird.resolve(onfulfilled(this.value()));
11
+ }
12
+ }
13
+ else {
14
+ return _then.call(this, onfulfilled, onrejected);
15
+ }
16
+ };
17
+ Syncbird.prototype.valueOrPromise = function () {
18
+ if (this.isFulfilled()) {
19
+ return this.value();
20
+ }
21
+ else {
22
+ return this;
23
+ }
24
+ };
25
+ //# sourceMappingURL=syncbird.js.map
@@ -0,0 +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,5 +1,6 @@
1
- import { __awaiter } from "tslib";
2
1
  import { StructFieldDefinition, StructFieldValue } from '../basic';
2
+ import { Syncbird } from "../syncbird";
3
+ import { decodeUtf8, encodeUtf8 } from "../utils";
3
4
  /**
4
5
  * Base class for all types that
5
6
  * can be converted from an ArrayBuffer when deserialized,
@@ -43,13 +44,13 @@ export class Uint8ClampedArrayFieldType extends ArrayBufferLikeFieldType {
43
44
  }
44
45
  }
45
46
  Uint8ClampedArrayFieldType.instance = new Uint8ClampedArrayFieldType();
46
- /** Am ArrayBufferLike type that converts between `ArrayBuffer` and `string` */
47
+ /** An ArrayBufferLike type that converts between `ArrayBuffer` and `string` */
47
48
  export class StringFieldType extends ArrayBufferLikeFieldType {
48
- toArrayBuffer(value, context) {
49
- return context.encodeUtf8(value);
49
+ toArrayBuffer(value) {
50
+ return encodeUtf8(value);
50
51
  }
51
- fromArrayBuffer(arrayBuffer, context) {
52
- return context.decodeUtf8(arrayBuffer);
52
+ fromArrayBuffer(arrayBuffer) {
53
+ return decodeUtf8(arrayBuffer);
53
54
  }
54
55
  getSize() {
55
56
  // Return `-1`, so `ArrayBufferLikeFieldDefinition` will
@@ -71,36 +72,36 @@ export class ArrayBufferLikeFieldDefinition extends StructFieldDefinition {
71
72
  /**
72
73
  * When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
73
74
  */
74
- create(options, context, struct, value, arrayBuffer) {
75
- return new ArrayBufferLikeFieldValue(this, options, context, struct, value, arrayBuffer);
75
+ create(options, struct, value, arrayBuffer) {
76
+ return new ArrayBufferLikeFieldValue(this, options, struct, value, arrayBuffer);
76
77
  }
77
- deserialize(options, context, struct) {
78
- return __awaiter(this, void 0, void 0, function* () {
78
+ deserialize(options, stream, struct) {
79
+ return Syncbird.try(() => {
79
80
  const size = this.getDeserializeSize(struct);
80
- let arrayBuffer;
81
81
  if (size === 0) {
82
- arrayBuffer = EmptyArrayBuffer;
82
+ return EmptyArrayBuffer;
83
83
  }
84
84
  else {
85
- arrayBuffer = yield context.read(size);
85
+ return stream.read(size);
86
86
  }
87
- const value = this.type.fromArrayBuffer(arrayBuffer, context);
88
- return this.create(options, context, struct, value, arrayBuffer);
89
- });
87
+ }).then(arrayBuffer => {
88
+ const value = this.type.fromArrayBuffer(arrayBuffer);
89
+ return this.create(options, struct, value, arrayBuffer);
90
+ }).valueOrPromise();
90
91
  }
91
92
  }
92
93
  export class ArrayBufferLikeFieldValue extends StructFieldValue {
93
- constructor(definition, options, context, struct, value, arrayBuffer) {
94
- super(definition, options, context, struct, value);
94
+ constructor(definition, options, struct, value, arrayBuffer) {
95
+ super(definition, options, struct, value);
95
96
  this.arrayBuffer = arrayBuffer;
96
97
  }
97
98
  set(value) {
98
99
  super.set(value);
99
100
  this.arrayBuffer = undefined;
100
101
  }
101
- serialize(dataView, offset, context) {
102
+ serialize(dataView, offset) {
102
103
  if (!this.arrayBuffer) {
103
- this.arrayBuffer = this.definition.type.toArrayBuffer(this.value, context);
104
+ this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
104
105
  }
105
106
  new Uint8Array(dataView.buffer)
106
107
  .set(new Uint8Array(this.arrayBuffer), offset);
@@ -1 +1 @@
1
- {"version":3,"file":"array-buffer.js","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgC,qBAAqB,EAAE,gBAAgB,EAA0D,MAAM,UAAU,CAAC;AAEzJ;;;;;;;;GAQG;AACH,MAAM,OAAgB,wBAAwB;CAsB7C;AAED,+DAA+D;AAC/D,MAAM,OAAO,oBAAqB,SAAQ,wBAAqC;IAG3E;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,aAAa,CAAC,KAAkB;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,eAAe,CAAC,WAAwB;QAC3C,OAAO,WAAW,CAAC;IACvB,CAAC;IAEM,OAAO,CAAC,KAAkB;QAC7B,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;;AAhBsB,6BAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAmBjE,0FAA0F;AAC1F,MAAM,OAAO,0BACT,SAAQ,wBAA8D;IAGtE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,aAAa,CAAC,KAAwB;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC;IACxB,CAAC;IAEM,eAAe,CAAC,WAAwB;QAC3C,OAAO,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAEM,OAAO,CAAC,KAAwB;QACnC,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;;AAhBsB,mCAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAmBvE,+EAA+E;AAC/E,MAAM,OAAO,eACT,SAAQ,wBAAiD;IAGlD,aAAa,CAAC,KAAa,EAAE,OAAmC;QACnE,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,eAAe,CAAC,WAAwB,EAAE,OAAqC;QAClF,OAAO,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACV,wDAAwD;QACxD,qEAAqE;QACrE,4CAA4C;QAC5C,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;;AAfsB,wBAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AAkB5D,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,OAAgB,8BAIhB,SAAQ,qBAIT;IAGD,YAAmB,IAAW,EAAE,OAAiB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAES,kBAAkB,CAAC,MAAmB;QAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,MAAM,CACT,OAAgC,EAChC,OAAmC,EACnC,MAAmB,EACnB,KAA+B,EAC/B,WAAyB;QAEzB,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7F,CAAC;IAEY,WAAW,CACpB,OAAgC,EAChC,OAAqC,EACrC,MAAmB;;YAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAE7C,IAAI,WAAwB,CAAC;YAC7B,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,WAAW,GAAG,gBAAgB,CAAC;aAClC;iBAAM;gBACH,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1C;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;KAAA;CACJ;AAED,MAAM,OAAO,yBAEP,SAAQ,gBAA6B;IAGvC,YACI,UAAuB,EACvB,OAAgC,EAChC,OAAmC,EACnC,MAAmB,EACnB,KAA4B,EAC5B,WAAyB;QAEzB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEM,GAAG,CAAC,KAA4B;QACnC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACjC,CAAC;IAEM,SAAS,CAAC,QAAkB,EAAE,MAAc,EAAE,OAAmC;QACpF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC9E;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC1B,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;CACJ"}
1
+ {"version":3,"file":"array-buffer.js","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,qBAAqB,EAAE,gBAAgB,EAA8B,MAAM,UAAU,CAAC;AACtJ,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,UAAU,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,OAAgB,wBAAwB;CAsB7C;AAED,+DAA+D;AAC/D,MAAM,OAAO,oBAAqB,SAAQ,wBAAqC;IAG3E;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,aAAa,CAAC,KAAkB;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,eAAe,CAAC,WAAwB;QAC3C,OAAO,WAAW,CAAC;IACvB,CAAC;IAEM,OAAO,CAAC,KAAkB;QAC7B,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;;AAhBsB,6BAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAmBjE,0FAA0F;AAC1F,MAAM,OAAO,0BACT,SAAQ,wBAA8D;IAGtE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,aAAa,CAAC,KAAwB;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC;IACxB,CAAC;IAEM,eAAe,CAAC,WAAwB;QAC3C,OAAO,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAEM,OAAO,CAAC,KAAwB;QACnC,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;;AAhBsB,mCAAQ,GAAG,IAAI,0BAA0B,EAAE,CAAC;AAmBvE,+EAA+E;AAC/E,MAAM,OAAO,eACT,SAAQ,wBAAiD;IAGlD,aAAa,CAAC,KAAa;QAC9B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,eAAe,CAAC,WAAwB;QAC3C,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAEM,OAAO;QACV,wDAAwD;QACxD,qEAAqE;QACrE,4CAA4C;QAC5C,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;;AAfsB,wBAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;AAkB5D,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,OAAgB,8BAIhB,SAAQ,qBAIT;IAGD,YAAmB,IAAW,EAAE,OAAiB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAES,kBAAkB,CAAC,MAAmB;QAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,MAAM,CACT,OAAgC,EAChC,MAAmB,EACnB,KAA+B,EAC/B,WAAyB;QAEzB,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IAYe,WAAW,CACvB,OAAgC,EAChC,MAA8D,EAC9D,MAAmB;QAEnB,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,OAAO,gBAAgB,CAAC;aAC3B;iBAAM;gBACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5B;QACL,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAO,yBAEP,SAAQ,gBAA6B;IAGvC,YACI,UAAuB,EACvB,OAAgC,EAChC,MAAmB,EACnB,KAA4B,EAC5B,WAAyB;QAEzB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEe,GAAG,CAAC,KAA4B;QAC5C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACjC,CAAC;IAEM,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrE;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;aAC1B,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;CACJ"}
@@ -1,5 +1,5 @@
1
- import { __awaiter } from "tslib";
2
1
  import { StructFieldDefinition, StructFieldValue } from '../basic';
2
+ import { Syncbird } from "../syncbird";
3
3
  export class NumberFieldType {
4
4
  constructor(size, dataViewGetter, dataViewSetter) {
5
5
  this.size = size;
@@ -23,16 +23,17 @@ export class NumberFieldDefinition extends StructFieldDefinition {
23
23
  getSize() {
24
24
  return this.type.size;
25
25
  }
26
- create(options, context, struct, value) {
27
- return new NumberFieldValue(this, options, context, struct, value);
26
+ create(options, struct, value) {
27
+ return new NumberFieldValue(this, options, struct, value);
28
28
  }
29
- deserialize(options, context, struct) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const buffer = yield context.read(this.getSize());
29
+ deserialize(options, stream, struct) {
30
+ return Syncbird.try(() => {
31
+ return stream.read(this.getSize());
32
+ }).then(buffer => {
32
33
  const view = new DataView(buffer);
33
34
  const value = view[this.type.dataViewGetter](0, options.littleEndian);
34
- return this.create(options, context, struct, value);
35
- });
35
+ return this.create(options, struct, value);
36
+ }).valueOrPromise();
36
37
  }
37
38
  }
38
39
  export class NumberFieldValue extends StructFieldValue {
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgC,qBAAqB,EAAE,gBAAgB,EAA0D,MAAM,UAAU,CAAC;AAQzJ,MAAM,OAAO,eAAe;IASxB,YACI,IAAY,EACZ,cAA+B,EAC/B,cAA+B;QAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;;AAEsB,oBAAI,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAE5D,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAElE,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAElE,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAErE,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAGnG,MAAM,OAAO,qBAGP,SAAQ,qBAGT;IAGD,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,OAAmC,EACnC,MAAmB,EACnB,KAAsB;QAEtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IAEY,WAAW,CACpB,OAAgC,EAChC,OAAqC,EACrC,MAAmB;;YAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CACxC,CAAC,EACD,OAAO,CAAC,YAAY,CAChB,CAAC;YACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;KAAA;CACJ;AAED,MAAM,OAAO,gBAEP,SAAQ,gBAA6B;IAChC,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,kEAAkE;QAClE,4DAA4D;QAC5D,uBAAuB;QACtB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAS,CAClD,MAAM,EACN,IAAI,CAAC,KAAM,EACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,qBAAqB,EAAE,gBAAgB,EAA8B,MAAM,UAAU,CAAC;AACtJ,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AASvC,MAAM,OAAO,eAAe;IASxB,YACI,IAAY,EACZ,cAA+B,EAC/B,cAA+B;QAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;;AAEsB,oBAAI,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAE5D,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAElE,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/D,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAElE,qBAAK,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AAErE,sBAAM,GAAG,IAAI,eAAe,CAAS,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAGnG,MAAM,OAAO,qBAGP,SAAQ,qBAGT;IAGD,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,MAAM,CAAC,EAAE;YACb,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CACxC,CAAC,EACD,OAAO,CAAC,YAAY,CAChB,CAAC;YACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAO,gBAEP,SAAQ,gBAA6B;IAChC,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,kEAAkE;QAClE,4DAA4D;QAC5D,uBAAuB;QACtB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAS,CAClD,MAAM,EACN,IAAI,CAAC,KAAM,EACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}
@@ -12,13 +12,13 @@ export class VariableLengthArrayBufferLikeFieldDefinition extends ArrayBufferLik
12
12
  }
13
13
  return value;
14
14
  }
15
- create(options, context, struct, value, arrayBuffer) {
16
- return new VariableLengthArrayBufferLikeStructFieldValue(this, options, context, struct, value, arrayBuffer);
15
+ create(options, struct, value, arrayBuffer) {
16
+ return new VariableLengthArrayBufferLikeStructFieldValue(this, options, struct, value, arrayBuffer);
17
17
  }
18
18
  }
19
19
  export class VariableLengthArrayBufferLikeStructFieldValue extends ArrayBufferLikeFieldValue {
20
- constructor(definition, options, context, struct, value, arrayBuffer) {
21
- super(definition, options, context, struct, value, arrayBuffer);
20
+ constructor(definition, options, struct, value, arrayBuffer) {
21
+ super(definition, options, struct, value, arrayBuffer);
22
22
  if (arrayBuffer) {
23
23
  this.length = arrayBuffer.byteLength;
24
24
  }
@@ -32,7 +32,7 @@ export class VariableLengthArrayBufferLikeStructFieldValue extends ArrayBufferLi
32
32
  if (this.length === undefined) {
33
33
  this.length = this.definition.type.getSize(this.value);
34
34
  if (this.length === -1) {
35
- this.arrayBuffer = this.definition.type.toArrayBuffer(this.value, this.context);
35
+ this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
36
36
  this.length = this.arrayBuffer.byteLength;
37
37
  }
38
38
  }
@@ -46,7 +46,7 @@ export class VariableLengthArrayBufferLikeStructFieldValue extends ArrayBufferLi
46
46
  }
47
47
  export class VariableLengthArrayBufferLikeFieldLengthValue extends StructFieldValue {
48
48
  constructor(originalField, arrayBufferField) {
49
- super(originalField.definition, originalField.options, originalField.context, originalField.struct, 0);
49
+ super(originalField.definition, originalField.options, originalField.struct, 0);
50
50
  this.originalField = originalField;
51
51
  this.arrayBufferField = arrayBufferField;
52
52
  }
@@ -63,9 +63,9 @@ export class VariableLengthArrayBufferLikeFieldLengthValue extends StructFieldVa
63
63
  return value;
64
64
  }
65
65
  set() { }
66
- serialize(dataView, offset, context) {
66
+ serialize(dataView, offset) {
67
67
  this.originalField.set(this.get());
68
- this.originalField.serialize(dataView, offset, context);
68
+ this.originalField.serialize(dataView, offset);
69
69
  }
70
70
  }
71
71
  //# sourceMappingURL=variable-length-array-buffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"variable-length-array-buffer.js","sourceRoot":"","sources":["../../src/types/variable-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAA0D,MAAM,UAAU,CAAC;AAE3H,OAAO,EAAE,8BAA8B,EAA4B,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAarH,MAAM,OAAO,4CAGP,SAAQ,8BAIT;IACM,OAAO;QACV,OAAO,CAAC,CAAC;IACb,CAAC;IAES,kBAAkB,CAAC,MAAmB;;QAC5C,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAoB,CAAC;QACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC;SACtE;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,MAAM,CACT,OAAgC,EAChC,OAAmC,EACnC,MAAmB,EACnB,KAA+B,EAC/B,WAAyB;QAEzB,OAAO,IAAI,6CAA6C,CACpD,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,WAAW,CACd,CAAC;IACN,CAAC;CACJ;AAED,MAAM,OAAO,6CAEP,SAAQ,yBAAsC;IAKhD,YACI,UAAuB,EACvB,OAAgC,EAChC,OAAmC,EACnC,MAAmB,EACnB,KAA4B,EAC5B,WAAyB;QAEzB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAEhE,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC;SACxC;QAED,qCAAqC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;QAExD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,6CAA6C,CACrE,aAAa,EACb,IAAI,CACP,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;aAC7C;SACJ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,GAAG,CAAC,KAAc;QACrB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;CACJ;AAMD,MAAM,OAAO,6CACT,SAAQ,gBAAgB;IAKxB,YACI,aAA+B,EAC/B,gBAA6D;QAE7D,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC7C,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAED,GAAG;;QACC,IAAI,KAAK,GAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAE7D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACnC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC;SAC1F;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,GAAG,KAAK,CAAC;IAET,SAAS,CAAC,QAAkB,EAAE,MAAc,EAAE,OAAmC;QAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;CACJ"}
1
+ {"version":3,"file":"variable-length-array-buffer.js","sourceRoot":"","sources":["../../src/types/variable-length-array-buffer.ts"],"names":[],"mappings":"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"}
package/esm/utils.js CHANGED
@@ -4,4 +4,14 @@
4
4
  export function placeholder() {
5
5
  return undefined;
6
6
  }
7
+ // @ts-expect-error @types/node missing `TextEncoder`
8
+ const Utf8Encoder = new TextEncoder();
9
+ // @ts-expect-error @types/node missing `TextDecoder`
10
+ const Utf8Decoder = new TextDecoder();
11
+ export function encodeUtf8(input) {
12
+ return Utf8Encoder.encode(input).buffer;
13
+ }
14
+ export function decodeUtf8(buffer) {
15
+ return Utf8Decoder.decode(buffer);
16
+ }
7
17
  //# sourceMappingURL=utils.js.map
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA6CA;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,SAAyB,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,SAAyB,CAAC;AACrC,CAAC;AAED,qDAAqD;AACrD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,qDAAqD;AACrD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC1C,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
package/package.json CHANGED
@@ -1,50 +1,47 @@
1
- {
2
- "name": "@yume-chan/struct",
3
- "version": "0.0.9",
4
- "description": "C-style structure serializer and deserializer.",
5
- "keywords": [
6
- "structure",
7
- "serialization",
8
- "deserialization",
9
- "typescript"
10
- ],
11
- "license": "MIT",
12
- "author": {
13
- "name": "Simon Chan",
14
- "email": "cnsimonchan@live.com",
15
- "url": "https://chensi.moe/blog"
16
- },
17
- "homepage": "https://github.com/yume-chan/ya-webadb/tree/master/packages/struct#readme",
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/yume-chan/ya-webadb.git",
21
- "directory": "packages/struct"
22
- },
23
- "bugs": {
24
- "url": "https://github.com/yume-chan/ya-webadb/issues"
25
- },
26
- "main": "cjs/index.js",
27
- "module": "esm/index.js",
28
- "types": "dts/index.d.ts",
29
- "scripts": {
30
- "build": "rimraf {cjs,esm,dts,*.tsbuildinfo} && tsc -b tsconfig.esm.json tsconfig.cjs.json",
31
- "build:watch": "tsc -b -w tsconfig.esm.json tsconfig.cjs.json",
32
- "test": "jest",
33
- "coverage": "jest --coverage",
34
- "prepublishOnly": "npm run build"
35
- },
36
- "dependencies": {
37
- "tslib": "2.1.0"
38
- },
39
- "devDependencies": {
40
- "@types/jest": "26.0.19",
41
- "jest": "26.6.3",
42
- "rimraf": "3.0.2",
43
- "ts-jest": "26.4.4",
44
- "typescript": "4.2.3"
45
- },
46
- "publishConfig": {
47
- "access": "public"
48
- },
49
- "gitHead": "09c9764aa84fe0098342283a61758354ba2613b6"
50
- }
1
+ {
2
+ "name": "@yume-chan/struct",
3
+ "version": "0.0.10",
4
+ "description": "C-style structure serializer and deserializer.",
5
+ "keywords": [
6
+ "structure",
7
+ "serialization",
8
+ "deserialization",
9
+ "typescript"
10
+ ],
11
+ "license": "MIT",
12
+ "author": {
13
+ "name": "Simon Chan",
14
+ "email": "cnsimonchan@live.com",
15
+ "url": "https://chensi.moe/blog"
16
+ },
17
+ "homepage": "https://github.com/yume-chan/ya-webadb/tree/master/packages/struct#readme",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/yume-chan/ya-webadb.git",
21
+ "directory": "packages/struct"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/yume-chan/ya-webadb/issues"
25
+ },
26
+ "type": "module",
27
+ "module": "esm/index.js",
28
+ "types": "dts/index.d.ts",
29
+ "scripts": {
30
+ "build": "build-ts-package",
31
+ "build:watch": "build-ts-package --incremental",
32
+ "test": "jest --coverage",
33
+ "prepublishOnly": "npm run build"
34
+ },
35
+ "dependencies": {
36
+ "bluebird": "^3.7.2",
37
+ "tslib": "^2.3.1"
38
+ },
39
+ "devDependencies": {
40
+ "jest": "^26.6.3",
41
+ "typescript": "^4.5.4",
42
+ "@yume-chan/ts-package-builder": "^1.0.0",
43
+ "@types/jest": "^27.4.0",
44
+ "@types/node": "^16.11.19",
45
+ "@types/bluebird": "^3.5.36"
46
+ }
47
+ }
@@ -1,42 +1,32 @@
1
- import type { ValueOrPromise } from '../utils';
2
-
3
- /**
4
- * Context with enough methods to serialize a struct
5
- */
6
- export interface StructSerializationContext {
7
- /**
8
- * Encode the specified string into an ArrayBuffer using UTF-8 encoding
9
- */
10
- encodeUtf8(input: string): ArrayBuffer;
11
- }
12
-
13
- /**
14
- * Context with enough methods to deserialize a struct
15
- */
16
- export interface StructDeserializationContext extends StructSerializationContext {
17
- /**
18
- * Decode the specified `ArrayBuffer` using UTF-8 encoding
19
- */
20
- decodeUtf8(buffer: ArrayBuffer): string;
21
-
22
- /**
23
- * Read data from the underlying data source.
24
- *
25
- * Context should return exactly `length` bytes or data. If that's not possible
26
- * (due to end of file or other error condition), it should throw an error.
27
- */
28
- read(length: number): ValueOrPromise<ArrayBuffer>;
29
- }
30
-
31
- export interface StructOptions {
32
- /**
33
- * Whether all multi-byte fields in this struct are little-endian encoded.
34
- *
35
- * Default to `false`
36
- */
37
- littleEndian: boolean;
38
- }
39
-
40
- export const StructDefaultOptions: Readonly<StructOptions> = {
41
- littleEndian: false,
42
- };
1
+ export interface StructDeserializeStream {
2
+ /**
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
+ */
8
+ read(length: number): ArrayBuffer;
9
+ }
10
+
11
+ export interface StructAsyncDeserializeStream {
12
+ /**
13
+ * Read data from the underlying data source.
14
+ *
15
+ * Context must return exactly `length` bytes or data. If that's not possible
16
+ * (due to end of file or other error condition), it must throw an error.
17
+ */
18
+ read(length: number): Promise<ArrayBuffer>;
19
+ }
20
+
21
+ export interface StructOptions {
22
+ /**
23
+ * Whether all multi-byte fields in this struct are little-endian encoded.
24
+ *
25
+ * Default to `false`
26
+ */
27
+ littleEndian: boolean;
28
+ }
29
+
30
+ export const StructDefaultOptions: Readonly<StructOptions> = {
31
+ littleEndian: false,
32
+ };
@@ -1,69 +1,72 @@
1
- import type { ValueOrPromise } from '../utils';
2
- import type { StructDeserializationContext, StructOptions, StructSerializationContext } from './context';
3
- import type { StructFieldValue } from './field-value';
4
- import type { StructValue } from './struct-value';
5
-
6
- /**
7
- * A field definition is a bridge between its type and its runtime value.
8
- *
9
- * `Struct` record fields in a list of `StructFieldDefinition`s.
10
- *
11
- * When `Struct#create` or `Struct#deserialize` are called, each field's definition
12
- * crates its own type of `StructFieldValue` to manage the field value in that `Struct` instance.
13
- *
14
- * One `StructFieldDefinition` can represents multiple similar types, just returns the corresponding
15
- * `StructFieldValue` when `createValue` was called.
16
- *
17
- * @template TOptions TypeScript type of this definition's `options`.
18
- * @template TValue TypeScript type of this field.
19
- * @template TOmitInitKey Optionally remove some fields from the init type. Should be a union of string literal types.
20
- */
21
- export abstract class StructFieldDefinition<
22
- TOptions = void,
23
- TValue = unknown,
24
- TOmitInitKey extends PropertyKey = never,
25
- > {
26
- /**
27
- * When `T` is a type initiated `StructFieldDefinition`,
28
- * use `T['TValue']` to retrieve its `TValue` type parameter.
29
- */
30
- public readonly TValue!: TValue;
31
-
32
- /**
33
- * When `T` is a type initiated `StructFieldDefinition`,
34
- * use `T['TOmitInitKey']` to retrieve its `TOmitInitKey` type parameter.
35
- */
36
- public readonly TOmitInitKey!: TOmitInitKey;
37
-
38
- public readonly options: TOptions;
39
-
40
- public constructor(options: TOptions) {
41
- this.options = options;
42
- }
43
-
44
- /**
45
- * When implemented in derived classes, returns the size (or minimal size if it's dynamic) of this field.
46
- *
47
- * Actual size can be retrieved from `StructFieldValue#getSize`
48
- */
49
- public abstract getSize(): number;
50
-
51
- /**
52
- * When implemented in derived classes, creates a `StructFieldValue` from a given `value`.
53
- */
54
- public abstract create(
55
- options: Readonly<StructOptions>,
56
- context: StructSerializationContext,
57
- struct: StructValue,
58
- value: TValue,
59
- ): StructFieldValue<this>;
60
-
61
- /**
62
- * When implemented in derived classes, creates a `StructFieldValue` by parsing `context`.
63
- */
64
- public abstract deserialize(
65
- options: Readonly<StructOptions>,
66
- context: StructDeserializationContext,
67
- struct: StructValue,
68
- ): ValueOrPromise<StructFieldValue<this>>;
69
- }
1
+ import type { StructAsyncDeserializeStream, StructDeserializeStream, StructOptions } from './context';
2
+ import type { StructFieldValue } from './field-value';
3
+ import type { StructValue } from './struct-value';
4
+
5
+ /**
6
+ * A field definition is a bridge between its type and its runtime value.
7
+ *
8
+ * `Struct` record fields in a list of `StructFieldDefinition`s.
9
+ *
10
+ * When `Struct#create` or `Struct#deserialize` are called, each field's definition
11
+ * crates its own type of `StructFieldValue` to manage the field value in that `Struct` instance.
12
+ *
13
+ * One `StructFieldDefinition` can represents multiple similar types, just returns the corresponding
14
+ * `StructFieldValue` when `createValue` was called.
15
+ *
16
+ * @template TOptions TypeScript type of this definition's `options`.
17
+ * @template TValue TypeScript type of this field.
18
+ * @template TOmitInitKey Optionally remove some fields from the init type. Should be a union of string literal types.
19
+ */
20
+ export abstract class StructFieldDefinition<
21
+ TOptions = void,
22
+ TValue = unknown,
23
+ TOmitInitKey extends PropertyKey = never,
24
+ > {
25
+ /**
26
+ * When `T` is a type initiated `StructFieldDefinition`,
27
+ * use `T['TValue']` to retrieve its `TValue` type parameter.
28
+ */
29
+ public readonly TValue!: TValue;
30
+
31
+ /**
32
+ * When `T` is a type initiated `StructFieldDefinition`,
33
+ * use `T['TOmitInitKey']` to retrieve its `TOmitInitKey` type parameter.
34
+ */
35
+ public readonly TOmitInitKey!: TOmitInitKey;
36
+
37
+ public readonly options: TOptions;
38
+
39
+ public constructor(options: TOptions) {
40
+ this.options = options;
41
+ }
42
+
43
+ /**
44
+ * When implemented in derived classes, returns the size (or minimal size if it's dynamic) of this field.
45
+ *
46
+ * Actual size can be retrieved from `StructFieldValue#getSize`
47
+ */
48
+ public abstract getSize(): number;
49
+
50
+ /**
51
+ * When implemented in derived classes, creates a `StructFieldValue` from a given `value`.
52
+ */
53
+ public abstract create(
54
+ options: Readonly<StructOptions>,
55
+ struct: StructValue,
56
+ value: TValue,
57
+ ): StructFieldValue<this>;
58
+
59
+ /**
60
+ * When implemented in derived classes, creates a `StructFieldValue` by parsing `context`.
61
+ */
62
+ public abstract deserialize(
63
+ options: Readonly<StructOptions>,
64
+ stream: StructDeserializeStream,
65
+ struct: StructValue,
66
+ ): StructFieldValue<this>;
67
+ public abstract deserialize(
68
+ options: Readonly<StructOptions>,
69
+ stream: StructAsyncDeserializeStream,
70
+ struct: StructValue,
71
+ ): Promise<StructFieldValue<this>>;
72
+ }