@yume-chan/struct 0.0.16 → 0.0.18
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/definition.d.ts +4 -4
- package/esm/basic/definition.d.ts.map +1 -1
- package/esm/basic/definition.js.map +1 -1
- package/esm/basic/field-value.d.ts +7 -7
- package/esm/basic/field-value.d.ts.map +1 -1
- package/esm/basic/field-value.js +2 -2
- package/esm/basic/field-value.js.map +1 -1
- package/esm/basic/stream.d.ts +1 -1
- package/esm/basic/stream.d.ts.map +1 -1
- package/esm/basic/struct-value.d.ts +2 -2
- package/esm/basic/struct-value.d.ts.map +1 -1
- package/esm/basic/struct-value.js +10 -3
- package/esm/basic/struct-value.js.map +1 -1
- package/esm/struct.d.ts +19 -19
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +11 -10
- package/esm/struct.js.map +1 -1
- package/esm/sync-promise.d.ts.map +1 -1
- package/esm/sync-promise.js +4 -4
- package/esm/sync-promise.js.map +1 -1
- package/esm/types/bigint.d.ts +4 -4
- package/esm/types/bigint.d.ts.map +1 -1
- package/esm/types/bigint.js +6 -6
- package/esm/types/bigint.js.map +1 -1
- package/esm/types/buffer/base.d.ts +4 -4
- package/esm/types/buffer/base.d.ts.map +1 -1
- package/esm/types/buffer/base.js +5 -6
- package/esm/types/buffer/base.js.map +1 -1
- package/esm/types/buffer/fixed-length.d.ts.map +1 -1
- package/esm/types/buffer/fixed-length.js +0 -1
- package/esm/types/buffer/fixed-length.js.map +1 -1
- package/esm/types/buffer/variable-length.d.ts +7 -7
- package/esm/types/buffer/variable-length.d.ts.map +1 -1
- package/esm/types/buffer/variable-length.js +4 -4
- package/esm/types/buffer/variable-length.js.map +1 -1
- package/esm/types/number.d.ts +16 -22
- package/esm/types/number.d.ts.map +1 -1
- package/esm/types/number.js +89 -40
- package/esm/types/number.js.map +1 -1
- package/esm/utils.d.ts +6 -6
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +1 -8
- package/esm/utils.js.map +1 -1
- package/package.json +14 -12
- package/src/basic/definition.ts +12 -9
- package/src/basic/field-value.ts +18 -15
- package/src/basic/stream.ts +3 -1
- package/src/basic/struct-value.ts +17 -11
- package/src/struct.ts +208 -203
- package/src/sync-promise.ts +32 -12
- package/src/types/bigint.ts +58 -31
- package/src/types/buffer/base.ts +53 -35
- package/src/types/buffer/fixed-length.ts +3 -8
- package/src/types/buffer/variable-length.ts +41 -24
- package/src/types/number.ts +131 -79
- package/src/utils.ts +30 -8
- package/tsconfig.build.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.test.json +0 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StructFieldDefinition, StructFieldValue,
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions, type StructValue } from "../../basic/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Base class for all types that
|
|
4
4
|
* can be converted from an `Uint8Array` when deserialized,
|
|
@@ -51,14 +51,14 @@ export declare abstract class BufferLikeFieldDefinition<TType extends BufferFiel
|
|
|
51
51
|
/**
|
|
52
52
|
* When implemented in derived classes, creates a `StructFieldValue` for the current field definition.
|
|
53
53
|
*/
|
|
54
|
-
create(options: Readonly<StructOptions>, struct: StructValue, value: TType[
|
|
54
|
+
create(options: Readonly<StructOptions>, struct: StructValue, value: TType["TTypeScriptType"], array?: Uint8Array): BufferLikeFieldValue<this>;
|
|
55
55
|
deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): BufferLikeFieldValue<this>;
|
|
56
56
|
deserialize(options: Readonly<StructOptions>, stream: StructAsyncDeserializeStream, struct: StructValue): Promise<BufferLikeFieldValue<this>>;
|
|
57
57
|
}
|
|
58
58
|
export declare class BufferLikeFieldValue<TDefinition extends BufferLikeFieldDefinition<BufferFieldSubType<unknown, unknown>, any, any>> extends StructFieldValue<TDefinition> {
|
|
59
59
|
protected array: Uint8Array | undefined;
|
|
60
|
-
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition[
|
|
61
|
-
set(value: TDefinition[
|
|
60
|
+
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["TValue"], array?: Uint8Array);
|
|
61
|
+
set(value: TDefinition["TValue"]): void;
|
|
62
62
|
serialize(dataView: DataView, offset: number): void;
|
|
63
63
|
}
|
|
64
64
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StructFieldDefinition, StructFieldValue } from
|
|
1
|
+
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
|
/**
|
|
@@ -53,6 +53,7 @@ export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
|
53
53
|
this.type = type;
|
|
54
54
|
}
|
|
55
55
|
getDeserializeSize(struct) {
|
|
56
|
+
void struct;
|
|
56
57
|
return this.getSize();
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
@@ -62,8 +63,7 @@ export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
|
62
63
|
return new BufferLikeFieldValue(this, options, struct, value, array);
|
|
63
64
|
}
|
|
64
65
|
deserialize(options, stream, struct) {
|
|
65
|
-
return SyncPromise
|
|
66
|
-
.try(() => {
|
|
66
|
+
return SyncPromise.try(() => {
|
|
67
67
|
const size = this.getDeserializeSize(struct);
|
|
68
68
|
if (size === 0) {
|
|
69
69
|
return EMPTY_UINT8_ARRAY;
|
|
@@ -72,7 +72,7 @@ export class BufferLikeFieldDefinition extends StructFieldDefinition {
|
|
|
72
72
|
return stream.read(size);
|
|
73
73
|
}
|
|
74
74
|
})
|
|
75
|
-
.then(array => {
|
|
75
|
+
.then((array) => {
|
|
76
76
|
const value = this.type.toValue(array);
|
|
77
77
|
return this.create(options, struct, value, array);
|
|
78
78
|
})
|
|
@@ -95,8 +95,7 @@ export class BufferLikeFieldValue extends StructFieldValue {
|
|
|
95
95
|
if (!this.array) {
|
|
96
96
|
this.array = this.definition.type.toBuffer(this.value);
|
|
97
97
|
}
|
|
98
|
-
new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength)
|
|
99
|
-
.set(this.array, offset);
|
|
98
|
+
new Uint8Array(dataView.buffer, dataView.byteOffset, dataView.byteLength).set(this.array, offset);
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
101
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/types/buffer/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/E,MAAM,WAAW,iCAAiC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oCAAoC,CAC7C,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,iCAAiC,GAAG,iCAAiC,EACtF,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"fixed-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/E,MAAM,WAAW,iCAAiC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oCAAoC,CAC7C,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,iCAAiC,GAAG,iCAAiC,EACtF,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAC5C,SAAQ,yBAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC;IACjE,OAAO,IAAI,MAAM;CAG3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixed-length.js","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAA2B,MAAM,WAAW,CAAC;AAM/E,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"fixed-length.js","sourceRoot":"","sources":["../../../src/types/buffer/fixed-length.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAA2B,MAAM,WAAW,CAAC;AAM/E,MAAM,OAAO,oCAIX,SAAQ,yBAAkE;IACjE,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { StructFieldValue, type StructFieldDefinition, type StructOptions, type StructValue } from
|
|
2
|
-
import type
|
|
3
|
-
import { BufferLikeFieldDefinition, BufferLikeFieldValue, type BufferFieldSubType } from
|
|
4
|
-
export
|
|
1
|
+
import { StructFieldValue, type StructFieldDefinition, type StructOptions, type StructValue } from "../../basic/index.js";
|
|
2
|
+
import { type KeysOfType } from "../../utils.js";
|
|
3
|
+
import { BufferLikeFieldDefinition, BufferLikeFieldValue, type BufferFieldSubType } from "./base.js";
|
|
4
|
+
export type LengthField<TFields> = KeysOfType<TFields, number | string>;
|
|
5
5
|
export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthField extends LengthField<TFields> = any> {
|
|
6
6
|
/**
|
|
7
7
|
* The name of the field that contains the length of the buffer.
|
|
@@ -17,7 +17,7 @@ export interface VariableLengthBufferLikeFieldOptions<TFields = object, TLengthF
|
|
|
17
17
|
*/
|
|
18
18
|
lengthFieldRadix?: number;
|
|
19
19
|
}
|
|
20
|
-
export declare class VariableLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions, TTypeScriptType = TType["TTypeScriptType"]> extends BufferLikeFieldDefinition<TType, TOptions, TOptions[
|
|
20
|
+
export declare class VariableLengthBufferLikeFieldDefinition<TType extends BufferFieldSubType = BufferFieldSubType, TOptions extends VariableLengthBufferLikeFieldOptions = VariableLengthBufferLikeFieldOptions, TTypeScriptType = TType["TTypeScriptType"]> extends BufferLikeFieldDefinition<TType, TOptions, TOptions["lengthField"], TTypeScriptType> {
|
|
21
21
|
getSize(): number;
|
|
22
22
|
protected getDeserializeSize(struct: StructValue): number;
|
|
23
23
|
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType, array?: Uint8Array): VariableLengthBufferLikeStructFieldValue<this>;
|
|
@@ -25,11 +25,11 @@ export declare class VariableLengthBufferLikeFieldDefinition<TType extends Buffe
|
|
|
25
25
|
export declare class VariableLengthBufferLikeStructFieldValue<TDefinition extends VariableLengthBufferLikeFieldDefinition = VariableLengthBufferLikeFieldDefinition> extends BufferLikeFieldValue<TDefinition> {
|
|
26
26
|
protected length: number | undefined;
|
|
27
27
|
protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue;
|
|
28
|
-
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition[
|
|
28
|
+
constructor(definition: TDefinition, options: Readonly<StructOptions>, struct: StructValue, value: TDefinition["TValue"], array?: Uint8Array);
|
|
29
29
|
getSize(): number;
|
|
30
30
|
set(value: unknown): void;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
type VariableLengthBufferLikeFieldValueLike = StructFieldValue<StructFieldDefinition<VariableLengthBufferLikeFieldOptions, any, any>>;
|
|
33
33
|
export declare class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
34
34
|
protected originalField: StructFieldValue;
|
|
35
35
|
protected bufferField: VariableLengthBufferLikeFieldValueLike;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"variable-length.d.ts","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,kBAAkB,EAC1B,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,WAAW,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oCAAoC,CACjD,OAAO,GAAG,MAAM,EAChB,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,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,QAAQ,SAAS,oCAAoC,GAAG,oCAAoC,EAC5F,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAC5C,SAAQ,yBAAyB,CAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,aAAa,CAAC,EACvB,eAAe,CAClB;IACU,OAAO,IAAI,MAAM;cAIL,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAQzC,MAAM,CAClB,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,SAAS,uCAAuC,GAAG,uCAAuC,CACvG,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;IAmBN,OAAO;IAYP,GAAG,CAAC,KAAK,EAAE,OAAO;CAKrC;AAGD,KAAK,sCAAsC,GAAG,gBAAgB,CAC1D,qBAAqB,CAAC,oCAAoC,EAAE,GAAG,EAAE,GAAG,CAAC,CACxE,CAAC;AAEF,qBAAa,wCAAyC,SAAQ,gBAAgB;IAC1E,SAAS,CAAC,aAAa,EAAE,gBAAgB,CAAC;IAE1C,SAAS,CAAC,WAAW,EAAE,sCAAsC,CAAC;gBAG1D,aAAa,EAAE,gBAAgB,EAC/B,gBAAgB,EAAE,sCAAsC;IAY5C,OAAO;IAIP,GAAG;IAaH,GAAG;IAKnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAI/C"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { StructFieldValue } from
|
|
2
|
-
import { BufferLikeFieldDefinition, BufferLikeFieldValue } from
|
|
1
|
+
import { StructFieldValue, } from "../../basic/index.js";
|
|
2
|
+
import { BufferLikeFieldDefinition, BufferLikeFieldValue, } from "./base.js";
|
|
3
3
|
export class VariableLengthBufferLikeFieldDefinition extends BufferLikeFieldDefinition {
|
|
4
4
|
getSize() {
|
|
5
5
|
return 0;
|
|
6
6
|
}
|
|
7
7
|
getDeserializeSize(struct) {
|
|
8
8
|
let value = struct.value[this.options.lengthField];
|
|
9
|
-
if (typeof value ===
|
|
9
|
+
if (typeof value === "string") {
|
|
10
10
|
value = Number.parseInt(value, this.options.lengthFieldRadix ?? 10);
|
|
11
11
|
}
|
|
12
12
|
return value;
|
|
@@ -59,7 +59,7 @@ export class VariableLengthBufferLikeFieldLengthValue extends StructFieldValue {
|
|
|
59
59
|
get() {
|
|
60
60
|
let value = this.bufferField.getSize();
|
|
61
61
|
const originalValue = this.originalField.get();
|
|
62
|
-
if (typeof originalValue ===
|
|
62
|
+
if (typeof originalValue === "string") {
|
|
63
63
|
value = value.toString(this.bufferField.definition.options.lengthFieldRadix ?? 10);
|
|
64
64
|
}
|
|
65
65
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"variable-length.js","sourceRoot":"","sources":["../../../src/types/buffer/variable-length.ts"],"names":[],"mappings":"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"}
|
package/esm/types/number.d.ts
CHANGED
|
@@ -1,26 +1,21 @@
|
|
|
1
|
-
import { StructFieldDefinition, StructFieldValue,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
readonly TTypeScriptType: number;
|
|
8
|
-
readonly signed: boolean;
|
|
9
|
-
readonly size: number;
|
|
10
|
-
readonly deserializer: NumberTypeDeserializer;
|
|
11
|
-
readonly convertSign: (value: number) => number;
|
|
12
|
-
readonly dataViewSetter: DataViewSetters;
|
|
13
|
-
constructor(size: number, signed: boolean, convertSign: (value: number) => number, dataViewSetter: DataViewSetters);
|
|
14
|
-
static readonly Int8: NumberFieldType;
|
|
15
|
-
static readonly Uint8: NumberFieldType;
|
|
16
|
-
static readonly Int16: NumberFieldType;
|
|
17
|
-
static readonly Uint16: NumberFieldType;
|
|
18
|
-
static readonly Int32: NumberFieldType;
|
|
19
|
-
static readonly Uint32: NumberFieldType;
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, type StructAsyncDeserializeStream, type StructDeserializeStream, type StructOptions, type StructValue } from "../basic/index.js";
|
|
2
|
+
export interface NumberFieldType {
|
|
3
|
+
signed: boolean;
|
|
4
|
+
size: number;
|
|
5
|
+
deserialize(array: Uint8Array, littleEndian: boolean): number;
|
|
6
|
+
serialize(dataView: DataView, offset: number, value: number, littleEndian: boolean): void;
|
|
20
7
|
}
|
|
21
|
-
export declare
|
|
8
|
+
export declare namespace NumberFieldType {
|
|
9
|
+
const Uint8: NumberFieldType;
|
|
10
|
+
const Int8: NumberFieldType;
|
|
11
|
+
const Uint16: NumberFieldType;
|
|
12
|
+
const Int16: NumberFieldType;
|
|
13
|
+
const Uint32: NumberFieldType;
|
|
14
|
+
const Int32: NumberFieldType;
|
|
15
|
+
}
|
|
16
|
+
export declare class NumberFieldDefinition<TType extends NumberFieldType = NumberFieldType, TTypeScriptType = number> extends StructFieldDefinition<void, TTypeScriptType> {
|
|
22
17
|
readonly type: TType;
|
|
23
|
-
constructor(type: TType,
|
|
18
|
+
constructor(type: TType, typescriptType?: TTypeScriptType);
|
|
24
19
|
getSize(): number;
|
|
25
20
|
create(options: Readonly<StructOptions>, struct: StructValue, value: TTypeScriptType): NumberFieldValue<this>;
|
|
26
21
|
deserialize(options: Readonly<StructOptions>, stream: StructDeserializeStream, struct: StructValue): NumberFieldValue<this>;
|
|
@@ -29,5 +24,4 @@ export declare class NumberFieldDefinition<TType extends NumberFieldType = Numbe
|
|
|
29
24
|
export declare class NumberFieldValue<TDefinition extends NumberFieldDefinition<NumberFieldType, any>> extends StructFieldValue<TDefinition> {
|
|
30
25
|
serialize(dataView: DataView, offset: number): void;
|
|
31
26
|
}
|
|
32
|
-
export {};
|
|
33
27
|
//# sourceMappingURL=number.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,WAAW,EACnB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,eAAe;IAC5B,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;AAGD,yBAAiB,eAAe,CAAC;IACtB,MAAM,KAAK,EAAE,eASnB,CAAC;IAEK,MAAM,IAAI,EAAE,eAUlB,CAAC;IAEK,MAAM,MAAM,EAAE,eAiBpB,CAAC;IAEK,MAAM,KAAK,EAAE,eAUnB,CAAC;IAEK,MAAM,MAAM,EAAE,eAUpB,CAAC;IAEK,MAAM,KAAK,EAAE,eAoBnB,CAAC;CACL;AAED,qBAAa,qBAAqB,CAC9B,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,eAAe,GAAG,MAAM,CAC1B,SAAQ,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC;IAClD,SAAgB,IAAI,EAAE,KAAK,CAAC;gBAET,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,eAAe;IAMzD,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,CACjE,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ7D"}
|
package/esm/types/number.js
CHANGED
|
@@ -1,36 +1,91 @@
|
|
|
1
|
-
import { StructFieldDefinition, StructFieldValue } from
|
|
1
|
+
import { StructFieldDefinition, StructFieldValue, } from "../basic/index.js";
|
|
2
2
|
import { SyncPromise } from "../sync-promise.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
4
|
+
export var NumberFieldType;
|
|
5
|
+
(function (NumberFieldType) {
|
|
6
|
+
NumberFieldType.Uint8 = {
|
|
7
|
+
signed: false,
|
|
8
|
+
size: 1,
|
|
9
|
+
deserialize(array) {
|
|
10
|
+
return array[0];
|
|
11
|
+
},
|
|
12
|
+
serialize(dataView, offset, value) {
|
|
13
|
+
dataView.setUint8(offset, value);
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
NumberFieldType.Int8 = {
|
|
17
|
+
signed: true,
|
|
18
|
+
size: 1,
|
|
19
|
+
deserialize(array) {
|
|
20
|
+
const value = NumberFieldType.Uint8.deserialize(array, false);
|
|
21
|
+
return (value << 24) >> 24;
|
|
22
|
+
},
|
|
23
|
+
serialize(dataView, offset, value) {
|
|
24
|
+
dataView.setInt8(offset, value);
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
NumberFieldType.Uint16 = {
|
|
28
|
+
signed: false,
|
|
29
|
+
size: 2,
|
|
30
|
+
deserialize(array, littleEndian) {
|
|
31
|
+
// PERF: Chrome's `DataView#getUint16` uses inefficient operations,
|
|
32
|
+
// including branching, bit extending and 32-bit bit swapping.
|
|
33
|
+
// The best way should use 16-bit bit rotation and conditional move,
|
|
34
|
+
// like LLVM does for code similar to the below one.
|
|
35
|
+
// This code is much faster on V8, but the actual generated assembly is unknown.
|
|
36
|
+
return ((((array[1] << 8) | array[0]) * littleEndian) |
|
|
37
|
+
(((array[0] << 8) | array[1]) * !littleEndian));
|
|
38
|
+
},
|
|
39
|
+
serialize(dataView, offset, value, littleEndian) {
|
|
40
|
+
dataView.setUint16(offset, value, littleEndian);
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
NumberFieldType.Int16 = {
|
|
44
|
+
signed: true,
|
|
45
|
+
size: 2,
|
|
46
|
+
deserialize(array, littleEndian) {
|
|
47
|
+
const value = NumberFieldType.Uint16.deserialize(array, littleEndian);
|
|
48
|
+
return (value << 16) >> 16;
|
|
49
|
+
},
|
|
50
|
+
serialize(dataView, offset, value, littleEndian) {
|
|
51
|
+
dataView.setInt16(offset, value, littleEndian);
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
NumberFieldType.Uint32 = {
|
|
55
|
+
signed: false,
|
|
56
|
+
size: 4,
|
|
57
|
+
deserialize(array, littleEndian) {
|
|
58
|
+
const value = NumberFieldType.Int32.deserialize(array, littleEndian);
|
|
59
|
+
return value >>> 0;
|
|
60
|
+
},
|
|
61
|
+
serialize(dataView, offset, value, littleEndian) {
|
|
62
|
+
dataView.setUint32(offset, value, littleEndian);
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
NumberFieldType.Int32 = {
|
|
66
|
+
signed: true,
|
|
67
|
+
size: 4,
|
|
68
|
+
deserialize(array, littleEndian) {
|
|
69
|
+
return ((((array[3] << 24) |
|
|
70
|
+
(array[2] << 16) |
|
|
71
|
+
(array[1] << 8) |
|
|
72
|
+
array[0]) *
|
|
73
|
+
littleEndian) |
|
|
74
|
+
(((array[0] << 24) |
|
|
75
|
+
(array[1] << 16) |
|
|
76
|
+
(array[2] << 8) |
|
|
77
|
+
array[3]) *
|
|
78
|
+
!littleEndian));
|
|
79
|
+
},
|
|
80
|
+
serialize(dataView, offset, value, littleEndian) {
|
|
81
|
+
dataView.setInt32(offset, value, littleEndian);
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
})(NumberFieldType = NumberFieldType || (NumberFieldType = {}));
|
|
31
85
|
export class NumberFieldDefinition extends StructFieldDefinition {
|
|
32
86
|
type;
|
|
33
|
-
constructor(type,
|
|
87
|
+
constructor(type, typescriptType) {
|
|
88
|
+
void typescriptType;
|
|
34
89
|
super();
|
|
35
90
|
this.type = type;
|
|
36
91
|
}
|
|
@@ -41,14 +96,11 @@ export class NumberFieldDefinition extends StructFieldDefinition {
|
|
|
41
96
|
return new NumberFieldValue(this, options, struct, value);
|
|
42
97
|
}
|
|
43
98
|
deserialize(options, stream, struct) {
|
|
44
|
-
return SyncPromise
|
|
45
|
-
.try(() => {
|
|
99
|
+
return SyncPromise.try(() => {
|
|
46
100
|
return stream.read(this.getSize());
|
|
47
101
|
})
|
|
48
|
-
.then(array => {
|
|
49
|
-
|
|
50
|
-
value = this.type.deserializer(array, options.littleEndian);
|
|
51
|
-
value = this.type.convertSign(value);
|
|
102
|
+
.then((array) => {
|
|
103
|
+
const value = this.type.deserialize(array, options.littleEndian);
|
|
52
104
|
return this.create(options, struct, value);
|
|
53
105
|
})
|
|
54
106
|
.valueOrPromise();
|
|
@@ -56,10 +108,7 @@ export class NumberFieldDefinition extends StructFieldDefinition {
|
|
|
56
108
|
}
|
|
57
109
|
export class NumberFieldValue extends StructFieldValue {
|
|
58
110
|
serialize(dataView, offset) {
|
|
59
|
-
|
|
60
|
-
// So `dataView[DataViewSetters]` requires `bigint & number`
|
|
61
|
-
// and that is, `never`
|
|
62
|
-
dataView[this.definition.type.dataViewSetter](offset, this.value, this.options.littleEndian);
|
|
111
|
+
this.definition.type.serialize(dataView, offset, this.value, this.options.littleEndian);
|
|
63
112
|
}
|
|
64
113
|
}
|
|
65
114
|
//# sourceMappingURL=number.js.map
|
package/esm/types/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/types/number.ts"],"names":[],"mappings":"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"}
|
package/esm/utils.d.ts
CHANGED
|
@@ -15,30 +15,30 @@
|
|
|
15
15
|
* // Hover on this one shows `WithoutIdentity<number>`
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
export
|
|
18
|
+
export type Identity<T> = T;
|
|
19
19
|
/**
|
|
20
20
|
* Collapse an intersection type (`{ foo: string } & { bar: number }`) to a simple type (`{ foo: string, bar: number }`)
|
|
21
21
|
*/
|
|
22
|
-
export
|
|
22
|
+
export type Evaluate<T> = T extends infer U ? {
|
|
23
23
|
[K in keyof U]: U[K];
|
|
24
24
|
} : never;
|
|
25
25
|
/**
|
|
26
26
|
* Overwrite fields in `TBase` with fields in `TNew`
|
|
27
27
|
*/
|
|
28
|
-
export
|
|
28
|
+
export type Overwrite<TBase extends object, TNew extends object> = Evaluate<Omit<TBase, keyof TNew> & TNew>;
|
|
29
29
|
/**
|
|
30
30
|
* Remove fields with `never` type
|
|
31
31
|
*/
|
|
32
|
-
export
|
|
32
|
+
export type OmitNever<T> = Pick<T, {
|
|
33
33
|
[K in keyof T]: [T[K]] extends [never] ? never : K;
|
|
34
34
|
}[keyof T]>;
|
|
35
35
|
/**
|
|
36
36
|
* Extract keys of fields in `T` that has type `TValue`
|
|
37
37
|
*/
|
|
38
|
-
export
|
|
38
|
+
export type KeysOfType<T, TValue> = {
|
|
39
39
|
[TKey in keyof T]: T[TKey] extends TValue ? TKey : never;
|
|
40
40
|
}[keyof T];
|
|
41
|
-
export
|
|
41
|
+
export type ValueOrPromise<T> = T | PromiseLike<T>;
|
|
42
42
|
/**
|
|
43
43
|
* Returns a (fake) value of the given type.
|
|
44
44
|
*/
|
package/esm/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAAI,QAAQ,CACvE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,IAAI,CAC3B,CAAC,EACD;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,MAAM,IAAI;KAC/B,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK;CAC3D,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,KAAK,CAAC,CAElC;AAgCD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,MAAM,CAExE"}
|
package/esm/utils.js
CHANGED
|
@@ -4,15 +4,8 @@
|
|
|
4
4
|
export function placeholder() {
|
|
5
5
|
return undefined;
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
// because they will pollute the global scope
|
|
9
|
-
// So `TextEncoder` and `TextDecoder` are not available
|
|
10
|
-
// Node.js 8.3 ships `TextEncoder` and `TextDecoder` in `util` module.
|
|
11
|
-
// But using top level await to load them requires Node.js 14.1.
|
|
12
|
-
// So there is no point to do that. Let's just assume they exist in global.
|
|
13
|
-
// @ts-expect-error
|
|
7
|
+
const { TextEncoder, TextDecoder } = globalThis;
|
|
14
8
|
const Utf8Encoder = new TextEncoder();
|
|
15
|
-
// @ts-expect-error
|
|
16
9
|
const Utf8Decoder = new TextDecoder();
|
|
17
10
|
export function encodeUtf8(input) {
|
|
18
11
|
return Utf8Encoder.encode(input);
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAgDA;;GAEG;AACH,MAAM,UAAU,WAAW;IACvB,OAAO,SAAyB,CAAC;AACrC,CAAC;AA2BD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAwC,CAAC;AAE9E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAqC;IAC5D,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
|