@yume-chan/struct 0.0.22 → 0.0.24
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 +18 -0
- package/CHANGELOG.md +13 -1
- package/LICENSE +1 -1
- package/esm/basic/field-value.d.ts +2 -2
- package/esm/basic/field-value.d.ts.map +1 -1
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/struct-value.d.ts +6 -2
- package/esm/basic/struct-value.d.ts.map +1 -1
- package/esm/basic/struct-value.js +5 -0
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/struct.d.ts +27 -14
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +31 -18
- package/esm/struct.js.map +1 -1
- package/esm/sync-promise.d.ts +2 -2
- package/esm/sync-promise.d.ts.map +1 -1
- package/esm/sync-promise.js.map +1 -1
- package/esm/types/bigint.d.ts +13 -14
- package/esm/types/bigint.d.ts.map +1 -1
- package/esm/types/bigint.js +16 -17
- package/esm/types/bigint.js.map +1 -1
- package/esm/types/buffer/base.d.ts +31 -27
- package/esm/types/buffer/base.d.ts.map +1 -1
- package/esm/types/buffer/base.js +25 -26
- package/esm/types/buffer/base.js.map +1 -1
- package/esm/types/buffer/fixed-length.d.ts +2 -2
- 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 +10 -9
- package/esm/types/buffer/variable-length.d.ts.map +1 -1
- package/esm/types/buffer/variable-length.js +30 -19
- package/esm/types/buffer/variable-length.js.map +1 -1
- package/esm/types/number.d.ts +13 -13
- package/esm/types/number.d.ts.map +1 -1
- package/esm/types/number.js +22 -34
- package/esm/types/number.js.map +1 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +6 -4
- package/esm/utils.js.map +1 -1
- package/package.json +9 -11
- package/src/basic/field-value.ts +7 -7
- package/src/basic/struct-value.ts +21 -3
- package/src/struct.ts +106 -65
- package/src/sync-promise.ts +9 -9
- package/src/types/bigint.ts +40 -37
- package/src/types/buffer/base.ts +48 -47
- package/src/types/buffer/fixed-length.ts +9 -4
- package/src/types/buffer/variable-length.ts +55 -31
- package/src/types/number.ts +32 -39
- package/src/utils.ts +6 -4
- package/tsconfig.build.tsbuildinfo +1 -1
package/esm/types/bigint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,GACZ,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgBjD,MAAM,OAAO,kBAAkB;IAClB,eAAe,CAAU;IAEzB,IAAI,CAAS;IAEb,WAAW,CAAqB;IAEhC,SAAS,CAAmB;IAErC,YACI,IAAY,EACZ,WAA+B,EAC/B,SAA2B;QAE3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAU,KAAK,GAAG,IAAI,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEtE,MAAM,CAAU,MAAM,GAAG,IAAI,kBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;;AAG7E,MAAM,OAAO,qBAGX,SAAQ,qBAA4C;IACzC,OAAO,CAAW;IAE3B,YAAY,OAAiB,EAAE,cAAgC;QAC3D,KAAK,cAAc,CAAC;QACpB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CACF,OAAgC,EAChC,MAAmB,EACnB,KAAsB;QAEtB,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAYQ,WAAW,CAChB,OAAgC,EAChC,MAA0C,EAC1C,MAAmB;QAEnB,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YACxB,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;aACG,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAClC,KAAK,EACL,CAAC,EACD,OAAO,CAAC,YAAY,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAc,CAAC,CAAC;QACxD,CAAC,CAAC;aACD,cAAc,EAAE,CAAC;IAC1B,CAAC;CACJ;AAED,MAAM,OAAO,gBAEX,SAAQ,gBAA6B;IAC1B,SAAS,CACd,QAAkB,EAClB,KAAiB,EACjB,MAAc;QAEd,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAC7B,KAAK,EACL,MAAM,EACN,IAAI,CAAC,KAAc,EACnB,IAAI,CAAC,OAAO,CAAC,YAAY,CAC5B,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -1,65 +1,69 @@
|
|
|
1
1
|
import type { AsyncExactReadable, ExactReadable, StructOptions, StructValue } from "../../basic/index.js";
|
|
2
2
|
import { StructFieldDefinition, StructFieldValue } from "../../basic/index.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* and
|
|
4
|
+
* A converter for buffer-like fields.
|
|
5
|
+
* It converts `Uint8Array`s to custom-typed values when deserializing,
|
|
6
|
+
* and convert values back to `Uint8Array`s when serializing.
|
|
7
7
|
*
|
|
8
|
-
* @template TValue The
|
|
9
|
-
* @template TTypeScriptType
|
|
10
|
-
*
|
|
8
|
+
* @template TValue The type of the value that the converter converts to/from `Uint8Array`.
|
|
9
|
+
* @template TTypeScriptType Optionally another type to refine `TValue`.
|
|
10
|
+
* For example, `TValue` is `string`, and `TTypeScriptType` is `"foo" | "bar"`.
|
|
11
|
+
* `TValue` is specified by the developer when creating an converter implementation,
|
|
12
|
+
* `TTypeScriptType` is specified by the user when creating a field.
|
|
11
13
|
*/
|
|
12
|
-
export declare abstract class
|
|
14
|
+
export declare abstract class BufferFieldConverter<TValue = unknown, TTypeScriptType = TValue> {
|
|
13
15
|
readonly TTypeScriptType: TTypeScriptType;
|
|
14
16
|
/**
|
|
15
|
-
* When implemented in derived classes, converts the
|
|
17
|
+
* When implemented in derived classes, converts the custom `value` to an `Uint8Array`
|
|
16
18
|
*
|
|
17
19
|
* This function should be "pure", i.e.,
|
|
18
20
|
* same `value` should always be converted to `Uint8Array`s that have same content.
|
|
19
21
|
*/
|
|
20
22
|
abstract toBuffer(value: TValue): Uint8Array;
|
|
21
|
-
/** When implemented in derived classes, converts the `Uint8Array` to a
|
|
23
|
+
/** When implemented in derived classes, converts the `Uint8Array` to a custom value */
|
|
22
24
|
abstract toValue(array: Uint8Array): TValue;
|
|
23
25
|
/**
|
|
24
|
-
* When implemented in derived classes, gets the size in byte of the
|
|
26
|
+
* When implemented in derived classes, gets the size in byte of the custom `value`.
|
|
25
27
|
*
|
|
26
|
-
* If the size can't be
|
|
27
|
-
* implementer
|
|
28
|
-
*
|
|
28
|
+
* If the size can't be determined without first converting the `value` back to an `Uint8Array`,
|
|
29
|
+
* the implementer should return `undefined`. In which case, the caller will call `toBuffer` to
|
|
30
|
+
* convert the value to a `Uint8Array`, then read the length of the `Uint8Array`. The caller can
|
|
31
|
+
* cache the result so the serialization process doesn't need to call `toBuffer` again.
|
|
29
32
|
*/
|
|
30
|
-
abstract getSize(value: TValue): number;
|
|
33
|
+
abstract getSize(value: TValue): number | undefined;
|
|
31
34
|
}
|
|
32
|
-
/** An
|
|
33
|
-
export declare class
|
|
34
|
-
static readonly Instance:
|
|
35
|
+
/** An identity converter, doesn't convert to anything else. */
|
|
36
|
+
export declare class Uint8ArrayBufferFieldConverter<TTypeScriptType = Uint8Array> extends BufferFieldConverter<Uint8Array, TTypeScriptType> {
|
|
37
|
+
static readonly Instance: Uint8ArrayBufferFieldConverter<Uint8Array>;
|
|
35
38
|
protected constructor();
|
|
36
39
|
toBuffer(value: Uint8Array): Uint8Array;
|
|
37
40
|
toValue(buffer: Uint8Array): Uint8Array;
|
|
38
41
|
getSize(value: Uint8Array): number;
|
|
39
42
|
}
|
|
40
43
|
/** An `BufferFieldSubType` that converts between `Uint8Array` and `string` */
|
|
41
|
-
export declare class
|
|
42
|
-
static readonly Instance:
|
|
44
|
+
export declare class StringBufferFieldConverter<TTypeScriptType = string> extends BufferFieldConverter<string, TTypeScriptType> {
|
|
45
|
+
static readonly Instance: StringBufferFieldConverter<string>;
|
|
43
46
|
toBuffer(value: string): Uint8Array;
|
|
44
47
|
toValue(array: Uint8Array): string;
|
|
45
|
-
getSize(): number;
|
|
48
|
+
getSize(): number | undefined;
|
|
46
49
|
}
|
|
47
50
|
export declare const EMPTY_UINT8_ARRAY: Uint8Array;
|
|
48
|
-
export declare abstract class BufferLikeFieldDefinition<
|
|
49
|
-
readonly
|
|
50
|
-
|
|
51
|
+
export declare abstract class BufferLikeFieldDefinition<TConverter extends BufferFieldConverter<unknown, unknown> = BufferFieldConverter<unknown, unknown>, TOptions = void, TOmitInitKey extends PropertyKey = never, TTypeScriptType = TConverter["TTypeScriptType"]> extends StructFieldDefinition<TOptions, TTypeScriptType, TOmitInitKey> {
|
|
52
|
+
readonly converter: TConverter;
|
|
53
|
+
readonly TTypeScriptType: TTypeScriptType;
|
|
54
|
+
constructor(converter: TConverter, options: TOptions);
|
|
51
55
|
protected getDeserializeSize(struct: StructValue): number;
|
|
52
56
|
/**
|
|
53
57
|
* When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
|
|
54
58
|
*/
|
|
55
|
-
create(options: Readonly<StructOptions>, struct: StructValue, value:
|
|
59
|
+
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType, array?: Uint8Array): BufferLikeFieldValue<this>;
|
|
56
60
|
deserialize(options: Readonly<StructOptions>, stream: ExactReadable, struct: StructValue): BufferLikeFieldValue<this>;
|
|
57
61
|
deserialize(options: Readonly<StructOptions>, stream: AsyncExactReadable, struct: StructValue): Promise<BufferLikeFieldValue<this>>;
|
|
58
62
|
}
|
|
59
|
-
export declare class BufferLikeFieldValue<TDefinition extends BufferLikeFieldDefinition<
|
|
63
|
+
export declare class BufferLikeFieldValue<TDefinition extends BufferLikeFieldDefinition<BufferFieldConverter<unknown, unknown>, any, any, any>> extends StructFieldValue<TDefinition> {
|
|
60
64
|
protected array: Uint8Array | undefined;
|
|
61
|
-
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["
|
|
65
|
+
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["TTypeScriptType"], array?: Uint8Array);
|
|
62
66
|
set(value: TDefinition["TValue"]): void;
|
|
63
|
-
serialize(dataView: DataView, offset: number): void;
|
|
67
|
+
serialize(dataView: DataView, array: Uint8Array, offset: number): void;
|
|
64
68
|
}
|
|
65
69
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"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"}
|
package/esm/types/buffer/base.js
CHANGED
|
@@ -2,20 +2,22 @@ import { StructFieldDefinition, StructFieldValue } from "../../basic/index.js";
|
|
|
2
2
|
import { SyncPromise } from "../../sync-promise.js";
|
|
3
3
|
import { decodeUtf8, encodeUtf8 } from "../../utils.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* and
|
|
5
|
+
* A converter for buffer-like fields.
|
|
6
|
+
* It converts `Uint8Array`s to custom-typed values when deserializing,
|
|
7
|
+
* and convert values back to `Uint8Array`s when serializing.
|
|
8
8
|
*
|
|
9
|
-
* @template TValue The
|
|
10
|
-
* @template TTypeScriptType
|
|
11
|
-
*
|
|
9
|
+
* @template TValue The type of the value that the converter converts to/from `Uint8Array`.
|
|
10
|
+
* @template TTypeScriptType Optionally another type to refine `TValue`.
|
|
11
|
+
* For example, `TValue` is `string`, and `TTypeScriptType` is `"foo" | "bar"`.
|
|
12
|
+
* `TValue` is specified by the developer when creating an converter implementation,
|
|
13
|
+
* `TTypeScriptType` is specified by the user when creating a field.
|
|
12
14
|
*/
|
|
13
|
-
export class
|
|
15
|
+
export class BufferFieldConverter {
|
|
14
16
|
TTypeScriptType;
|
|
15
17
|
}
|
|
16
|
-
/** An
|
|
17
|
-
export class
|
|
18
|
-
static Instance = new
|
|
18
|
+
/** An identity converter, doesn't convert to anything else. */
|
|
19
|
+
export class Uint8ArrayBufferFieldConverter extends BufferFieldConverter {
|
|
20
|
+
static Instance = new Uint8ArrayBufferFieldConverter();
|
|
19
21
|
constructor() {
|
|
20
22
|
super();
|
|
21
23
|
}
|
|
@@ -26,12 +28,12 @@ export class Uint8ArrayBufferFieldSubType extends BufferFieldSubType {
|
|
|
26
28
|
return buffer;
|
|
27
29
|
}
|
|
28
30
|
getSize(value) {
|
|
29
|
-
return value.
|
|
31
|
+
return value.length;
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
/** An `BufferFieldSubType` that converts between `Uint8Array` and `string` */
|
|
33
|
-
export class
|
|
34
|
-
static Instance = new
|
|
35
|
+
export class StringBufferFieldConverter extends BufferFieldConverter {
|
|
36
|
+
static Instance = new StringBufferFieldConverter();
|
|
35
37
|
toBuffer(value) {
|
|
36
38
|
return encodeUtf8(value);
|
|
37
39
|
}
|
|
@@ -39,18 +41,17 @@ export class StringBufferFieldSubType extends BufferFieldSubType {
|
|
|
39
41
|
return decodeUtf8(array);
|
|
40
42
|
}
|
|
41
43
|
getSize() {
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
// Then get the size from that `Uint8Array`
|
|
45
|
-
return -1;
|
|
44
|
+
// See the note in `BufferFieldConverter.getSize`
|
|
45
|
+
return undefined;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
export const EMPTY_UINT8_ARRAY = new Uint8Array(0);
|
|
49
49
|
export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
converter;
|
|
51
|
+
TTypeScriptType;
|
|
52
|
+
constructor(converter, options) {
|
|
52
53
|
super(options);
|
|
53
|
-
this.
|
|
54
|
+
this.converter = converter;
|
|
54
55
|
}
|
|
55
56
|
getDeserializeSize(struct) {
|
|
56
57
|
void struct;
|
|
@@ -73,7 +74,7 @@ export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
|
73
74
|
}
|
|
74
75
|
})
|
|
75
76
|
.then((array) => {
|
|
76
|
-
const value = this.
|
|
77
|
+
const value = this.converter.toValue(array);
|
|
77
78
|
return this.create(options, struct, value, array);
|
|
78
79
|
})
|
|
79
80
|
.valueOrPromise();
|
|
@@ -91,11 +92,9 @@ export class BufferLikeFieldValue extends StructFieldValue {
|
|
|
91
92
|
// It will be lazily calculated in `serialize()`
|
|
92
93
|
this.array = undefined;
|
|
93
94
|
}
|
|
94
|
-
serialize(dataView, offset) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(this.array, offset);
|
|
95
|
+
serialize(dataView, array, offset) {
|
|
96
|
+
this.array ??= this.definition.converter.toBuffer(this.value);
|
|
97
|
+
array.set(this.array, offset);
|
|
99
98
|
}
|
|
100
99
|
}
|
|
101
100
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BufferFieldConverter } from "./base.js";
|
|
2
2
|
import { BufferLikeFieldDefinition } from "./base.js";
|
|
3
3
|
export interface FixedLengthBufferLikeFieldOptions {
|
|
4
4
|
length: number;
|
|
5
5
|
}
|
|
6
|
-
export declare class FixedLengthBufferLikeFieldDefinition<
|
|
6
|
+
export declare class FixedLengthBufferLikeFieldDefinition<TConverter extends BufferFieldConverter = BufferFieldConverter, TOptions extends FixedLengthBufferLikeFieldOptions = FixedLengthBufferLikeFieldOptions, TTypeScriptType = TConverter["TTypeScriptType"]> extends BufferLikeFieldDefinition<TConverter, TOptions, never, TTypeScriptType> {
|
|
7
7
|
getSize(): number;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=fixed-length.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"fixed-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,iCAAiC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oCAAoC,CAC7C,UAAU,SAAS,oBAAoB,GAAG,oBAAoB,EAC9D,QAAQ,SACJ,iCAAiC,GAAG,iCAAiC,EACzE,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,CACjD,SAAQ,yBAAyB,CAC/B,UAAU,EACV,QAAQ,EACR,KAAK,EACL,eAAe,CAClB;IACG,OAAO,IAAI,MAAM;CAGpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-length.js","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAMtD,MAAM,OAAO,oCAKX,SAAQ,
|
|
1
|
+
{"version":3,"file":"fixed-length.js","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAMtD,MAAM,OAAO,oCAKX,SAAQ,yBAKT;IACG,OAAO;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { StructFieldDefinition, StructOptions, StructValue } from "../../basic/index.js";
|
|
2
2
|
import { StructFieldValue } from "../../basic/index.js";
|
|
3
3
|
import type { KeysOfType } from "../../utils.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { BufferFieldConverter } from "./base.js";
|
|
5
5
|
import { BufferLikeFieldDefinition, BufferLikeFieldValue } from "./base.js";
|
|
6
6
|
export type LengthField<TFields> = KeysOfType<TFields, number | string>;
|
|
7
|
-
export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
|
|
7
|
+
export interface VariableLengthBufferLikeFieldOptions<TFields extends object = object, TLengthField extends LengthField<TFields> = any> {
|
|
8
8
|
/**
|
|
9
9
|
* The name of the field that contains the length of the buffer.
|
|
10
10
|
*
|
|
@@ -19,27 +19,28 @@ export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthF
|
|
|
19
19
|
*/
|
|
20
20
|
lengthFieldRadix?: number;
|
|
21
21
|
}
|
|
22
|
-
export declare class VariableLengthBufferLikeFieldDefinition<
|
|
22
|
+
export declare class VariableLengthBufferLikeFieldDefinition<TConverter extends BufferFieldConverter = BufferFieldConverter, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions, TTypeScriptType = TConverter["TTypeScriptType"]> extends BufferLikeFieldDefinition<TConverter, TOptions, TOptions["lengthField"], TTypeScriptType> {
|
|
23
23
|
getSize(): number;
|
|
24
24
|
protected getDeserializeSize(struct: StructValue): number;
|
|
25
25
|
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType, array?: Uint8Array): VariableLengthBufferLikeStructFieldValue<this>;
|
|
26
26
|
}
|
|
27
27
|
export declare class VariableLengthBufferLikeStructFieldValue<TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition> extends BufferLikeFieldValue<TDefinition> {
|
|
28
|
+
#private;
|
|
28
29
|
protected length: number | undefined;
|
|
29
30
|
protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
|
|
30
31
|
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["TValue"], array?: Uint8Array);
|
|
31
32
|
getSize(): number;
|
|
32
33
|
set(value: unknown): void;
|
|
33
34
|
}
|
|
34
|
-
type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
|
|
35
|
-
export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
36
|
-
protected
|
|
37
|
-
protected
|
|
38
|
-
constructor(
|
|
35
|
+
type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions<any, any>, any, any>>;
|
|
36
|
+
export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue<StructFieldDefinition<unknown, unknown, PropertyKey>> {
|
|
37
|
+
protected originalValue: StructFieldValue<StructFieldDefinition<unknown, unknown, PropertyKey>>;
|
|
38
|
+
protected bufferValue: VariableLengthBufferLikeFieldValueLike;
|
|
39
|
+
constructor(originalValue: StructFieldValue<StructFieldDefinition<unknown, unknown, PropertyKey>>, bufferValue: VariableLengthBufferLikeFieldValueLike);
|
|
39
40
|
getSize(): number;
|
|
40
41
|
get(): string | number;
|
|
41
42
|
set(): void;
|
|
42
|
-
serialize(dataView: DataView, offset: number): void;
|
|
43
|
+
serialize(dataView: DataView, array: Uint8Array, offset: number): void;
|
|
43
44
|
}
|
|
44
45
|
export {};
|
|
45
46
|
//# sourceMappingURL=variable-length.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,qBAAqB,EACrB,aAAa,EACb,WAAW,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5E,MAAM,MAAM,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oCAAoC,CACjD,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,YAAY,SAAS,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG;IAE/C;;;;OAIG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,uCAAuC,CAChD,UAAU,SAAS,oBAAoB,GAAG,oBAAoB,EAC9D,QAAQ,SACJ,oCAAoC,GAAG,oCAAoC,EAC/E,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,CACjD,SAAQ,yBAAyB,CAC/B,UAAU,EACV,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,EACvB,eAAe,CAClB;IACG,OAAO,IAAI,MAAM;cAIE,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQhD,MAAM,CACX,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,KAAK,CAAC,EAAE,UAAU,GACnB,wCAAwC,CAAC,IAAI,CAAC;CASpD;AAED,qBAAa,wCAAwC,CACjD,WAAW,SACP,uCAAuC,GAAG,uCAAuC,CACvF,SAAQ,oBAAoB,CAAC,WAAW,CAAC;;IACvC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,SAAS,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;gBAGjE,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,EAAE,UAAU;IA2Bb,OAAO,IAAI,MAAM;IAejB,GAAG,CAAC,KAAK,EAAE,OAAO;CAK9B;AAGD,KAAK,sCAAsC,GAAG,gBAAgB,CAC1D,qBAAqB,CACjB,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,GAAG,EACH,GAAG,CACN,CACJ,CAAC;AAEF,qBAAa,wCAAyC,SAAQ,gBAAgB,CAC1E,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CACvD;IACG,SAAS,CAAC,aAAa,EAAE,gBAAgB,CACrC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CACvD,CAAC;IAEF,SAAS,CAAC,WAAW,EAAE,sCAAsC,CAAC;gBAG1D,aAAa,EAAE,gBAAgB,CAC3B,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CACvD,EACD,WAAW,EAAE,sCAAsC;IAY9C,OAAO;IAIP,GAAG;IAaH,GAAG;IAKZ,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;CAIlE"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
3
|
import { StructFieldValue } from "../../basic/index.js";
|
|
2
4
|
import { BufferLikeFieldDefinition, BufferLikeFieldValue } from "./base.js";
|
|
3
5
|
export class VariableLengthBufferLikeFieldDefinition extends BufferLikeFieldDefinition {
|
|
@@ -21,7 +23,7 @@ export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldVal
|
|
|
21
23
|
constructor(definition, options, struct, value, array) {
|
|
22
24
|
super(definition, options, struct, value, array);
|
|
23
25
|
if (array) {
|
|
24
|
-
this.length = array.
|
|
26
|
+
this.length = array.length;
|
|
25
27
|
}
|
|
26
28
|
// Patch the associated length field.
|
|
27
29
|
const lengthField = this.definition.options.lengthField;
|
|
@@ -29,13 +31,22 @@ export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldVal
|
|
|
29
31
|
this.lengthFieldValue = new VariableLengthBufferLikeFieldLengthValue(originalValue, this);
|
|
30
32
|
struct.set(lengthField, this.lengthFieldValue);
|
|
31
33
|
}
|
|
34
|
+
#tryGetSize() {
|
|
35
|
+
const length = this.definition.converter.getSize(this.value);
|
|
36
|
+
if (length !== undefined && length < 0) {
|
|
37
|
+
throw new Error("Invalid length");
|
|
38
|
+
}
|
|
39
|
+
return length;
|
|
40
|
+
}
|
|
32
41
|
getSize() {
|
|
33
42
|
if (this.length === undefined) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
// first try to get the size from the converter
|
|
44
|
+
this.length = this.#tryGetSize();
|
|
45
|
+
}
|
|
46
|
+
if (this.length === undefined) {
|
|
47
|
+
// The converter doesn't know the size, so convert the value to a buffer to get its size
|
|
48
|
+
this.array = this.definition.converter.toBuffer(this.value);
|
|
49
|
+
this.length = this.array.length;
|
|
39
50
|
}
|
|
40
51
|
return this.length;
|
|
41
52
|
}
|
|
@@ -46,21 +57,21 @@ export class VariableLengthBufferLikeStructFieldValue extends BufferLikeFieldVal
|
|
|
46
57
|
}
|
|
47
58
|
}
|
|
48
59
|
export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
constructor(
|
|
52
|
-
super(
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
60
|
+
originalValue;
|
|
61
|
+
bufferValue;
|
|
62
|
+
constructor(originalValue, bufferValue) {
|
|
63
|
+
super(originalValue.definition, originalValue.options, originalValue.struct, 0);
|
|
64
|
+
this.originalValue = originalValue;
|
|
65
|
+
this.bufferValue = bufferValue;
|
|
55
66
|
}
|
|
56
67
|
getSize() {
|
|
57
|
-
return this.
|
|
68
|
+
return this.originalValue.getSize();
|
|
58
69
|
}
|
|
59
70
|
get() {
|
|
60
|
-
let value = this.
|
|
61
|
-
const originalValue = this.
|
|
71
|
+
let value = this.bufferValue.getSize();
|
|
72
|
+
const originalValue = this.originalValue.get();
|
|
62
73
|
if (typeof originalValue === "string") {
|
|
63
|
-
value = value.toString(this.
|
|
74
|
+
value = value.toString(this.bufferValue.definition.options.lengthFieldRadix ?? 10);
|
|
64
75
|
}
|
|
65
76
|
return value;
|
|
66
77
|
}
|
|
@@ -68,9 +79,9 @@ export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
|
68
79
|
// Ignore setting
|
|
69
80
|
// It will always be in sync with the buffer size
|
|
70
81
|
}
|
|
71
|
-
serialize(dataView, offset) {
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
82
|
+
serialize(dataView, array, offset) {
|
|
83
|
+
this.originalValue.set(this.get());
|
|
84
|
+
this.originalValue.serialize(dataView, array, offset);
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
87
|
//# sourceMappingURL=variable-length.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uDAAuD;AAOvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAwB5E,MAAM,OAAO,uCAKX,SAAQ,yBAKT;IACG,OAAO;QACH,OAAO,CAAC,CAAC;IACb,CAAC;IAEkB,kBAAkB,CAAC,MAAmB;QACrD,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAoB,CAAC;QACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEQ,MAAM,CACX,OAAgC,EAChC,MAAmB,EACnB,KAAsB,EACtB,KAAkB;QAElB,OAAO,IAAI,wCAAwC,CAC/C,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,CACR,CAAC;IACN,CAAC;CACJ;AAED,MAAM,OAAO,wCAGX,SAAQ,oBAAiC;IAC7B,MAAM,CAAqB;IAE3B,gBAAgB,CAA2C;IAErE,YACI,UAAuB,EACvB,OAAgC,EAChC,MAAmB,EACnB,KAA4B,EAC5B,KAAkB;QAElB,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjD,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,qCAAqC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAA0B,CAAC;QAEvE,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,wCAAwC,CAChE,aAAa,EACb,IAAI,CACP,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED,WAAW;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEQ,OAAO;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,+CAA+C;YAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC5B,wFAAwF;YACxF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEQ,GAAG,CAAC,KAAc;QACvB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;CACJ;AAWD,MAAM,OAAO,wCAAyC,SAAQ,gBAE7D;IACa,aAAa,CAErB;IAEQ,WAAW,CAAyC;IAE9D,YACI,aAEC,EACD,WAAmD;QAEnD,KAAK,CACD,aAAa,CAAC,UAAU,EACxB,aAAa,CAAC,OAAO,EACrB,aAAa,CAAC,MAAM,EACpB,CAAC,CACJ,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEQ,OAAO;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAEQ,GAAG;QACR,IAAI,KAAK,GAAoB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAExD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAClB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAC7D,CAAC;QACN,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEQ,GAAG;QACR,iBAAiB;QACjB,iDAAiD;IACrD,CAAC;IAED,SAAS,CAAC,QAAkB,EAAE,KAAiB,EAAE,MAAc;QAC3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACJ"}
|
package/esm/types/number.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import type { AsyncExactReadable, ExactReadable, StructOptions, StructValue } from "../basic/index.js";
|
|
2
2
|
import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
|
|
3
|
-
export interface
|
|
3
|
+
export interface NumberFieldVariant {
|
|
4
4
|
signed: boolean;
|
|
5
5
|
size: number;
|
|
6
6
|
deserialize(array: Uint8Array, littleEndian: boolean): number;
|
|
7
7
|
serialize(dataView: DataView, offset: number, value: number, littleEndian: boolean): void;
|
|
8
8
|
}
|
|
9
|
-
export declare namespace
|
|
10
|
-
const Uint8:
|
|
11
|
-
const Int8:
|
|
12
|
-
const Uint16:
|
|
13
|
-
const Int16:
|
|
14
|
-
const Uint32:
|
|
15
|
-
const Int32:
|
|
9
|
+
export declare namespace NumberFieldVariant {
|
|
10
|
+
const Uint8: NumberFieldVariant;
|
|
11
|
+
const Int8: NumberFieldVariant;
|
|
12
|
+
const Uint16: NumberFieldVariant;
|
|
13
|
+
const Int16: NumberFieldVariant;
|
|
14
|
+
const Uint32: NumberFieldVariant;
|
|
15
|
+
const Int32: NumberFieldVariant;
|
|
16
16
|
}
|
|
17
|
-
export declare class NumberFieldDefinition<
|
|
18
|
-
readonly
|
|
19
|
-
constructor(
|
|
17
|
+
export declare class NumberFieldDefinition<TVariant extends NumberFieldVariant = NumberFieldVariant, TTypeScriptType = number> extends StructFieldDefinition<void, TTypeScriptType> {
|
|
18
|
+
readonly variant: TVariant;
|
|
19
|
+
constructor(variant: TVariant, typescriptType?: TTypeScriptType);
|
|
20
20
|
getSize(): number;
|
|
21
21
|
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
|
|
22
22
|
deserialize(options: Readonly<StructOptions>, stream: ExactReadable, struct: StructValue): NumberFieldValue<this>;
|
|
23
23
|
deserialize(options: Readonly<StructOptions>, stream: AsyncExactReadable, struct: StructValue): Promise<NumberFieldValue<this>>;
|
|
24
24
|
}
|
|
25
|
-
export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<
|
|
26
|
-
serialize(dataView: DataView, offset: number): void;
|
|
25
|
+
export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldVariant, unknown>> extends StructFieldValue<TDefinition> {
|
|
26
|
+
serialize(dataView: DataView, array: Uint8Array, offset: number): void;
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=number.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9D,SAAS,CACL,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,OAAO,GACtB,IAAI,CAAC;CACX;AAED,yBAAiB,kBAAkB,CAAC;IACzB,MAAM,KAAK,EAAE,kBASnB,CAAC;IAEK,MAAM,IAAI,EAAE,kBASlB,CAAC;IAEK,MAAM,MAAM,EAAE,kBAYpB,CAAC;IAEK,MAAM,KAAK,EAAE,kBASnB,CAAC;IAEK,MAAM,MAAM,EAAE,kBASpB,CAAC;IAEK,MAAM,KAAK,EAAE,kBASnB,CAAC;CACL;AAED,qBAAa,qBAAqB,CAC9B,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,EACxD,eAAe,GAAG,MAAM,CAC1B,SAAQ,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,eAAe;IAM/D,OAAO,IAAI,MAAM;IAIjB,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACvB,gBAAgB,CAAC,IAAI,CAAC;IAIhB,WAAW,CAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GACpB,gBAAgB,CAAC,IAAI,CAAC;IAChB,WAAW,CAChB,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAChC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAkBrC;AAED,qBAAa,gBAAgB,CACzB,WAAW,SAAS,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CACxE,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQzE"}
|