@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
package/esm/struct.js CHANGED
@@ -1,256 +1,183 @@
1
- import { __assign, __awaiter, __generator, __read, __values } from "tslib";
2
- import { createRuntimeObject, getRuntimeValue, setRuntimeValue, StructDefaultOptions } from './basic';
1
+ import { StructDefaultOptions, StructValue } from './basic';
2
+ import { Syncbird } from "./syncbird";
3
3
  import { ArrayBufferFieldType, FixedLengthArrayBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringFieldType, Uint8ClampedArrayFieldType, VariableLengthArrayBufferLikeFieldDefinition } from './types';
4
- var Struct = /** @class */ (function () {
5
- function Struct(options) {
6
- var _this = this;
4
+ export class Struct {
5
+ constructor(options) {
7
6
  this._size = 0;
8
7
  this._fields = [];
9
8
  this._extra = {};
10
- this.arrayBufferLike = function (name, type, options) {
9
+ this.arrayBufferLike = (name, type, options) => {
11
10
  if ('length' in options) {
12
- return _this.field(name, new FixedLengthArrayBufferLikeFieldDefinition(type, options));
11
+ return this.field(name, new FixedLengthArrayBufferLikeFieldDefinition(type, options));
13
12
  }
14
13
  else {
15
- return _this.field(name, new VariableLengthArrayBufferLikeFieldDefinition(type, options));
14
+ return this.field(name, new VariableLengthArrayBufferLikeFieldDefinition(type, options));
16
15
  }
17
16
  };
18
- this.arrayBuffer = function (name, options) {
19
- return _this.arrayBufferLike(name, ArrayBufferFieldType.instance, options);
17
+ this.arrayBuffer = (name, options) => {
18
+ return this.arrayBufferLike(name, ArrayBufferFieldType.instance, options);
20
19
  };
21
- this.uint8ClampedArray = function (name, options) {
22
- return _this.arrayBufferLike(name, Uint8ClampedArrayFieldType.instance, options);
20
+ this.uint8ClampedArray = (name, options) => {
21
+ return this.arrayBufferLike(name, Uint8ClampedArrayFieldType.instance, options);
23
22
  };
24
- this.string = function (name, options) {
25
- return _this.arrayBufferLike(name, StringFieldType.instance, options);
23
+ this.string = (name, options) => {
24
+ return this.arrayBufferLike(name, StringFieldType.instance, options);
26
25
  };
27
- this.options = __assign(__assign({}, StructDefaultOptions), options);
26
+ this.options = Object.assign(Object.assign({}, StructDefaultOptions), options);
28
27
  }
29
- Object.defineProperty(Struct.prototype, "size", {
30
- /**
31
- * Gets the static size (exclude fields that can change size at runtime)
32
- */
33
- get: function () { return this._size; },
34
- enumerable: false,
35
- configurable: true
36
- });
37
28
  /**
38
- * Appends a `FieldDefinition` to the `Struct
29
+ * Gets the static size (exclude fields that can change size at runtime)
39
30
  */
40
- Struct.prototype.field = function (name, definition) {
31
+ get size() { return this._size; }
32
+ /**
33
+ * Appends a `StructFieldDefinition` to the `Struct
34
+ */
35
+ field(name, definition) {
36
+ for (const field of this._fields) {
37
+ if (field[0] === name) {
38
+ throw new Error(`This struct already have a field with name '${name}'`);
39
+ }
40
+ }
41
41
  this._fields.push([name, definition]);
42
- var size = definition.getSize();
42
+ const size = definition.getSize();
43
43
  this._size += size;
44
44
  // Force cast `this` to another type
45
45
  return this;
46
- };
46
+ }
47
47
  /**
48
48
  * Merges (flats) another `Struct`'s fields and extra fields into this one.
49
49
  */
50
- Struct.prototype.fields = function (other) {
51
- var e_1, _a;
52
- try {
53
- for (var _b = __values(other._fields), _c = _b.next(); !_c.done; _c = _b.next()) {
54
- var field = _c.value;
55
- this._fields.push(field);
56
- }
57
- }
58
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
59
- finally {
60
- try {
61
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
62
- }
63
- finally { if (e_1) throw e_1.error; }
50
+ fields(other) {
51
+ for (const field of other._fields) {
52
+ this._fields.push(field);
64
53
  }
65
54
  this._size += other._size;
66
55
  Object.assign(this._extra, other._extra);
67
56
  return this;
68
- };
69
- Struct.prototype.number = function (name, type, _typescriptType) {
57
+ }
58
+ number(name, type, _typescriptType) {
70
59
  return this.field(name, new NumberFieldDefinition(type, _typescriptType));
71
- };
60
+ }
72
61
  /**
73
62
  * Appends an `int8` field to the `Struct`
74
63
  */
75
- Struct.prototype.int8 = function (name, _typescriptType) {
64
+ int8(name, _typescriptType) {
76
65
  return this.number(name, NumberFieldType.Int8, _typescriptType);
77
- };
66
+ }
78
67
  /**
79
68
  * Appends an `uint8` field to the `Struct`
80
69
  */
81
- Struct.prototype.uint8 = function (name, _typescriptType) {
70
+ uint8(name, _typescriptType) {
82
71
  return this.number(name, NumberFieldType.Uint8, _typescriptType);
83
- };
72
+ }
84
73
  /**
85
74
  * Appends an `int16` field to the `Struct`
86
75
  */
87
- Struct.prototype.int16 = function (name, _typescriptType) {
76
+ int16(name, _typescriptType) {
88
77
  return this.number(name, NumberFieldType.Int16, _typescriptType);
89
- };
78
+ }
90
79
  /**
91
80
  * Appends an `uint16` field to the `Struct`
92
81
  */
93
- Struct.prototype.uint16 = function (name, _typescriptType) {
82
+ uint16(name, _typescriptType) {
94
83
  return this.number(name, NumberFieldType.Uint16, _typescriptType);
95
- };
84
+ }
96
85
  /**
97
86
  * Appends an `int32` field to the `Struct`
98
87
  */
99
- Struct.prototype.int32 = function (name, _typescriptType) {
88
+ int32(name, _typescriptType) {
100
89
  return this.number(name, NumberFieldType.Int32, _typescriptType);
101
- };
90
+ }
102
91
  /**
103
92
  * Appends an `uint32` field to the `Struct`
104
93
  */
105
- Struct.prototype.uint32 = function (name, typescriptType) {
94
+ uint32(name, typescriptType) {
106
95
  return this.number(name, NumberFieldType.Uint32, typescriptType);
107
- };
96
+ }
108
97
  /**
109
98
  * Appends an `int64` field to the `Struct`
110
99
  *
111
100
  * Requires native `BigInt` support
112
101
  */
113
- Struct.prototype.int64 = function (name, _typescriptType) {
102
+ int64(name, _typescriptType) {
114
103
  return this.number(name, NumberFieldType.Int64, _typescriptType);
115
- };
104
+ }
116
105
  /**
117
106
  * Appends an `uint64` field to the `Struct`
118
107
  *
119
108
  * Requires native `BigInt` support
120
109
  */
121
- Struct.prototype.uint64 = function (name, _typescriptType) {
110
+ uint64(name, _typescriptType) {
122
111
  return this.number(name, NumberFieldType.Uint64, _typescriptType);
123
- };
112
+ }
124
113
  /**
125
- * Adds some extra fields into every Struct value.
114
+ * Adds some extra properties into every `Struct` value.
126
115
  *
127
- * Extra fields will not affect serialize or deserialize process.
116
+ * Extra properties will not affect serialize or deserialize process.
128
117
  *
129
- * Multiple calls to `extra` will merge all values together.
118
+ * Multiple calls to `extra` will merge all properties together.
130
119
  *
131
120
  * @param value
132
- * An object containing anything you want to add to the result object. Accessors and methods are also allowed.
121
+ * An object containing properties to be added to the result value. Accessors and methods are also allowed.
133
122
  */
134
- Struct.prototype.extra = function (value) {
123
+ extra(value) {
135
124
  Object.assign(this._extra, Object.getOwnPropertyDescriptors(value));
136
125
  return this;
137
- };
138
- Struct.prototype.postDeserialize = function (callback) {
126
+ }
127
+ postDeserialize(callback) {
139
128
  this._postDeserialized = callback;
140
129
  return this;
141
- };
142
- Struct.prototype.initializeObject = function () {
143
- var object = createRuntimeObject();
144
- Object.defineProperties(object, this._extra);
145
- return object;
146
- };
147
- Struct.prototype.create = function (init, context) {
148
- var e_2, _a;
149
- var object = this.initializeObject();
150
- try {
151
- for (var _b = __values(this._fields), _c = _b.next(); !_c.done; _c = _b.next()) {
152
- var _d = __read(_c.value, 2), name = _d[0], definition = _d[1];
153
- var runtimeValue = definition.createValue(this.options, context, object, init[name]);
154
- setRuntimeValue(object, name, runtimeValue);
155
- }
156
- }
157
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
158
- finally {
159
- try {
160
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
161
- }
162
- finally { if (e_2) throw e_2.error; }
163
- }
164
- return object;
165
- };
166
- Struct.prototype.deserialize = function (context) {
167
- return __awaiter(this, void 0, void 0, function () {
168
- var object, _a, _b, _c, name, definition, runtimeValue, e_3_1, result;
169
- var e_3, _d;
170
- return __generator(this, function (_e) {
171
- switch (_e.label) {
172
- case 0:
173
- object = this.initializeObject();
174
- _e.label = 1;
175
- case 1:
176
- _e.trys.push([1, 6, 7, 8]);
177
- _a = __values(this._fields), _b = _a.next();
178
- _e.label = 2;
179
- case 2:
180
- if (!!_b.done) return [3 /*break*/, 5];
181
- _c = __read(_b.value, 2), name = _c[0], definition = _c[1];
182
- return [4 /*yield*/, definition.deserialize(this.options, context, object)];
183
- case 3:
184
- runtimeValue = _e.sent();
185
- setRuntimeValue(object, name, runtimeValue);
186
- _e.label = 4;
187
- case 4:
188
- _b = _a.next();
189
- return [3 /*break*/, 2];
190
- case 5: return [3 /*break*/, 8];
191
- case 6:
192
- e_3_1 = _e.sent();
193
- e_3 = { error: e_3_1 };
194
- return [3 /*break*/, 8];
195
- case 7:
196
- try {
197
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
198
- }
199
- finally { if (e_3) throw e_3.error; }
200
- return [7 /*endfinally*/];
201
- case 8:
202
- if (this._postDeserialized) {
203
- result = this._postDeserialized.call(object, object);
204
- if (result) {
205
- return [2 /*return*/, result];
206
- }
207
- }
208
- return [2 /*return*/, object];
130
+ }
131
+ deserialize(stream) {
132
+ const value = new StructValue();
133
+ Object.defineProperties(value.value, this._extra);
134
+ return Syncbird.try(() => {
135
+ const iterator = this._fields[Symbol.iterator]();
136
+ const iterate = () => {
137
+ const result = iterator.next();
138
+ if (result.done) {
139
+ return value;
140
+ }
141
+ const [name, definition] = result.value;
142
+ return Syncbird.resolve(definition.deserialize(this.options, stream, value)).then(fieldValue => {
143
+ value.set(name, fieldValue);
144
+ return iterate();
145
+ });
146
+ };
147
+ return iterate();
148
+ }).then(value => {
149
+ if (this._postDeserialized) {
150
+ const object = value.value;
151
+ const result = this._postDeserialized.call(object, object);
152
+ if (result) {
153
+ return result;
209
154
  }
210
- });
211
- });
212
- };
213
- Struct.prototype.serialize = function (init, context) {
214
- var e_4, _a, e_5, _b;
215
- var object = this.create(init, context);
216
- var structSize = 0;
217
- var fieldsInfo = [];
218
- try {
219
- for (var _c = __values(this._fields), _d = _c.next(); !_d.done; _d = _c.next()) {
220
- var _e = __read(_d.value, 1), name = _e[0];
221
- var runtimeValue = getRuntimeValue(object, name);
222
- var size = runtimeValue.getSize();
223
- fieldsInfo.push({ runtimeValue: runtimeValue, size: size });
224
- structSize += size;
225
155
  }
156
+ return value.value;
157
+ }).valueOrPromise();
158
+ }
159
+ serialize(init) {
160
+ const value = new StructValue();
161
+ for (const [name, definition] of this._fields) {
162
+ const fieldValue = definition.create(this.options, value, init[name]);
163
+ value.set(name, fieldValue);
226
164
  }
227
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
228
- finally {
229
- try {
230
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
231
- }
232
- finally { if (e_4) throw e_4.error; }
165
+ let structSize = 0;
166
+ const fieldsInfo = [];
167
+ for (const [name] of this._fields) {
168
+ const fieldValue = value.get(name);
169
+ const size = fieldValue.getSize();
170
+ fieldsInfo.push({ fieldValue, size });
171
+ structSize += size;
233
172
  }
234
- var buffer = new ArrayBuffer(structSize);
235
- var dataView = new DataView(buffer);
236
- var offset = 0;
237
- try {
238
- for (var fieldsInfo_1 = __values(fieldsInfo), fieldsInfo_1_1 = fieldsInfo_1.next(); !fieldsInfo_1_1.done; fieldsInfo_1_1 = fieldsInfo_1.next()) {
239
- var _f = fieldsInfo_1_1.value, runtimeValue = _f.runtimeValue, size = _f.size;
240
- runtimeValue.serialize(dataView, offset, context);
241
- offset += size;
242
- }
243
- }
244
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
245
- finally {
246
- try {
247
- if (fieldsInfo_1_1 && !fieldsInfo_1_1.done && (_b = fieldsInfo_1.return)) _b.call(fieldsInfo_1);
248
- }
249
- finally { if (e_5) throw e_5.error; }
173
+ const buffer = new ArrayBuffer(structSize);
174
+ const dataView = new DataView(buffer);
175
+ let offset = 0;
176
+ for (const { fieldValue, size } of fieldsInfo) {
177
+ fieldValue.serialize(dataView, offset);
178
+ offset += size;
250
179
  }
251
180
  return buffer;
252
- };
253
- return Struct;
254
- }());
255
- export { Struct };
181
+ }
182
+ }
256
183
  //# sourceMappingURL=struct.js.map
package/esm/struct.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,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,134 +1,110 @@
1
- import { __awaiter, __extends, __generator } from "tslib";
2
- import { FieldDefinition, FieldRuntimeValue } from '../basic';
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,
6
7
  * and need to be converted to an ArrayBuffer when serializing
7
8
  *
8
- * @template TType The actual TypeScript type of this type
9
+ * @template TValue The actual TypeScript type of this type
9
10
  * @template TTypeScriptType Optional another type (should be compatible with `TType`)
10
11
  * specified by user when creating field definitions.
11
12
  */
12
- var ArrayBufferLikeFieldType = /** @class */ (function () {
13
- function ArrayBufferLikeFieldType() {
14
- }
15
- return ArrayBufferLikeFieldType;
16
- }());
17
- export { ArrayBufferLikeFieldType };
13
+ export class ArrayBufferLikeFieldType {
14
+ }
18
15
  /** An ArrayBufferLike type that's actually an `ArrayBuffer` */
19
- var ArrayBufferFieldType = /** @class */ (function (_super) {
20
- __extends(ArrayBufferFieldType, _super);
21
- function ArrayBufferFieldType() {
22
- return _super.call(this) || this;
16
+ export class ArrayBufferFieldType extends ArrayBufferLikeFieldType {
17
+ constructor() {
18
+ super();
23
19
  }
24
- ArrayBufferFieldType.prototype.toArrayBuffer = function (value) {
20
+ toArrayBuffer(value) {
25
21
  return value;
26
- };
27
- ArrayBufferFieldType.prototype.fromArrayBuffer = function (arrayBuffer) {
22
+ }
23
+ fromArrayBuffer(arrayBuffer) {
28
24
  return arrayBuffer;
29
- };
30
- ArrayBufferFieldType.prototype.getSize = function (value) {
25
+ }
26
+ getSize(value) {
31
27
  return value.byteLength;
32
- };
33
- ArrayBufferFieldType.instance = new ArrayBufferFieldType();
34
- return ArrayBufferFieldType;
35
- }(ArrayBufferLikeFieldType));
36
- export { ArrayBufferFieldType };
37
- /** Am ArrayBufferLike type that converts to/from the `ArrayBuffer` from/to a `Uint8ClampedArray` */
38
- var Uint8ClampedArrayFieldType = /** @class */ (function (_super) {
39
- __extends(Uint8ClampedArrayFieldType, _super);
40
- function Uint8ClampedArrayFieldType() {
41
- return _super.call(this) || this;
42
- }
43
- Uint8ClampedArrayFieldType.prototype.toArrayBuffer = function (value) {
28
+ }
29
+ }
30
+ ArrayBufferFieldType.instance = new ArrayBufferFieldType();
31
+ /** Am ArrayBufferLike type that converts between `ArrayBuffer` and `Uint8ClampedArray` */
32
+ export class Uint8ClampedArrayFieldType extends ArrayBufferLikeFieldType {
33
+ constructor() {
34
+ super();
35
+ }
36
+ toArrayBuffer(value) {
44
37
  return value.buffer;
45
- };
46
- Uint8ClampedArrayFieldType.prototype.fromArrayBuffer = function (arrayBuffer) {
38
+ }
39
+ fromArrayBuffer(arrayBuffer) {
47
40
  return new Uint8ClampedArray(arrayBuffer);
48
- };
49
- Uint8ClampedArrayFieldType.prototype.getSize = function (value) {
41
+ }
42
+ getSize(value) {
50
43
  return value.byteLength;
51
- };
52
- Uint8ClampedArrayFieldType.instance = new Uint8ClampedArrayFieldType();
53
- return Uint8ClampedArrayFieldType;
54
- }(ArrayBufferLikeFieldType));
55
- export { Uint8ClampedArrayFieldType };
56
- /** Am ArrayBufferLike type that converts to/from the `ArrayBuffer` from/to a `string` */
57
- var StringFieldType = /** @class */ (function (_super) {
58
- __extends(StringFieldType, _super);
59
- function StringFieldType() {
60
- return _super !== null && _super.apply(this, arguments) || this;
61
- }
62
- StringFieldType.prototype.toArrayBuffer = function (value, context) {
63
- return context.encodeUtf8(value);
64
- };
65
- StringFieldType.prototype.fromArrayBuffer = function (arrayBuffer, context) {
66
- return context.decodeUtf8(arrayBuffer);
67
- };
68
- StringFieldType.prototype.getSize = function () {
44
+ }
45
+ }
46
+ Uint8ClampedArrayFieldType.instance = new Uint8ClampedArrayFieldType();
47
+ /** An ArrayBufferLike type that converts between `ArrayBuffer` and `string` */
48
+ export class StringFieldType extends ArrayBufferLikeFieldType {
49
+ toArrayBuffer(value) {
50
+ return encodeUtf8(value);
51
+ }
52
+ fromArrayBuffer(arrayBuffer) {
53
+ return decodeUtf8(arrayBuffer);
54
+ }
55
+ getSize() {
69
56
  // Return `-1`, so `ArrayBufferLikeFieldDefinition` will
70
57
  // convert this `value` into an `ArrayBuffer` (and cache the result),
71
58
  // Then get the size from that `ArrayBuffer`
72
59
  return -1;
73
- };
74
- StringFieldType.instance = new StringFieldType();
75
- return StringFieldType;
76
- }(ArrayBufferLikeFieldType));
77
- export { StringFieldType };
78
- var EmptyArrayBuffer = new ArrayBuffer(0);
79
- var ArrayBufferLikeFieldDefinition = /** @class */ (function (_super) {
80
- __extends(ArrayBufferLikeFieldDefinition, _super);
81
- function ArrayBufferLikeFieldDefinition(type, options) {
82
- var _this = _super.call(this, options) || this;
83
- _this.type = type;
84
- return _this;
85
- }
86
- ArrayBufferLikeFieldDefinition.prototype.getDeserializeSize = function (object) {
60
+ }
61
+ }
62
+ StringFieldType.instance = new StringFieldType();
63
+ const EmptyArrayBuffer = new ArrayBuffer(0);
64
+ export class ArrayBufferLikeFieldDefinition extends StructFieldDefinition {
65
+ constructor(type, options) {
66
+ super(options);
67
+ this.type = type;
68
+ }
69
+ getDeserializeSize(struct) {
87
70
  return this.getSize();
88
- };
89
- ArrayBufferLikeFieldDefinition.prototype.deserialize = function (options, context, object) {
90
- return __awaiter(this, void 0, void 0, function () {
91
- var size, arrayBuffer, value, runtimeValue;
92
- return __generator(this, function (_a) {
93
- switch (_a.label) {
94
- case 0:
95
- size = this.getDeserializeSize(object);
96
- if (!(size === 0)) return [3 /*break*/, 1];
97
- arrayBuffer = EmptyArrayBuffer;
98
- return [3 /*break*/, 3];
99
- case 1: return [4 /*yield*/, context.read(size)];
100
- case 2:
101
- arrayBuffer = _a.sent();
102
- _a.label = 3;
103
- case 3:
104
- value = this.type.fromArrayBuffer(arrayBuffer, context);
105
- runtimeValue = this.createValue(options, context, object, value);
106
- runtimeValue.arrayBuffer = arrayBuffer;
107
- return [2 /*return*/, runtimeValue];
108
- }
109
- });
110
- });
111
- };
112
- return ArrayBufferLikeFieldDefinition;
113
- }(FieldDefinition));
114
- export { ArrayBufferLikeFieldDefinition };
115
- var ArrayBufferLikeFieldRuntimeValue = /** @class */ (function (_super) {
116
- __extends(ArrayBufferLikeFieldRuntimeValue, _super);
117
- function ArrayBufferLikeFieldRuntimeValue() {
118
- return _super !== null && _super.apply(this, arguments) || this;
119
- }
120
- ArrayBufferLikeFieldRuntimeValue.prototype.set = function (value) {
121
- _super.prototype.set.call(this, value);
71
+ }
72
+ /**
73
+ * When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
74
+ */
75
+ create(options, struct, value, arrayBuffer) {
76
+ return new ArrayBufferLikeFieldValue(this, options, struct, value, arrayBuffer);
77
+ }
78
+ deserialize(options, stream, struct) {
79
+ return Syncbird.try(() => {
80
+ const size = this.getDeserializeSize(struct);
81
+ if (size === 0) {
82
+ return EmptyArrayBuffer;
83
+ }
84
+ else {
85
+ return stream.read(size);
86
+ }
87
+ }).then(arrayBuffer => {
88
+ const value = this.type.fromArrayBuffer(arrayBuffer);
89
+ return this.create(options, struct, value, arrayBuffer);
90
+ }).valueOrPromise();
91
+ }
92
+ }
93
+ export class ArrayBufferLikeFieldValue extends StructFieldValue {
94
+ constructor(definition, options, struct, value, arrayBuffer) {
95
+ super(definition, options, struct, value);
96
+ this.arrayBuffer = arrayBuffer;
97
+ }
98
+ set(value) {
99
+ super.set(value);
122
100
  this.arrayBuffer = undefined;
123
- };
124
- ArrayBufferLikeFieldRuntimeValue.prototype.serialize = function (dataView, offset, context) {
101
+ }
102
+ serialize(dataView, offset) {
125
103
  if (!this.arrayBuffer) {
126
- this.arrayBuffer = this.definition.type.toArrayBuffer(this.value, context);
104
+ this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
127
105
  }
128
106
  new Uint8Array(dataView.buffer)
129
107
  .set(new Uint8Array(this.arrayBuffer), offset);
130
- };
131
- return ArrayBufferLikeFieldRuntimeValue;
132
- }(FieldRuntimeValue));
133
- export { ArrayBufferLikeFieldRuntimeValue };
108
+ }
109
+ }
134
110
  //# sourceMappingURL=array-buffer.js.map