@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/bipedal.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
|
+
export type BipedalGenerator<This, T, A extends unknown[]> = (this: This, then: <U>(value: MaybePromiseLike<U>) => Iterable<unknown, U, unknown>, ...args: A) => Generator<unknown, T, unknown>;
|
|
3
|
+
export declare function bipedal<This, T, A extends unknown[]>(fn: BipedalGenerator<This, T, A>, bindThis?: This): {
|
|
4
|
+
(this: This, ...args: A): MaybePromiseLike<T>;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=bipedal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bipedal.d.ts","sourceRoot":"","sources":["../src/bipedal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAsBzD,MAAM,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,IAAI,CACzD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EACtE,GAAG,IAAI,EAAE,CAAC,KACT,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAGpC,wBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,EAChD,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,QAAQ,CAAC,EAAE,IAAI,GAChB;IAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;CAAE,CAgCnD"}
|
package/esm/bipedal.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { isPromiseLike } from "@yume-chan/async";
|
|
2
|
+
function advance(iterator, next) {
|
|
3
|
+
while (true) {
|
|
4
|
+
const { done, value } = iterator.next(next);
|
|
5
|
+
if (done) {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
if (isPromiseLike(value)) {
|
|
9
|
+
return value.then((value) => advance(iterator, { resolved: value }), (error) => advance(iterator, { error }));
|
|
10
|
+
}
|
|
11
|
+
next = value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
15
|
+
export function bipedal(fn, bindThis) {
|
|
16
|
+
function result(...args) {
|
|
17
|
+
const iterator = fn.call(this, function* (value) {
|
|
18
|
+
if (isPromiseLike(value)) {
|
|
19
|
+
const result = yield value;
|
|
20
|
+
if ("resolved" in result) {
|
|
21
|
+
return result.resolved;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw result.error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return value;
|
|
28
|
+
}, ...args);
|
|
29
|
+
return advance(iterator, undefined);
|
|
30
|
+
}
|
|
31
|
+
if (bindThis) {
|
|
32
|
+
return result.bind(bindThis);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=bipedal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bipedal.js","sourceRoot":"","sources":["../src/bipedal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,SAAS,OAAO,CACZ,QAAuC,EACvC,IAAa;IAEb,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,IAAI,CACb,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACjD,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CACnD,CAAC;QACN,CAAC;QACD,IAAI,GAAG,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAQD,0BAA0B;AAC1B,MAAM,UAAU,OAAO,CACnB,EAAgC,EAChC,QAAe;IAEf,SAAS,MAAM,CAAa,GAAG,IAAO;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CACpB,IAAI,EACJ,QAAQ,CAAC,EACL,KAA0B;YAM1B,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;gBAC3B,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;oBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,CAAC,KAAK,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,EACD,GAAG,IAAI,CACD,CAAC;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC"}
|
package/esm/buffer.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Field } from "./field/index.js";
|
|
2
|
+
export declare const EmptyUint8Array: Uint8Array<ArrayBuffer>;
|
|
3
|
+
export interface Converter<From, To> {
|
|
4
|
+
convert: (value: From) => To;
|
|
5
|
+
back: (value: To) => From;
|
|
6
|
+
}
|
|
7
|
+
export interface BufferLengthConverter<K, KT> extends Converter<KT, number> {
|
|
8
|
+
field: K;
|
|
9
|
+
}
|
|
10
|
+
export interface BufferLike {
|
|
11
|
+
(length: number): Field<Uint8Array, never, never, Uint8Array>;
|
|
12
|
+
<U>(length: number, converter: Converter<Uint8Array, U>): Field<U, never, never, Uint8Array>;
|
|
13
|
+
<K extends string>(lengthField: K): Field<Uint8Array, K, Record<K, number>, Uint8Array>;
|
|
14
|
+
<K extends string, U>(lengthField: K, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, number>, Uint8Array>;
|
|
15
|
+
<K extends string, KT>(length: BufferLengthConverter<K, KT>): Field<Uint8Array, K, Record<K, KT>, Uint8Array>;
|
|
16
|
+
<K extends string, KT, U>(length: BufferLengthConverter<K, KT>, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, KT>, Uint8Array>;
|
|
17
|
+
<LengthOmitInit extends string, LengthDependencies>(length: Field<number, LengthOmitInit, LengthDependencies, number>): Field<Uint8Array, LengthOmitInit, LengthDependencies, Uint8Array>;
|
|
18
|
+
<LengthOmitInit extends string, LengthDependencies, U>(length: Field<number, LengthOmitInit, LengthDependencies, number>, converter: Converter<Uint8Array, U>): Field<U, LengthOmitInit, LengthDependencies, Uint8Array>;
|
|
19
|
+
}
|
|
20
|
+
declare function _buffer(length: number): Field<Uint8Array, never, never, Uint8Array>;
|
|
21
|
+
declare function _buffer<U>(length: number, converter: Converter<Uint8Array, U>): Field<U, never, never, Uint8Array>;
|
|
22
|
+
declare function _buffer<K extends string>(lengthField: K): Field<Uint8Array, K, Record<K, number>, Uint8Array>;
|
|
23
|
+
declare function _buffer<K extends string, U>(lengthField: K, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, number>, Uint8Array>;
|
|
24
|
+
declare function _buffer<K extends string, KT>(length: BufferLengthConverter<K, KT>): Field<Uint8Array, K, Record<K, KT>, Uint8Array>;
|
|
25
|
+
declare function _buffer<K extends string, KT, U>(length: BufferLengthConverter<K, KT>, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, KT>, Uint8Array>;
|
|
26
|
+
declare function _buffer<LengthOmitInit extends string, LengthDependencies>(length: Field<number, LengthOmitInit, LengthDependencies, number>): Field<Uint8Array, LengthOmitInit, LengthDependencies, Uint8Array>;
|
|
27
|
+
declare function _buffer<LengthOmitInit extends string, LengthDependencies, U>(length: Field<number, LengthOmitInit, LengthDependencies, number>, converter: Converter<Uint8Array, U>): Field<U, LengthOmitInit, LengthDependencies, Uint8Array>;
|
|
28
|
+
export declare const buffer: typeof _buffer;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
|
package/esm/buffer.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { field } from "./field/index.js";
|
|
2
|
+
export const EmptyUint8Array = new Uint8Array(0);
|
|
3
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
4
|
+
function _buffer(lengthOrField, converter) {
|
|
5
|
+
// Fixed length
|
|
6
|
+
if (typeof lengthOrField === "number") {
|
|
7
|
+
if (converter) {
|
|
8
|
+
if (lengthOrField === 0) {
|
|
9
|
+
return field(0, "byob", () => { },
|
|
10
|
+
// eslint-disable-next-line require-yield
|
|
11
|
+
function* () {
|
|
12
|
+
return converter.convert(EmptyUint8Array);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return field(0, "byob", (value, { buffer, index }) => {
|
|
16
|
+
buffer.set(value.slice(0, lengthOrField), index);
|
|
17
|
+
}, function* (then, reader) {
|
|
18
|
+
const array = yield* then(reader.readExactly(lengthOrField));
|
|
19
|
+
return converter.convert(array);
|
|
20
|
+
}, {
|
|
21
|
+
init(value) {
|
|
22
|
+
return converter.back(value);
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (lengthOrField === 0) {
|
|
27
|
+
return field(0, "byob", () => { },
|
|
28
|
+
// eslint-disable-next-line require-yield
|
|
29
|
+
function* () {
|
|
30
|
+
return EmptyUint8Array;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return field(0, "byob", (value, { buffer, index }) => {
|
|
34
|
+
buffer.set(value.slice(0, lengthOrField), index);
|
|
35
|
+
},
|
|
36
|
+
// eslint-disable-next-line require-yield
|
|
37
|
+
function* (_then, reader) {
|
|
38
|
+
return reader.readExactly(lengthOrField);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Declare length field
|
|
42
|
+
// Some field types are `function`s
|
|
43
|
+
if ((typeof lengthOrField === "object" ||
|
|
44
|
+
typeof lengthOrField === "function") &&
|
|
45
|
+
"serialize" in lengthOrField) {
|
|
46
|
+
if (converter) {
|
|
47
|
+
return field(lengthOrField.size, "default", (value, { littleEndian }) => {
|
|
48
|
+
if (lengthOrField.type === "default") {
|
|
49
|
+
const lengthBuffer = lengthOrField.serialize(value.length, { littleEndian });
|
|
50
|
+
const result = new Uint8Array(lengthBuffer.length + value.length);
|
|
51
|
+
result.set(lengthBuffer, 0);
|
|
52
|
+
result.set(value, lengthBuffer.length);
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const result = new Uint8Array(lengthOrField.size + value.length);
|
|
57
|
+
lengthOrField.serialize(value.length, {
|
|
58
|
+
buffer: result,
|
|
59
|
+
index: 0,
|
|
60
|
+
littleEndian,
|
|
61
|
+
});
|
|
62
|
+
result.set(value, lengthOrField.size);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
}, function* (then, reader, context) {
|
|
66
|
+
const length = yield* then(lengthOrField.deserialize(reader, context));
|
|
67
|
+
const array = yield* then(reader.readExactly(length));
|
|
68
|
+
return converter.convert(array);
|
|
69
|
+
}, {
|
|
70
|
+
init(value) {
|
|
71
|
+
return converter.back(value);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return field(lengthOrField.size, "default", (value, { littleEndian }) => {
|
|
76
|
+
if (lengthOrField.type === "default") {
|
|
77
|
+
const lengthBuffer = lengthOrField.serialize(value.length, {
|
|
78
|
+
littleEndian,
|
|
79
|
+
});
|
|
80
|
+
const result = new Uint8Array(lengthBuffer.length + value.length);
|
|
81
|
+
result.set(lengthBuffer, 0);
|
|
82
|
+
result.set(value, lengthBuffer.length);
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const result = new Uint8Array(lengthOrField.size + value.length);
|
|
87
|
+
lengthOrField.serialize(value.length, {
|
|
88
|
+
buffer: result,
|
|
89
|
+
index: 0,
|
|
90
|
+
littleEndian,
|
|
91
|
+
});
|
|
92
|
+
result.set(value, lengthOrField.size);
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
}, function* (then, reader, context) {
|
|
96
|
+
const length = yield* then(lengthOrField.deserialize(reader, context));
|
|
97
|
+
return yield* then(reader.readExactly(length));
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// Reference exiting length field
|
|
101
|
+
if (typeof lengthOrField === "string") {
|
|
102
|
+
if (converter) {
|
|
103
|
+
return field(0, "default", (source) => source,
|
|
104
|
+
// eslint-disable-next-line require-yield
|
|
105
|
+
function* (_then, reader, { dependencies }) {
|
|
106
|
+
const length = dependencies[lengthOrField];
|
|
107
|
+
if (length === 0) {
|
|
108
|
+
return EmptyUint8Array;
|
|
109
|
+
}
|
|
110
|
+
return reader.readExactly(length);
|
|
111
|
+
}, {
|
|
112
|
+
init(value, dependencies) {
|
|
113
|
+
const array = converter.back(value);
|
|
114
|
+
dependencies[lengthOrField] = array.length;
|
|
115
|
+
return array;
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return field(0, "default", (source) => source,
|
|
120
|
+
// eslint-disable-next-line require-yield
|
|
121
|
+
function* (_then, reader, { dependencies }) {
|
|
122
|
+
const length = dependencies[lengthOrField];
|
|
123
|
+
if (length === 0) {
|
|
124
|
+
return EmptyUint8Array;
|
|
125
|
+
}
|
|
126
|
+
return reader.readExactly(length);
|
|
127
|
+
}, {
|
|
128
|
+
init(value, dependencies) {
|
|
129
|
+
dependencies[lengthOrField] = value.length;
|
|
130
|
+
return undefined;
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// Reference existing length field + converter
|
|
135
|
+
if (converter) {
|
|
136
|
+
return field(0, "default", (source) => source,
|
|
137
|
+
// eslint-disable-next-line require-yield
|
|
138
|
+
function* (_then, reader, { dependencies }) {
|
|
139
|
+
const rawLength = dependencies[lengthOrField.field];
|
|
140
|
+
const length = lengthOrField.convert(rawLength);
|
|
141
|
+
if (length === 0) {
|
|
142
|
+
return EmptyUint8Array;
|
|
143
|
+
}
|
|
144
|
+
return reader.readExactly(length);
|
|
145
|
+
}, {
|
|
146
|
+
init(value, dependencies) {
|
|
147
|
+
const array = converter.back(value);
|
|
148
|
+
dependencies[lengthOrField.field] = lengthOrField.back(array.length);
|
|
149
|
+
return array;
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return field(0, "default", (source) => source,
|
|
154
|
+
// eslint-disable-next-line require-yield
|
|
155
|
+
function* (_then, reader, { dependencies }) {
|
|
156
|
+
const rawLength = dependencies[lengthOrField.field];
|
|
157
|
+
const length = lengthOrField.convert(rawLength);
|
|
158
|
+
if (length === 0) {
|
|
159
|
+
return EmptyUint8Array;
|
|
160
|
+
}
|
|
161
|
+
return reader.readExactly(length);
|
|
162
|
+
}, {
|
|
163
|
+
init(value, dependencies) {
|
|
164
|
+
dependencies[lengthOrField.field] = lengthOrField.back(value.length);
|
|
165
|
+
return undefined;
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
export const buffer = _buffer;
|
|
170
|
+
//# sourceMappingURL=buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
|
package/esm/concat.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FieldsValue, Struct, StructFields } from "./struct.js";
|
|
2
|
+
type UnionToIntersection<U> = (U extends unknown ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
|
|
3
|
+
type As<T, U> = T extends infer V extends U ? V : never;
|
|
4
|
+
export type ConcatFields<T extends Struct<StructFields, Record<PropertyKey, unknown> | undefined, unknown>[]> = As<UnionToIntersection<T[number]["fields"]>, StructFields>;
|
|
5
|
+
type ConcatFieldValues<T extends Struct<StructFields, Record<PropertyKey, unknown> | undefined, unknown>[]> = FieldsValue<ConcatFields<T>>;
|
|
6
|
+
type ExtraToUnion<Extra extends Record<PropertyKey, unknown> | undefined> = Extra extends undefined ? never : Extra;
|
|
7
|
+
export type ConcatExtras<T extends Struct<StructFields, Record<PropertyKey, unknown> | undefined, unknown>[]> = As<UnionToIntersection<ExtraToUnion<T[number]["extra"]>>, Record<PropertyKey, unknown>>;
|
|
8
|
+
export declare function concat<T extends Struct<StructFields, Record<PropertyKey, unknown> | undefined, unknown>[], PostDeserialize = ConcatFieldValues<T> & ConcatExtras<T>>(options: {
|
|
9
|
+
littleEndian: boolean;
|
|
10
|
+
postDeserialize?: (this: ConcatFieldValues<T> & ConcatExtras<T>, value: ConcatFieldValues<T> & ConcatExtras<T>) => PostDeserialize;
|
|
11
|
+
}, ...structs: T): Struct<ConcatFields<T>, ConcatExtras<T>, PostDeserialize>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=concat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrE,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAC1B,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC7C,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GACxB,CAAC,GACD,KAAK,CAAC;AAEZ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAExD,MAAM,MAAM,YAAY,CACpB,CAAC,SAAS,MAAM,CACZ,YAAY,EACZ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,OAAO,CACV,EAAE,IACH,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAE/D,KAAK,iBAAiB,CAClB,CAAC,SAAS,MAAM,CACZ,YAAY,EACZ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,OAAO,CACV,EAAE,IACH,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjC,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,IACpE,KAAK,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5C,MAAM,MAAM,YAAY,CACpB,CAAC,SAAS,MAAM,CACZ,YAAY,EACZ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,OAAO,CACV,EAAE,IACH,EAAE,CACF,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACrD,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAC/B,CAAC;AAGF,wBAAgB,MAAM,CAClB,CAAC,SAAS,MAAM,CACZ,YAAY,EACZ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,OAAO,CACV,EAAE,EACH,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAExD,OAAO,EAAE;IACL,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CACd,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAC5C,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,KAC5C,eAAe,CAAC;CACxB,EACD,GAAG,OAAO,EAAE,CAAC,GACd,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAmB3D"}
|
package/esm/concat.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { struct } from "./struct.js";
|
|
2
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
3
|
+
export function concat(options, ...structs) {
|
|
4
|
+
return struct(structs.reduce((fields, struct) => Object.assign(fields, struct.fields), {}), {
|
|
5
|
+
littleEndian: options.littleEndian,
|
|
6
|
+
postDeserialize: options.postDeserialize,
|
|
7
|
+
extra: structs.reduce((extras, struct) => Object.defineProperties(extras, Object.getOwnPropertyDescriptors(struct.extra)), {}),
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=concat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concat.js","sourceRoot":"","sources":["../src/concat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAwCrC,0BAA0B;AAC1B,MAAM,UAAU,MAAM,CAQlB,OAMC,EACD,GAAG,OAAU;IAEb,OAAO,MAAM,CACT,OAAO,CAAC,MAAM,CACV,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EACxD,EAAE,CACI,EACV;QACI,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,KAAK,EAAE,OAAO,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACf,MAAM,CAAC,gBAAgB,CACnB,MAAM,EACN,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CACjD,EACL,EAAE,CACI;KACb,CACK,CAAC;AACf,CAAC"}
|
package/esm/extend.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ExtraToIntersection, FieldsValue, Struct, StructFields } from "./struct.js";
|
|
2
|
+
export declare function extend<Base extends Struct<StructFields, Record<PropertyKey, unknown> | undefined, unknown>, Fields extends StructFields, PostDeserialize = FieldsValue<Base["fields"] & Fields> & ExtraToIntersection<Base["extra"]>>(base: Base, fields: Fields, options?: {
|
|
3
|
+
littleEndian?: boolean | undefined;
|
|
4
|
+
postDeserialize?: (this: FieldsValue<Base["fields"] & Fields> & ExtraToIntersection<Base["extra"]>, value: FieldsValue<Base["fields"] & Fields> & ExtraToIntersection<Base["extra"]>) => PostDeserialize;
|
|
5
|
+
}): Struct<Base["fields"] & Fields, Base["extra"], PostDeserialize>;
|
|
6
|
+
//# sourceMappingURL=extend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../src/extend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,YAAY,EACf,MAAM,aAAa,CAAC;AAIrB,wBAAgB,MAAM,CAClB,IAAI,SAAS,MAAM,CACf,YAAY,EACZ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,OAAO,CACV,EACD,MAAM,SAAS,YAAY,EAC3B,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,GAClD,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAEtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACN,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,eAAe,CAAC,EAAE,CACd,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,GACtC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACtC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,GACvC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KACrC,eAAe,CAAC;CACxB,GACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAMjE"}
|
package/esm/extend.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { struct } from "./struct.js";
|
|
2
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
3
|
+
export function extend(base, fields, options) {
|
|
4
|
+
return struct(Object.assign({}, base.fields, fields), {
|
|
5
|
+
littleEndian: options?.littleEndian ?? base.littleEndian,
|
|
6
|
+
extra: base.extra,
|
|
7
|
+
postDeserialize: options?.postDeserialize,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=extend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extend.js","sourceRoot":"","sources":["../src/extend.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,0BAA0B;AAC1B,MAAM,UAAU,MAAM,CAUlB,IAAU,EACV,MAAc,EACd,OAQC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;QAClD,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY;QACxD,KAAK,EAAE,IAAI,CAAC,KAAc;QAC1B,eAAe,EAAE,OAAO,EAAE,eAAe;KAC5C,CAAU,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BipedalGenerator } from "../bipedal.js";
|
|
2
|
+
import type { AsyncExactReadable } from "../readable.js";
|
|
3
|
+
import type { ByobFieldSerializer, DefaultFieldSerializer } from "./serialize.js";
|
|
4
|
+
import type { Field, FieldDeserializeContext, FieldOptions } from "./types.js";
|
|
5
|
+
export type BipedalFieldDeserializer<T, D> = BipedalGenerator<undefined, T, [
|
|
6
|
+
reader: AsyncExactReadable,
|
|
7
|
+
context: FieldDeserializeContext<D>
|
|
8
|
+
]>;
|
|
9
|
+
declare function _field<T, OmitInit extends string, D, Raw = T>(size: number, type: "default", serialize: DefaultFieldSerializer<Raw>, deserialize: BipedalFieldDeserializer<T, D>, options?: FieldOptions<T, OmitInit, D, Raw>): Field<T, OmitInit, D, Raw>;
|
|
10
|
+
declare function _field<T, OmitInit extends string, D, Raw = T>(size: number, type: "byob", serialize: ByobFieldSerializer<Raw>, deserialize: BipedalFieldDeserializer<T, D>, options?: FieldOptions<T, OmitInit, D, Raw>): Field<T, OmitInit, D, Raw>;
|
|
11
|
+
export declare const field: typeof _field;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/field/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,KAAK,EACR,mBAAmB,EACnB,sBAAsB,EACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,CACzD,SAAS,EACT,CAAC,EACD;IAAC,MAAM,EAAE,kBAAkB;IAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAAC,CACpE,CAAC;AAGF,iBAAS,MAAM,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAClD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,sBAAsB,CAAC,GAAG,CAAC,EACtC,WAAW,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3C,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,GAC5C,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAE9B,iBAAS,MAAM,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAClD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,EACnC,WAAW,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3C,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,GAC5C,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AA+B9B,eAAO,MAAM,KAAK,eAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { bipedal } from "../bipedal.js";
|
|
2
|
+
import { byobFieldSerializer, defaultFieldSerializer } from "./serialize.js";
|
|
3
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/max-params
|
|
5
|
+
function _field(size, type, serialize, deserialize, options) {
|
|
6
|
+
const field = {
|
|
7
|
+
size,
|
|
8
|
+
type: type,
|
|
9
|
+
serialize: type === "default"
|
|
10
|
+
? defaultFieldSerializer(serialize)
|
|
11
|
+
: byobFieldSerializer(size, serialize),
|
|
12
|
+
deserialize: bipedal(deserialize),
|
|
13
|
+
omitInit: options?.omitInit,
|
|
14
|
+
};
|
|
15
|
+
if (options?.init) {
|
|
16
|
+
field.init = options.init;
|
|
17
|
+
}
|
|
18
|
+
return field;
|
|
19
|
+
}
|
|
20
|
+
export const field = _field;
|
|
21
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/field/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAOxC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAyB7E,0BAA0B;AAC1B,yDAAyD;AACzD,SAAS,MAAM,CACX,IAAY,EACZ,IAAwB,EACxB,SAAiE,EACjE,WAA2C,EAC3C,OAA2C;IAE3C,MAAM,KAAK,GAA+B;QACtC,IAAI;QACJ,IAAI,EAAE,IAAI;QACV,SAAS,EACL,IAAI,KAAK,SAAS;YACd,CAAC,CAAC,sBAAsB,CAClB,SAAwC,CAC3C;YACH,CAAC,CAAC,mBAAmB,CACf,IAAI,EACJ,SAAqC,CACxC;QACX,WAAW,EAAE,OAAO,CAAC,WAAW,CAAU;QAC1C,QAAQ,EAAE,OAAO,EAAE,QAAQ;KAC9B,CAAC;IACF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/field/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/field/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FieldByobSerializeContext, FieldDefaultSerializeContext, FieldSerializer } from "./types.js";
|
|
2
|
+
export type DefaultFieldSerializer<T> = (source: T, context: FieldDefaultSerializeContext) => Uint8Array;
|
|
3
|
+
export declare function defaultFieldSerializer<T>(serializer: DefaultFieldSerializer<T>): FieldSerializer<T>["serialize"];
|
|
4
|
+
export type ByobFieldSerializer<T> = (source: T, context: FieldByobSerializeContext & {
|
|
5
|
+
index: number;
|
|
6
|
+
}) => void;
|
|
7
|
+
export declare function byobFieldSerializer<T>(size: number, serializer: ByobFieldSerializer<T>): FieldSerializer<T>["serialize"];
|
|
8
|
+
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/field/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,yBAAyB,EACzB,4BAA4B,EAC5B,eAAe,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CACpC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,4BAA4B,KACpC,UAAU,CAAC;AAGhB,wBAAgB,sBAAsB,CAAC,CAAC,EACpC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACtC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAajC;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CACjC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,yBAAyB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,KACrD,IAAI,CAAC;AAGV,wBAAgB,mBAAmB,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACnC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAmBjC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* Adapt default field serializer to universal field serializer */
|
|
2
|
+
export function defaultFieldSerializer(serializer) {
|
|
3
|
+
return (source, context) => {
|
|
4
|
+
if ("buffer" in context) {
|
|
5
|
+
const buffer = serializer(source, context);
|
|
6
|
+
context.buffer.set(buffer, context.index);
|
|
7
|
+
return buffer.length;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return serializer(source, context);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/* Adapt byob field serializer to universal field serializer */
|
|
15
|
+
export function byobFieldSerializer(size, serializer) {
|
|
16
|
+
return (source, context) => {
|
|
17
|
+
if ("buffer" in context) {
|
|
18
|
+
context.index ??= 0;
|
|
19
|
+
serializer(source, context);
|
|
20
|
+
return size;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const buffer = new Uint8Array(size);
|
|
24
|
+
serializer(source, {
|
|
25
|
+
buffer,
|
|
26
|
+
index: 0,
|
|
27
|
+
littleEndian: context.littleEndian,
|
|
28
|
+
});
|
|
29
|
+
return buffer;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/field/serialize.ts"],"names":[],"mappings":"AAWA,kEAAkE;AAClE,MAAM,UAAU,sBAAsB,CAClC,UAAqC;IAErC,OAAO,CACH,MAAM,EACN,OAAiE,EAC5D,EAAE;QACP,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,MAAe,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAU,CAAC;QAChD,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAOD,+DAA+D;AAC/D,MAAM,UAAU,mBAAmB,CAC/B,IAAY,EACZ,UAAkC;IAElC,OAAO,CACH,MAAM,EACN,OAAiE,EAC5D,EAAE;QACP,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;YACpB,UAAU,CAAC,MAAM,EAAE,OAAgB,CAAC,CAAC;YACrC,OAAO,IAAa,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,UAAU,CAAC,MAAM,EAAE;gBACf,MAAM;gBACN,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,OAAO,CAAC,YAAY;aACrC,CAAC,CAAC;YACH,OAAO,MAAe,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
|
+
import type { AsyncExactReadable, ExactReadable } from "../readable.js";
|
|
3
|
+
export interface FieldDefaultSerializeContext {
|
|
4
|
+
littleEndian: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface FieldByobSerializeContext extends FieldDefaultSerializeContext {
|
|
7
|
+
buffer: Uint8Array;
|
|
8
|
+
index?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface FieldSerializer<T> {
|
|
11
|
+
type: "default" | "byob";
|
|
12
|
+
size: number;
|
|
13
|
+
serialize(source: T, context: FieldDefaultSerializeContext): Uint8Array;
|
|
14
|
+
serialize(source: T, context: FieldByobSerializeContext): number;
|
|
15
|
+
}
|
|
16
|
+
export interface Field<T, OmitInit extends string, D, Raw = T> extends FieldSerializer<Raw>, FieldDeserializer<T, D> {
|
|
17
|
+
omitInit: OmitInit | undefined;
|
|
18
|
+
init?(value: T, dependencies: D): Raw | undefined;
|
|
19
|
+
}
|
|
20
|
+
export interface FieldDeserializeContext<D> {
|
|
21
|
+
littleEndian: boolean;
|
|
22
|
+
dependencies: D;
|
|
23
|
+
}
|
|
24
|
+
export interface FieldDeserializer<T, D> {
|
|
25
|
+
deserialize(reader: ExactReadable, context: FieldDeserializeContext<D>): T;
|
|
26
|
+
deserialize(reader: AsyncExactReadable, context: FieldDeserializeContext<D>): MaybePromiseLike<T>;
|
|
27
|
+
}
|
|
28
|
+
export interface FieldOptions<T, OmitInit extends string, D, Raw = T> {
|
|
29
|
+
omitInit?: OmitInit;
|
|
30
|
+
dependencies?: D;
|
|
31
|
+
init?: (value: T, dependencies: D) => Raw | undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,WAAW,4BAA4B;IACzC,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,yBACb,SAAQ,4BAA4B;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,4BAA4B,GAAG,UAAU,CAAC;IACxE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,GAAG,MAAM,CAAC;CACpE;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CACzD,SAAQ,eAAe,CAAC,GAAG,CAAC,EACxB,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE/B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;CACrD;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACnC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,WAAW,CACP,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAChE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,KAAK,GAAG,GAAG,SAAS,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/field/types.ts"],"names":[],"mappings":""}
|
package/esm/index.d.ts
CHANGED
|
@@ -6,10 +6,15 @@ declare global {
|
|
|
6
6
|
__brand: never;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
export * from "./
|
|
9
|
+
export * from "./bipedal.js";
|
|
10
|
+
export * from "./buffer.js";
|
|
11
|
+
export * from "./concat.js";
|
|
12
|
+
export * from "./extend.js";
|
|
13
|
+
export * from "./field/index.js";
|
|
14
|
+
export * from "./number.js";
|
|
15
|
+
export * from "./readable.js";
|
|
16
|
+
export * from "./string.js";
|
|
10
17
|
export * from "./struct.js";
|
|
11
|
-
export
|
|
12
|
-
export * from "./sync-promise.js";
|
|
13
|
-
export * from "./types/index.js";
|
|
18
|
+
export * from "./types.js";
|
|
14
19
|
export * from "./utils.js";
|
|
15
20
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW;QAEjB,OAAO,EAAE,KAAK,CAAC;KAClB;IAED,UAAU,iBAAiB;QAEvB,OAAO,EAAE,KAAK,CAAC;KAClB;CACJ;AAED,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,WAAW;QAEjB,OAAO,EAAE,KAAK,CAAC;KAClB;IAED,UAAU,iBAAiB;QAEvB,OAAO,EAAE,KAAK,CAAC;KAClB;CACJ;AAED,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./bipedal.js";
|
|
2
|
+
export * from "./buffer.js";
|
|
3
|
+
export * from "./concat.js";
|
|
4
|
+
export * from "./extend.js";
|
|
5
|
+
export * from "./field/index.js";
|
|
6
|
+
export * from "./number.js";
|
|
7
|
+
export * from "./readable.js";
|
|
8
|
+
export * from "./string.js";
|
|
2
9
|
export * from "./struct.js";
|
|
3
|
-
export
|
|
4
|
-
export * from "./sync-promise.js";
|
|
5
|
-
export * from "./types/index.js";
|
|
10
|
+
export * from "./types.js";
|
|
6
11
|
export * from "./utils.js";
|
|
7
12
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/esm/number.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Field } from "./field/index.js";
|
|
2
|
+
export interface NumberField<T> extends Field<T, never, never, T> {
|
|
3
|
+
<const U>(infer?: U): Field<U, never, never, T>;
|
|
4
|
+
}
|
|
5
|
+
export declare const u8: NumberField<number>;
|
|
6
|
+
export declare const s8: NumberField<number>;
|
|
7
|
+
export declare const u16: NumberField<number>;
|
|
8
|
+
export declare const s16: NumberField<number>;
|
|
9
|
+
export declare const u32: NumberField<number>;
|
|
10
|
+
export declare const s32: NumberField<number>;
|
|
11
|
+
export declare const u64: NumberField<bigint>;
|
|
12
|
+
export declare const s64: NumberField<bigint>;
|
|
13
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACR,KAAK,EAGR,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACnD;AAoBD,eAAO,MAAM,EAAE,EAAE,WAAW,CAAC,MAAM,CASlC,CAAC;AAEF,eAAO,MAAM,EAAE,EAAE,WAAW,CAAC,MAAM,CASlC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,WAAW,CAAC,MAAM,CASnC,CAAC"}
|