@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.
Files changed (119) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/LICENSE +1 -1
  3. package/README.md +85 -714
  4. package/esm/bipedal.d.ts +5 -0
  5. package/esm/bipedal.d.ts.map +1 -0
  6. package/esm/bipedal.js +31 -0
  7. package/esm/bipedal.js.map +1 -0
  8. package/esm/buffer.d.ts +21 -0
  9. package/esm/buffer.d.ts.map +1 -0
  10. package/esm/buffer.js +173 -0
  11. package/esm/buffer.js.map +1 -0
  12. package/esm/field.d.ts +21 -0
  13. package/esm/field.d.ts.map +1 -0
  14. package/esm/field.js +2 -0
  15. package/esm/field.js.map +1 -0
  16. package/esm/index.d.ts +6 -4
  17. package/esm/index.d.ts.map +1 -1
  18. package/esm/index.js +6 -4
  19. package/esm/index.js.map +1 -1
  20. package/esm/number.d.ts +13 -0
  21. package/esm/number.d.ts.map +1 -0
  22. package/esm/number.js +59 -0
  23. package/esm/number.js.map +1 -0
  24. package/esm/{basic/stream.d.ts → readable.d.ts} +3 -3
  25. package/esm/readable.d.ts.map +1 -0
  26. package/esm/{basic/stream.js → readable.js} +1 -2
  27. package/esm/readable.js.map +1 -0
  28. package/esm/string.d.ts +16 -0
  29. package/esm/string.d.ts.map +1 -0
  30. package/esm/string.js +14 -0
  31. package/esm/string.js.map +1 -0
  32. package/esm/struct.d.ts +24 -127
  33. package/esm/struct.d.ts.map +1 -1
  34. package/esm/struct.js +72 -214
  35. package/esm/struct.js.map +1 -1
  36. package/esm/utils.d.ts +10 -45
  37. package/esm/utils.d.ts.map +1 -1
  38. package/esm/utils.js +12 -11
  39. package/esm/utils.js.map +1 -1
  40. package/package.json +11 -14
  41. package/src/bipedal.ts +55 -0
  42. package/src/buffer.ts +260 -0
  43. package/src/field.ts +27 -0
  44. package/src/index.ts +6 -4
  45. package/src/number.ts +123 -0
  46. package/src/{basic/stream.ts → readable.ts} +3 -4
  47. package/src/string.ts +43 -0
  48. package/src/struct.ts +156 -628
  49. package/src/utils.ts +18 -69
  50. package/tsconfig.build.json +6 -1
  51. package/tsconfig.build.tsbuildinfo +1 -1
  52. package/CHANGELOG.json +0 -161
  53. package/esm/basic/definition.d.ts +0 -44
  54. package/esm/basic/definition.d.ts.map +0 -1
  55. package/esm/basic/definition.js +0 -24
  56. package/esm/basic/definition.js.map +0 -1
  57. package/esm/basic/field-value.d.ts +0 -39
  58. package/esm/basic/field-value.d.ts.map +0 -1
  59. package/esm/basic/field-value.js +0 -46
  60. package/esm/basic/field-value.js.map +0 -1
  61. package/esm/basic/index.d.ts +0 -6
  62. package/esm/basic/index.d.ts.map +0 -1
  63. package/esm/basic/index.js +0 -6
  64. package/esm/basic/index.js.map +0 -1
  65. package/esm/basic/options.d.ts +0 -10
  66. package/esm/basic/options.d.ts.map +0 -1
  67. package/esm/basic/options.js +0 -4
  68. package/esm/basic/options.js.map +0 -1
  69. package/esm/basic/stream.d.ts.map +0 -1
  70. package/esm/basic/stream.js.map +0 -1
  71. package/esm/basic/struct-value.d.ts +0 -26
  72. package/esm/basic/struct-value.d.ts.map +0 -1
  73. package/esm/basic/struct-value.js +0 -57
  74. package/esm/basic/struct-value.js.map +0 -1
  75. package/esm/sync-promise.d.ts +0 -13
  76. package/esm/sync-promise.d.ts.map +0 -1
  77. package/esm/sync-promise.js +0 -71
  78. package/esm/sync-promise.js.map +0 -1
  79. package/esm/types/bigint.d.ts +0 -26
  80. package/esm/types/bigint.d.ts.map +0 -1
  81. package/esm/types/bigint.js +0 -47
  82. package/esm/types/bigint.js.map +0 -1
  83. package/esm/types/buffer/base.d.ts +0 -65
  84. package/esm/types/buffer/base.d.ts.map +0 -1
  85. package/esm/types/buffer/base.js +0 -101
  86. package/esm/types/buffer/base.js.map +0 -1
  87. package/esm/types/buffer/fixed-length.d.ts +0 -9
  88. package/esm/types/buffer/fixed-length.d.ts.map +0 -1
  89. package/esm/types/buffer/fixed-length.js +0 -7
  90. package/esm/types/buffer/fixed-length.js.map +0 -1
  91. package/esm/types/buffer/index.d.ts +0 -4
  92. package/esm/types/buffer/index.d.ts.map +0 -1
  93. package/esm/types/buffer/index.js +0 -4
  94. package/esm/types/buffer/index.js.map +0 -1
  95. package/esm/types/buffer/variable-length.d.ts +0 -45
  96. package/esm/types/buffer/variable-length.d.ts.map +0 -1
  97. package/esm/types/buffer/variable-length.js +0 -76
  98. package/esm/types/buffer/variable-length.js.map +0 -1
  99. package/esm/types/index.d.ts +0 -4
  100. package/esm/types/index.d.ts.map +0 -1
  101. package/esm/types/index.js +0 -4
  102. package/esm/types/index.js.map +0 -1
  103. package/esm/types/number.d.ts +0 -28
  104. package/esm/types/number.d.ts.map +0 -1
  105. package/esm/types/number.js +0 -111
  106. package/esm/types/number.js.map +0 -1
  107. package/src/basic/definition.ts +0 -68
  108. package/src/basic/field-value.ts +0 -75
  109. package/src/basic/index.ts +0 -5
  110. package/src/basic/options.ts +0 -19
  111. package/src/basic/struct-value.ts +0 -67
  112. package/src/sync-promise.ts +0 -134
  113. package/src/types/bigint.ts +0 -121
  114. package/src/types/buffer/base.ts +0 -197
  115. package/src/types/buffer/fixed-length.ts +0 -17
  116. package/src/types/buffer/index.ts +0 -3
  117. package/src/types/buffer/variable-length.ts +0 -174
  118. package/src/types/index.ts +0 -3
  119. package/src/types/number.ts +0 -173
@@ -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"}
@@ -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
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=field.js.map
@@ -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 "./basic/index.js";
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
@@ -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,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,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 "./basic/index.js";
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,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,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"}
@@ -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":"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"}
@@ -1,4 +1,4 @@
1
- import type { ValueOrPromise } from "../utils.js";
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): ValueOrPromise<Uint8Array>;
23
+ readExactly(length: number): MaybePromiseLike<Uint8Array>;
24
24
  }
25
- //# sourceMappingURL=stream.d.ts.map
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"}
@@ -2,7 +2,6 @@
2
2
  export class ExactReadableEndedError extends Error {
3
3
  constructor() {
4
4
  super("ExactReadable ended");
5
- Object.setPrototypeOf(this, new.target.prototype);
6
5
  }
7
6
  }
8
- //# sourceMappingURL=stream.js.map
7
+ //# 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"}
@@ -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"}