@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.
Files changed (150) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/LICENSE +1 -1
  3. package/README.md +85 -714
  4. package/esm/bipedal.d.ts +6 -0
  5. package/esm/bipedal.d.ts.map +1 -0
  6. package/esm/bipedal.js +38 -0
  7. package/esm/bipedal.js.map +1 -0
  8. package/esm/buffer.d.ts +30 -0
  9. package/esm/buffer.d.ts.map +1 -0
  10. package/esm/buffer.js +170 -0
  11. package/esm/buffer.js.map +1 -0
  12. package/esm/concat.d.ts +13 -0
  13. package/esm/concat.d.ts.map +1 -0
  14. package/esm/concat.js +10 -0
  15. package/esm/concat.js.map +1 -0
  16. package/esm/extend.d.ts +6 -0
  17. package/esm/extend.d.ts.map +1 -0
  18. package/esm/extend.js +10 -0
  19. package/esm/extend.js.map +1 -0
  20. package/esm/field/factory.d.ts +13 -0
  21. package/esm/field/factory.d.ts.map +1 -0
  22. package/esm/field/factory.js +21 -0
  23. package/esm/field/factory.js.map +1 -0
  24. package/esm/field/index.d.ts +4 -0
  25. package/esm/field/index.d.ts.map +1 -0
  26. package/esm/field/index.js +4 -0
  27. package/esm/field/index.js.map +1 -0
  28. package/esm/field/serialize.d.ts +8 -0
  29. package/esm/field/serialize.d.ts.map +1 -0
  30. package/esm/field/serialize.js +33 -0
  31. package/esm/field/serialize.js.map +1 -0
  32. package/esm/field/types.d.ts +33 -0
  33. package/esm/field/types.d.ts.map +1 -0
  34. package/esm/field/types.js +2 -0
  35. package/esm/field/types.js.map +1 -0
  36. package/esm/index.d.ts +9 -4
  37. package/esm/index.d.ts.map +1 -1
  38. package/esm/index.js +9 -4
  39. package/esm/index.js.map +1 -1
  40. package/esm/number.d.ts +13 -0
  41. package/esm/number.d.ts.map +1 -0
  42. package/esm/number.js +57 -0
  43. package/esm/number.js.map +1 -0
  44. package/esm/{basic/stream.d.ts → readable.d.ts} +9 -3
  45. package/esm/readable.d.ts.map +1 -0
  46. package/esm/readable.js +26 -0
  47. package/esm/readable.js.map +1 -0
  48. package/esm/string.d.ts +16 -0
  49. package/esm/string.d.ts.map +1 -0
  50. package/esm/string.js +13 -0
  51. package/esm/string.js.map +1 -0
  52. package/esm/struct.d.ts +22 -140
  53. package/esm/struct.d.ts.map +1 -1
  54. package/esm/struct.js +109 -227
  55. package/esm/struct.js.map +1 -1
  56. package/esm/types.d.ts +20 -0
  57. package/esm/types.d.ts.map +1 -0
  58. package/esm/types.js +2 -0
  59. package/esm/types.js.map +1 -0
  60. package/esm/utils.d.ts +10 -45
  61. package/esm/utils.d.ts.map +1 -1
  62. package/esm/utils.js +8 -9
  63. package/esm/utils.js.map +1 -1
  64. package/package.json +11 -12
  65. package/src/bipedal.ts +65 -0
  66. package/src/buffer.ts +334 -0
  67. package/src/concat.ts +78 -0
  68. package/src/extend.ts +37 -0
  69. package/src/field/factory.ts +64 -0
  70. package/src/field/index.ts +3 -0
  71. package/src/field/serialize.ts +58 -0
  72. package/src/field/types.ts +48 -0
  73. package/src/index.ts +9 -4
  74. package/src/number.ts +134 -0
  75. package/src/{basic/stream.ts → readable.ts} +31 -4
  76. package/src/string.ts +41 -0
  77. package/src/struct.ts +200 -670
  78. package/src/types.ts +37 -0
  79. package/src/utils.ts +14 -67
  80. package/tsconfig.build.json +6 -1
  81. package/tsconfig.build.tsbuildinfo +1 -1
  82. package/CHANGELOG.json +0 -173
  83. package/esm/basic/definition.d.ts +0 -44
  84. package/esm/basic/definition.d.ts.map +0 -1
  85. package/esm/basic/definition.js +0 -24
  86. package/esm/basic/definition.js.map +0 -1
  87. package/esm/basic/field-value.d.ts +0 -39
  88. package/esm/basic/field-value.d.ts.map +0 -1
  89. package/esm/basic/field-value.js +0 -46
  90. package/esm/basic/field-value.js.map +0 -1
  91. package/esm/basic/index.d.ts +0 -6
  92. package/esm/basic/index.d.ts.map +0 -1
  93. package/esm/basic/index.js +0 -6
  94. package/esm/basic/index.js.map +0 -1
  95. package/esm/basic/options.d.ts +0 -10
  96. package/esm/basic/options.d.ts.map +0 -1
  97. package/esm/basic/options.js +0 -4
  98. package/esm/basic/options.js.map +0 -1
  99. package/esm/basic/stream.d.ts.map +0 -1
  100. package/esm/basic/stream.js +0 -8
  101. package/esm/basic/stream.js.map +0 -1
  102. package/esm/basic/struct-value.d.ts +0 -30
  103. package/esm/basic/struct-value.d.ts.map +0 -1
  104. package/esm/basic/struct-value.js +0 -62
  105. package/esm/basic/struct-value.js.map +0 -1
  106. package/esm/sync-promise.d.ts +0 -13
  107. package/esm/sync-promise.d.ts.map +0 -1
  108. package/esm/sync-promise.js +0 -71
  109. package/esm/sync-promise.js.map +0 -1
  110. package/esm/types/bigint.d.ts +0 -25
  111. package/esm/types/bigint.d.ts.map +0 -1
  112. package/esm/types/bigint.js +0 -46
  113. package/esm/types/bigint.js.map +0 -1
  114. package/esm/types/buffer/base.d.ts +0 -69
  115. package/esm/types/buffer/base.d.ts.map +0 -1
  116. package/esm/types/buffer/base.js +0 -100
  117. package/esm/types/buffer/base.js.map +0 -1
  118. package/esm/types/buffer/fixed-length.d.ts +0 -9
  119. package/esm/types/buffer/fixed-length.d.ts.map +0 -1
  120. package/esm/types/buffer/fixed-length.js +0 -7
  121. package/esm/types/buffer/fixed-length.js.map +0 -1
  122. package/esm/types/buffer/index.d.ts +0 -4
  123. package/esm/types/buffer/index.d.ts.map +0 -1
  124. package/esm/types/buffer/index.js +0 -4
  125. package/esm/types/buffer/index.js.map +0 -1
  126. package/esm/types/buffer/variable-length.d.ts +0 -46
  127. package/esm/types/buffer/variable-length.d.ts.map +0 -1
  128. package/esm/types/buffer/variable-length.js +0 -87
  129. package/esm/types/buffer/variable-length.js.map +0 -1
  130. package/esm/types/index.d.ts +0 -4
  131. package/esm/types/index.d.ts.map +0 -1
  132. package/esm/types/index.js +0 -4
  133. package/esm/types/index.js.map +0 -1
  134. package/esm/types/number.d.ts +0 -28
  135. package/esm/types/number.d.ts.map +0 -1
  136. package/esm/types/number.js +0 -99
  137. package/esm/types/number.js.map +0 -1
  138. package/src/basic/definition.ts +0 -68
  139. package/src/basic/field-value.ts +0 -75
  140. package/src/basic/index.ts +0 -5
  141. package/src/basic/options.ts +0 -19
  142. package/src/basic/struct-value.ts +0 -85
  143. package/src/sync-promise.ts +0 -134
  144. package/src/types/bigint.ts +0 -124
  145. package/src/types/buffer/base.ts +0 -198
  146. package/src/types/buffer/fixed-length.ts +0 -22
  147. package/src/types/buffer/index.ts +0 -3
  148. package/src/types/buffer/variable-length.ts +0 -198
  149. package/src/types/index.ts +0 -3
  150. package/src/types/number.ts +0 -166
@@ -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"}
@@ -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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"}
@@ -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"}
@@ -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,4 @@
1
+ export * from "./factory.js";
2
+ export * from "./serialize.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from "./factory.js";
2
+ export * from "./serialize.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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 "./basic/index.js";
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 { Struct as default } from "./struct.js";
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
@@ -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,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 "./basic/index.js";
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 { Struct as default } from "./struct.js";
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,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,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"}
@@ -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"}