@yume-chan/struct 0.0.15 → 0.0.17
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 +27 -0
- package/CHANGELOG.md +16 -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 +56 -43
- 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 +13 -14
- 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 +23 -19
- package/src/basic/struct-value.ts +61 -39
- package/src/index.ts +17 -17
- package/src/struct.ts +631 -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/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;AAIlD,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,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import { Syncbird } from "./syncbird.js";
|
|
1
|
+
import { StructDefaultOptions, StructValue, STRUCT_VALUE_SYMBOL } from './basic/index.js';
|
|
2
|
+
import { SyncPromise } from "./sync-promise.js";
|
|
4
3
|
import { BigIntFieldDefinition, BigIntFieldType, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition } from './types/index.js';
|
|
5
4
|
export class Struct {
|
|
6
5
|
TFields;
|
|
@@ -43,66 +42,66 @@ export class Struct {
|
|
|
43
42
|
this._fields.push(field);
|
|
44
43
|
}
|
|
45
44
|
this._size += other._size;
|
|
46
|
-
Object.
|
|
45
|
+
Object.defineProperties(this._extra, Object.getOwnPropertyDescriptors(other._extra));
|
|
47
46
|
return this;
|
|
48
47
|
}
|
|
49
|
-
number(name, type,
|
|
50
|
-
return this.field(name, new NumberFieldDefinition(type,
|
|
48
|
+
number(name, type, typeScriptType) {
|
|
49
|
+
return this.field(name, new NumberFieldDefinition(type, typeScriptType));
|
|
51
50
|
}
|
|
52
51
|
/**
|
|
53
52
|
* Appends an `int8` field to the `Struct`
|
|
54
53
|
*/
|
|
55
|
-
int8(name,
|
|
56
|
-
return this.number(name, NumberFieldType.Int8,
|
|
54
|
+
int8(name, typeScriptType) {
|
|
55
|
+
return this.number(name, NumberFieldType.Int8, typeScriptType);
|
|
57
56
|
}
|
|
58
57
|
/**
|
|
59
58
|
* Appends an `uint8` field to the `Struct`
|
|
60
59
|
*/
|
|
61
|
-
uint8(name,
|
|
62
|
-
return this.number(name, NumberFieldType.Uint8,
|
|
60
|
+
uint8(name, typeScriptType) {
|
|
61
|
+
return this.number(name, NumberFieldType.Uint8, typeScriptType);
|
|
63
62
|
}
|
|
64
63
|
/**
|
|
65
64
|
* Appends an `int16` field to the `Struct`
|
|
66
65
|
*/
|
|
67
|
-
int16(name,
|
|
68
|
-
return this.number(name, NumberFieldType.Int16,
|
|
66
|
+
int16(name, typeScriptType) {
|
|
67
|
+
return this.number(name, NumberFieldType.Int16, typeScriptType);
|
|
69
68
|
}
|
|
70
69
|
/**
|
|
71
70
|
* Appends an `uint16` field to the `Struct`
|
|
72
71
|
*/
|
|
73
|
-
uint16(name,
|
|
74
|
-
return this.number(name, NumberFieldType.Uint16,
|
|
72
|
+
uint16(name, typeScriptType) {
|
|
73
|
+
return this.number(name, NumberFieldType.Uint16, typeScriptType);
|
|
75
74
|
}
|
|
76
75
|
/**
|
|
77
76
|
* Appends an `int32` field to the `Struct`
|
|
78
77
|
*/
|
|
79
|
-
int32(name,
|
|
80
|
-
return this.number(name, NumberFieldType.Int32,
|
|
78
|
+
int32(name, typeScriptType) {
|
|
79
|
+
return this.number(name, NumberFieldType.Int32, typeScriptType);
|
|
81
80
|
}
|
|
82
81
|
/**
|
|
83
82
|
* Appends an `uint32` field to the `Struct`
|
|
84
83
|
*/
|
|
85
|
-
uint32(name,
|
|
86
|
-
return this.number(name, NumberFieldType.Uint32,
|
|
84
|
+
uint32(name, typeScriptType) {
|
|
85
|
+
return this.number(name, NumberFieldType.Uint32, typeScriptType);
|
|
87
86
|
}
|
|
88
|
-
bigint(name, type,
|
|
89
|
-
return this.field(name, new BigIntFieldDefinition(type,
|
|
87
|
+
bigint(name, type, typeScriptType) {
|
|
88
|
+
return this.field(name, new BigIntFieldDefinition(type, typeScriptType));
|
|
90
89
|
}
|
|
91
90
|
/**
|
|
92
91
|
* Appends an `int64` field to the `Struct`
|
|
93
92
|
*
|
|
94
93
|
* Requires native `BigInt` support
|
|
95
94
|
*/
|
|
96
|
-
int64(name,
|
|
97
|
-
return this.bigint(name, BigIntFieldType.Int64,
|
|
95
|
+
int64(name, typeScriptType) {
|
|
96
|
+
return this.bigint(name, BigIntFieldType.Int64, typeScriptType);
|
|
98
97
|
}
|
|
99
98
|
/**
|
|
100
99
|
* Appends an `uint64` field to the `Struct`
|
|
101
100
|
*
|
|
102
101
|
* Requires native `BigInt` support
|
|
103
102
|
*/
|
|
104
|
-
uint64(name,
|
|
105
|
-
return this.bigint(name, BigIntFieldType.Uint64,
|
|
103
|
+
uint64(name, typeScriptType) {
|
|
104
|
+
return this.bigint(name, BigIntFieldType.Uint64, typeScriptType);
|
|
106
105
|
}
|
|
107
106
|
arrayBufferLike = (name, type, options) => {
|
|
108
107
|
if ('length' in options) {
|
|
@@ -112,11 +111,11 @@ export class Struct {
|
|
|
112
111
|
return this.field(name, new VariableLengthBufferLikeFieldDefinition(type, options));
|
|
113
112
|
}
|
|
114
113
|
};
|
|
115
|
-
uint8Array = (name, options) => {
|
|
116
|
-
return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options);
|
|
114
|
+
uint8Array = (name, options, typeScriptType) => {
|
|
115
|
+
return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options, typeScriptType);
|
|
117
116
|
};
|
|
118
|
-
string = (name, options) => {
|
|
119
|
-
return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options);
|
|
117
|
+
string = (name, options, typeScriptType) => {
|
|
118
|
+
return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options, typeScriptType);
|
|
120
119
|
};
|
|
121
120
|
/**
|
|
122
121
|
* Adds some extra properties into every `Struct` value.
|
|
@@ -129,7 +128,7 @@ export class Struct {
|
|
|
129
128
|
* An object containing properties to be added to the result value. Accessors and methods are also allowed.
|
|
130
129
|
*/
|
|
131
130
|
extra(value) {
|
|
132
|
-
Object.
|
|
131
|
+
Object.defineProperties(this._extra, Object.getOwnPropertyDescriptors(value));
|
|
133
132
|
return this;
|
|
134
133
|
}
|
|
135
134
|
postDeserialize(callback) {
|
|
@@ -137,22 +136,24 @@ export class Struct {
|
|
|
137
136
|
return this;
|
|
138
137
|
}
|
|
139
138
|
deserialize(stream) {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
139
|
+
const structValue = new StructValue(this._extra);
|
|
140
|
+
let promise = SyncPromise.resolve();
|
|
141
|
+
for (const [name, definition] of this._fields) {
|
|
142
|
+
promise = promise
|
|
143
|
+
.then(() => definition.deserialize(this.options, stream, structValue))
|
|
144
|
+
.then(fieldValue => {
|
|
145
|
+
structValue.set(name, fieldValue);
|
|
146
146
|
});
|
|
147
|
-
}
|
|
147
|
+
}
|
|
148
|
+
return promise
|
|
148
149
|
.then(() => {
|
|
149
|
-
const object =
|
|
150
|
+
const object = structValue.value;
|
|
150
151
|
// Run `postDeserialized`
|
|
151
152
|
if (this._postDeserialized) {
|
|
152
153
|
const override = this._postDeserialized.call(object, object);
|
|
153
154
|
// If it returns a new value, use that as result
|
|
154
155
|
// Otherwise it only inspects/mutates the object in place.
|
|
155
|
-
if (override) {
|
|
156
|
+
if (override !== undefined) {
|
|
156
157
|
return override;
|
|
157
158
|
}
|
|
158
159
|
}
|
|
@@ -161,15 +162,27 @@ export class Struct {
|
|
|
161
162
|
.valueOrPromise();
|
|
162
163
|
}
|
|
163
164
|
serialize(init, output) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
value.
|
|
165
|
+
let structValue;
|
|
166
|
+
if (STRUCT_VALUE_SYMBOL in init) {
|
|
167
|
+
structValue = init[STRUCT_VALUE_SYMBOL];
|
|
168
|
+
for (const [key, value] of Object.entries(init)) {
|
|
169
|
+
const fieldValue = structValue.get(key);
|
|
170
|
+
if (fieldValue) {
|
|
171
|
+
fieldValue.set(value);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
structValue = new StructValue({});
|
|
177
|
+
for (const [name, definition] of this._fields) {
|
|
178
|
+
const fieldValue = definition.create(this.options, structValue, init[name]);
|
|
179
|
+
structValue.set(name, fieldValue);
|
|
180
|
+
}
|
|
168
181
|
}
|
|
169
182
|
let structSize = 0;
|
|
170
183
|
const fieldsInfo = [];
|
|
171
184
|
for (const [name] of this._fields) {
|
|
172
|
-
const fieldValue =
|
|
185
|
+
const fieldValue = structValue.get(name);
|
|
173
186
|
const size = fieldValue.getSize();
|
|
174
187
|
fieldsInfo.push({ fieldValue, size });
|
|
175
188
|
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"}
|