@yume-chan/struct 1.0.0 → 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 (79) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +1 -1
  3. package/esm/bipedal.d.ts +2 -1
  4. package/esm/bipedal.d.ts.map +1 -1
  5. package/esm/bipedal.js +10 -3
  6. package/esm/bipedal.js.map +1 -1
  7. package/esm/buffer.d.ts +20 -11
  8. package/esm/buffer.d.ts.map +1 -1
  9. package/esm/buffer.js +137 -140
  10. package/esm/buffer.js.map +1 -1
  11. package/esm/concat.d.ts +13 -0
  12. package/esm/concat.d.ts.map +1 -0
  13. package/esm/concat.js +10 -0
  14. package/esm/concat.js.map +1 -0
  15. package/esm/extend.d.ts +6 -0
  16. package/esm/extend.d.ts.map +1 -0
  17. package/esm/extend.js +10 -0
  18. package/esm/extend.js.map +1 -0
  19. package/esm/field/factory.d.ts +13 -0
  20. package/esm/field/factory.d.ts.map +1 -0
  21. package/esm/field/factory.js +21 -0
  22. package/esm/field/factory.js.map +1 -0
  23. package/esm/field/index.d.ts +4 -0
  24. package/esm/field/index.d.ts.map +1 -0
  25. package/esm/field/index.js +4 -0
  26. package/esm/field/index.js.map +1 -0
  27. package/esm/field/serialize.d.ts +8 -0
  28. package/esm/field/serialize.d.ts.map +1 -0
  29. package/esm/field/serialize.js +33 -0
  30. package/esm/field/serialize.js.map +1 -0
  31. package/esm/field/types.d.ts +33 -0
  32. package/esm/field/types.d.ts.map +1 -0
  33. package/esm/field/types.js +2 -0
  34. package/esm/field/types.js.map +1 -0
  35. package/esm/index.d.ts +4 -1
  36. package/esm/index.d.ts.map +1 -1
  37. package/esm/index.js +4 -1
  38. package/esm/index.js.map +1 -1
  39. package/esm/number.d.ts +3 -3
  40. package/esm/number.d.ts.map +1 -1
  41. package/esm/number.js +29 -31
  42. package/esm/number.js.map +1 -1
  43. package/esm/readable.d.ts +6 -0
  44. package/esm/readable.d.ts.map +1 -1
  45. package/esm/readable.js +19 -0
  46. package/esm/readable.js.map +1 -1
  47. package/esm/string.d.ts +1 -1
  48. package/esm/string.d.ts.map +1 -1
  49. package/esm/string.js +4 -5
  50. package/esm/string.js.map +1 -1
  51. package/esm/struct.d.ts +20 -22
  52. package/esm/struct.d.ts.map +1 -1
  53. package/esm/struct.js +55 -18
  54. package/esm/struct.js.map +1 -1
  55. package/esm/types.d.ts +20 -0
  56. package/esm/types.d.ts.map +1 -0
  57. package/esm/types.js +2 -0
  58. package/esm/types.js.map +1 -0
  59. package/package.json +7 -7
  60. package/src/bipedal.ts +18 -8
  61. package/src/buffer.ts +236 -162
  62. package/src/concat.ts +78 -0
  63. package/src/extend.ts +37 -0
  64. package/src/field/factory.ts +64 -0
  65. package/src/field/index.ts +3 -0
  66. package/src/field/serialize.ts +58 -0
  67. package/src/field/types.ts +48 -0
  68. package/src/index.ts +4 -1
  69. package/src/number.ts +48 -37
  70. package/src/readable.ts +28 -0
  71. package/src/string.ts +6 -8
  72. package/src/struct.ts +129 -86
  73. package/src/types.ts +37 -0
  74. package/tsconfig.build.tsbuildinfo +1 -1
  75. package/esm/field.d.ts +0 -21
  76. package/esm/field.d.ts.map +0 -1
  77. package/esm/field.js +0 -2
  78. package/esm/field.js.map +0 -1
  79. package/src/field.ts +0 -27
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log - @yume-chan/struct
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - b79df96: Refactor struct package to allow `struct`s to be used as `field`
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @yume-chan/no-data-view@2.0.0
13
+
3
14
  ## 1.0.1
4
15
 
5
16
  ### Patch Changes
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020-2024 Simon Chan
3
+ Copyright (c) 2020-2025 Simon Chan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/esm/bipedal.d.ts CHANGED
@@ -1,5 +1,6 @@
1
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>): {
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): {
3
4
  (this: This, ...args: A): MaybePromiseLike<T>;
4
5
  };
5
6
  //# sourceMappingURL=bipedal.d.ts.map
@@ -1 +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"}
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 CHANGED
@@ -11,8 +11,9 @@ function advance(iterator, next) {
11
11
  next = value;
12
12
  }
13
13
  }
