@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.
- package/CHANGELOG.json +23 -0
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -21
- package/README.md +720 -709
- package/dts/basic/context.d.ts +10 -18
- package/dts/basic/context.d.ts.map +1 -1
- package/dts/basic/definition.d.ts +4 -4
- package/dts/basic/definition.d.ts.map +1 -1
- package/dts/basic/field-value.d.ts +3 -5
- package/dts/basic/field-value.d.ts.map +1 -1
- package/dts/basic/struct-value.d.ts.map +1 -1
- package/dts/struct.d.ts +16 -17
- 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 +13 -12
- package/dts/types/array-buffer.d.ts.map +1 -1
- package/dts/types/number.d.ts +4 -3
- package/dts/types/number.d.ts.map +1 -1
- package/dts/types/variable-length-array-buffer.d.ts +4 -4
- package/dts/types/variable-length-array-buffer.d.ts.map +1 -1
- package/dts/utils.d.ts +3 -2
- package/dts/utils.d.ts.map +1 -1
- package/esm/basic/context.js.map +1 -1
- package/esm/basic/definition.js.map +1 -1
- package/esm/basic/field-value.js +1 -2
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/struct-value.js +0 -6
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/struct.js +27 -17
- 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 +21 -20
- package/esm/types/array-buffer.js.map +1 -1
- package/esm/types/number.js +9 -8
- package/esm/types/number.js.map +1 -1
- package/esm/types/variable-length-array-buffer.js +8 -8
- package/esm/types/variable-length-array-buffer.js.map +1 -1
- package/esm/utils.js +10 -0
- package/esm/utils.js.map +1 -1
- package/package.json +47 -50
- package/src/basic/context.ts +32 -42
- package/src/basic/definition.ts +72 -69
- package/src/basic/field-value.ts +67 -73
- package/src/basic/index.ts +4 -4
- package/src/basic/struct-value.ts +39 -45
- package/src/index.ts +5 -5
- package/src/struct.ts +595 -575
- package/src/syncbird.ts +53 -0
- package/src/types/array-buffer.ts +194 -184
- package/src/types/fixed-length-array-buffer.ts +17 -17
- package/src/types/index.ts +4 -4
- package/src/types/number.ts +114 -100
- package/src/types/variable-length-array-buffer.ts +142 -145
- package/src/utils.ts +62 -51
- package/cjs/basic/context.js +0 -7
- package/cjs/basic/context.js.map +0 -1
- package/cjs/basic/definition.js +0 -25
- package/cjs/basic/definition.js.map +0 -1
- package/cjs/basic/field-value.js +0 -40
- package/cjs/basic/field-value.js.map +0 -1
- package/cjs/basic/index.js +0 -8
- package/cjs/basic/index.js.map +0 -1
- package/cjs/basic/struct-value.js +0 -46
- package/cjs/basic/struct-value.js.map +0 -1
- package/cjs/index.js +0 -11
- package/cjs/index.js.map +0 -1
- package/cjs/struct.js +0 -177
- package/cjs/struct.js.map +0 -1
- package/cjs/types/array-buffer.js +0 -118
- package/cjs/types/array-buffer.js.map +0 -1
- package/cjs/types/fixed-length-array-buffer.js +0 -12
- package/cjs/types/fixed-length-array-buffer.js.map +0 -1
- package/cjs/types/index.js +0 -8
- package/cjs/types/index.js.map +0 -1
- package/cjs/types/number.js +0 -52
- package/cjs/types/number.js.map +0 -1
- package/cjs/types/variable-length-array-buffer.js +0 -77
- package/cjs/types/variable-length-array-buffer.js.map +0 -1
- package/cjs/utils.js +0 -11
- package/cjs/utils.js.map +0 -1
- package/tsconfig.cjs.json +0 -11
- package/tsconfig.esm.json +0 -15
package/esm/syncbird.js
ADDED
|
@@ -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
|
-
/**
|
|
47
|
+
/** An ArrayBufferLike type that converts between `ArrayBuffer` and `string` */
|
|
47
48
|
export class StringFieldType extends ArrayBufferLikeFieldType {
|
|
48
|
-
toArrayBuffer(value
|
|
49
|
-
return
|
|
49
|
+
toArrayBuffer(value) {
|
|
50
|
+
return encodeUtf8(value);
|
|
50
51
|
}
|
|
51
|
-
fromArrayBuffer(arrayBuffer
|
|
52
|
-
return
|
|
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,
|
|
75
|
-
return new ArrayBufferLikeFieldValue(this, options,
|
|
75
|
+
create(options, struct, value, arrayBuffer) {
|
|
76
|
+
return new ArrayBufferLikeFieldValue(this, options, struct, value, arrayBuffer);
|
|
76
77
|
}
|
|
77
|
-
deserialize(options,
|
|
78
|
-
return
|
|
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
|
-
|
|
82
|
+
return EmptyArrayBuffer;
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
85
|
-
|
|
85
|
+
return stream.read(size);
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
|
|
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,
|
|
94
|
-
super(definition, options,
|
|
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
|
|
102
|
+
serialize(dataView, offset) {
|
|
102
103
|
if (!this.arrayBuffer) {
|
|
103
|
-
this.arrayBuffer = this.definition.type.toArrayBuffer(this.value
|
|
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":"
|
|
1
|
+
{"version":3,"file":"array-buffer.js","sourceRoot":"","sources":["../../src/types/array-buffer.ts"],"names":[],"mappings":"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"}
|
package/esm/types/number.js
CHANGED
|
@@ -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,
|
|
27
|
-
return new NumberFieldValue(this, options,
|
|
26
|
+
create(options, struct, value) {
|
|
27
|
+
return new NumberFieldValue(this, options, struct, value);
|
|
28
28
|
}
|
|
29
|
-
deserialize(options,
|
|
30
|
-
return
|
|
31
|
-
|
|
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,
|
|
35
|
-
});
|
|
35
|
+
return this.create(options, struct, value);
|
|
36
|
+
}).valueOrPromise();
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
export class NumberFieldValue extends StructFieldValue {
|
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"}
|
|
@@ -12,13 +12,13 @@ export class VariableLengthArrayBufferLikeFieldDefinition extends ArrayBufferLik
|
|
|
12
12
|
}
|
|
13
13
|
return value;
|
|
14
14
|
}
|
|
15
|
-
create(options,
|
|
16
|
-
return new VariableLengthArrayBufferLikeStructFieldValue(this, options,
|
|
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,
|
|
21
|
-
super(definition, options,
|
|
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
|
|
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.
|
|
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
|
|
66
|
+
serialize(dataView, offset) {
|
|
67
67
|
this.originalField.set(this.get());
|
|
68
|
-
this.originalField.serialize(dataView, offset
|
|
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,
|
|
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":"
|
|
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": "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
|
+
}
|
package/src/basic/context.ts
CHANGED
|
@@ -1,42 +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
|
-
* 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
|
+
};
|
package/src/basic/definition.ts
CHANGED
|
@@ -1,69 +1,72 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @template
|
|
18
|
-
* @template
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
*
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
+
}
|