@yume-chan/struct 0.0.23 → 1.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 +37 -2
- package/LICENSE +1 -1
- package/README.md +85 -714
- package/esm/bipedal.d.ts +5 -0
- package/esm/bipedal.d.ts.map +1 -0
- package/esm/bipedal.js +31 -0
- package/esm/bipedal.js.map +1 -0
- package/esm/buffer.d.ts +21 -0
- package/esm/buffer.d.ts.map +1 -0
- package/esm/buffer.js +173 -0
- package/esm/buffer.js.map +1 -0
- package/esm/field.d.ts +21 -0
- package/esm/field.d.ts.map +1 -0
- package/esm/field.js +2 -0
- package/esm/field.js.map +1 -0
- package/esm/index.d.ts +6 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +6 -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 +59 -0
- package/esm/number.js.map +1 -0
- package/esm/{basic/stream.d.ts → readable.d.ts} +3 -3
- package/esm/readable.d.ts.map +1 -0
- package/esm/{basic/stream.js → readable.js} +1 -2
- 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 +14 -0
- package/esm/string.js.map +1 -0
- package/esm/struct.d.ts +24 -127
- package/esm/struct.d.ts.map +1 -1
- package/esm/struct.js +72 -214
- package/esm/struct.js.map +1 -1
- package/esm/utils.d.ts +10 -45
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +12 -11
- package/esm/utils.js.map +1 -1
- package/package.json +11 -14
- package/src/bipedal.ts +55 -0
- package/src/buffer.ts +260 -0
- package/src/field.ts +27 -0
- package/src/index.ts +6 -4
- package/src/number.ts +123 -0
- package/src/{basic/stream.ts → readable.ts} +3 -4
- package/src/string.ts +43 -0
- package/src/struct.ts +156 -628
- package/src/utils.ts +18 -69
- package/tsconfig.build.json +6 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/CHANGELOG.json +0 -161
- 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.map +0 -1
- package/esm/basic/struct-value.d.ts +0 -26
- package/esm/basic/struct-value.d.ts.map +0 -1
- package/esm/basic/struct-value.js +0 -57
- 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 -26
- package/esm/types/bigint.d.ts.map +0 -1
- package/esm/types/bigint.js +0 -47
- package/esm/types/bigint.js.map +0 -1
- package/esm/types/buffer/base.d.ts +0 -65
- package/esm/types/buffer/base.d.ts.map +0 -1
- package/esm/types/buffer/base.js +0 -101
- 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 -45
- package/esm/types/buffer/variable-length.d.ts.map +0 -1
- package/esm/types/buffer/variable-length.js +0 -76
- 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 -111
- 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 -67
- package/src/sync-promise.ts +0 -134
- package/src/types/bigint.ts +0 -121
- package/src/types/buffer/base.ts +0 -197
- package/src/types/buffer/fixed-length.ts +0 -17
- package/src/types/buffer/index.ts +0 -3
- package/src/types/buffer/variable-length.ts +0 -174
- package/src/types/index.ts +0 -3
- package/src/types/number.ts +0 -173
package/esm/bipedal.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
|
+
export declare function bipedal<This, T, A extends unknown[]>(fn: (this: This, then: <U>(value: U | PromiseLike<U>) => Iterable<unknown, U, unknown>, ...args: A) => Generator<unknown, T, unknown>): {
|
|
3
|
+
(this: This, ...args: A): MaybePromiseLike<T>;
|
|
4
|
+
};
|
|
5
|
+
//# 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,wBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,EAChD,EAAE,EAAE,CACA,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EACrE,GAAG,IAAI,EAAE,CAAC,KACT,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,GACpC;IAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;CAAE,CA0BnD"}
|
package/esm/bipedal.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
export function bipedal(fn) {
|
|
15
|
+
return function (...args) {
|
|
16
|
+
const iterator = fn.call(this, function* (value) {
|
|
17
|
+
if (isPromiseLike(value)) {
|
|
18
|
+
const result = yield value;
|
|
19
|
+
if ("resolved" in result) {
|
|
20
|
+
return result.resolved;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
throw result.error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}, ...args);
|
|
28
|
+
return advance(iterator, undefined);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# 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;AAED,MAAM,UAAU,OAAO,CACnB,EAImC;IAEnC,OAAO,UAAsB,GAAG,IAAO;QACnC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CACpB,IAAI,EACJ,QAAQ,CAAC,EACL,KAAyB;YAMzB,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,CAAC;AACN,CAAC"}
|
package/esm/buffer.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Field } from "./field.js";
|
|
2
|
+
export interface Converter<From, To> {
|
|
3
|
+
convert: (value: From) => To;
|
|
4
|
+
back: (value: To) => From;
|
|
5
|
+
}
|
|
6
|
+
export interface BufferLengthConverter<K, KT> extends Converter<KT, number> {
|
|
7
|
+
field: K;
|
|
8
|
+
}
|
|
9
|
+
export interface BufferLike {
|
|
10
|
+
(length: number): Field<Uint8Array, never, never>;
|
|
11
|
+
<U>(length: number, converter: Converter<Uint8Array, U>): Field<U, never, never>;
|
|
12
|
+
<K extends string>(lengthField: K): Field<Uint8Array, K, Record<K, number>>;
|
|
13
|
+
<K extends string, U>(lengthField: K, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, number>>;
|
|
14
|
+
<K extends string, KT>(length: BufferLengthConverter<K, KT>): Field<Uint8Array, K, Record<K, KT>>;
|
|
15
|
+
<K extends string, KT, U>(length: BufferLengthConverter<K, KT>, converter: Converter<Uint8Array, U>): Field<U, K, Record<K, KT>>;
|
|
16
|
+
<KOmitInit extends string, KS>(length: Field<number, KOmitInit, KS>): Field<Uint8Array, KOmitInit, KS>;
|
|
17
|
+
<KOmitInit extends string, KS, U>(length: Field<number, KOmitInit, KS>, converter: Converter<Uint8Array, U>): Field<U, KOmitInit, KS>;
|
|
18
|
+
}
|
|
19
|
+
export declare const EmptyUint8Array: Uint8Array<ArrayBuffer>;
|
|
20
|
+
export declare const buffer: BufferLike;
|
|
21
|
+
//# sourceMappingURL=buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,SAAS,CAAC,IAAI,EAAE,EAAE;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAE,SAAQ,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACvB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,EACE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,GACpC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE1B,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAChB,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,GACpC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAElC,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EACjB,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,GACrC,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EACpB,MAAM,EAAE,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC,EACpC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,GACpC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9B,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,EACzB,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,GACrC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EACpC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,GACpC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,yBAAoB,CAAC;AAEjD,eAAO,MAAM,MAAM,EAAE,UAuNX,CAAC"}
|
package/esm/buffer.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { bipedal } from "./bipedal.js";
|
|
2
|
+
export const EmptyUint8Array = new Uint8Array(0);
|
|
3
|
+
export const buffer = function (lengthOrField, converter) {
|
|
4
|
+
if (typeof lengthOrField === "number") {
|
|
5
|
+
if (converter) {
|
|
6
|
+
if (lengthOrField === 0) {
|
|
7
|
+
return {
|
|
8
|
+
size: 0,
|
|
9
|
+
serialize: () => { },
|
|
10
|
+
deserialize: () => converter.convert(EmptyUint8Array),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
size: lengthOrField,
|
|
15
|
+
serialize: (value, { buffer, index }) => {
|
|
16
|
+
buffer.set(converter.back(value).slice(0, lengthOrField), index);
|
|
17
|
+
},
|
|
18
|
+
deserialize: bipedal(function* (then, { reader }) {
|
|
19
|
+
const array = yield* then(reader.readExactly(lengthOrField));
|
|
20
|
+
return converter.convert(array);
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (lengthOrField === 0) {
|
|
25
|
+
return {
|
|
26
|
+
size: 0,
|
|
27
|
+
serialize: () => { },
|
|
28
|
+
deserialize: () => EmptyUint8Array,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
size: lengthOrField,
|
|
33
|
+
serialize: (value, { buffer, index }) => {
|
|
34
|
+
buffer.set(value.slice(0, lengthOrField), index);
|
|
35
|
+
},
|
|
36
|
+
deserialize: ({ reader }) => reader.readExactly(lengthOrField),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Some Field type might be `function`s
|
|
40
|
+
if ((typeof lengthOrField === "object" ||
|
|
41
|
+
typeof lengthOrField === "function") &&
|
|
42
|
+
"serialize" in lengthOrField) {
|
|
43
|
+
if (converter) {
|
|
44
|
+
return {
|
|
45
|
+
size: 0,
|
|
46
|
+
dynamicSize(value) {
|
|
47
|
+
const array = converter.back(value);
|
|
48
|
+
const lengthFieldSize = lengthOrField.dynamicSize?.(array.length) ??
|
|
49
|
+
lengthOrField.size;
|
|
50
|
+
return lengthFieldSize + array.length;
|
|
51
|
+
},
|
|
52
|
+
serialize(value, context) {
|
|
53
|
+
const array = converter.back(value);
|
|
54
|
+
const lengthFieldSize = lengthOrField.dynamicSize?.(array.length) ??
|
|
55
|
+
lengthOrField.size;
|
|
56
|
+
lengthOrField.serialize(array.length, context);
|
|
57
|
+
context.buffer.set(array, context.index + lengthFieldSize);
|
|
58
|
+
},
|
|
59
|
+
deserialize: bipedal(function* (then, context) {
|
|
60
|
+
const length = yield* then(lengthOrField.deserialize(context));
|
|
61
|
+
const array = yield* then(context.reader.readExactly(length));
|
|
62
|
+
return converter.convert(array);
|
|
63
|
+
}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
size: 0,
|
|
68
|
+
dynamicSize(value) {
|
|
69
|
+
const lengthFieldSize = lengthOrField.dynamicSize?.(value.length) ??
|
|
70
|
+
lengthOrField.size;
|
|
71
|
+
return lengthFieldSize + value.length;
|
|
72
|
+
},
|
|
73
|
+
serialize(value, context) {
|
|
74
|
+
const lengthFieldSize = lengthOrField.dynamicSize?.(value.length) ??
|
|
75
|
+
lengthOrField.size;
|
|
76
|
+
lengthOrField.serialize(value.length, context);
|
|
77
|
+
context.buffer.set(value, context.index + lengthFieldSize);
|
|
78
|
+
},
|
|
79
|
+
deserialize: bipedal(function* (then, context) {
|
|
80
|
+
const length = yield* then(lengthOrField.deserialize(context));
|
|
81
|
+
return context.reader.readExactly(length);
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (typeof lengthOrField === "string") {
|
|
86
|
+
if (converter) {
|
|
87
|
+
return {
|
|
88
|
+
size: 0,
|
|
89
|
+
preSerialize: (value, runtimeStruct) => {
|
|
90
|
+
runtimeStruct[lengthOrField] = converter.back(value).length;
|
|
91
|
+
},
|
|
92
|
+
dynamicSize: (value) => {
|
|
93
|
+
return converter.back(value).length;
|
|
94
|
+
},
|
|
95
|
+
serialize: (value, { buffer, index }) => {
|
|
96
|
+
buffer.set(converter.back(value), index);
|
|
97
|
+
},
|
|
98
|
+
deserialize: bipedal(function* (then, { reader, runtimeStruct }) {
|
|
99
|
+
const length = runtimeStruct[lengthOrField];
|
|
100
|
+
if (length === 0) {
|
|
101
|
+
return converter.convert(EmptyUint8Array);
|
|
102
|
+
}
|
|
103
|
+
const value = yield* then(reader.readExactly(length));
|
|
104
|
+
return converter.convert(value);
|
|
105
|
+
}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
size: 0,
|
|
110
|
+
preSerialize: (value, runtimeStruct) => {
|
|
111
|
+
runtimeStruct[lengthOrField] = value.length;
|
|
112
|
+
},
|
|
113
|
+
dynamicSize: (value) => {
|
|
114
|
+
return value.length;
|
|
115
|
+
},
|
|
116
|
+
serialize: (value, { buffer, index }) => {
|
|
117
|
+
buffer.set(value, index);
|
|
118
|
+
},
|
|
119
|
+
deserialize: ({ reader, runtimeStruct }) => {
|
|
120
|
+
const length = runtimeStruct[lengthOrField];
|
|
121
|
+
if (length === 0) {
|
|
122
|
+
return EmptyUint8Array;
|
|
123
|
+
}
|
|
124
|
+
return reader.readExactly(length);
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (converter) {
|
|
129
|
+
return {
|
|
130
|
+
size: 0,
|
|
131
|
+
preSerialize: (value, runtimeStruct) => {
|
|
132
|
+
const length = converter.back(value).length;
|
|
133
|
+
runtimeStruct[lengthOrField.field] = lengthOrField.back(length);
|
|
134
|
+
},
|
|
135
|
+
dynamicSize: (value) => {
|
|
136
|
+
return converter.back(value).length;
|
|
137
|
+
},
|
|
138
|
+
serialize: (value, { buffer, index }) => {
|
|
139
|
+
buffer.set(converter.back(value), index);
|
|
140
|
+
},
|
|
141
|
+
deserialize: bipedal(function* (then, { reader, runtimeStruct }) {
|
|
142
|
+
const rawLength = runtimeStruct[lengthOrField.field];
|
|
143
|
+
const length = lengthOrField.convert(rawLength);
|
|
144
|
+
if (length === 0) {
|
|
145
|
+
return converter.convert(EmptyUint8Array);
|
|
146
|
+
}
|
|
147
|
+
const value = yield* then(reader.readExactly(length));
|
|
148
|
+
return converter.convert(value);
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
size: 0,
|
|
154
|
+
preSerialize: (value, runtimeStruct) => {
|
|
155
|
+
runtimeStruct[lengthOrField.field] = lengthOrField.back(value.length);
|
|
156
|
+
},
|
|
157
|
+
dynamicSize: (value) => {
|
|
158
|
+
return value.length;
|
|
159
|
+
},
|
|
160
|
+
serialize: (value, { buffer, index }) => {
|
|
161
|
+
buffer.set(value, index);
|
|
162
|
+
},
|
|
163
|
+
deserialize: ({ reader, runtimeStruct }) => {
|
|
164
|
+
const rawLength = runtimeStruct[lengthOrField.field];
|
|
165
|
+
const length = lengthOrField.convert(rawLength);
|
|
166
|
+
if (length === 0) {
|
|
167
|
+
return EmptyUint8Array;
|
|
168
|
+
}
|
|
169
|
+
return reader.readExactly(length);
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
//# 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/field.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MaybePromiseLike } from "@yume-chan/async";
|
|
2
|
+
import type { AsyncExactReadable } from "./readable.js";
|
|
3
|
+
export interface SerializeContext {
|
|
4
|
+
buffer: Uint8Array;
|
|
5
|
+
index: number;
|
|
6
|
+
littleEndian: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface DeserializeContext<S> {
|
|
9
|
+
reader: AsyncExactReadable;
|
|
10
|
+
littleEndian: boolean;
|
|
11
|
+
runtimeStruct: S;
|
|
12
|
+
}
|
|
13
|
+
export interface Field<T, OmitInit extends string, S> {
|
|
14
|
+
__invariant?: OmitInit;
|
|
15
|
+
size: number;
|
|
16
|
+
dynamicSize?(value: T): number;
|
|
17
|
+
preSerialize?(value: T, runtimeStruct: S): void;
|
|
18
|
+
serialize(value: T, context: SerializeContext): void;
|
|
19
|
+
deserialize(context: DeserializeContext<S>): MaybePromiseLike<T>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,EAAE,CAAC;IAChD,WAAW,CAAC,EAAE,QAAQ,CAAC;IAEvB,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAErD,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACpE"}
|
package/esm/field.js
ADDED
package/esm/field.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":""}
|
package/esm/index.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ 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 "./field.js";
|
|
12
|
+
export * from "./number.js";
|
|
13
|
+
export * from "./readable.js";
|
|
14
|
+
export * from "./string.js";
|
|
10
15
|
export * from "./struct.js";
|
|
11
|
-
export { Struct as default } from "./struct.js";
|
|
12
|
-
export * from "./sync-promise.js";
|
|
13
|
-
export * from "./types/index.js";
|
|
14
16
|
export * from "./utils.js";
|
|
15
17
|
//# 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,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./bipedal.js";
|
|
2
|
+
export * from "./buffer.js";
|
|
3
|
+
export * from "./field.js";
|
|
4
|
+
export * from "./number.js";
|
|
5
|
+
export * from "./readable.js";
|
|
6
|
+
export * from "./string.js";
|
|
2
7
|
export * from "./struct.js";
|
|
3
|
-
export { Struct as default } from "./struct.js";
|
|
4
|
-
export * from "./sync-promise.js";
|
|
5
|
-
export * from "./types/index.js";
|
|
6
8
|
export * from "./utils.js";
|
|
7
9
|
//# 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,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/esm/number.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Field } from "./field.js";
|
|
2
|
+
export interface NumberField<T> extends Field<T, never, never> {
|
|
3
|
+
<const U>(infer?: U): Field<U, never, never>;
|
|
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,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;IAC1D,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAChD;AAeD,eAAO,MAAM,EAAE,qBASd,CAAC;AAEF,eAAO,MAAM,EAAE,qBASd,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC;AAEF,eAAO,MAAM,GAAG,qBASf,CAAC"}
|
package/esm/number.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getInt16, getInt32, getInt64, getInt8, getUint16, getUint32, getUint64, setInt16, setInt32, setInt64, setUint16, setUint32, setUint64, } from "@yume-chan/no-data-view";
|
|
2
|
+
import { bipedal } from "./bipedal.js";
|
|
3
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
4
|
+
function factory(size, serialize, deserialize) {
|
|
5
|
+
const result = () => result;
|
|
6
|
+
result.size = size;
|
|
7
|
+
result.serialize = serialize;
|
|
8
|
+
result.deserialize = deserialize;
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
export const u8 = factory(1, (value, { buffer, index }) => {
|
|
12
|
+
buffer[index] = value;
|
|
13
|
+
}, bipedal(function* (then, { reader }) {
|
|
14
|
+
const data = yield* then(reader.readExactly(1));
|
|
15
|
+
return data[0];
|
|
16
|
+
}));
|
|
17
|
+
export const s8 = factory(1, (value, { buffer, index }) => {
|
|
18
|
+
buffer[index] = value;
|
|
19
|
+
}, bipedal(function* (then, { reader }) {
|
|
20
|
+
const data = yield* then(reader.readExactly(1));
|
|
21
|
+
return getInt8(data, 0);
|
|
22
|
+
}));
|
|
23
|
+
export const u16 = factory(2, (value, { buffer, index, littleEndian }) => {
|
|
24
|
+
setUint16(buffer, index, value, littleEndian);
|
|
25
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
26
|
+
const data = yield* then(reader.readExactly(2));
|
|
27
|
+
return getUint16(data, 0, littleEndian);
|
|
28
|
+
}));
|
|
29
|
+
export const s16 = factory(2, (value, { buffer, index, littleEndian }) => {
|
|
30
|
+
setInt16(buffer, index, value, littleEndian);
|
|
31
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
32
|
+
const data = yield* then(reader.readExactly(2));
|
|
33
|
+
return getInt16(data, 0, littleEndian);
|
|
34
|
+
}));
|
|
35
|
+
export const u32 = factory(4, (value, { buffer, index, littleEndian }) => {
|
|
36
|
+
setUint32(buffer, index, value, littleEndian);
|
|
37
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
38
|
+
const data = yield* then(reader.readExactly(4));
|
|
39
|
+
return getUint32(data, 0, littleEndian);
|
|
40
|
+
}));
|
|
41
|
+
export const s32 = factory(4, (value, { buffer, index, littleEndian }) => {
|
|
42
|
+
setInt32(buffer, index, value, littleEndian);
|
|
43
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
44
|
+
const data = yield* then(reader.readExactly(4));
|
|
45
|
+
return getInt32(data, 0, littleEndian);
|
|
46
|
+
}));
|
|
47
|
+
export const u64 = factory(8, (value, { buffer, index, littleEndian }) => {
|
|
48
|
+
setUint64(buffer, index, value, littleEndian);
|
|
49
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
50
|
+
const data = yield* then(reader.readExactly(8));
|
|
51
|
+
return getUint64(data, 0, littleEndian);
|
|
52
|
+
}));
|
|
53
|
+
export const s64 = factory(8, (value, { buffer, index, littleEndian }) => {
|
|
54
|
+
setInt64(buffer, index, value, littleEndian);
|
|
55
|
+
}, bipedal(function* (then, { reader, littleEndian }) {
|
|
56
|
+
const data = yield* then(reader.readExactly(8));
|
|
57
|
+
return getInt64(data, 0, littleEndian);
|
|
58
|
+
}));
|
|
59
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../src/number.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAOvC,0BAA0B;AAC1B,SAAS,OAAO,CACZ,IAAY,EACZ,SAA8C,EAC9C,WAAkD;IAElD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;IAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,OAAO,MAAe,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CACrB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACzB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1B,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC;AACpB,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CACrB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACzB,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1B,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAClD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC,CAAC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CACtB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC,EACD,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC,CAAC,CACL,CAAC"}
|
|
@@ -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
|
}
|
|
@@ -20,6 +20,6 @@ export interface AsyncExactReadable {
|
|
|
20
20
|
* The stream must return exactly `length` bytes or data. If that's not possible
|
|
21
21
|
* (due to end of file or other error condition), it must throw an {@link ExactReadableEndedError}.
|
|
22
22
|
*/
|
|
23
|
-
readExactly(length: number):
|
|
23
|
+
readExactly(length: number): MaybePromiseLike<Uint8Array>;
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# 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,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"}
|
|
@@ -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"}
|
package/esm/string.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BufferLengthConverter } from "./buffer.js";
|
|
2
|
+
import type { Field } from "./field.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,YAAY,CAAC;AAGxC,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;AAiBD,eAAO,MAAM,MAAM,EAAE,MAAyB,CAAC"}
|
package/esm/string.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buffer } from "./buffer.js";
|
|
2
|
+
import { decodeUtf8, encodeUtf8 } from "./utils.js";
|
|
3
|
+
// Rollup doesn't support `/* #__NO_SIDE_EFFECTS__ */ export const a = () => {}
|
|
4
|
+
/* #__NO_SIDE_EFFECTS__ */
|
|
5
|
+
function _string(lengthOrField) {
|
|
6
|
+
const field = buffer(lengthOrField, {
|
|
7
|
+
convert: decodeUtf8,
|
|
8
|
+
back: encodeUtf8,
|
|
9
|
+
});
|
|
10
|
+
field.as = () => field;
|
|
11
|
+
return field;
|
|
12
|
+
}
|
|
13
|
+
export const string = _string;
|
|
14
|
+
//# 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,+EAA+E;AAC/E,0BAA0B;AAC1B,SAAS,OAAO,CACZ,aAAuE;IAIvE,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;AAED,MAAM,CAAC,MAAM,MAAM,GAAW,OAAgB,CAAC"}
|