@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.
- package/CHANGELOG.json +23 -0
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -21
- package/README.md +720 -643
- package/dts/basic/context.d.ts +10 -17
- package/dts/basic/context.d.ts.map +1 -1
- package/dts/basic/definition.d.ts +23 -23
- package/dts/basic/definition.d.ts.map +1 -1
- package/dts/basic/field-value.d.ts +38 -0
- package/dts/basic/field-value.d.ts.map +1 -0
- package/dts/basic/index.d.ts +2 -2
- package/dts/basic/index.d.ts.map +1 -1
- package/dts/basic/struct-value.d.ts +24 -0
- package/dts/basic/struct-value.d.ts.map +1 -0
- package/dts/index.d.ts +1 -0
- package/dts/index.d.ts.map +1 -1
- package/dts/struct.d.ts +44 -47
- package/dts/struct.d.ts.map +1 -1
- package/dts/syncbird.d.ts +20 -0
- package/dts/syncbird.d.ts.map +1 -0
- package/dts/types/array-buffer.d.ts +22 -20
- package/dts/types/array-buffer.d.ts.map +1 -1
- package/dts/types/fixed-length-array-buffer.d.ts +1 -3
- package/dts/types/fixed-length-array-buffer.d.ts.map +1 -1
- package/dts/types/index.d.ts +0 -1
- package/dts/types/index.d.ts.map +1 -1
- package/dts/types/number.d.ts +11 -10
- package/dts/types/number.d.ts.map +1 -1
- package/dts/types/variable-length-array-buffer.d.ts +21 -19
- package/dts/types/variable-length-array-buffer.d.ts.map +1 -1
- package/dts/{types/utils.d.ts → utils.d.ts} +3 -0
- package/dts/utils.d.ts.map +1 -0
- package/esm/basic/context.js +1 -1
- package/esm/basic/context.js.map +1 -1
- package/esm/basic/definition.js +9 -11
- package/esm/basic/definition.js.map +1 -1
- package/esm/basic/field-value.js +35 -0
- package/esm/basic/field-value.js.map +1 -0
- package/esm/basic/index.js +2 -2
- package/esm/basic/index.js.map +1 -1
- package/esm/basic/struct-value.js +36 -0
- package/esm/basic/struct-value.js.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/struct.js +103 -176
- package/esm/struct.js.map +1 -1
- package/esm/syncbird.js +25 -0
- package/esm/syncbird.js.map +1 -0
- package/esm/types/array-buffer.js +83 -107
- package/esm/types/array-buffer.js.map +1 -1
- package/esm/types/fixed-length-array-buffer.js +5 -15
- package/esm/types/fixed-length-array-buffer.js.map +1 -1
- package/esm/types/index.js +0 -1
- package/esm/types/index.js.map +1 -1
- package/esm/types/number.js +35 -53
- package/esm/types/number.js.map +1 -1
- package/esm/types/variable-length-array-buffer.js +57 -68
- package/esm/types/variable-length-array-buffer.js.map +1 -1
- package/esm/utils.js +17 -0
- package/esm/utils.js.map +1 -0
- package/package.json +47 -50
- package/src/basic/context.ts +32 -40
- package/src/basic/definition.ts +72 -69
- package/src/basic/{runtime-value.ts → field-value.ts} +67 -72
- package/src/basic/index.ts +4 -4
- package/src/basic/struct-value.ts +39 -0
- package/src/index.ts +5 -4
- package/src/struct.ts +595 -579
- package/src/syncbird.ts +53 -0
- package/src/types/array-buffer.ts +194 -171
- package/src/types/fixed-length-array-buffer.ts +17 -27
- package/src/types/index.ts +4 -5
- package/src/types/number.ts +114 -101
- package/src/types/variable-length-array-buffer.ts +142 -121
- package/src/{types/utils.ts → utils.ts} +62 -47
- package/cjs/basic/context.js +0 -7
- package/cjs/basic/context.js.map +0 -1
- package/cjs/basic/definition.js +0 -26
- package/cjs/basic/definition.js.map +0 -1
- package/cjs/basic/index.js +0 -8
- package/cjs/basic/index.js.map +0 -1
- package/cjs/basic/runtime-object.js +0 -34
- package/cjs/basic/runtime-object.js.map +0 -1
- package/cjs/basic/runtime-value.js +0 -41
- package/cjs/basic/runtime-value.js.map +0 -1
- package/cjs/index.js +0 -10
- package/cjs/index.js.map +0 -1
- package/cjs/struct.js +0 -259
- package/cjs/struct.js.map +0 -1
- package/cjs/types/array-buffer.js +0 -137
- package/cjs/types/array-buffer.js.map +0 -1
- package/cjs/types/fixed-length-array-buffer.js +0 -21
- package/cjs/types/fixed-length-array-buffer.js.map +0 -1
- package/cjs/types/index.js +0 -9
- package/cjs/types/index.js.map +0 -1
- package/cjs/types/number.js +0 -68
- package/cjs/types/number.js.map +0 -1
- package/cjs/types/utils.js +0 -11
- package/cjs/types/utils.js.map +0 -1
- package/cjs/types/variable-length-array-buffer.js +0 -85
- package/cjs/types/variable-length-array-buffer.js.map +0 -1
- package/dts/basic/runtime-object.d.ts +0 -17
- package/dts/basic/runtime-object.d.ts.map +0 -1
- package/dts/basic/runtime-value.d.ts +0 -39
- package/dts/basic/runtime-value.d.ts.map +0 -1
- package/dts/types/utils.d.ts.map +0 -1
- package/esm/basic/runtime-object.js +0 -28
- package/esm/basic/runtime-object.js.map +0 -1
- package/esm/basic/runtime-value.js +0 -38
- package/esm/basic/runtime-value.js.map +0 -1
- package/esm/types/utils.js +0 -7
- package/esm/types/utils.js.map +0 -1
- package/src/basic/context.spec.ts +0 -9
- package/src/basic/definition.spec.ts +0 -26
- package/src/basic/runtime-object.spec.ts +0 -38
- package/src/basic/runtime-object.ts +0 -36
- package/src/basic/runtime-value.spec.ts +0 -71
- package/src/types/array-buffer.spec.ts +0 -88
- package/src/types/number.spec.ts +0 -262
- package/tsconfig.cjs.json +0 -11
- package/tsconfig.esm.json +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-buffer.js","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"array-buffer.js","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
__extends(FixedLengthArrayBufferLikeFieldDefinition, _super);
|
|
5
|
-
function FixedLengthArrayBufferLikeFieldDefinition() {
|
|
6
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
7
|
-
}
|
|
8
|
-
FixedLengthArrayBufferLikeFieldDefinition.prototype.getSize = function () {
|
|
1
|
+
import { ArrayBufferLikeFieldDefinition } from './array-buffer';
|
|
2
|
+
export class FixedLengthArrayBufferLikeFieldDefinition extends ArrayBufferLikeFieldDefinition {
|
|
3
|
+
getSize() {
|
|
9
4
|
return this.options.length;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return new ArrayBufferLikeFieldRuntimeValue(this, options, context, object, value);
|
|
13
|
-
};
|
|
14
|
-
return FixedLengthArrayBufferLikeFieldDefinition;
|
|
15
|
-
}(ArrayBufferLikeFieldDefinition));
|
|
16
|
-
export { FixedLengthArrayBufferLikeFieldDefinition };
|
|
5
|
+
}
|
|
6
|
+
}
|
|
17
7
|
;
|
|
18
8
|
//# sourceMappingURL=fixed-length-array-buffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-length-array-buffer.js","sourceRoot":"","sources":["../../src/types/fixed-length-array-buffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixed-length-array-buffer.js","sourceRoot":"","sources":["../../src/types/fixed-length-array-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAA4B,MAAM,gBAAgB,CAAC;AAM1F,MAAM,OAAO,yCAGP,SAAQ,8BAGT;IACM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACJ;AAAA,CAAC"}
|
package/esm/types/index.js
CHANGED
package/esm/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","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"}
|
package/esm/types/number.js
CHANGED
|
@@ -1,65 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue } from '../basic';
|
|
2
|
+
import { Syncbird } from "../syncbird";
|
|
3
|
+
export class NumberFieldType {
|
|
4
|
+
constructor(size, dataViewGetter, dataViewSetter) {
|
|
5
5
|
this.size = size;
|
|
6
6
|
this.dataViewGetter = dataViewGetter;
|
|
7
7
|
this.dataViewSetter = dataViewSetter;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
function NumberFieldDefinition(type, _typescriptType) {
|
|
23
|
-
var _this = _super.call(this) || this;
|
|
24
|
-
_this.type = type;
|
|
25
|
-
return _this;
|
|
9
|
+
}
|
|
10
|
+
NumberFieldType.Int8 = new NumberFieldType(1, 'getInt8', 'setInt8');
|
|
11
|
+
NumberFieldType.Uint8 = new NumberFieldType(1, 'getUint8', 'setUint8');
|
|
12
|
+
NumberFieldType.Int16 = new NumberFieldType(2, 'getInt16', 'setInt16');
|
|
13
|
+
NumberFieldType.Uint16 = new NumberFieldType(2, 'getUint16', 'setUint16');
|
|
14
|
+
NumberFieldType.Int32 = new NumberFieldType(4, 'getInt32', 'setInt32');
|
|
15
|
+
NumberFieldType.Uint32 = new NumberFieldType(4, 'getUint32', 'setUint32');
|
|
16
|
+
NumberFieldType.Int64 = new NumberFieldType(8, 'getBigInt64', 'setBigInt64');
|
|
17
|
+
NumberFieldType.Uint64 = new NumberFieldType(8, 'getBigUint64', 'setBigUint64');
|
|
18
|
+
export class NumberFieldDefinition extends StructFieldDefinition {
|
|
19
|
+
constructor(type, _typescriptType) {
|
|
20
|
+
super();
|
|
21
|
+
this.type = type;
|
|
26
22
|
}
|
|
27
|
-
|
|
23
|
+
getSize() {
|
|
28
24
|
return this.type.size;
|
|
29
|
-
};
|
|
30
|
-
NumberFieldDefinition.prototype.deserialize = function (options, context, object) {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
32
|
-
var buffer, view, value;
|
|
33
|
-
return __generator(this, function (_a) {
|
|
34
|
-
switch (_a.label) {
|
|
35
|
-
case 0: return [4 /*yield*/, context.read(this.getSize())];
|
|
36
|
-
case 1:
|
|
37
|
-
buffer = _a.sent();
|
|
38
|
-
view = new DataView(buffer);
|
|
39
|
-
value = view[this.type.dataViewGetter](0, options.littleEndian);
|
|
40
|
-
return [2 /*return*/, this.createValue(options, context, object, value)];
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
NumberFieldDefinition.prototype.createValue = function (options, context, object, value) {
|
|
46
|
-
return new NumberFieldRuntimeValue(this, options, context, object, value);
|
|
47
|
-
};
|
|
48
|
-
return NumberFieldDefinition;
|
|
49
|
-
}(FieldDefinition));
|
|
50
|
-
export { NumberFieldDefinition };
|
|
51
|
-
var NumberFieldRuntimeValue = /** @class */ (function (_super) {
|
|
52
|
-
__extends(NumberFieldRuntimeValue, _super);
|
|
53
|
-
function NumberFieldRuntimeValue() {
|
|
54
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
55
25
|
}
|
|
56
|
-
|
|
26
|
+
create(options, struct, value) {
|
|
27
|
+
return new NumberFieldValue(this, options, struct, value);
|
|
28
|
+
}
|
|
29
|
+
deserialize(options, stream, struct) {
|
|
30
|
+
return Syncbird.try(() => {
|
|
31
|
+
return stream.read(this.getSize());
|
|
32
|
+
}).then(buffer => {
|
|
33
|
+
const view = new DataView(buffer);
|
|
34
|
+
const value = view[this.type.dataViewGetter](0, options.littleEndian);
|
|
35
|
+
return this.create(options, struct, value);
|
|
36
|
+
}).valueOrPromise();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class NumberFieldValue extends StructFieldValue {
|
|
40
|
+
serialize(dataView, offset) {
|
|
57
41
|
// `setBigInt64` requires a `bigint` while others require `number`
|
|
58
42
|
// So `dataView[DataViewSetters]` requires `bigint & number`
|
|
59
43
|
// and that is, `never`
|
|
60
44
|
dataView[this.definition.type.dataViewSetter](offset, this.value, this.options.littleEndian);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
}(FieldRuntimeValue));
|
|
64
|
-
export { NumberFieldRuntimeValue };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
65
47
|
//# sourceMappingURL=number.js.map
|
package/esm/types/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,82 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
__extends(VariableLengthArrayBufferLikeFieldDefinition, _super);
|
|
6
|
-
function VariableLengthArrayBufferLikeFieldDefinition() {
|
|
7
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
8
|
-
}
|
|
9
|
-
VariableLengthArrayBufferLikeFieldDefinition.prototype.getSize = function () {
|
|
1
|
+
import { StructFieldValue } from '../basic';
|
|
2
|
+
import { ArrayBufferLikeFieldDefinition, ArrayBufferLikeFieldValue } from './array-buffer';
|
|
3
|
+
export class VariableLengthArrayBufferLikeFieldDefinition extends ArrayBufferLikeFieldDefinition {
|
|
4
|
+
getSize() {
|
|
10
5
|
return 0;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
var
|
|
6
|
+
}
|
|
7
|
+
getDeserializeSize(struct) {
|
|
8
|
+
var _a;
|
|
9
|
+
let value = struct.value[this.options.lengthField];
|
|
14
10
|
if (typeof value === 'string') {
|
|
15
|
-
value = Number.parseInt(value, 10);
|
|
11
|
+
value = Number.parseInt(value, (_a = this.options.lengthFieldBase) !== null && _a !== void 0 ? _a : 10);
|
|
16
12
|
}
|
|
17
13
|
return value;
|
|
18
|
-
};
|
|
19
|
-
VariableLengthArrayBufferLikeFieldDefinition.prototype.createValue = function (options, context, object, value) {
|
|
20
|
-
return new VariableLengthArrayBufferLikeFieldRuntimeValue(this, options, context, object, value);
|
|
21
|
-
};
|
|
22
|
-
return VariableLengthArrayBufferLikeFieldDefinition;
|
|
23
|
-
}(ArrayBufferLikeFieldDefinition));
|
|
24
|
-
export { VariableLengthArrayBufferLikeFieldDefinition };
|
|
25
|
-
var VariableLengthArrayBufferLikeLengthFieldRuntimeValue = /** @class */ (function (_super) {
|
|
26
|
-
__extends(VariableLengthArrayBufferLikeLengthFieldRuntimeValue, _super);
|
|
27
|
-
function VariableLengthArrayBufferLikeLengthFieldRuntimeValue(originalValue, arrayBufferValue) {
|
|
28
|
-
var _this = _super.call(this, originalValue.definition, originalValue.options, originalValue.context, originalValue.object, 0) || this;
|
|
29
|
-
_this.originalValue = originalValue;
|
|
30
|
-
_this.arrayBufferValue = arrayBufferValue;
|
|
31
|
-
return _this;
|
|
32
14
|
}
|
|
33
|
-
|
|
34
|
-
return this
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.originalValue.serialize(dataView, offset, context);
|
|
44
|
-
};
|
|
45
|
-
return VariableLengthArrayBufferLikeLengthFieldRuntimeValue;
|
|
46
|
-
}(FieldRuntimeValue));
|
|
47
|
-
var VariableLengthArrayBufferLikeFieldRuntimeValue = /** @class */ (function (_super) {
|
|
48
|
-
__extends(VariableLengthArrayBufferLikeFieldRuntimeValue, _super);
|
|
49
|
-
function VariableLengthArrayBufferLikeFieldRuntimeValue(definition, options, context, object, value) {
|
|
50
|
-
var _this = _super.call(this, definition, options, context, object, value) || this;
|
|
15
|
+
create(options, struct, value, arrayBuffer) {
|
|
16
|
+
return new VariableLengthArrayBufferLikeStructFieldValue(this, options, struct, value, arrayBuffer);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class VariableLengthArrayBufferLikeStructFieldValue extends ArrayBufferLikeFieldValue {
|
|
20
|
+
constructor(definition, options, struct, value, arrayBuffer) {
|
|
21
|
+
super(definition, options, struct, value, arrayBuffer);
|
|
22
|
+
if (arrayBuffer) {
|
|
23
|
+
this.length = arrayBuffer.byteLength;
|
|
24
|
+
}
|
|
51
25
|
// Patch the associated length field.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return _this;
|
|
26
|
+
const lengthField = this.definition.options.lengthField;
|
|
27
|
+
const originalValue = struct.get(lengthField);
|
|
28
|
+
this.lengthFieldValue = new VariableLengthArrayBufferLikeFieldLengthValue(originalValue, this);
|
|
29
|
+
struct.set(lengthField, this.lengthFieldValue);
|
|
57
30
|
}
|
|
58
|
-
|
|
59
|
-
return 0;
|
|
60
|
-
};
|
|
61
|
-
VariableLengthArrayBufferLikeFieldRuntimeValue.prototype.getSize = function () {
|
|
31
|
+
getSize() {
|
|
62
32
|
if (this.length === undefined) {
|
|
63
|
-
|
|
33
|
+
this.length = this.definition.type.getSize(this.value);
|
|
34
|
+
if (this.length === -1) {
|
|
35
|
+
this.arrayBuffer = this.definition.type.toArrayBuffer(this.value);
|
|
64
36
|
this.length = this.arrayBuffer.byteLength;
|
|
65
37
|
}
|
|
66
|
-
else {
|
|
67
|
-
this.length = this.definition.type.getSize(this.value);
|
|
68
|
-
if (this.length === -1) {
|
|
69
|
-
this.arrayBuffer = this.definition.type.toArrayBuffer(this.value, this.context);
|
|
70
|
-
this.length = this.arrayBuffer.byteLength;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
38
|
}
|
|
74
39
|
return this.length;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
40
|
+
}
|
|
41
|
+
set(value) {
|
|
42
|
+
super.set(value);
|
|
43
|
+
this.arrayBuffer = undefined;
|
|
78
44
|
this.length = undefined;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class VariableLengthArrayBufferLikeFieldLengthValue extends StructFieldValue {
|
|
48
|
+
constructor(originalField, arrayBufferField) {
|
|
49
|
+
super(originalField.definition, originalField.options, originalField.struct, 0);
|
|
50
|
+
this.originalField = originalField;
|
|
51
|
+
this.arrayBufferField = arrayBufferField;
|
|
52
|
+
}
|
|
53
|
+
getSize() {
|
|
54
|
+
return this.originalField.getSize();
|
|
55
|
+
}
|
|
56
|
+
get() {
|
|
57
|
+
var _a;
|
|
58
|
+
let value = this.arrayBufferField.getSize();
|
|
59
|
+
const originalValue = this.originalField.get();
|
|
60
|
+
if (typeof originalValue === 'string') {
|
|
61
|
+
value = value.toString((_a = this.arrayBufferField.definition.options.lengthFieldBase) !== null && _a !== void 0 ? _a : 10);
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
set() { }
|
|
66
|
+
serialize(dataView, offset) {
|
|
67
|
+
this.originalField.set(this.get());
|
|
68
|
+
this.originalField.serialize(dataView, offset);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
82
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":"
|
|
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
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a (fake) value of the given type.
|
|
3
|
+
*/
|
|
4
|
+
export function placeholder() {
|
|
5
|
+
return undefined;
|
|
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
|
+
}
|
|
17
|
+
//# sourceMappingURL=utils.js.map
|
package/esm/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
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.
|
|
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
|
-
"
|
|
27
|
-
"module": "esm/index.js",
|
|
28
|
-
"types": "dts/index.d.ts",
|
|
29
|
-
"scripts": {
|
|
30
|
-
"build": "
|
|
31
|
-
"build:watch": "
|
|
32
|
-
"test": "jest",
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"tslib": "2.1
|
|
38
|
-
},
|
|
39
|
-
"devDependencies": {
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
"gitHead": "90a1b1b331b6fc9ff24f9b54667879393450d27e"
|
|
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
|
+
}
|
package/src/basic/context.ts
CHANGED
|
@@ -1,40 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* Default to `false`
|
|
34
|
-
*/
|
|
35
|
-
littleEndian: boolean;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const StructDefaultOptions: Readonly<StructOptions> = {
|
|
39
|
-
littleEndian: false,
|
|
40
|
-
};
|
|
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
|
+
};
|