@yume-chan/struct 0.0.24 → 2.0.0
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.md +40 -1
- package/LICENSE +1 -1
- package/README.md +85 -714
- package/esm/bipedal.d.ts +6 -0
- package/esm/bipedal.d.ts.map +1 -0
- package/esm/bipedal.js +38 -0
- package/esm/bipedal.js.map +1 -0
- package/esm/buffer.d.ts +30 -0
- package/esm/buffer.d.ts.map +1 -0
- package/esm/buffer.js +170 -0
- package/esm/buffer.js.map +1 -0
- package/esm/concat.d.ts +13 -0
- package/esm/concat.d.ts.map +1 -0
- package/esm/concat.js +10 -0
- package/esm/concat.js.map +1 -0
- package/esm/extend.d.ts +6 -0
- package/esm/extend.d.ts.map +1 -0
- package/esm/extend.js +10 -0
- package/esm/extend.js.map +1 -0
- package/esm/field/factory.d.ts +13 -0
- package/esm/field/factory.d.ts.map +1 -0
- package/esm/field/factory.js +21 -0
- package/esm/field/factory.js.map +1 -0
- package/esm/field/index.d.ts +4 -0
- package/esm/field/index.d.ts.map +1 -0
- package/esm/field/index.js +4 -0
- package/esm/field/index.js.map +1 -0
- package/esm/field/serialize.d.ts +8 -0
- package/esm/field/serialize.d.ts.map +1 -0
- package/esm/field/serialize.js +33 -0
- package/esm/field/serialize.js.map +1 -0
- package/esm/field/types.d.ts +33 -0
- package/esm/field/types.d.ts.map +1 -0
- package/esm/field/types.js +2 -0
- package/esm/field/types.js.map +1 -0
- package/esm/index.d.ts +9 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +9 -4
- package/esm/index.js.map +1 -1
- package/esm/number.d.ts +13 -0
- package/esm/number.d.ts.map +1 -0
- package/esm/number.js +57 -0
- package/esm/number.js.map +1 -0
- package/esm/{basic/stream.d.ts → readable.d.ts} +9 -3
- package/esm/readable.d.ts.map +1 -0
- package/esm/readable.js +26 -0
- package/esm/readable.js.map +1 -0
- package/esm/string.d.ts +16 -0
- package/esm/string.d.ts.map +1 -0
- package/esm/string.js +13 -0
- package/esm/string.js.map +1 -0
- package/esm/struct.d.ts +22 -140
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +109 -227
- package/esm/struct.js.map +1 -1
- package/esm/types.d.ts +20 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/esm/utils.d.ts +10 -45
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +8 -9
- package/esm/utils.js.map +1 -1
- package/package.json +11 -12
- package/src/bipedal.ts +65 -0
- package/src/buffer.ts +334 -0
- package/src/concat.ts +78 -0
- package/src/extend.ts +37 -0
- package/src/field/factory.ts +64 -0
- package/src/field/index.ts +3 -0
- package/src/field/serialize.ts +58 -0
- package/src/field/types.ts +48 -0
- package/src/index.ts +9 -4
- package/src/number.ts +134 -0
- package/src/{basic/stream.ts → readable.ts} +31 -4
- package/src/string.ts +41 -0
- package/src/struct.ts +200 -670
- package/src/types.ts +37 -0
- package/src/utils.ts +14 -67
- package/tsconfig.build.json +6 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/CHANGELOG.json +0 -173
- package/esm/basic/definition.d.ts +0 -44
- package/esm/basic/definition.d.ts.map +0 -1
- package/esm/basic/definition.js +0 -24
- package/esm/basic/definition.js.map +0 -1
- package/esm/basic/field-value.d.ts +0 -39
- package/esm/basic/field-value.d.ts.map +0 -1
- package/esm/basic/field-value.js +0 -46
- package/esm/basic/field-value.js.map +0 -1
- package/esm/basic/index.d.ts +0 -6
- package/esm/basic/index.d.ts.map +0 -1
- package/esm/basic/index.js +0 -6
- package/esm/basic/index.js.map +0 -1
- package/esm/basic/options.d.ts +0 -10
- package/esm/basic/options.d.ts.map +0 -1
- package/esm/basic/options.js +0 -4
- package/esm/basic/options.js.map +0 -1
- package/esm/basic/stream.d.ts.map +0 -1
- package/esm/basic/stream.js +0 -8
- package/esm/basic/stream.js.map +0 -1
- package/esm/basic/struct-value.d.ts +0 -30
- package/esm/basic/struct-value.d.ts.map +0 -1
- package/esm/basic/struct-value.js +0 -62
- package/esm/basic/struct-value.js.map +0 -1
- package/esm/sync-promise.d.ts +0 -13
- package/esm/sync-promise.d.ts.map +0 -1
- package/esm/sync-promise.js +0 -71
- package/esm/sync-promise.js.map +0 -1
- package/esm/types/bigint.d.ts +0 -25
- package/esm/types/bigint.d.ts.map +0 -1
- package/esm/types/bigint.js +0 -46
- package/esm/types/bigint.js.map +0 -1
- package/esm/types/buffer/base.d.ts +0 -69
- package/esm/types/buffer/base.d.ts.map +0 -1
- package/esm/types/buffer/base.js +0 -100
- package/esm/types/buffer/base.js.map +0 -1
- package/esm/types/buffer/fixed-length.d.ts +0 -9
- package/esm/types/buffer/fixed-length.d.ts.map +0 -1
- package/esm/types/buffer/fixed-length.js +0 -7
- package/esm/types/buffer/fixed-length.js.map +0 -1
- package/esm/types/buffer/index.d.ts +0 -4
- package/esm/types/buffer/index.d.ts.map +0 -1
- package/esm/types/buffer/index.js +0 -4
- package/esm/types/buffer/index.js.map +0 -1
- package/esm/types/buffer/variable-length.d.ts +0 -46
- package/esm/types/buffer/variable-length.d.ts.map +0 -1
- package/esm/types/buffer/variable-length.js +0 -87
- package/esm/types/buffer/variable-length.js.map +0 -1
- package/esm/types/index.d.ts +0 -4
- package/esm/types/index.d.ts.map +0 -1
- package/esm/types/index.js +0 -4
- package/esm/types/index.js.map +0 -1
- package/esm/types/number.d.ts +0 -28
- package/esm/types/number.d.ts.map +0 -1
- package/esm/types/number.js +0 -99
- package/esm/types/number.js.map +0 -1
- package/src/basic/definition.ts +0 -68
- package/src/basic/field-value.ts +0 -75
- package/src/basic/index.ts +0 -5
- package/src/basic/options.ts +0 -19
- package/src/basic/struct-value.ts +0 -85
- package/src/sync-promise.ts +0 -134
- package/src/types/bigint.ts +0 -124
- package/src/types/buffer/base.ts +0 -198
- package/src/types/buffer/fixed-length.ts +0 -22
- package/src/types/buffer/index.ts +0 -3
- package/src/types/buffer/variable-length.ts +0 -198
- package/src/types/index.ts +0 -3
- package/src/types/number.ts +0 -166
package/esm/number.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getInt16, getInt32, getInt64, getInt8, getUint16, getUint32, getUint64, setInt16, setInt32, setInt64, setUint16, setUint32, setUint64, } from "@yume-chan/no-data-view";
|
|
2
|
+
import { field } from "./field/index.js";
|
|
3
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
4
|
+
function number(size, serialize, deserialize) {
|
|
5
|
+
const fn = (() => fn);
|
|
6
|
+
Object.assign(fn, field(size, "byob", serialize, deserialize));
|
|
7
|
+
return fn;
|
|
8
|
+
}
|
|
9
|
+
export const u8 = number(1, (value, { buffer, index }) => {
|
|
10
|
+
buffer[index] = value;
|
|
11
|
+
}, function* (then, reader) {
|
|
12
|
+
const data = yield* then(reader.readExactly(1));
|
|
13
|
+
return data[0];
|
|
14
|
+
});
|
|
15
|
+
export const s8 = number(1, (value, { buffer, index }) => {
|
|
16
|
+
buffer[index] = value;
|
|
17
|
+
}, function* (then, reader) {
|
|
18
|
+
const data = yield* then(reader.readExactly(1));
|
|
19
|
+
return getInt8(data, 0);
|
|
20
|
+
});
|
|
21
|
+
export const u16 = number(2, (value, { buffer, index, littleEndian }) => {
|
|
22
|
+
setUint16(buffer, index, value, littleEndian);
|
|
23
|
+
}, function* (then, reader, { littleEndian }) {
|
|
24
|
+
const data = yield* then(reader.readExactly(2));
|
|
25
|
+
return getUint16(data, 0, littleEndian);
|
|
26
|
+
});
|
|
27
|
+
export const s16 = number(2, (value, { buffer, index, littleEndian }) => {
|
|
28
|
+
setInt16(buffer, index, value, littleEndian);
|
|
29
|
+
}, function* (then, reader, { littleEndian }) {
|
|
30
|
+
const data = yield* then(reader.readExactly(2));
|
|
31
|
+
return getInt16(data, 0, littleEndian);
|
|
32
|
+
});
|
|
33
|
+
export const u32 = number(4, (value, { buffer, index, littleEndian }) => {
|
|
34
|
+
setUint32(buffer, index, value, littleEndian);
|
|
35
|
+
}, function* (then, reader, { littleEndian }) {
|
|
36
|
+
const data = yield* then(reader.readExactly(4));
|
|
37
|
+
return getUint32(data, 0, littleEndian);
|
|
38
|
+
});
|
|
39
|
+
export const s32 = number(4, (value, { buffer, index, littleEndian }) => {
|
|
40
|
+
setInt32(buffer, index, value, littleEndian);
|
|
41
|
+
}, function* (then, reader, { littleEndian }) {
|
|
42
|
+
const data = yield* then(reader.readExactly(4));
|
|
43
|
+
return getInt32(data, 0, littleEndian);
|
|
44
|
+
});
|
|
45
|
+
export const u64 = number(8, (value, { buffer, index, littleEndian }) => {
|
|
46
|
+
setUint64(buffer, index, value, littleEndian);
|
|
47
|
+
}, function* (then, reader, { littleEndian }) {
|
|
48
|
+
const data = yield* then(reader.readExactly(8));
|
|
49
|
+
return getUint64(data, 0, littleEndian);
|
|
50
|
+
});
|
|
51
|
+
export const s64 = number(8, (value, { buffer, index, littleEndian }) => {
|
|
52
|
+
setInt64(buffer, index, value, littleEndian);
|
|
53
|
+
}, function* (then, reader, { littleEndian }) {
|
|
54
|
+
const data = yield* then(reader.readExactly(8));
|
|
55
|
+
return getInt64(data, 0, littleEndian);
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
2
|
export declare class ExactReadableEndedError extends Error {
|
|
3
3
|
constructor();
|
|
4
4
|
}
|
|
@@ -12,6 +12,12 @@ export interface ExactReadable {
|
|
|
12
12
|
*/
|
|
13
13
|
readExactly(length: number): Uint8Array;
|
|
14
14
|
}
|
|
15
|
+
export declare class Uint8ArrayExactReadable implements ExactReadable {
|
|
16
|
+
#private;
|
|
17
|
+
get position(): number;
|
|
18
|
+
constructor(data: Uint8Array);
|
|
19
|
+
readExactly(length: number): Uint8Array;
|
|
20
|
+
}
|
|
15
21
|
export interface AsyncExactReadable {
|
|
16
22
|
readonly position: number;
|
|
17
23
|
/**
|
|
@@ -20,6 +26,6 @@ export interface AsyncExactReadable {
|
|
|
20
26
|
* The stream must return exactly `length` bytes or data. If that's not possible
|
|
21
27
|
* (due to end of file or other error condition), it must throw an {@link ExactReadableEndedError}.
|
|
22
28
|
*/
|
|
23
|
-
readExactly(length: number):
|
|
29
|
+
readExactly(length: number): MaybePromiseLike<Uint8Array>;
|
|
24
30
|
}
|
|
25
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=readable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../src/readable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,uBAAwB,SAAQ,KAAK;;CAIjD;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CAC3C;AAED,qBAAa,uBAAwB,YAAW,aAAa;;IAIzD,IAAI,QAAQ,WAEX;gBAEW,IAAI,EAAE,UAAU;IAK5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAa1C;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;CAC7D"}
|
package/esm/readable.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// TODO: allow over reading (returning a `Uint8Array`, an `offset` and a `length`) to avoid copying
|
|
2
|
+
export class ExactReadableEndedError extends Error {
|
|
3
|
+
constructor() {
|
|
4
|
+
super("ExactReadable ended");
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class Uint8ArrayExactReadable {
|
|
8
|
+
#data;
|
|
9
|
+
#position;
|
|
10
|
+
get position() {
|
|
11
|
+
return this.#position;
|
|
12
|
+
}
|
|
13
|
+
constructor(data) {
|
|
14
|
+
this.#data = data;
|
|
15
|
+
this.#position = 0;
|
|
16
|
+
}
|
|
17
|
+
readExactly(length) {
|
|
18
|
+
if (this.#position + length > this.#data.length) {
|
|
19
|
+
throw new ExactReadableEndedError();
|
|
20
|
+
}
|
|
21
|
+
const result = this.#data.subarray(this.#position, this.#position + length);
|
|
22
|
+
this.#position += length;
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=readable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../src/readable.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAInG,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC9C;QACI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;CACJ;AAcD,MAAM,OAAO,uBAAuB;IAChC,KAAK,CAAa;IAClB,SAAS,CAAS;IAElB,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,YAAY,IAAgB;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,MAAc;QACtB,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,uBAAuB,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC9B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,GAAG,MAAM,CAC1B,CAAC;QAEF,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;QACzB,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|
package/esm/string.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BufferLengthConverter } from "./buffer.js";
|
|
2
|
+
import type { Field } from "./field/index.js";
|
|
3
|
+
export interface String {
|
|
4
|
+
(length: number): Field<string, never, never> & {
|
|
5
|
+
as: <T>(infer: T) => Field<T, never, never>;
|
|
6
|
+
};
|
|
7
|
+
<K extends string>(lengthField: K): Field<string, K, Record<K, number>> & {
|
|
8
|
+
as: <T>(infer: T) => Field<T, K, Record<K, number>>;
|
|
9
|
+
};
|
|
10
|
+
<const K extends string, KT>(length: BufferLengthConverter<K, KT>): Field<string, K, Record<K, KT>> & {
|
|
11
|
+
as: <T>(infer: T) => Field<T, K, Record<K, KT>>;
|
|
12
|
+
};
|
|
13
|
+
<KOmitInit extends string, KS>(length: Field<number, KOmitInit, KS>): Field<string, KOmitInit, KS>;
|
|
14
|
+
}
|
|
15
|
+
export declare const string: String;
|
|
16
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,MAAM,WAAW,MAAM;IACnB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG;QAC5C,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC/C,CAAC;IAEF,CAAC,CAAC,SAAS,MAAM,EACb,WAAW,EAAE,CAAC,GACf,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG;QACrC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;KACvD,CAAC;IAEF,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EACvB,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,GACrC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG;QACjC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACnD,CAAC;IAEF,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,EACzB,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,GACrC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;CACnC;AAID,eAAO,MAAM,MAAM,EAAE,MAWV,CAAC"}
|
package/esm/string.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { buffer } from "./buffer.js";
|
|
2
|
+
import { decodeUtf8, encodeUtf8 } from "./utils.js";
|
|
3
|
+
// Prettier will move the annotation and make it invalid
|
|
4
|
+
// prettier-ignore
|
|
5
|
+
export const string = ( /* #__NO_SIDE_EFFECTS__ */(lengthOrField) => {
|
|
6
|
+
const field = buffer(lengthOrField, {
|
|
7
|
+
convert: decodeUtf8,
|
|
8
|
+
back: encodeUtf8,
|
|
9
|
+
});
|
|
10
|
+
field.as = () => field;
|
|
11
|
+
return field;
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwBpD,wDAAwD;AACxD,kBAAkB;AAClB,MAAM,CAAC,MAAM,MAAM,GAAW,EAAC,0BAA2B,CACtD,aAAuE,EAGzE,EAAE;IACA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAsB,EAAE;QACzC,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,UAAU;KACnB,CAAC,CAAC;IACF,KAAkC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;IACrD,OAAO,KAAc,CAAC;AAC1B,CAAC,CAAU,CAAC"}
|
package/esm/struct.d.ts
CHANGED
|
@@ -1,27 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* Create a new `Struct` type with `TDefinition` appended
|
|
14
|
-
*/
|
|
15
|
-
type AddFieldDescriptor<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TFieldName extends PropertyKey, TDefinition extends StructFieldDefinition<unknown, unknown, PropertyKey>> = Identity<Struct<Evaluate<TFields & Record<TFieldName, TDefinition["TValue"]>>, TOmitInitKey | TDefinition["TOmitInitKey"], TExtra, TPostDeserialized>>;
|
|
16
|
-
/**
|
|
17
|
-
* Similar to `ArrayBufferLikeFieldCreator`, but bind to `TType`
|
|
18
|
-
*/
|
|
19
|
-
interface BoundArrayBufferLikeFieldDefinitionCreator<TFields extends object, TOmitInitKey extends PropertyKey, TExtra extends object, TPostDeserialized, TType extends BufferFieldConverter<unknown, unknown>> {
|
|
20
|
-
<TName extends PropertyKey, TTypeScriptType = TType["TTypeScriptType"]>(name: TName, options: FixedLengthBufferLikeFieldOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, FixedLengthBufferLikeFieldDefinition<TType, FixedLengthBufferLikeFieldOptions, TTypeScriptType>>;
|
|
21
|
-
<TName extends PropertyKey, TOptions extends VariableLengthBufferLikeFieldOptions<TFields, LengthField<TFields>>, TTypeScriptType = TType["TTypeScriptType"]>(name: TName, options: TOptions, typeScriptType?: TTypeScriptType): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, VariableLengthBufferLikeFieldDefinition<TType, TOptions, TTypeScriptType>>;
|
|
22
|
-
}
|
|
23
|
-
export type StructPostDeserialized<TFields, TPostDeserialized> = (this: TFields, object: TFields) => TPostDeserialized;
|
|
24
|
-
export type StructDeserializedResult<TFields extends object, TExtra extends object, TPostDeserialized> = TPostDeserialized extends undefined ? Overwrite<TExtra, TFields> : TPostDeserialized;
|
|
1
|
+
import type { Field, FieldDeserializer } from "./field/index.js";
|
|
2
|
+
import type { StructDeserializer, StructSerializer } from "./types.js";
|
|
3
|
+
export type StructField = Field<unknown, string, unknown, unknown> | (StructSerializer<unknown> & StructDeserializer<unknown>);
|
|
4
|
+
export type StructFields = Record<string, StructField>;
|
|
5
|
+
export type FieldsValue<T extends StructFields> = {
|
|
6
|
+
[K in keyof T]: T[K] extends FieldDeserializer<infer U, unknown> ? U : never;
|
|
7
|
+
};
|
|
8
|
+
export type FieldOmitInit<T extends StructField> = T extends Field<unknown, infer U, unknown, unknown> ? string extends U ? never : U : never;
|
|
9
|
+
export type FieldsOmitInits<T extends StructFields> = {
|
|
10
|
+
[K in keyof T]: FieldOmitInit<T[K]>;
|
|
11
|
+
}[keyof T];
|
|
12
|
+
export type FieldsInit<T extends StructFields> = Omit<FieldsValue<T>, FieldsOmitInits<T>>;
|
|
25
13
|
export declare class StructDeserializeError extends Error {
|
|
26
14
|
constructor(message: string);
|
|
27
15
|
}
|
|
@@ -31,121 +19,15 @@ export declare class StructNotEnoughDataError extends StructDeserializeError {
|
|
|
31
19
|
export declare class StructEmptyError extends StructDeserializeError {
|
|
32
20
|
constructor();
|
|
33
21
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
export declare class Struct<TFields extends object = Record<never, never>, TOmitInitKey extends PropertyKey = never, TExtra extends object = Record<never, never>, TPostDeserialized = undefined> implements StructLike<StructDeserializedResult<TFields, TExtra, TPostDeserialized>> {
|
|
41
|
-
#private;
|
|
42
|
-
readonly TFields: TFields;
|
|
43
|
-
readonly TOmitInitKey: TOmitInitKey;
|
|
44
|
-
readonly TExtra: TExtra;
|
|
45
|
-
readonly TInit: Evaluate<Omit<TFields, TOmitInitKey>>;
|
|
46
|
-
readonly TDeserializeResult: StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
47
|
-
readonly options: Readonly<StructOptions>;
|
|
48
|
-
/**
|
|
49
|
-
* Gets the static size (exclude fields that can change size at runtime)
|
|
50
|
-
*/
|
|
51
|
-
get size(): number;
|
|
52
|
-
get fields(): readonly [
|
|
53
|
-
name: PropertyKey,
|
|
54
|
-
definition: StructFieldDefinition<unknown, unknown, PropertyKey>
|
|
55
|
-
][];
|
|
56
|
-
constructor(options?: Partial<Readonly<StructOptions>>);
|
|
57
|
-
/**
|
|
58
|
-
* Appends a `StructFieldDefinition` to the `Struct
|
|
59
|
-
*/
|
|
60
|
-
field<TName extends PropertyKey, TDefinition extends StructFieldDefinition<unknown, unknown, PropertyKey>>(name: TName, definition: TDefinition): AddFieldDescriptor<TFields, TOmitInitKey, TExtra, TPostDeserialized, TName, TDefinition>;
|
|
61
|
-
/**
|
|
62
|
-
* Merges (flats) another `Struct`'s fields and extra fields into this one.
|
|
63
|
-
*
|
|
64
|
-
* `other`'s `postDeserialize` will be ignored.
|
|
65
|
-
*/
|
|
66
|
-
concat<TOther extends StructDefinition<object, PropertyKey, object>>(other: TOther): Struct<TFields & TOther["TFields"], TOmitInitKey | TOther["TOmitInitKey"], TExtra & TOther["TExtra"], TPostDeserialized>;
|
|
67
|
-
/**
|
|
68
|
-
* Appends an `int8` field to the `Struct`
|
|
69
|
-
*/
|
|
70
|
-
int8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
71
|
-
/**
|
|
72
|
-
* Appends an `uint8` field to the `Struct`
|
|
73
|
-
*/
|
|
74
|
-
uint8<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
75
|
-
/**
|
|
76
|
-
* Appends an `int16` field to the `Struct`
|
|
77
|
-
*/
|
|
78
|
-
int16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
79
|
-
/**
|
|
80
|
-
* Appends an `uint16` field to the `Struct`
|
|
81
|
-
*/
|
|
82
|
-
uint16<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
83
|
-
/**
|
|
84
|
-
* Appends an `int32` field to the `Struct`
|
|
85
|
-
*/
|
|
86
|
-
int32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
87
|
-
/**
|
|
88
|
-
* Appends an `uint32` field to the `Struct`
|
|
89
|
-
*/
|
|
90
|
-
uint32<TName extends PropertyKey, TTypeScriptType = number>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
91
|
-
/**
|
|
92
|
-
* Appends an `int64` field to the `Struct`
|
|
93
|
-
*
|
|
94
|
-
* Requires native `BigInt` support
|
|
95
|
-
*/
|
|
96
|
-
int64<TName extends PropertyKey, TTypeScriptType = BigIntFieldVariant["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
97
|
-
/**
|
|
98
|
-
* Appends an `uint64` field to the `Struct`
|
|
99
|
-
*
|
|
100
|
-
* Requires native `BigInt` support
|
|
101
|
-
*/
|
|
102
|
-
uint64<TName extends PropertyKey, TTypeScriptType = BigIntFieldVariant["TTypeScriptType"]>(name: TName, typeScriptType?: TTypeScriptType): Struct<Evaluate<TFields & Record<TName, TTypeScriptType>>, TOmitInitKey, TExtra, TPostDeserialized>;
|
|
103
|
-
uint8Array: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, Uint8ArrayBufferFieldConverter>;
|
|
104
|
-
string: BoundArrayBufferLikeFieldDefinitionCreator<TFields, TOmitInitKey, TExtra, TPostDeserialized, StringBufferFieldConverter>;
|
|
105
|
-
/**
|
|
106
|
-
* Adds some extra properties into every `Struct` value.
|
|
107
|
-
*
|
|
108
|
-
* Extra properties will not affect serialize or deserialize process.
|
|
109
|
-
*
|
|
110
|
-
* Multiple calls to `extra` will merge all properties together.
|
|
111
|
-
*
|
|
112
|
-
* @param value
|
|
113
|
-
* An object containing properties to be added to the result value. Accessors and methods are also allowed.
|
|
114
|
-
*/
|
|
115
|
-
extra<T extends Record<Exclude<keyof T, Exclude<keyof T, keyof TFields>>, never>>(value: T & ThisType<Overwrite<Overwrite<TExtra, T>, TFields>>): Struct<TFields, TOmitInitKey, Overwrite<TExtra, T>, TPostDeserialized>;
|
|
116
|
-
/**
|
|
117
|
-
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
118
|
-
*
|
|
119
|
-
* A callback returning `never` (always throw an error)
|
|
120
|
-
* will also change the return type of `deserialize` to `never`.
|
|
121
|
-
*/
|
|
122
|
-
postDeserialize(callback: StructPostDeserialized<TFields, never>): Struct<TFields, TOmitInitKey, TExtra, never>;
|
|
123
|
-
/**
|
|
124
|
-
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
125
|
-
*
|
|
126
|
-
* A callback returning `void` means it modify the result object in-place
|
|
127
|
-
* (or doesn't modify it at all), so `deserialize` will still return the result object.
|
|
128
|
-
*/
|
|
129
|
-
postDeserialize(callback?: StructPostDeserialized<TFields, void>): Struct<TFields, TOmitInitKey, TExtra, undefined>;
|
|
130
|
-
/**
|
|
131
|
-
* Registers (or replaces) a custom callback to be run after deserialized.
|
|
132
|
-
*
|
|
133
|
-
* A callback returning anything other than `undefined`
|
|
134
|
-
* will `deserialize` to return that object instead.
|
|
135
|
-
*/
|
|
136
|
-
postDeserialize<TPostSerialize>(callback?: StructPostDeserialized<TFields, TPostSerialize>): Struct<TFields, TOmitInitKey, TExtra, TPostSerialize>;
|
|
137
|
-
/**
|
|
138
|
-
* Deserialize a struct value from `stream`.
|
|
139
|
-
*/
|
|
140
|
-
deserialize(stream: ExactReadable): StructDeserializedResult<TFields, TExtra, TPostDeserialized>;
|
|
141
|
-
deserialize(stream: AsyncExactReadable): Promise<StructDeserializedResult<TFields, TExtra, TPostDeserialized>>;
|
|
142
|
-
/**
|
|
143
|
-
* Serialize a struct value to a buffer.
|
|
144
|
-
* @param init Fields of the struct
|
|
145
|
-
* @param output The buffer to serialize the struct to. It must be large enough to hold the entire struct. If not provided, a new buffer will be created.
|
|
146
|
-
* @returns A view of `output` that contains the serialized struct, or a new buffer if `output` is not provided.
|
|
147
|
-
*/
|
|
148
|
-
serialize(init: Evaluate<Omit<TFields, TOmitInitKey>>, output?: Uint8Array): Uint8Array;
|
|
22
|
+
export type ExtraToIntersection<Extra extends Record<PropertyKey, unknown> | undefined> = Extra extends undefined ? unknown : Extra;
|
|
23
|
+
export interface Struct<Fields extends StructFields, Extra extends Record<PropertyKey, unknown> | undefined = undefined, PostDeserialize = FieldsValue<Fields> & Extra> extends StructSerializer<FieldsInit<Fields>>, StructDeserializer<PostDeserialize> {
|
|
24
|
+
littleEndian: boolean;
|
|
25
|
+
fields: Fields;
|
|
26
|
+
extra: Extra;
|
|
149
27
|
}
|
|
150
|
-
export {
|
|
28
|
+
export declare function struct<Fields extends Record<string, Field<unknown, string, Partial<FieldsValue<Fields>>, unknown> | (StructSerializer<unknown> & StructDeserializer<unknown>)>, Extra extends Record<PropertyKey, unknown> | undefined = undefined, PostDeserialize = FieldsValue<Fields> & ExtraToIntersection<Extra>>(fields: Fields, options: {
|
|
29
|
+
littleEndian: boolean;
|
|
30
|
+
extra?: (Extra & ThisType<FieldsValue<Fields>>) | undefined;
|
|
31
|
+
postDeserialize?: ((this: FieldsValue<Fields> & ExtraToIntersection<Extra>, value: FieldsValue<Fields> & ExtraToIntersection<Extra>) => PostDeserialize) | undefined;
|
|
32
|
+
}): Struct<Fields, Extra, PostDeserialize>;
|
|
151
33
|
//# sourceMappingURL=struct.d.ts.map
|
package/esm/struct.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../src/struct.ts"],"names":[],"mappings":"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"}
|