@yume-chan/struct 0.0.10 → 0.0.12
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 +1 -1
- package/README.md +102 -53
- package/{dts → esm}/basic/definition.d.ts +9 -13
- package/esm/basic/definition.d.ts.map +1 -0
- package/esm/basic/definition.js +13 -9
- package/esm/basic/definition.js.map +1 -1
- package/{dts → esm}/basic/field-value.d.ts +8 -8
- package/esm/basic/field-value.d.ts.map +1 -0
- package/esm/basic/field-value.js +12 -5
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/index.d.ts +6 -0
- package/esm/basic/index.d.ts.map +1 -0
- package/esm/basic/index.js +5 -4
- package/esm/basic/index.js.map +1 -1
- package/esm/basic/options.d.ts +10 -0
- package/esm/basic/options.d.ts.map +1 -0
- package/esm/basic/{context.js → options.js} +1 -1
- package/esm/basic/options.js.map +1 -0
- package/esm/basic/stream.d.ts +19 -0
- package/esm/basic/stream.d.ts.map +1 -0
- package/esm/basic/stream.js +2 -0
- package/esm/basic/stream.js.map +1 -0
- package/{dts → esm}/basic/struct-value.d.ts +3 -3
- package/esm/basic/struct-value.d.ts.map +1 -0
- package/esm/basic/struct-value.js +7 -9
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/index.d.ts +14 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +5 -5
- package/esm/index.js.map +1 -1
- package/{dts → esm}/struct.d.ts +16 -12
- package/esm/struct.d.ts.map +1 -0
- package/esm/struct.js +67 -54
- package/esm/struct.js.map +1 -1
- package/esm/syncbird.d.ts +65 -0
- package/esm/syncbird.d.ts.map +1 -0
- package/esm/syncbird.js +15 -4
- package/esm/syncbird.js.map +1 -1
- package/esm/types/bigint.d.ts +25 -0
- package/esm/types/bigint.d.ts.map +1 -0
- package/esm/types/bigint.js +45 -0
- package/esm/types/bigint.js.map +1 -0
- package/esm/types/buffer/base.d.ts +63 -0
- package/esm/types/buffer/base.d.ts.map +1 -0
- package/esm/types/buffer/base.js +100 -0
- package/esm/types/buffer/base.js.map +1 -0
- package/esm/types/buffer/fixed-length.d.ts +8 -0
- package/esm/types/buffer/fixed-length.d.ts.map +1 -0
- package/esm/types/buffer/fixed-length.js +8 -0
- package/esm/types/buffer/fixed-length.js.map +1 -0
- package/esm/types/buffer/index.d.ts +4 -0
- package/esm/types/buffer/index.d.ts.map +1 -0
- package/esm/types/buffer/index.js +4 -0
- package/esm/types/buffer/index.js.map +1 -0
- package/esm/types/buffer/variable-length.d.ts +43 -0
- package/esm/types/buffer/variable-length.d.ts.map +1 -0
- package/esm/types/buffer/variable-length.js +76 -0
- package/esm/types/buffer/variable-length.js.map +1 -0
- package/esm/types/index.d.ts +4 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +3 -4
- package/esm/types/index.js.map +1 -1
- package/{dts → esm}/types/number.d.ts +10 -12
- package/esm/types/number.d.ts.map +1 -0
- package/esm/types/number.js +21 -14
- package/esm/types/number.js.map +1 -1
- package/{dts → esm}/utils.d.ts +2 -2
- package/{dts → esm}/utils.d.ts.map +1 -1
- package/esm/utils.js +9 -3
- package/esm/utils.js.map +1 -1
- package/package.json +47 -47
- package/src/basic/definition.ts +11 -13
- package/src/basic/field-value.ts +8 -8
- package/src/basic/index.ts +5 -4
- package/src/basic/options.ts +19 -0
- package/src/basic/stream.ts +19 -0
- package/src/basic/struct-value.ts +4 -4
- package/src/index.ts +17 -5
- package/src/struct.ts +89 -75
- package/src/syncbird.ts +86 -10
- package/src/types/bigint.ts +102 -0
- package/src/types/buffer/base.ts +176 -0
- package/src/types/buffer/fixed-length.ts +17 -0
- package/src/types/buffer/index.ts +3 -0
- package/src/types/{variable-length-array-buffer.ts → buffer/variable-length.ts} +48 -34
- package/src/types/index.ts +3 -4
- package/src/types/number.ts +27 -26
- package/src/utils.ts +13 -5
- package/dts/basic/context.d.ts +0 -28
- package/dts/basic/context.d.ts.map +0 -1
- package/dts/basic/definition.d.ts.map +0 -1
- package/dts/basic/field-value.d.ts.map +0 -1
- package/dts/basic/index.d.ts +0 -5
- package/dts/basic/index.d.ts.map +0 -1
- package/dts/basic/struct-value.d.ts.map +0 -1
- package/dts/index.d.ts +0 -6
- package/dts/index.d.ts.map +0 -1
- package/dts/struct.d.ts.map +0 -1
- package/dts/syncbird.d.ts +0 -20
- package/dts/syncbird.d.ts.map +0 -1
- package/dts/types/array-buffer.d.ts +0 -71
- package/dts/types/array-buffer.d.ts.map +0 -1
- package/dts/types/fixed-length-array-buffer.d.ts +0 -8
- package/dts/types/fixed-length-array-buffer.d.ts.map +0 -1
- package/dts/types/index.d.ts +0 -5
- package/dts/types/index.d.ts.map +0 -1
- package/dts/types/number.d.ts.map +0 -1
- package/dts/types/variable-length-array-buffer.d.ts +0 -32
- package/dts/types/variable-length-array-buffer.d.ts.map +0 -1
- package/esm/basic/context.js.map +0 -1
- package/esm/types/array-buffer.js +0 -110
- package/esm/types/array-buffer.js.map +0 -1
- package/esm/types/fixed-length-array-buffer.js +0 -8
- package/esm/types/fixed-length-array-buffer.js.map +0 -1
- package/esm/types/variable-length-array-buffer.js +0 -71
- package/esm/types/variable-length-array-buffer.js.map +0 -1
- package/src/basic/context.ts +0 -32
- package/src/types/array-buffer.ts +0 -194
- package/src/types/fixed-length-array-buffer.ts +0 -17
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface StructDeserializeStream {
|
|
2
|
+
/**
|
|
3
|
+
* Read data from the underlying data source.
|
|
4
|
+
*
|
|
5
|
+
* The 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): Uint8Array;
|
|
9
|
+
}
|
|
10
|
+
export interface StructAsyncDeserializeStream {
|
|
11
|
+
/**
|
|
12
|
+
* Read data from the underlying data source.
|
|
13
|
+
*
|
|
14
|
+
* The stream must return exactly `length` bytes or data. If that's not possible
|
|
15
|
+
* (due to end of file or other error condition), it must throw an error.
|
|
16
|
+
*/
|
|
17
|
+
read(length: number): Promise<Uint8Array>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +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,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/basic/stream.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { StructFieldValue } from
|
|
1
|
+
import type { StructFieldValue } from "./field-value.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A struct value is a map between keys in a struct and their field values.
|
|
4
4
|
*/
|
|
5
5
|
export declare class StructValue {
|
|
6
6
|
/**
|
|
@@ -15,7 +15,7 @@ export declare class StructValue {
|
|
|
15
15
|
*/
|
|
16
16
|
set(key: PropertyKey, value: StructFieldValue): void;
|
|
17
17
|
/**
|
|
18
|
-
* Gets
|
|
18
|
+
* Gets the `StructFieldValue` for `key`
|
|
19
19
|
*
|
|
20
20
|
* @param key The field name
|
|
21
21
|
*/
|
|
@@ -0,0 +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,CAAM;IAEzD;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAW3D;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,gBAAgB;CAGjD"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* A struct value is a map between keys in a struct and their field values.
|
|
3
3
|
*/
|
|
4
4
|
export class StructValue {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
this.value = {};
|
|
11
|
-
}
|
|
5
|
+
/** @internal */ fieldValues = {};
|
|
6
|
+
/**
|
|
7
|
+
* Gets the result struct value object
|
|
8
|
+
*/
|
|
9
|
+
value = {};
|
|
12
10
|
/**
|
|
13
11
|
* Sets a `StructFieldValue` for `key`
|
|
14
12
|
*
|
|
@@ -25,7 +23,7 @@ export class StructValue {
|
|
|
25
23
|
});
|
|
26
24
|
}
|
|
27
25
|
/**
|
|
28
|
-
* Gets
|
|
26
|
+
* Gets the `StructFieldValue` for `key`
|
|
29
27
|
*
|
|
30
28
|
* @param key The field name
|
|
31
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct-value.js","sourceRoot":"","sources":["../../src/basic/struct-value.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;
|
|
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,GAAiC,EAAE,CAAC;IAEzD;;;;;OAKG;IACI,GAAG,CAAC,GAAgB,EAAE,KAAuB;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE9B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YACnC,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAgB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC;IAClC,CAAC;CACJ"}
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
interface ArrayBuffer {
|
|
3
|
+
__brand: never;
|
|
4
|
+
}
|
|
5
|
+
interface SharedArrayBuffer {
|
|
6
|
+
__brand: never;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export * from './basic/index.js';
|
|
10
|
+
export * from './struct.js';
|
|
11
|
+
export { Struct as default } from './struct.js';
|
|
12
|
+
export * from './types/index.js';
|
|
13
|
+
export * from './utils.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW;QAEjB,OAAO,EAAE,KAAK,CAAC;KAClB;IAED,UAAU,iBAAiB;QAEvB,OAAO,EAAE,KAAK,CAAC;KAClB;CACJ;AAED,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './basic';
|
|
2
|
-
export * from './struct';
|
|
3
|
-
export { Struct as default } from './struct';
|
|
4
|
-
export * from './types';
|
|
5
|
-
export * from './utils';
|
|
1
|
+
export * from './basic/index.js';
|
|
2
|
+
export * from './struct.js';
|
|
3
|
+
export { Struct as default } from './struct.js';
|
|
4
|
+
export * from './types/index.js';
|
|
5
|
+
export * from './utils.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
package/{dts → esm}/struct.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from './basic';
|
|
2
|
-
import {
|
|
3
|
-
import { Evaluate, Identity, Overwrite } from "./utils";
|
|
1
|
+
import type { StructAsyncDeserializeStream, StructDeserializeStream, StructFieldDefinition, StructOptions } from './basic/index.js';
|
|
2
|
+
import { BigIntFieldType, BufferFieldSubType, FixedLengthBufferLikeFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition, type FixedLengthBufferLikeFieldOptions, type LengthField, type VariableLengthBufferLikeFieldOptions } from './types/index.js';
|
|
3
|
+
import type { Evaluate, Identity, Overwrite } from "./utils.js";
|
|
4
4
|
export interface StructLike<TValue> {
|
|
5
5
|
deserialize(stream: StructDeserializeStream | StructAsyncDeserializeStream): Promise<TValue>;
|
|
6
6
|
}
|
|
@@ -15,9 +15,9 @@ declare type AddFieldDescriptor<TFields extends object, TOmitInitKey extends Pro
|
|
|
15
15
|
/**
|
|
16
16
|
* Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
|
|
17
17
|
*/
|
|
18
|
-
interface
|
|
19
|
-
<TName extends PropertyKey, TTypeScriptType = TType['TTypeScriptType']>(name: TName, options:
|
|
20
|
-
<TName extends PropertyKey, TLengthField extends LengthField<TFields>, TOptions extends
|
|
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, typescriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions>>;
|
|
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>>;
|
|
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;
|
|
@@ -70,22 +70,22 @@ export declare class Struct<TFields extends object = {}, TOmitInitKey extends Pr
|
|
|
70
70
|
* Appends an `uint32` field to the `Struct`
|
|
71
71
|
*/
|
|
72
72
|
uint32<TName extends PropertyKey, TTypeScriptType = (typeof NumberFieldType)['Uint32']['TTypeScriptType']>(name: TName, typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
73
|
+
private bigint;
|
|
73
74
|
/**
|
|
74
75
|
* Appends an `int64` field to the `Struct`
|
|
75
76
|
*
|
|
76
77
|
* Requires native `BigInt` support
|
|
77
78
|
*/
|
|
78
|
-
int64<TName extends PropertyKey, TTypeScriptType =
|
|
79
|
+
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
79
80
|
/**
|
|
80
81
|
* Appends an `uint64` field to the `Struct`
|
|
81
82
|
*
|
|
82
83
|
* Requires native `BigInt` support
|
|
83
84
|
*/
|
|
84
|
-
uint64<TName extends PropertyKey, TTypeScriptType =
|
|
85
|
+
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldType['TTypeScriptType']>(name: TName, _typescriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
85
86
|
private arrayBufferLike;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
string: BindedArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringFieldType>;
|
|
87
|
+
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldSubType>;
|
|
88
|
+
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldSubType>;
|
|
89
89
|
/**
|
|
90
90
|
* Adds some extra properties into every `Struct` value.
|
|
91
91
|
*
|
|
@@ -118,9 +118,13 @@ export declare class Struct<TFields extends object = {}, TOmitInitKey extends Pr
|
|
|
118
118
|
* will `deserialize` to return that object instead.
|
|
119
119
|
*/
|
|
120
120
|
postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
|
|
121
|
+
/**
|
|
122
|
+
* Deserialize a struct value from `stream`.
|
|
123
|
+
*/
|
|
121
124
|
deserialize(stream: StructDeserializeStream): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
122
125
|
deserialize(stream: StructAsyncDeserializeStream): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
|
|
123
|
-
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>):
|
|
126
|
+
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>): Uint8Array;
|
|
127
|
+
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output: Uint8Array): number;
|
|
124
128
|
}
|
|
125
129
|
export {};
|
|
126
130
|
//# sourceMappingURL=struct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,qBAAqB,EAAoB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtJ,OAAO,EAAyB,eAAe,EAAE,kBAAkB,EAAE,oCAAoC,EAAyB,eAAe,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,uCAAuC,EAAE,KAAK,iCAAiC,EAAE,KAAK,WAAW,EAAE,KAAK,oCAAoC,EAAE,MAAM,kBAAkB,CAAC;AAClX,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAEhF,MAAM,WAAW,UAAU,CAAC,MAAM;IAC9B,WAAW,CAAC,MAAM,EAAE,uBAAuB,GAAG,4BAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChG;AAED;;GAEG;AACH,oBAAY,eAAe,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,IACjD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAE1C;;GAEG;AACH,aAAK,kBAAkB,CACnB,OAAO,SAAS,MAAM,EACtB,YAAY,SAAS,WAAW,EAChC,MAAM,SAAS,MAAM,EACrB,iBAAiB,EACjB,UAAU,SAAS,WAAW,EAC9B,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAExD,QAAQ,CAAC,MAAM,CAGX,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAE7D,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,EAC1C,MAAM,EACN,iBAAiB,CACpB,CAAC,CAAC;AAmEP;;GAEG;AACH,UAAU,0CAA0C,CAChD,OAAO,SAAS,MAAM,EACtB,YAAY,SAAS,WAAW,EAChC,MAAM,SAAS,MAAM,EACrB,iBAAiB,EACjB,KAAK,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC;IAE1C,CACI,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAE1C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,iCAAiC,EAC1C,cAAc,CAAC,EAAE,eAAe,GACjC,kBAAkB,CACjB,OAAO,EACP,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,KAAK,EACL,oCAAoC,CAChC,KAAK,EACL,iCAAiC,CACpC,CACJ,CAAC;IAEF,CACI,KAAK,SAAS,WAAW,EACzB,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,EACzC,QAAQ,SAAS,oCAAoC,CAAC,OAAO,EAAE,YAAY,CAAC,EAC5E,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAE1C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,EACjB,cAAc,CAAC,EAAE,eAAe,GACjC,kBAAkB,CACjB,OAAO,EACP,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,KAAK,EACL,uCAAuC,CACnC,KAAK,EACL,QAAQ,CACX,CACJ,CAAC;CACL;AAED,oBAAY,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,IACzD,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,iBAAiB,CAAC;AAE1D,oBAAY,wBAAwB,CAAC,OAAO,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,EAAE,iBAAiB,IACjG,iBAAiB,SAAS,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC;AAEzF,qBAAa,MAAM,CACf,OAAO,SAAS,MAAM,GAAG,EAAE,EAC3B,YAAY,SAAS,WAAW,GAAG,KAAK,EACxC,MAAM,SAAS,MAAM,GAAG,EAAE,EAC1B,iBAAiB,GAAG,SAAS,CAC3B,YAAW,UAAU,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrF,SAAgB,OAAO,EAAG,OAAO,CAAC;IAElC,SAAgB,YAAY,EAAG,YAAY,CAAC;IAE5C,SAAgB,MAAM,EAAG,MAAM,CAAC;IAEhC,SAAgB,KAAK,EAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9D,SAAgB,kBAAkB,EAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAElG,SAAgB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEjD,OAAO,CAAC,KAAK,CAAK;IAClB;;OAEG;IACH,IAAW,IAAI,WAAyB;IAExC,OAAO,CAAC,OAAO,CAA+E;IAE9F,OAAO,CAAC,MAAM,CAA6B;IAE3C,OAAO,CAAC,iBAAiB,CAAC,CAA+C;gBAEtD,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAI7D;;OAEG;IACI,KAAK,CACR,KAAK,SAAS,WAAW,EACzB,WAAW,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAExD,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,GACxB,kBAAkB,CACjB,OAAO,EACP,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,KAAK,EACL,WAAW,CACd;IAgBD;;OAEG;IACI,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnD,KAAK,EAAE,MAAM,GACd,MAAM,CACL,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,EAC3B,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,EACrC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,EACzB,iBAAiB,CACpB;IASD,OAAO,CAAC,MAAM;IAed;;OAEG;IACI,IAAI,CACP,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAEtE,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;OAEG;IACI,KAAK,CACR,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAEtE,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;OAEG;IACI,KAAK,CACR,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAEvE,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;OAEG;IACI,MAAM,CACT,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAEvE,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;OAEG;IACI,KAAK,CACR,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,EAEtE,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;OAEG;IACI,MAAM,CACT,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAEvE,IAAI,EAAE,KAAK,EACX,cAAc,CAAC,EAAE,eAAe;IASpC,OAAO,CAAC,MAAM;IAed;;;;OAIG;IACI,KAAK,CACR,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,eAAe,CAAC,iBAAiB,CAAC,EAEpD,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC;;;;OAIG;IACI,MAAM,CACT,KAAK,SAAS,WAAW,EACzB,eAAe,GAAG,eAAe,CAAC,iBAAiB,CAAC,EAEpD,IAAI,EAAE,KAAK,EACX,eAAe,CAAC,EAAE,eAAe;IASrC,OAAO,CAAC,eAAe,CAqBjB;IAEC,UAAU,EAAE,0CAA0C,CACzD,OAAO,EACP,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,4BAA4B,CAC/B,CAKK;IAEC,MAAM,EAAE,0CAA0C,CACrD,OAAO,EACP,YAAY,EACZ,MAAM,EACN,iBAAiB,EACjB,wBAAwB,CAC3B,CAKK;IAEN;;;;;;;;;OASG;IACI,KAAK,CAAC,CAAC,SAAS,MAAM,CAEzB,OAAO,CACH,MAAM,CAAC,EACP,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,CAClC,EACD,KAAK,CACR,EACG,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAC9D,MAAM,CACL,OAAO,EACP,YAAY,EACZ,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EACpB,iBAAiB,CACpB;IAKD;;;;;OAKG;IACI,eAAe,CAClB,QAAQ,EAAE,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,GACjD,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC;IAC/C;;;;;OAKG;IACI,eAAe,CAClB,QAAQ,CAAC,EAAE,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,GACjD,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;IACnD;;;;;OAKG;IACI,eAAe,CAAC,cAAc,EACjC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,GAC3D,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC;IAQxD;;OAEG;IACI,WAAW,CACd,MAAM,EAAE,uBAAuB,GAChC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC;IACxD,WAAW,CACd,MAAM,EAAE,4BAA4B,GACrC,OAAO,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAiCjE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG,UAAU;IAClE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;CAsC5F"}
|
package/esm/struct.js
CHANGED
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
// cspell: ignore Syncbird
|
|
2
|
+
import { StructDefaultOptions, StructValue } from './basic/index.js';
|
|
3
|
+
import { Syncbird } from "./syncbird.js";
|
|
4
|
+
import { BigIntFieldDefinition, BigIntFieldType, FixedLengthBufferLikeFieldDefinition, NumberFieldDefinition, NumberFieldType, StringBufferFieldSubType, Uint8ArrayBufferFieldSubType, VariableLengthBufferLikeFieldDefinition } from './types/index.js';
|
|
4
5
|
export class Struct {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return this.field(name, new VariableLengthArrayBufferLikeFieldDefinition(type, options));
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
this.arrayBuffer = (name, options) => {
|
|
18
|
-
return this.arrayBufferLike(name, ArrayBufferFieldType.instance, options);
|
|
19
|
-
};
|
|
20
|
-
this.uint8ClampedArray = (name, options) => {
|
|
21
|
-
return this.arrayBufferLike(name, Uint8ClampedArrayFieldType.instance, options);
|
|
22
|
-
};
|
|
23
|
-
this.string = (name, options) => {
|
|
24
|
-
return this.arrayBufferLike(name, StringFieldType.instance, options);
|
|
25
|
-
};
|
|
26
|
-
this.options = Object.assign(Object.assign({}, StructDefaultOptions), options);
|
|
27
|
-
}
|
|
6
|
+
TFields;
|
|
7
|
+
TOmitInitKey;
|
|
8
|
+
TExtra;
|
|
9
|
+
TInit;
|
|
10
|
+
TDeserializeResult;
|
|
11
|
+
options;
|
|
12
|
+
_size = 0;
|
|
28
13
|
/**
|
|
29
14
|
* Gets the static size (exclude fields that can change size at runtime)
|
|
30
15
|
*/
|
|
31
16
|
get size() { return this._size; }
|
|
17
|
+
_fields = [];
|
|
18
|
+
_extra = {};
|
|
19
|
+
_postDeserialized;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.options = { ...StructDefaultOptions, ...options };
|
|
22
|
+
}
|
|
32
23
|
/**
|
|
33
24
|
* Appends a `StructFieldDefinition` to the `Struct
|
|
34
25
|
*/
|
|
35
26
|
field(name, definition) {
|
|
36
27
|
for (const field of this._fields) {
|
|
37
28
|
if (field[0] === name) {
|
|
38
|
-
throw new Error(`This struct already have a field with name '${name}'`);
|
|
29
|
+
throw new Error(`This struct already have a field with name '${String(name)}'`);
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
32
|
this._fields.push([name, definition]);
|
|
@@ -94,13 +85,16 @@ export class Struct {
|
|
|
94
85
|
uint32(name, typescriptType) {
|
|
95
86
|
return this.number(name, NumberFieldType.Uint32, typescriptType);
|
|
96
87
|
}
|
|
88
|
+
bigint(name, type, _typescriptType) {
|
|
89
|
+
return this.field(name, new BigIntFieldDefinition(type, _typescriptType));
|
|
90
|
+
}
|
|
97
91
|
/**
|
|
98
92
|
* Appends an `int64` field to the `Struct`
|
|
99
93
|
*
|
|
100
94
|
* Requires native `BigInt` support
|
|
101
95
|
*/
|
|
102
96
|
int64(name, _typescriptType) {
|
|
103
|
-
return this.
|
|
97
|
+
return this.bigint(name, BigIntFieldType.Int64, _typescriptType);
|
|
104
98
|
}
|
|
105
99
|
/**
|
|
106
100
|
* Appends an `uint64` field to the `Struct`
|
|
@@ -108,8 +102,22 @@ export class Struct {
|
|
|
108
102
|
* Requires native `BigInt` support
|
|
109
103
|
*/
|
|
110
104
|
uint64(name, _typescriptType) {
|
|
111
|
-
return this.
|
|
105
|
+
return this.bigint(name, BigIntFieldType.Int64, _typescriptType);
|
|
112
106
|
}
|
|
107
|
+
arrayBufferLike = (name, type, options) => {
|
|
108
|
+
if ('length' in options) {
|
|
109
|
+
return this.field(name, new FixedLengthBufferLikeFieldDefinition(type, options));
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
return this.field(name, new VariableLengthBufferLikeFieldDefinition(type, options));
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
uint8Array = (name, options) => {
|
|
116
|
+
return this.arrayBufferLike(name, Uint8ArrayBufferFieldSubType.Instance, options);
|
|
117
|
+
};
|
|
118
|
+
string = (name, options) => {
|
|
119
|
+
return this.arrayBufferLike(name, StringBufferFieldSubType.Instance, options);
|
|
120
|
+
};
|
|
113
121
|
/**
|
|
114
122
|
* Adds some extra properties into every `Struct` value.
|
|
115
123
|
*
|
|
@@ -131,32 +139,28 @@ export class Struct {
|
|
|
131
139
|
deserialize(stream) {
|
|
132
140
|
const value = new StructValue();
|
|
133
141
|
Object.defineProperties(value.value, this._extra);
|
|
134
|
-
return Syncbird
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
value.set(name, fieldValue);
|
|
144
|
-
return iterate();
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
return iterate();
|
|
148
|
-
}).then(value => {
|
|
142
|
+
return Syncbird
|
|
143
|
+
.each(this._fields, ([name, definition]) => {
|
|
144
|
+
return Syncbird.resolve(definition.deserialize(this.options, stream, value)).then(fieldValue => {
|
|
145
|
+
value.set(name, fieldValue);
|
|
146
|
+
});
|
|
147
|
+
})
|
|
148
|
+
.then(() => {
|
|
149
|
+
const object = value.value;
|
|
150
|
+
// Run `postDeserialized`
|
|
149
151
|
if (this._postDeserialized) {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const override = this._postDeserialized.call(object, object);
|
|
153
|
+
// If it returns a new value, use that as result
|
|
154
|
+
// Otherwise it only inspects/mutates the object in place.
|
|
155
|
+
if (override) {
|
|
156
|
+
return override;
|
|
154
157
|
}
|
|
155
158
|
}
|
|
156
|
-
return
|
|
157
|
-
})
|
|
159
|
+
return object;
|
|
160
|
+
})
|
|
161
|
+
.valueOrPromise();
|
|
158
162
|
}
|
|
159
|
-
serialize(init) {
|
|
163
|
+
serialize(init, output) {
|
|
160
164
|
const value = new StructValue();
|
|
161
165
|
for (const [name, definition] of this._fields) {
|
|
162
166
|
const fieldValue = definition.create(this.options, value, init[name]);
|
|
@@ -170,14 +174,23 @@ export class Struct {
|
|
|
170
174
|
fieldsInfo.push({ fieldValue, size });
|
|
171
175
|
structSize += size;
|
|
172
176
|
}
|
|
173
|
-
|
|
174
|
-
|
|
177
|
+
let outputType = 'number';
|
|
178
|
+
if (!output) {
|
|
179
|
+
output = new Uint8Array(structSize);
|
|
180
|
+
outputType = 'Uint8Array';
|
|
181
|
+
}
|
|
182
|
+
const dataView = new DataView(output.buffer, output.byteOffset, output.byteLength);
|
|
175
183
|
let offset = 0;
|
|
176
184
|
for (const { fieldValue, size } of fieldsInfo) {
|
|
177
185
|
fieldValue.serialize(dataView, offset);
|
|
178
186
|
offset += size;
|
|
179
187
|
}
|
|
180
|
-
|
|
188
|
+
if (outputType === 'number') {
|
|
189
|
+
return structSize;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
return output;
|
|
193
|
+
}
|
|
181
194
|
}
|
|
182
195
|
}
|
|
183
196
|
//# sourceMappingURL=struct.js.map
|
package/esm/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAG1B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAsB,oCAAoC,EAAE,qBAAqB,EAAE,eAAe,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,uCAAuC,EAAuG,MAAM,kBAAkB,CAAC;AA4JlX,MAAM,OAAO,MAAM;IAMC,OAAO,CAAW;IAElB,YAAY,CAAgB;IAE5B,MAAM,CAAU;IAEhB,KAAK,CAAyC;IAE9C,kBAAkB,CAAgE;IAElF,OAAO,CAA0B;IAEzC,KAAK,GAAG,CAAC,CAAC;IAClB;;OAEG;IACH,IAAW,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhC,OAAO,GAA4E,EAAE,CAAC;IAEtF,MAAM,GAA0B,EAAE,CAAC;IAEnC,iBAAiB,CAAgD;IAEzE,YAAmB,OAA0C;QACzD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,KAAK,CAIR,IAAW,EACX,UAAuB;QASvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnF;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QAEnB,oCAAoC;QACpC,OAAO,IAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,MAAM,CACT,KAAa;QAOb,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,IAAW,CAAC;IACvB,CAAC;IAEO,MAAM,CAKV,IAAW,EACX,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,KAAK,CACb,IAAI,EACJ,IAAI,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CACnD,CAAC;IACN,CAAC;IAED;;OAEG;IACI,IAAI,CAIP,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,IAAI,EACpB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAIR,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,KAAK,EACrB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAIR,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,KAAK,EACrB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAIT,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,MAAM,EACtB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAIR,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,KAAK,EACrB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAIT,IAAW,EACX,cAAgC;QAEhC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,MAAM,EACtB,cAAc,CACjB,CAAC;IACN,CAAC;IAEO,MAAM,CAKV,IAAW,EACX,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,KAAK,CACb,IAAI,EACJ,IAAI,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,CACnD,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,KAAK,CAIR,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,KAAK,EACrB,eAAe,CAClB,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,MAAM,CAIT,IAAW,EACX,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CACd,IAAI,EACJ,eAAe,CAAC,KAAK,EACrB,eAAe,CAClB,CAAC;IACN,CAAC;IAEO,eAAe,GAKnB,CACA,IAAiB,EACjB,IAAwB,EACxB,OAAiF,EAC9E,EAAE;QACD,IAAI,QAAQ,IAAI,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CACb,IAAI,EACJ,IAAI,oCAAoC,CAAC,IAAI,EAAE,OAAO,CAAC,CAC1D,CAAC;SACL;aAAM;YACH,OAAO,IAAI,CAAC,KAAK,CACb,IAAI,EACJ,IAAI,uCAAuC,CAAC,IAAI,EAAE,OAAO,CAAC,CAC7D,CAAC;SACL;IACL,CAAC,CAAC;IAEC,UAAU,GAMb,CACA,IAAiB,EACjB,OAAY,EACT,EAAE;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC,CAAC;IAEC,MAAM,GAMT,CACA,IAAiB,EACjB,OAAY,EACT,EAAE;QACL,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEN;;;;;;;;;OASG;IACI,KAAK,CAQR,KAA6D;QAO7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,OAAO,IAAW,CAAC;IACvB,CAAC;IA6BM,eAAe,CAClB,QAA+C;QAE/C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,OAAO,IAAW,CAAC;IACvB,CAAC;IAWM,WAAW,CACd,MAA8D;QAE9D,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,QAAQ;aACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YACvC,OAAO,QAAQ,CAAC,OAAO,CACnB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAa,EAAE,KAAK,CAAC,CAC7D,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAChB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;YAE3B,yBAAyB;YACzB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7D,gDAAgD;gBAChD,0DAA0D;gBAC1D,IAAI,QAAQ,EAAE;oBACV,OAAO,QAAQ,CAAC;iBACnB;aACJ;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;aACD,cAAc,EAAE,CAAC;IAC1B,CAAC;IAIM,SAAS,CAAC,IAA2C,EAAE,MAAmB;QAC7E,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAEhC,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC3C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAG,IAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/E,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC/B;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,UAAU,GAAsD,EAAE,CAAC;QAEzE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,UAAU,IAAI,IAAI,CAAC;SACtB;QAED,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACpC,UAAU,GAAG,YAAY,CAAC;SAC7B;QAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE;YAC3C,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,IAAI,IAAI,CAAC;SAClB;QAED,IAAI,UAAU,KAAK,QAAQ,EAAE;YACzB,OAAO,UAAU,CAAC;SACrB;aAAM;YACH,OAAO,MAAM,CAAC;SACjB;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import Bluebird from 'bluebird';
|
|
2
|
+
export declare type Resolvable<R> = R | PromiseLike<R>;
|
|
3
|
+
export declare type IterateFunction<T, R> = (item: T, index: number, arrayLength: number) => Resolvable<R>;
|
|
4
|
+
export interface Syncbird<R> extends Bluebird<R> {
|
|
5
|
+
valueOrPromise(): R | PromiseLike<R>;
|
|
6
|
+
then<U>(onFulfill?: (value: R) => Resolvable<U>, onReject?: (error: any) => Resolvable<U>): Syncbird<U>;
|
|
7
|
+
then<TResult1 = R, TResult2 = never>(onfulfilled?: ((value: R) => Resolvable<TResult1>) | null, onrejected?: ((reason: any) => Resolvable<TResult2>) | null): Syncbird<TResult1 | TResult2>;
|
|
8
|
+
}
|
|
9
|
+
interface SyncbirdStatic {
|
|
10
|
+
/**
|
|
11
|
+
* Iterate over an array, or a promise of an array,
|
|
12
|
+
* which contains promises (or a mix of promises and values) with the given iterator function with the signature `(item, index, value)`
|
|
13
|
+
* where item is the resolved value of a respective promise in the input array.
|
|
14
|
+
* Iteration happens serially. If any promise in the input array is rejected the returned promise is rejected as well.
|
|
15
|
+
*
|
|
16
|
+
* Resolves to the original array unmodified, this method is meant to be used for side effects.
|
|
17
|
+
* If the iterator function returns a promise or a thenable, the result for the promise is awaited for before continuing with next iteration.
|
|
18
|
+
*/
|
|
19
|
+
each<R>(values: Resolvable<Iterable<Resolvable<R>>>, iterator: IterateFunction<R, any>): Syncbird<R[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Reduce an array, or a promise of an array,
|
|
22
|
+
* which contains a promises (or a mix of promises and values) with the given `reducer` function with the signature `(total, current, index, arrayLength)`
|
|
23
|
+
* where `item` is the resolved value of a respective promise in the input array.
|
|
24
|
+
* If any promise in the input array is rejected the returned promise is rejected as well.
|
|
25
|
+
*
|
|
26
|
+
* If the reducer function returns a promise or a thenable, the result for the promise is awaited for before continuing with next iteration.
|
|
27
|
+
*
|
|
28
|
+
* *The original array is not modified. If no `initialValue` is given and the array doesn't contain at least 2 items,
|
|
29
|
+
* the callback will not be called and `undefined` is returned.
|
|
30
|
+
*
|
|
31
|
+
* If `initialValue` is given and the array doesn't have at least 1 item, `initialValue` is returned.*
|
|
32
|
+
*/
|
|
33
|
+
reduce<R, U>(values: Resolvable<Iterable<Resolvable<R>>>, reducer: (total: U, current: R, index: number, arrayLength: number) => Resolvable<U>, initialValue?: U): Syncbird<U>;
|
|
34
|
+
/**
|
|
35
|
+
* Create a promise that is resolved with the given `value`. If `value` is a thenable or promise, the returned promise will assume its state.
|
|
36
|
+
*/
|
|
37
|
+
resolve(): Syncbird<void>;
|
|
38
|
+
resolve<R>(value: Resolvable<R>): Syncbird<R>;
|
|
39
|
+
try<R>(fn: () => Resolvable<R>): Syncbird<R>;
|
|
40
|
+
attempt<R>(fn: () => Resolvable<R>): Syncbird<R>;
|
|
41
|
+
/**
|
|
42
|
+
* Configure long stack traces, warnings, monitoring and cancellation.
|
|
43
|
+
* Note that even though false is the default here, a development environment might be detected which automatically
|
|
44
|
+
* enables long stack traces and warnings.
|
|
45
|
+
*/
|
|
46
|
+
config(options: {
|
|
47
|
+
/** Enable warnings */
|
|
48
|
+
warnings?: boolean | {
|
|
49
|
+
/** Enables all warnings except forgotten return statements. */
|
|
50
|
+
wForgottenReturn: boolean;
|
|
51
|
+
} | undefined;
|
|
52
|
+
/** Enable long stack traces */
|
|
53
|
+
longStackTraces?: boolean | undefined;
|
|
54
|
+
/** Enable cancellation */
|
|
55
|
+
cancellation?: boolean | undefined;
|
|
56
|
+
/** Enable monitoring */
|
|
57
|
+
monitoring?: boolean | undefined;
|
|
58
|
+
/** Enable async hooks */
|
|
59
|
+
asyncHooks?: boolean | undefined;
|
|
60
|
+
}): void;
|
|
61
|
+
new <R>(callback: (resolve: (thenableOrResult?: Resolvable<R>) => void, reject: (error?: any) => void, onCancel?: (callback: () => void) => void) => void): Syncbird<R>;
|
|
62
|
+
}
|
|
63
|
+
export declare const Syncbird: SyncbirdStatic;
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=syncbird.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncbird.d.ts","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"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"}
|
package/esm/syncbird.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
|
+
// cspell: ignore syncbird
|
|
1
2
|
import Bluebird from 'bluebird';
|
|
2
3
|
export const Syncbird = Bluebird.getNewLibraryCopy();
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
Syncbird.config({
|
|
5
|
+
asyncHooks: false,
|
|
6
|
+
cancellation: false,
|
|
7
|
+
longStackTraces: false,
|
|
8
|
+
monitoring: false,
|
|
9
|
+
warnings: false,
|
|
10
|
+
});
|
|
11
|
+
// Bluebird uses `_then` internally.
|
|
12
|
+
const _then = Syncbird.prototype._then;
|
|
13
|
+
Syncbird.prototype._then = function (onfulfilled, onrejected, _, receiver, internalData) {
|
|
5
14
|
if (this.isFulfilled()) {
|
|
6
15
|
if (!onfulfilled) {
|
|
7
16
|
return this;
|
|
8
17
|
}
|
|
9
18
|
else {
|
|
10
|
-
|
|
19
|
+
// Synchronously call `onfulfilled`, and wrap the result in a new `Syncbird` object.
|
|
20
|
+
return Syncbird.resolve(onfulfilled.call(receiver, this.value()));
|
|
11
21
|
}
|
|
12
22
|
}
|
|
13
23
|
else {
|
|
14
|
-
|
|
24
|
+
// Forward to Bluebird's `_then` method.
|
|
25
|
+
return _then.call(this, onfulfilled, onrejected, _, receiver, internalData);
|
|
15
26
|
}
|
|
16
27
|
};
|
|
17
28
|
Syncbird.prototype.valueOrPromise = function () {
|
package/esm/syncbird.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncbird.js","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"syncbird.js","sourceRoot":"","sources":["../src/syncbird.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAkFhC,MAAM,CAAC,MAAM,QAAQ,GAAmB,QAAQ,CAAC,iBAAiB,EAAS,CAAC;AAE5E,QAAQ,CAAC,MAAM,CAAC;IACZ,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;CAClB,CAAC,CAAC;AAEH,oCAAoC;AACpC,MAAM,KAAK,GAAI,QAAQ,CAAC,SAAiB,CAAC,KAAK,CAAC;AAChD,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,UAEvB,WAAuD,EACvD,UAAyD,EACzD,CAAQ,EACR,QAAiB,EACjB,YAAqB;IAErB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;QACpB,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,IAAI,CAAC;SACf;aAAM;YACH,oFAAoF;YACpF,OAAO,QAAQ,CAAC,OAAO,CACnB,WAAW,CAAC,IAAI,CACZ,QAAQ,EACR,IAAI,CAAC,KAAK,EAAE,CACf,CACJ,CAAC;SACL;KACJ;SAAM;QACH,wCAAwC;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC/E;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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, StructValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions } from "../basic/index.js";
|
|
2
|
+
declare type DataViewBigInt64Getter = (dataView: DataView, byteOffset: number, littleEndian: boolean | undefined) => bigint;
|
|
3
|
+
declare type DataViewBigInt64Setter = (dataView: DataView, byteOffset: number, value: bigint, littleEndian: boolean | undefined) => void;
|
|
4
|
+
export declare class BigIntFieldType {
|
|
5
|
+
readonly TTypeScriptType: bigint;
|
|
6
|
+
readonly size: number;
|
|
7
|
+
readonly getter: DataViewBigInt64Getter;
|
|
8
|
+
readonly setter: DataViewBigInt64Setter;
|
|
9
|
+
constructor(size: number, getter: DataViewBigInt64Getter, setter: DataViewBigInt64Setter);
|
|
10
|
+
static readonly Int64: BigIntFieldType;
|
|
11
|
+
static readonly Uint64: BigIntFieldType;
|
|
12
|
+
}
|
|
13
|
+
export declare class BigIntFieldDefinition<TType extends BigIntFieldType = BigIntFieldType, TTypeScriptType = TType["TTypeScriptType"]> extends StructFieldDefinition<void, TTypeScriptType> {
|
|
14
|
+
readonly type: TType;
|
|
15
|
+
constructor(type: TType, _typescriptType?: TTypeScriptType);
|
|
16
|
+
getSize(): number;
|
|
17
|
+
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): BigIntFieldValue<this>;
|
|
18
|
+
deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): BigIntFieldValue<this>;
|
|
19
|
+
deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<BigIntFieldValue<this>>;
|
|
20
|
+
}
|
|
21
|
+
export declare class BigIntFieldValue<TDefinition extends BigIntFieldDefinition<BigIntFieldType, any>> extends StructFieldValue<TDefinition> {
|
|
22
|
+
serialize(dataView: DataView, offset: number): void;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=bigint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,4BAA4B,EAAE,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI9K,aAAK,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,SAAS,KAAK,MAAM,CAAC;AAEpH,aAAK,sBAAsB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC;AAEjI,qBAAa,eAAe;IACxB,SAAgB,eAAe,EAAG,MAAM,CAAC;IAEzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,SAAgB,MAAM,EAAE,sBAAsB,CAAC;IAE/C,SAAgB,MAAM,EAAE,sBAAsB,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,sBAAsB;IAOlC,gBAAuB,KAAK,kBAAoD;IAEhF,gBAAuB,MAAM,kBAAsD;CACtF;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CACxC,SAAQ,qBAAqB,CAC/B,IAAI,EACJ,eAAe,CACd;IACD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,eAAe;IAK1D,OAAO,IAAI,MAAM;IAIjB,MAAM,CACT,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IACT,WAAW,CACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,4BAA4B,EACpC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAkBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,CAC7D,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ7D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// cspell: ignore syncbird
|
|
2
|
+
import { getBigInt64, getBigUint64, setBigInt64, setBigUint64 } from '@yume-chan/dataview-bigint-polyfill/esm/fallback.js';
|
|
3
|
+
import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
|
|
4
|
+
import { Syncbird } from "../syncbird.js";
|
|
5
|
+
export class BigIntFieldType {
|
|
6
|
+
TTypeScriptType;
|
|
7
|
+
size;
|
|
8
|
+
getter;
|
|
9
|
+
setter;
|
|
10
|
+
constructor(size, getter, setter) {
|
|
11
|
+
this.size = size;
|
|
12
|
+
this.getter = getter;
|
|
13
|
+
this.setter = setter;
|
|
14
|
+
}
|
|
15
|
+
static Int64 = new BigIntFieldType(8, getBigInt64, setBigInt64);
|
|
16
|
+
static Uint64 = new BigIntFieldType(8, getBigUint64, setBigUint64);
|
|
17
|
+
}
|
|
18
|
+
export class BigIntFieldDefinition extends StructFieldDefinition {
|
|
19
|
+
type;
|
|
20
|
+
constructor(type, _typescriptType) {
|
|
21
|
+
super();
|
|
22
|
+
this.type = type;
|
|
23
|
+
}
|
|
24
|
+
getSize() {
|
|
25
|
+
return this.type.size;
|
|
26
|
+
}
|
|
27
|
+
create(options, struct, value) {
|
|
28
|
+
return new BigIntFieldValue(this, options, struct, value);
|
|
29
|
+
}
|
|
30
|
+
deserialize(options, stream, struct) {
|
|
31
|
+
return Syncbird.try(() => {
|
|
32
|
+
return stream.read(this.getSize());
|
|
33
|
+
}).then(array => {
|
|
34
|
+
const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
|
|
35
|
+
const value = this.type.getter(view, 0, options.littleEndian);
|
|
36
|
+
return this.create(options, struct, value);
|
|
37
|
+
}).valueOrPromise();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class BigIntFieldValue extends StructFieldValue {
|
|
41
|
+
serialize(dataView, offset) {
|
|
42
|
+
this.definition.type.setter(dataView, offset, this.value, this.options.littleEndian);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=bigint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAoG,MAAM,mBAAmB,CAAC;AAC9K,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,MAAM,OAAO,eAAe;IACR,eAAe,CAAU;IAEzB,IAAI,CAAS;IAEb,MAAM,CAAyB;IAE/B,MAAM,CAAyB;IAE/C,YACI,IAAY,EACZ,MAA8B,EAC9B,MAA8B;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,MAAM,CAAU,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEzE,MAAM,CAAU,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;;AAGvF,MAAM,OAAO,qBAGP,SAAQ,qBAGT;IACe,IAAI,CAAQ;IAE5B,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,KAAK,CAAC,EAAE;YACZ,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAC1B,IAAI,EACJ,CAAC,EACD,OAAO,CAAC,YAAY,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAY,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,OAAO,gBAEP,SAAQ,gBAA6B;IAChC,SAAS,CAAC,QAAkB,EAAE,MAAc;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CACvB,QAAQ,EACR,MAAM,EACN,IAAI,CAAC,KAAM,EACX,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}
|