14
- export function bipedal(fn) {
15
- return function (...args) {
14
+ /* #__NO_SIDE_EFFECTS__ */
15
+ export function bipedal(fn, bindThis) {
16
+ function result(...args) {
16
17
  const iterator = fn.call(this, function* (value) {
17
18
  if (isPromiseLike(value)) {
18
19
  const result = yield value;
@@ -26,6 +27,12 @@ export function bipedal(fn) {
26
27
  return value;
27
28
  }, ...args);
28
29
  return advance(iterator, undefined);
29
- };
30
+ }
31
+ if (bindThis) {
32
+ return result.bind(bindThis);
33
+ }
34
+ else {
35
+ return result;
36
+ }
30
37
  }
31
38
  //# sourceMappingURL=bipedal.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"bipedal.js","sourceRoot":"","sources":["../src/bipedal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,SAAS,OAAO,CACZ,QAAuC,EACvC,IAAa;IAEb,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,IAAI,CACb,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACjD,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CACnD,CAAC;QACN,CAAC;QACD,IAAI,GAAG,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAQD,0BAA0B;AAC1B,MAAM,UAAU,OAAO,CACnB,EAAgC,EAChC,QAAe;IAEf,SAAS,MAAM,CAAa,GAAG,IAAO;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CACpB,IAAI,EACJ,QAAQ,CAAC,EACL,KAA0B;YAM1B,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;gBAC3B,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;oBACvB,OAAO,MAAM,CAAC,QAAQ,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACJ,MAAM,MAAM,CAAC,KAAK,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,EACD,GAAG,IAAI,CACD,CAAC;QACX,OAAO,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC"}
package/esm/buffer.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { Field } from "./field.js";
1
+ import type { Field } from "./field/index.js";
2
+ export declare const EmptyUint8Array: Uint8Array<ArrayBuffer>;
2
3
  export interface Converter<From, To> {
3
4
  convert: (value: From) => To;
4
5
  back: (value: To) => From;
@@ -7,15 +8,23 @@ export interface BufferLengthConverter<K, KT> extends Converter<KT, number> {
7
8
  field: K;
8
9
  }
9
10
  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>;
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>;
18
19
  }
19
- export declare const EmptyUint8Array: Uint8Array<ArrayBuffer>;
20
- export declare const buffer: BufferLike;
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 {};
21
30
  //# sourceMappingURL=buffer.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
package/esm/buffer.js CHANGED
@@ -1,173 +1,170 @@
1
- import { bipedal } from "./bipedal.js";
1
+ import { field } from "./field/index.js";
2
2
  export const EmptyUint8Array = new Uint8Array(0);
3
- export const buffer = function (lengthOrField, converter) {
3
+ /* #__NO_SIDE_EFFECTS__ */
4
+ function _buffer(lengthOrField, converter) {
5
+ // Fixed length
4
6
  if (typeof lengthOrField === "number") {
5
7
  if (converter) {
6
8
  if (lengthOrField === 0) {
7
- return {
8
- size: 0,
9
- serialize: () => { },
10
- deserialize: () => converter.convert(EmptyUint8Array),
11
- };
9
+ return field(0, "byob", () => { },
10
+ // eslint-disable-next-line require-yield
11
+ function* () {
12
+ return converter.convert(EmptyUint8Array);
13
+ });
12
14
  }
13
- return {
14
- size: lengthOrField,
15
- serialize: (value, { buffer, index }) => {
16
- buffer.set(converter.back(value).slice(0, lengthOrField), index);
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);
17
23
  },
18
- deserialize: bipedal(function* (then, { reader }) {
19
- const array = yield* then(reader.readExactly(lengthOrField));
20
- return converter.convert(array);
21
- }),
22
- };
24
+ });
23
25
  }
24
26
  if (lengthOrField === 0) {
25
- return {
26
- size: 0,
27
- serialize: () => { },
28
- deserialize: () => EmptyUint8Array,
29
- };
27
+ return field(0, "byob", () => { },
28
+ // eslint-disable-next-line require-yield
29
+ function* () {
30
+ return EmptyUint8Array;
31
+ });
30
32
  }
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
- };
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
+ });
38
40
  }
39
- // Some Field type might be `function`s
41
+ // Declare length field
42
+ // Some field types are `function`s
40
43
  if ((typeof lengthOrField === "object" ||
41
44
  typeof lengthOrField === "function") &&
42
45
  "serialize" in lengthOrField) {
43
46
  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);
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);
58
72
  },
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
- };
73
+ });
65
74
  }
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
- };
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
+ });
84
99
  }
100
+ // Reference exiting length field
85
101
  if (typeof lengthOrField === "string") {
86
102
  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];
103
+ return field(0, "default", (source) => source,
104
+ // eslint-disable-next-line require-yield
105
+ function* (_then, reader, { dependencies }) {
106
+ const length = dependencies[lengthOrField];
121
107
  if (length === 0) {
122
108
  return EmptyUint8Array;
123
109
  }
124
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;
125
131
  },
126
- };
132
+ });
127
133
  }
134
+ // Reference existing length field + converter
128
135
  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];
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];
165
140
  const length = lengthOrField.convert(rawLength);
166
141
  if (length === 0) {
167
142
  return EmptyUint8Array;
168
143
  }
169
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;
170
166
  },
171
- };
172
- };
167
+ });
168
+ }
169
+ export const buffer = _buffer;
173
170
  //# sourceMappingURL=buffer.js.map
package/esm/buffer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
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