@yume-chan/struct 0.0.13 → 0.0.16
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 +33 -0
- package/CHANGELOG.md +21 -1
- package/LICENSE +21 -21
- package/README.md +767 -769
- package/esm/basic/definition.d.ts +3 -3
- package/esm/basic/definition.d.ts.map +1 -1
- package/esm/basic/definition.js +0 -1
- package/esm/basic/definition.js.map +1 -1
- package/esm/basic/field-value.d.ts +1 -0
- package/esm/basic/field-value.d.ts.map +1 -1
- package/esm/basic/field-value.js +4 -0
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/stream.d.ts +2 -1
- package/esm/basic/stream.d.ts.map +1 -1
- package/esm/basic/struct-value.d.ts +7 -5
- package/esm/basic/struct-value.d.ts.map +1 -1
- package/esm/basic/struct-value.js +30 -14
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/struct.d.ts +11 -11
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +55 -41
- package/esm/struct.js.map +1 -1
- package/esm/sync-promise.d.ts +13 -0
- package/esm/sync-promise.d.ts.map +1 -0
- package/esm/sync-promise.js +71 -0
- package/esm/sync-promise.js.map +1 -0
- package/esm/types/bigint.d.ts.map +1 -1
- package/esm/types/bigint.js +7 -5
- package/esm/types/bigint.js.map +1 -1
- package/esm/types/buffer/base.d.ts +4 -3
- package/esm/types/buffer/base.d.ts.map +1 -1
- package/esm/types/buffer/base.js +9 -7
- package/esm/types/buffer/base.js.map +1 -1
- package/esm/types/buffer/fixed-length.d.ts +1 -1
- package/esm/types/buffer/fixed-length.d.ts.map +1 -1
- package/esm/types/buffer/fixed-length.js.map +1 -1
- package/esm/types/buffer/variable-length.d.ts +2 -2
- package/esm/types/buffer/variable-length.d.ts.map +1 -1
- package/esm/types/buffer/variable-length.js.map +1 -1
- package/esm/types/number.d.ts +6 -5
- package/esm/types/number.d.ts.map +1 -1
- package/esm/types/number.js +25 -14
- package/esm/types/number.js.map +1 -1
- package/package.json +11 -11
- package/src/basic/definition.ts +68 -70
- package/src/basic/field-value.ts +72 -67
- package/src/basic/index.ts +5 -5
- package/src/basic/options.ts +19 -19
- package/src/basic/stream.ts +21 -19
- package/src/basic/struct-value.ts +61 -39
- package/src/index.ts +17 -17
- package/src/struct.ts +632 -609
- package/src/sync-promise.ts +114 -0
- package/src/types/bigint.ts +103 -102
- package/src/types/buffer/base.ts +179 -176
- package/src/types/buffer/fixed-length.ts +20 -17
- package/src/types/buffer/index.ts +3 -3
- package/src/types/buffer/variable-length.ts +158 -156
- package/src/types/index.ts +3 -3
- package/src/types/number.ts +127 -115
- package/src/utils.ts +70 -70
- package/tsconfig.build.json +3 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.test.json +8 -0
- package/esm/syncbird.d.ts +0 -65
- package/esm/syncbird.d.ts.map +0 -1
- package/esm/syncbird.js +0 -38
- package/esm/syncbird.js.map +0 -1
- package/src/syncbird.ts +0 -131
|
@@ -31,14 +31,14 @@ export declare abstract class StructFieldDefinition<TOptions = void, TValue = un
|
|
|
31
31
|
/**
|
|
32
32
|
* When implemented in derived classes, creates a `StructFieldValue` from a given `value`.
|
|
33
33
|
*/
|
|
34
|
-
abstract create(options: Readonly<StructOptions>,
|
|
34
|
+
abstract create(options: Readonly<StructOptions>, structValue: StructValue, value: TValue): StructFieldValue<this>;
|
|
35
35
|
/**
|
|
36
36
|
* When implemented in derived classes,It must be synchronous (returns a value) or asynchronous (returns a `Promise`) depending
|
|
37
37
|
* on the type of `stream`. reads and creates a `StructFieldValue` from `stream`.
|
|
38
38
|
*
|
|
39
|
-
* `
|
|
39
|
+
* `SyncPromise` can be used to simplify implementation.
|
|
40
40
|
*/
|
|
41
|
-
abstract deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream,
|
|
41
|
+
abstract deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, structValue: StructValue): StructFieldValue<this>;
|
|
42
42
|
abstract deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<StructFieldValue<this>>;
|
|
43
43
|
}
|
|
44
44
|
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;GAMG;AACH,8BAAsB,qBAAqB,CACvC,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,OAAO,EAChB,YAAY,SAAS,WAAW,GAAG,KAAK;IAExC;;;OAGG;IACH,SAAgB,MAAM,EAAG,MAAM,CAAC;IAEhC;;;OAGG;IACH,SAAgB,YAAY,EAAG,YAAY,CAAC;IAE5C,SAAgB,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,QAAQ;IAIpC;;;;OAIG;aACa,OAAO,IAAI,MAAM;IAEjC;;OAEG;aACa,MAAM,CAClB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,MAAM,GACd,gBAAgB,CAAC,IAAI,CAAC;IAEzB;;;;;OAKG;aACa,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,WAAW,GACzB,gBAAgB,CAAC,IAAI,CAAC;aACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CACrC"}
|
package/esm/basic/definition.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/basic/definition.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,MAAM,OAAgB,qBAAqB;IAKvC;;;OAGG;IACa,MAAM,CAAU;IAEhC;;;OAGG;IACa,YAAY,CAAgB;IAE5B,OAAO,CAAW;IAElC,YAAmB,OAAiB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CAkCJ"}
|
|
@@ -14,6 +14,7 @@ export declare abstract class StructFieldValue<TDefinition extends StructFieldDe
|
|
|
14
14
|
readonly options: Readonly<StructOptions>;
|
|
15
15
|
/** Gets the associated `Struct` instance */
|
|
16
16
|
readonly struct: StructValue;
|
|
17
|
+
get hasCustomAccessors(): boolean;
|
|
17
18
|
protected value: TDefinition['TValue'];
|
|
18
19
|
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition['TValue']);
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAE/F,6DAA6D;IAC7D,SAAgB,UAAU,EAAE,WAAW,CAAC;IAExC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAGnC,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC;IAQhC;;;;OAIG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;IAInC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9C;;OAEG;aACa,SAAS,CACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACf,IAAI;CACV"}
|
|
1
|
+
{"version":3,"file":"field-value.d.ts","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,8BAAsB,gBAAgB,CAClC,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAE/F,6DAA6D;IAC7D,SAAgB,UAAU,EAAE,WAAW,CAAC;IAExC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEjD,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,IAAW,kBAAkB,IAAI,OAAO,CAGvC;IAED,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAGnC,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC;IAQhC;;;;OAIG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC;IAInC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI9C;;OAEG;aACa,SAAS,CACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACf,IAAI;CACV"}
|
package/esm/basic/field-value.js
CHANGED
|
@@ -11,6 +11,10 @@ export class StructFieldValue {
|
|
|
11
11
|
options;
|
|
12
12
|
/** Gets the associated `Struct` instance */
|
|
13
13
|
struct;
|
|
14
|
+
get hasCustomAccessors() {
|
|
15
|
+
return this.get !== StructFieldValue.prototype.get ||
|
|
16
|
+
this.set !== StructFieldValue.prototype.set;
|
|
17
|
+
}
|
|
14
18
|
value;
|
|
15
19
|
constructor(definition, options, struct, value) {
|
|
16
20
|
this.definition = definition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-value.js","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAGlC,6DAA6D;IAC7C,UAAU,CAAc;IAExC,kDAAkD;IAClC,OAAO,CAA0B;IAEjD,4CAA4C;IAC5B,MAAM,CAAc;
|
|
1
|
+
{"version":3,"file":"field-value.js","sourceRoot":"","sources":["../../src/basic/field-value.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAgB,gBAAgB;IAGlC,6DAA6D;IAC7C,UAAU,CAAc;IAExC,kDAAkD;IAClC,OAAO,CAA0B;IAEjD,4CAA4C;IAC5B,MAAM,CAAc;IAEpC,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG;YAC9C,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC;IACpD,CAAC;IAES,KAAK,CAAwB;IAEvC,YACI,UAAuB,EACvB,OAAgC,EAChC,MAAmB,EACnB,KAA4B;QAE5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,OAAO;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAA4B;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CASJ"}
|
package/esm/basic/stream.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ValueOrPromise } from "../utils.js";
|
|
1
2
|
export interface StructDeserializeStream {
|
|
2
3
|
/**
|
|
3
4
|
* Read data from the underlying data source.
|
|
@@ -14,6 +15,6 @@ export interface StructAsyncDeserializeStream {
|
|
|
14
15
|
* The stream must return exactly `length` bytes or data. If that's not possible
|
|
15
16
|
* (due to end of file or other error condition), it must throw an error.
|
|
16
17
|
*/
|
|
17
|
-
read(length: number):
|
|
18
|
+
read(length: number): ValueOrPromise<Uint8Array>;
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/basic/stream.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IACzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/basic/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACpC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IACzC;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;CACpD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { StructFieldValue } from "./field-value.js";
|
|
2
|
+
export declare const STRUCT_VALUE_SYMBOL: unique symbol;
|
|
2
3
|
/**
|
|
3
4
|
* A struct value is a map between keys in a struct and their field values.
|
|
4
5
|
*/
|
|
@@ -7,18 +8,19 @@ export declare class StructValue {
|
|
|
7
8
|
* Gets the result struct value object
|
|
8
9
|
*/
|
|
9
10
|
readonly value: Record<PropertyKey, unknown>;
|
|
11
|
+
constructor(prototype: any);
|
|
10
12
|
/**
|
|
11
13
|
* Sets a `StructFieldValue` for `key`
|
|
12
14
|
*
|
|
13
|
-
* @param
|
|
14
|
-
* @param
|
|
15
|
+
* @param name The field name
|
|
16
|
+
* @param fieldValue The associated `StructFieldValue`
|
|
15
17
|
*/
|
|
16
|
-
set(
|
|
18
|
+
set(name: PropertyKey, fieldValue: StructFieldValue): void;
|
|
17
19
|
/**
|
|
18
20
|
* Gets the `StructFieldValue` for `key`
|
|
19
21
|
*
|
|
20
|
-
* @param
|
|
22
|
+
* @param name The field name
|
|
21
23
|
*/
|
|
22
|
-
get(
|
|
24
|
+
get(name: PropertyKey): StructFieldValue;
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=struct-value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,qBAAa,WAAW;IAGpB;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"struct-value.d.ts","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAE1D;;GAEG;AACH,qBAAa,WAAW;IAGpB;;OAEG;IACH,SAAgB,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEjC,SAAS,EAAE,GAAG;IAcjC;;;;;OAKG;IACI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAiBjE;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB;CAGlD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export const STRUCT_VALUE_SYMBOL = Symbol("struct-value");
|
|
1
2
|
/**
|
|
2
3
|
* A struct value is a map between keys in a struct and their field values.
|
|
3
4
|
*/
|
|
@@ -6,29 +7,44 @@ export class StructValue {
|
|
|
6
7
|
/**
|
|
7
8
|
* Gets the result struct value object
|
|
8
9
|
*/
|
|
9
|
-
value
|
|
10
|
+
value;
|
|
11
|
+
constructor(prototype) {
|
|
12
|
+
// PERF: `Object.create(extra)` is 50% faster
|
|
13
|
+
// than `Object.defineProperties(this.value, extra)`
|
|
14
|
+
this.value = Object.create(prototype);
|
|
15
|
+
// PERF: `Object.defineProperty` is slow
|
|
16
|
+
// but we need it to be non-enumerable
|
|
17
|
+
Object.defineProperty(this.value, STRUCT_VALUE_SYMBOL, { enumerable: false, value: this });
|
|
18
|
+
}
|
|
10
19
|
/**
|
|
11
20
|
* Sets a `StructFieldValue` for `key`
|
|
12
21
|
*
|
|
13
|
-
* @param
|
|
14
|
-
* @param
|
|
22
|
+
* @param name The field name
|
|
23
|
+
* @param fieldValue The associated `StructFieldValue`
|
|
15
24
|
*/
|
|
16
|
-
set(
|
|
17
|
-
this.fieldValues[
|
|
18
|
-
Object.defineProperty
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
set(name, fieldValue) {
|
|
26
|
+
this.fieldValues[name] = fieldValue;
|
|
27
|
+
// PERF: `Object.defineProperty` is slow
|
|
28
|
+
// use normal property when possible
|
|
29
|
+
if (fieldValue.hasCustomAccessors) {
|
|
30
|
+
Object.defineProperty(this.value, name, {
|
|
31
|
+
configurable: true,
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get() { return fieldValue.get(); },
|
|
34
|
+
set(v) { fieldValue.set(v); },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.value[name] = fieldValue.get();
|
|
39
|
+
}
|
|
24
40
|
}
|
|
25
41
|
/**
|
|
26
42
|
* Gets the `StructFieldValue` for `key`
|
|
27
43
|
*
|
|
28
|
-
* @param
|
|
44
|
+
* @param name The field name
|
|
29
45
|
*/
|
|
30
|
-
get(
|
|
31
|
-
return this.fieldValues[
|
|
46
|
+
get(name) {
|
|
47
|
+
return this.fieldValues[name];
|
|
32
48
|
}
|
|
33
49
|
}
|
|
34
50
|
//# sourceMappingURL=struct-value.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,GAA0C,EAAE,CAAC;IAElF;;OAEG;IACa,KAAK,
|
|
1
|
+
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,OAAO,WAAW;IACpB,gBAAgB,CAAU,WAAW,GAA0C,EAAE,CAAC;IAElF;;OAEG;IACa,KAAK,CAA+B;IAEpD,YAAmB,SAAc;QAC7B,6CAA6C;QAC7C,oDAAoD;QACpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEtC,wCAAwC;QACxC,sCAAsC;QACtC,MAAM,CAAC,cAAc,CACjB,IAAI,CAAC,KAAK,EACV,mBAAmB,EACnB,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CACrC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,IAAiB,EAAE,UAA4B;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAEpC,wCAAwC;QACxC,oCAAoC;QACpC,IAAI,UAAU,CAAC,kBAAkB,EAAE;YAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;gBACpC,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;gBAChB,GAAG,KAAK,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAClC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;SACvC;IACL,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAiB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;IACnC,CAAC;CACJ"}
|
package/esm/struct.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from './basic/index.js';
|
|
2
2
|
import { BigIntFieldType, BufferFieldSubType, FixedLengthBufferLikeFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition, type FixedLengthBufferLikeFieldOptions, type LengthField, type VariableLengthBufferLikeFieldOptions } from './types/index.js';
|
|
3
3
|
import type { Evaluate, Identity, Overwrite } from "./utils.js";
|
|
4
4
|
export interface StructLike<TValue> {
|
|
@@ -16,8 +16,8 @@ declare type AddFieldDescriptor<TFields extends object, TOmitInitKey extends Pro
|
|
|
16
16
|
* Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
|
|
17
17
|
*/
|
|
18
18
|
interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldSubType<any, any>> {
|
|
19
|
-
<TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: FixedLengthBufferLikeFieldOptions,
|
|
20
|
-
<TName extends PropertyKey, TLengthField extends LengthField<TFields>, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: TOptions,
|
|
19
|
+
<TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: FixedLengthBufferLikeFieldOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions, TTypeScriptType>>;
|
|
20
|
+
<TName extends PropertyKey, TLengthField extends LengthField<TFields>, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, TLengthField>, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options: TOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthBufferLikeFieldDefinition<TType, TOptions, TTypeScriptType>>;
|
|
21
21
|
}
|
|
22
22
|
export declare type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
|
|
23
23
|
export declare type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
|
|
@@ -49,40 +49,40 @@ export declare class Struct<TFields extends object = {}, TOmitInitKey extends Pr
|
|
|
49
49
|
/**
|
|
50
50
|
* Appends an `int8` field to the `Struct`
|
|
51
51
|
*/
|
|
52
|
-
int8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName,
|
|
52
|
+
int8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
53
53
|
/**
|
|
54
54
|
* Appends an `uint8` field to the `Struct`
|
|
55
55
|
*/
|
|
56
|
-
uint8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName,
|
|
56
|
+
uint8<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint8']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
57
57
|
/**
|
|
58
58
|
* Appends an `int16` field to the `Struct`
|
|
59
59
|
*/
|
|
60
|
-
int16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName,
|
|
60
|
+
int16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
61
61
|
/**
|
|
62
62
|
* Appends an `uint16` field to the `Struct`
|
|
63
63
|
*/
|
|
64
|
-
uint16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName,
|
|
64
|
+
uint16<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint16']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
65
65
|
/**
|
|
66
66
|
* Appends an `int32` field to the `Struct`
|
|
67
67
|
*/
|
|
68
|
-
int32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int32']['TTypeScriptType']>(name: TName,
|
|
68
|
+
int32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Int32']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
69
69
|
/**
|
|
70
70
|
* Appends an `uint32` field to the `Struct`
|
|
71
71
|
*/
|
|
72
|
-
uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName,
|
|
72
|
+
uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
73
73
|
private bigint;
|
|
74
74
|
/**
|
|
75
75
|
* Appends an `int64` field to the `Struct`
|
|
76
76
|
*
|
|
77
77
|
* Requires native `BigInt` support
|
|
78
78
|
*/
|
|
79
|
-
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName,
|
|
79
|
+
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
80
80
|
/**
|
|
81
81
|
* Appends an `uint64` field to the `Struct`
|
|
82
82
|
*
|
|
83
83
|
* Requires native `BigInt` support
|
|
84
84
|
*/
|
|
85
|
-
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName,
|
|
85
|
+
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
86
86
|
private arrayBufferLike;
|
|
87
87
|
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
|
|
88
88
|
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
|
package/esm/struct.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|
package/esm/struct.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { STRUCT_VALUE_SYMBOL } from './basic/index.js';
|
|
2
2
|
import { StructDefaultOptions, StructValue } from './basic/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { SyncPromise } from "./sync-promise.js";
|
|
4
4
|
import { BigIntFieldDefinition, BigIntFieldType, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition } from './types/index.js';
|
|
5
5
|
export class Struct {
|
|
6
6
|
TFields;
|
|
@@ -43,66 +43,66 @@ export class Struct {
|
|
|
43
43
|
this._fields.push(field);
|
|
44
44
|
}
|
|
45
45
|
this._size += other._size;
|
|
46
|
-
Object.
|
|
46
|
+
Object.defineProperties(this._extra, Object.getOwnPropertyDescriptors(other._extra));
|
|
47
47
|
return this;
|
|
48
48
|
}
|
|
49
|
-
number(name, type,
|
|
50
|
-
return this.field(name, new NumberFieldDefinition(type,
|
|
49
|
+
number(name, type, typeScriptType) {
|
|
50
|
+
return this.field(name, new NumberFieldDefinition(type, typeScriptType));
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
53
|
* Appends an `int8` field to the `Struct`
|
|
54
54
|
*/
|
|
55
|
-
int8(name,
|
|
56
|
-
return this.number(name, NumberFieldType.Int8,
|
|
55
|
+
int8(name, typeScriptType) {
|
|
56
|
+
return this.number(name, NumberFieldType.Int8, typeScriptType);
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* Appends an `uint8` field to the `Struct`
|
|
60
60
|
*/
|
|
61
|
-
uint8(name,
|
|
62
|
-
return this.number(name, NumberFieldType.Uint8,
|
|
61
|
+
uint8(name, typeScriptType) {
|
|
62
|
+
return this.number(name, NumberFieldType.Uint8, typeScriptType);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Appends an `int16` field to the `Struct`
|
|
66
66
|
*/
|
|
67
|
-
int16(name,
|
|
68
|
-
return this.number(name, NumberFieldType.Int16,
|
|
67
|
+
int16(name, typeScriptType) {
|
|
68
|
+
return this.number(name, NumberFieldType.Int16, typeScriptType);
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* Appends an `uint16` field to the `Struct`
|
|
72
72
|
*/
|
|
73
|
-
uint16(name,
|
|
74
|
-
return this.number(name, NumberFieldType.Uint16,
|
|
73
|
+
uint16(name, typeScriptType) {
|
|
74
|
+
return this.number(name, NumberFieldType.Uint16, typeScriptType);
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* Appends an `int32` field to the `Struct`
|
|
78
78
|
*/
|
|
79
|
-
int32(name,
|
|
80
|
-
return this.number(name, NumberFieldType.Int32,
|
|
79
|
+
int32(name, typeScriptType) {
|
|
80
|
+
return this.number(name, NumberFieldType.Int32, typeScriptType);
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Appends an `uint32` field to the `Struct`
|
|
84
84
|
*/
|
|
85
|
-
uint32(name,
|
|
86
|
-
return this.number(name, NumberFieldType.Uint32,
|
|
85
|
+
uint32(name, typeScriptType) {
|
|
86
|
+
return this.number(name, NumberFieldType.Uint32, typeScriptType);
|
|
87
87
|
}
|
|
88
|
-
bigint(name, type,
|
|
89
|
-
return this.field(name, new BigIntFieldDefinition(type,
|
|
88
|
+
bigint(name, type, typeScriptType) {
|
|
89
|
+
return this.field(name, new BigIntFieldDefinition(type, typeScriptType));
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Appends an `int64` field to the `Struct`
|
|
93
93
|
*
|
|
94
94
|
* Requires native `BigInt` support
|
|
95
95
|
*/
|
|
96
|
-
int64(name,
|
|
97
|
-
return this.bigint(name, BigIntFieldType.Int64,
|
|
96
|
+
int64(name, typeScriptType) {
|
|
97
|
+
return this.bigint(name, BigIntFieldType.Int64, typeScriptType);
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
100
|
* Appends an `uint64` field to the `Struct`
|
|
101
101
|
*
|
|
102
102
|
* Requires native `BigInt` support
|
|
103
103
|
*/
|
|
104
|
-
uint64(name,
|
|
105
|
-
return this.bigint(name, BigIntFieldType.Uint64,
|
|
104
|
+
uint64(name, typeScriptType) {
|
|
105
|
+
return this.bigint(name, BigIntFieldType.Uint64, typeScriptType);
|
|
106
106
|
}
|
|
107
107
|
arrayBufferLike = (name, type, options) => {
|
|
108
108
|
if ('length' in options) {
|
|
@@ -112,11 +112,11 @@ export class Struct {
|
|
|
112
112
|
return this.field(name, new VariableLengthBufferLikeFieldDefinition(type, options));
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
|
-
uint8Array = (name, options) => {
|
|
116
|
-
return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options);
|
|
115
|
+
uint8Array = (name, options, typeScriptType) => {
|
|
116
|
+
return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options, typeScriptType);
|
|
117
117
|
};
|
|
118
|
-
string = (name, options) => {
|
|
119
|
-
return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options);
|
|
118
|
+
string = (name, options, typeScriptType) => {
|
|
119
|
+
return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options, typeScriptType);
|
|
120
120
|
};
|
|
121
121
|
/**
|
|
122
122
|
* Adds some extra properties into every `Struct` value.
|
|
@@ -129,7 +129,7 @@ export class Struct {
|
|
|
129
129
|
* An object containing properties to be added to the result value. Accessors and methods are also allowed.
|
|
130
130
|
*/
|
|
131
131
|
extra(value) {
|
|
132
|
-
Object.
|
|
132
|
+
Object.defineProperties(this._extra, Object.getOwnPropertyDescriptors(value));
|
|
133
133
|
return this;
|
|
134
134
|
}
|
|
135
135
|
postDeserialize(callback) {
|
|
@@ -137,16 +137,18 @@ export class Struct {
|
|
|
137
137
|
return this;
|
|
138
138
|
}
|
|
139
139
|
deserialize(stream) {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
const structValue = new StructValue(this._extra);
|
|
141
|
+
let promise = SyncPromise.resolve();
|
|
142
|
+
for (const [name, definition] of this._fields) {
|
|
143
|
+
promise = promise
|
|
144
|
+
.then(() => definition.deserialize(this.options, stream, structValue))
|
|
145
|
+
.then(fieldValue => {
|
|
146
|
+
structValue.set(name, fieldValue);
|
|
146
147
|
});
|
|
147
|
-
}
|
|
148
|
+
}
|
|
149
|
+
return promise
|
|
148
150
|
.then(() => {
|
|
149
|
-
const object =
|
|
151
|
+
const object = structValue.value;
|
|
150
152
|
// Run `postDeserialized`
|
|
151
153
|
if (this._postDeserialized) {
|
|
152
154
|
const override = this._postDeserialized.call(object, object);
|
|
@@ -161,15 +163,27 @@ export class Struct {
|
|
|
161
163
|
.valueOrPromise();
|
|
162
164
|
}
|
|
163
165
|
serialize(init, output) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
value.
|
|
166
|
+
let structValue;
|
|
167
|
+
if (STRUCT_VALUE_SYMBOL in init) {
|
|
168
|
+
structValue = init[STRUCT_VALUE_SYMBOL];
|
|
169
|
+
for (const [key, value] of Object.entries(init)) {
|
|
170
|
+
const fieldValue = structValue.get(key);
|
|
171
|
+
if (fieldValue) {
|
|
172
|
+
fieldValue.set(value);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
structValue = new StructValue({});
|
|
178
|
+
for (const [name, definition] of this._fields) {
|
|
179
|
+
const fieldValue = definition.create(this.options, structValue, init[name]);
|
|
180
|
+
structValue.set(name, fieldValue);
|
|
181
|
+
}
|
|
168
182
|
}
|
|
169
183
|
let structSize = 0;
|
|
170
184
|
const fieldsInfo = [];
|
|
171
185
|
for (const [name] of this._fields) {
|
|
172
|
-
const fieldValue =
|
|
186
|
+
const fieldValue = structValue.get(name);
|
|
173
187
|
const size = fieldValue.getSize();
|
|
174
188
|
fieldsInfo.push({ fieldValue, size });
|
|
175
189
|
structSize += size;
|
package/esm/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SyncPromise<T> {
|
|
2
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null | undefined): SyncPromise<TResult1 | TResult2>;
|
|
3
|
+
valueOrPromise(): T | PromiseLike<T>;
|
|
4
|
+
}
|
|
5
|
+
interface SyncPromiseStatic {
|
|
6
|
+
reject<T = never>(reason?: any): SyncPromise<T>;
|
|
7
|
+
resolve(): SyncPromise<void>;
|
|
8
|
+
resolve<T>(value: T | PromiseLike<T>): SyncPromise<T>;
|
|
9
|
+
try<T>(executor: () => T | PromiseLike<T>): SyncPromise<T>;
|
|
10
|
+
}
|
|
11
|
+
export declare const SyncPromise: SyncPromiseStatic;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=sync-promise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-promise.d.ts","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC/B,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACjF,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GACpF,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEpC,cAAc,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CACxC;AAED,UAAU,iBAAiB;IACvB,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAEtD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,WAAW,EAAE,iBA8BzB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export const SyncPromise = {
|
|
2
|
+
reject(reason) {
|
|
3
|
+
return new RejectedSyncPromise(reason);
|
|
4
|
+
},
|
|
5
|
+
resolve(value) {
|
|
6
|
+
if (typeof value === 'object' &&
|
|
7
|
+
value !== null &&
|
|
8
|
+
typeof value.then === 'function') {
|
|
9
|
+
if (value instanceof PendingSyncPromise ||
|
|
10
|
+
value instanceof ResolvedSyncPromise ||
|
|
11
|
+
value instanceof RejectedSyncPromise) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
return new PendingSyncPromise(value);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return new ResolvedSyncPromise(value);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
try(executor) {
|
|
21
|
+
try {
|
|
22
|
+
return SyncPromise.resolve(executor());
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
return SyncPromise.reject(e);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
class PendingSyncPromise {
|
|
30
|
+
promise;
|
|
31
|
+
constructor(promise) {
|
|
32
|
+
this.promise = promise;
|
|
33
|
+
}
|
|
34
|
+
then(onfulfilled, onrejected) {
|
|
35
|
+
return new PendingSyncPromise(this.promise.then(onfulfilled, onrejected));
|
|
36
|
+
}
|
|
37
|
+
valueOrPromise() {
|
|
38
|
+
return this.promise;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
class ResolvedSyncPromise {
|
|
42
|
+
value;
|
|
43
|
+
constructor(value) {
|
|
44
|
+
this.value = value;
|
|
45
|
+
}
|
|
46
|
+
then(onfulfilled, onrejected) {
|
|
47
|
+
if (!onfulfilled) {
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
return SyncPromise.try(() => onfulfilled(this.value));
|
|
51
|
+
}
|
|
52
|
+
valueOrPromise() {
|
|
53
|
+
return this.value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
class RejectedSyncPromise {
|
|
57
|
+
reason;
|
|
58
|
+
constructor(reason) {
|
|
59
|
+
this.reason = reason;
|
|
60
|
+
}
|
|
61
|
+
then(onfulfilled, onrejected) {
|
|
62
|
+
if (!onrejected) {
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
return SyncPromise.try(() => onrejected(this.reason));
|
|
66
|
+
}
|
|
67
|
+
valueOrPromise() {
|
|
68
|
+
throw this.reason;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=sync-promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-promise.js","sourceRoot":"","sources":["../src/sync-promise.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC1C,MAAM,CAAY,MAAY;QAC1B,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAI,KAA0B;QACjC,IACI,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,OAAQ,KAAwB,CAAC,IAAI,KAAK,UAAU,EACtD;YACE,IACI,KAAK,YAAY,kBAAkB;gBACnC,KAAK,YAAY,mBAAmB;gBACpC,KAAK,YAAY,mBAAmB,EACtC;gBACE,OAAO,KAAK,CAAC;aAChB;YAED,OAAO,IAAI,kBAAkB,CAAC,KAAuB,CAAC,CAAC;SAC1D;aAAM;YACH,OAAO,IAAI,mBAAmB,CAAC,KAAU,CAAC,CAAC;SAC9C;IACL,CAAC;IACD,GAAG,CAAI,QAAkC;QACrC,IAAI;YACA,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1C;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChC;IACL,CAAC;CACJ,CAAC;AAEF,MAAM,kBAAkB;IACZ,OAAO,CAAiB;IAEhC,YAAmB,OAAuB;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,IAAI,CACP,WAAiF,EACjF,UAAmF;QAEnF,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAC7C,CAAC;IACN,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,mBAAmB;IACb,KAAK,CAAI;IAEjB,YAAmB,KAAQ;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEM,IAAI,CACP,WAAiF,EACjF,UAAmF;QAEnF,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,IAAW,CAAC;SACtB;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,cAAc;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACJ;AAED,MAAM,mBAAmB;IACb,MAAM,CAAM;IAEpB,YAAmB,MAAW;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,IAAI,CACP,WAAiF,EACjF,UAAmF;QAEnF,IAAI,CAAC,UAAU,EAAE;YACb,OAAO,IAAW,CAAC;SACtB;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,cAAc;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;CACJ"}
|