@elaraai/east 1.0.76 → 1.0.78

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 (70) hide show
  1. package/dist/src/fuzz.d.ts +103 -11
  2. package/dist/src/fuzz.d.ts.map +1 -1
  3. package/dist/src/fuzz.js +226 -16
  4. package/dist/src/fuzz.js.map +1 -1
  5. package/dist/src/patch/fuzz.d.ts +26 -0
  6. package/dist/src/patch/fuzz.d.ts.map +1 -1
  7. package/dist/src/patch/fuzz.js +42 -4
  8. package/dist/src/patch/fuzz.js.map +1 -1
  9. package/dist/src/patch/type_of_patch.d.ts +14 -1
  10. package/dist/src/patch/type_of_patch.d.ts.map +1 -1
  11. package/dist/src/patch/type_of_patch.js +8 -13
  12. package/dist/src/patch/type_of_patch.js.map +1 -1
  13. package/dist/src/patch/type_of_patch.spec.d.ts +6 -0
  14. package/dist/src/patch/type_of_patch.spec.d.ts.map +1 -0
  15. package/dist/src/patch/type_of_patch.spec.js +74 -0
  16. package/dist/src/patch/type_of_patch.spec.js.map +1 -0
  17. package/dist/src/serialization/beast2/index.d.ts +22 -1
  18. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  19. package/dist/src/serialization/beast2/index.js +56 -1
  20. package/dist/src/serialization/beast2/index.js.map +1 -1
  21. package/dist/src/serialization/beast2/index.spec.js +16 -0
  22. package/dist/src/serialization/beast2/index.spec.js.map +1 -1
  23. package/dist/src/serialization/beast2/v4/container.js +10 -15
  24. package/dist/src/serialization/beast2/v4/container.js.map +1 -1
  25. package/dist/src/serialization/beast2/v4/type-table.d.ts +63 -34
  26. package/dist/src/serialization/beast2/v4/type-table.d.ts.map +1 -1
  27. package/dist/src/serialization/beast2/v4/type-table.js +353 -403
  28. package/dist/src/serialization/beast2/v4/type-table.js.map +1 -1
  29. package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
  30. package/dist/src/serialization/beast2/v5/deflate.js +147 -50
  31. package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
  32. package/dist/src/serialization/beast2/v5/deflate.spec.d.ts +6 -0
  33. package/dist/src/serialization/beast2/v5/deflate.spec.d.ts.map +1 -0
  34. package/dist/src/serialization/beast2/v5/deflate.spec.js +237 -0
  35. package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -0
  36. package/dist/src/serialization/beast2/v5/frame-pool.d.ts +119 -0
  37. package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -0
  38. package/dist/src/serialization/beast2/v5/frame-pool.js +235 -0
  39. package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -0
  40. package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts +6 -0
  41. package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts.map +1 -0
  42. package/dist/src/serialization/beast2/v5/frame-pool.spec.js +287 -0
  43. package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -0
  44. package/dist/src/serialization/beast2/v5/frame-worker.d.ts +6 -0
  45. package/dist/src/serialization/beast2/v5/frame-worker.d.ts.map +1 -0
  46. package/dist/src/serialization/beast2/v5/frame-worker.js +40 -0
  47. package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -0
  48. package/dist/src/serialization/beast2/v5/index.spec.js +292 -5
  49. package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
  50. package/dist/src/serialization/beast2/v5/lazy.d.ts +11 -8
  51. package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
  52. package/dist/src/serialization/beast2/v5/lazy.js +49 -39
  53. package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
  54. package/dist/src/serialization/beast2/v5/lazy.spec.js +98 -3
  55. package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
  56. package/dist/src/serialization/beast2/v5/stream.d.ts +88 -2
  57. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  58. package/dist/src/serialization/beast2/v5/stream.js +175 -22
  59. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  60. package/dist/src/serialization/index.d.ts +1 -1
  61. package/dist/src/serialization/index.d.ts.map +1 -1
  62. package/dist/src/serialization/index.js +1 -1
  63. package/dist/src/serialization/index.js.map +1 -1
  64. package/dist/src/type_of_type.d.ts +0 -5
  65. package/dist/src/type_of_type.d.ts.map +1 -1
  66. package/dist/src/type_of_type.js +51 -49
  67. package/dist/src/type_of_type.js.map +1 -1
  68. package/dist/src/type_of_type.to_etv.spec.js +75 -0
  69. package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
  70. package/package.json +1 -1
@@ -15,6 +15,30 @@ import { type EastTypeValue } from "./type_of_type.js";
15
15
  * @param seed - the stream seed; equal seeds reproduce equal output
16
16
  */
17
17
  export declare function seedFuzz(seed: number): void;
18
+ /** Options for {@link randomType}. */
19
+ export interface RandomTypeOptions {
20
+ /** Recursive types at the top level (default `true`). */
21
+ includeRecursive?: boolean;
22
+ /** Function types (default `true`). */
23
+ includeFunctions?: boolean;
24
+ /**
25
+ * Recursion below the top level (default `false`): a closed recursive type
26
+ * as a field, element or case at any depth; a recursive type shared by
27
+ * several fields of one struct (so `Array<T>` may be reached before `T`,
28
+ * the shape whose beast2 type table was not canonical — #770); and
29
+ * recursive bodies drawn at random rather than from the fixed patterns of
30
+ * {@link randomRecursiveType}, nested recursive types included — bare and
31
+ * through the container their own bodies recurse through (#773).
32
+ */
33
+ nestedRecursive?: boolean;
34
+ /**
35
+ * `EastTypeType` as a leaf (default `false`): a type whose values are type
36
+ * values — the shape every IR annotation and every e3 dataset type
37
+ * travels as. Values are random values of that variant, generated like any
38
+ * other recursive variant's.
39
+ */
40
+ includeTypeValues?: boolean;
41
+ }
18
42
  /**
19
43
  * Generates a random East type for fuzz testing.
20
44
  *
@@ -30,15 +54,22 @@ export declare function seedFuzz(seed: number): void;
30
54
  * - Structs have 0-4 random fields
31
55
  * - Variants have 1-3 random cases, with 30% chance of {@link OptionType}
32
56
  * - Recursive types include linked lists, trees, and option-wrapped patterns
57
+ * (and, with `nestedRecursive`, random bodies, nested and shared recursion)
33
58
  * - Function types have 0-3 arguments with random input/output types
59
+ *
60
+ * The random stream is consumed identically whatever the options, except by
61
+ * the branches an option enables, so an existing corpus keeps its shapes when
62
+ * a new option stays off.
34
63
  */
35
- export declare function randomType(depth?: number, options?: {
36
- includeRecursive?: boolean;
37
- includeFunctions?: boolean;
38
- }): EastType;
64
+ export declare function randomType(depth?: number, options?: RandomTypeOptions): EastType;
39
65
  /**
40
66
  * Generates a random recursive type pattern.
41
67
  *
68
+ * @param options - `randomBody` (default `false`) draws the body at random
69
+ * half of the time instead of from the fixed patterns below: a struct or
70
+ * variant whose self-references sit under Array, Option, Dict, Ref or a
71
+ * struct, with a nested closed recursive type or a type value as a leaf
72
+ * now and then, and always with a terminating path.
42
73
  * @returns A randomly generated {@link RecursiveType}
43
74
  *
44
75
  * @remarks
@@ -49,7 +80,20 @@ export declare function randomType(depth?: number, options?: {
49
80
  * - Binary tree: `rec t. <leaf: T, node: (left: t, right: t)>`
50
81
  * - Nested variant: `rec t. <a: T, b: (inner: t)>`
51
82
  */
52
- export declare function randomRecursiveType(): EastType;
83
+ export declare function randomRecursiveType(options?: {
84
+ randomBody?: boolean;
85
+ }): EastType;
86
+ /**
87
+ * A struct that names one recursive type from several fields — bare, under
88
+ * Array, Option and Dict — in random order, so the type may be reached first
89
+ * through a container and only then itself; half of the time the struct is
90
+ * itself the body of an enclosing recursive type, so a reader walking that
91
+ * body top-down meets the container before the wrapper it names (#773).
92
+ *
93
+ * @returns A {@link StructType} over one random {@link RecursiveType}, or a
94
+ * {@link RecursiveType} whose body is that struct
95
+ */
96
+ export declare function randomSharedRecursiveType(): EastType;
53
97
  /**
54
98
  * Generates a random function type.
55
99
  *
@@ -60,6 +104,12 @@ export declare function randomRecursiveType(): EastType;
60
104
  * Output types are also kept simple to avoid excessive nesting.
61
105
  */
62
106
  export declare function randomFunctionType(): EastType;
107
+ /** Options for {@link randomValueFor}. */
108
+ export interface RandomValueOptions {
109
+ /** Depth at which containers empty out and variants take a terminal case
110
+ * (default 5). A replay corpus keeps this low so many types fit. */
111
+ maxDepth?: number;
112
+ }
63
113
  /**
64
114
  * Creates a function that generates random values of a given type.
65
115
  *
@@ -78,8 +128,8 @@ export declare function randomFunctionType(): EastType;
78
128
  * - Variants randomly select one of their cases
79
129
  * - Recursive types generate finite values with depth limiting
80
130
  */
81
- export declare function randomValueFor(type: EastTypeValue): () => any;
82
- export declare function randomValueFor<T extends EastType>(type: T): () => ValueTypeOf<T>;
131
+ export declare function randomValueFor(type: EastTypeValue, options?: RandomValueOptions): () => any;
132
+ export declare function randomValueFor<T extends EastType>(type: T, options?: RandomValueOptions): () => ValueTypeOf<T>;
83
133
  /**
84
134
  * Runs a fuzz test over a generic function parameterized by a type.
85
135
  *
@@ -116,8 +166,50 @@ export declare function randomValueFor<T extends EastType>(type: T): () => Value
116
166
  * );
117
167
  * ```
118
168
  */
119
- export declare function fuzzerTest(fn: (type: EastType) => (value: any) => Promise<void>, n_types?: number, n_samples?: number, options?: {
120
- includeRecursive?: boolean;
121
- includeFunctions?: boolean;
122
- }): Promise<boolean>;
169
+ export declare function fuzzerTest(fn: (type: EastType) => (value: any) => Promise<void>, n_types?: number, n_samples?: number, options?: RandomTypeOptions): Promise<boolean>;
170
+ /**
171
+ * A short, process-independent name for a type: the FNV-1a-64 hash of its
172
+ * canonical beast2 type section (#770), as 16 hex digits. `printType` embeds
173
+ * the ids of recursive types, which depend on what a process built first, so
174
+ * it cannot name a case in a corpus replayed elsewhere.
175
+ *
176
+ * @param type - the type to name
177
+ * @returns 16 hex digits, equal for structurally equal types
178
+ */
179
+ export declare function typeFingerprint(type: EastType): string;
180
+ /** One generated type with sample values of it — a replay-corpus case. */
181
+ export interface FuzzValueCase<T extends EastType = EastType> {
182
+ /** The randomly generated East type */
183
+ type: T;
184
+ /** `printType(type)`, unique within one generation */
185
+ typeName: string;
186
+ /** {@link typeFingerprint} of the type — stable across processes */
187
+ fingerprint: string;
188
+ /** Sample values of `type` */
189
+ values: ValueTypeOf<T>[];
190
+ }
191
+ /** Options for {@link generateFuzzValues}. */
192
+ export interface FuzzValuesOptions extends RandomTypeOptions {
193
+ /** Number of distinct types to generate (default 50) */
194
+ numTypes?: number;
195
+ /** Number of sample values per type (default 3) */
196
+ numSamples?: number;
197
+ /** Depth at which sample values stop nesting (default 5; see
198
+ * {@link RandomValueOptions}) */
199
+ valueDepth?: number;
200
+ /** Seed for the deterministic random stream (default `0xea57`). The cases
201
+ * form a cross-runtime replay corpus, so generation must reproduce across
202
+ * exports — mint a fresh corpus by bumping the seed deliberately. */
203
+ seed?: number;
204
+ }
205
+ /**
206
+ * Generates distinct random types with sample values of each, for suites
207
+ * that replay one corpus on every runtime. Types whose values cannot be
208
+ * generated within the depth limit are skipped; generation stops after
209
+ * three attempts per requested type.
210
+ *
211
+ * @param options - how many types and samples, the seed, and the type kinds
212
+ * @returns the generated cases, in generation order
213
+ */
214
+ export declare function generateFuzzValues(options?: FuzzValuesOptions): FuzzValueCase[];
123
215
  //# sourceMappingURL=fuzz.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAmBjB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAiBxE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3C;AAgBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,KAAK,GAAE,MAAU,EACjB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvE,QAAQ,CAkEV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAmD9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAqB7C;AA+TD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,CAAC;AAC/D,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;AAuBlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EACrD,OAAO,GAAE,MAAY,EACrB,SAAS,GAAE,MAAW,EACtB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvE,OAAO,CAAC,OAAO,CAAC,CA4DlB"}
1
+ {"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,WAAW,EAmBjB,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAoD,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoBzG;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3C;AAgBD,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAYD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CACxB,KAAK,GAAE,MAAU,EACjB,OAAO,GAAE,iBAAsB,GAC9B,QAAQ,CA2EV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,QAAQ,CAsDpF;AA0ED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAapD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,QAAQ,CAqB7C;AA+TD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC;yEACqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,CAAC;AAC7F,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC;AA2BhH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,EACrD,OAAO,GAAE,MAAY,EACrB,SAAS,GAAE,MAAW,EACtB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CA4DlB;AAGD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAItD;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC1D,uCAAuC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;CAC1B;AAED,8CAA8C;AAC9C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;sCACkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;0EAEsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa,EAAE,CAgCnF"}
package/dist/src/fuzz.js CHANGED
@@ -12,8 +12,11 @@ import { compareFor } from "./comparison.js";
12
12
  import { isVariant, variant } from "./containers/variant.js";
13
13
  import { printType } from "./types.js";
14
14
  import { printFor } from "./serialization/east.js";
15
- import { toEastTypeValue } from "./type_of_type.js";
15
+ import { toEastTypeValue, EastTypeType, EastTypeValueType } from "./type_of_type.js";
16
16
  import { ref } from "./containers/ref.js";
17
+ import { BufferWriter } from "./serialization/binary-utils.js";
18
+ import { writeTypeSection } from "./serialization/beast2/v5/type-section.js";
19
+ import { fnv1a64 } from "./serialization/beast2/shared.js";
17
20
  /** Deterministic PRNG state (mulberry32). The fuzz output is a cross-runtime
18
21
  * REPLAY corpus: east-c and east-py compliance and the eager-replay pins all
19
22
  * key on the generated suite names, so generation must reproduce byte-for-byte
@@ -56,6 +59,15 @@ function randomPrimitiveType() {
56
59
  return DateTimeType;
57
60
  return BlobType;
58
61
  }
62
+ /** The options a child position inherits: no top-level-only kinds. */
63
+ function childOptions(options) {
64
+ return {
65
+ includeRecursive: false,
66
+ includeFunctions: false,
67
+ nestedRecursive: options.nestedRecursive ?? false,
68
+ includeTypeValues: options.includeTypeValues ?? false,
69
+ };
70
+ }
59
71
  /**
60
72
  * Generates a random East type for fuzz testing.
61
73
  *
@@ -71,15 +83,23 @@ function randomPrimitiveType() {
71
83
  * - Structs have 0-4 random fields
72
84
  * - Variants have 1-3 random cases, with 30% chance of {@link OptionType}
73
85
  * - Recursive types include linked lists, trees, and option-wrapped patterns
86
+ * (and, with `nestedRecursive`, random bodies, nested and shared recursion)
74
87
  * - Function types have 0-3 arguments with random input/output types
88
+ *
89
+ * The random stream is consumed identically whatever the options, except by
90
+ * the branches an option enables, so an existing corpus keeps its shapes when
91
+ * a new option stays off.
75
92
  */
76
93
  export function randomType(depth = 0, options = {}) {
77
- const { includeRecursive = true, includeFunctions = true } = options;
94
+ const { includeRecursive = true, includeFunctions = true, nestedRecursive = false, includeTypeValues = false } = options;
95
+ const child = childOptions(options);
78
96
  // Limit nesting to avoid stack overflow and keep tests fast
79
97
  const maxDepth = 3;
80
98
  // Higher chance of primitives at deeper levels
81
99
  const primitiveWeight = depth >= maxDepth ? 0.9 : 0.5;
82
100
  if (random() < primitiveWeight) {
101
+ if (includeTypeValues && random() < 0.15)
102
+ return EastTypeType;
83
103
  return randomPrimitiveType();
84
104
  }
85
105
  // Complex type - weights adjusted based on options
@@ -88,10 +108,11 @@ export function randomType(depth = 0, options = {}) {
88
108
  totalWeight += 1; // Recursive only at top level
89
109
  if (includeFunctions)
90
110
  totalWeight += 1;
91
- const r = random() * totalWeight;
111
+ const nestedWeight = nestedRecursive ? (depth === 0 ? 2 : 1) : 0; // closed leaf (+ shared struct at the top)
112
+ const r = random() * (totalWeight + nestedWeight);
92
113
  if (r < 1) {
93
114
  // Array
94
- return ArrayType(randomType(depth + 1, { includeRecursive: false, includeFunctions: false }));
115
+ return ArrayType(randomType(depth + 1, child));
95
116
  }
96
117
  else if (r < 2) {
97
118
  // Set (keys must be immutable)
@@ -99,14 +120,14 @@ export function randomType(depth = 0, options = {}) {
99
120
  }
100
121
  else if (r < 3) {
101
122
  // Dict (keys must be immutable)
102
- return DictType(StringType, randomType(depth + 1, { includeRecursive: false, includeFunctions: false }));
123
+ return DictType(StringType, randomType(depth + 1, child));
103
124
  }
104
125
  else if (r < 4) {
105
126
  // Struct with 0-4 fields
106
127
  const fieldCount = Math.floor(random() * 5);
107
128
  const fields = {};
108
129
  for (let i = 0; i < fieldCount; i++) {
109
- fields[`field${i}`] = randomType(depth + 1, { includeRecursive: false, includeFunctions: false });
130
+ fields[`field${i}`] = randomType(depth + 1, child);
110
131
  }
111
132
  return StructType(fields);
112
133
  }
@@ -114,14 +135,14 @@ export function randomType(depth = 0, options = {}) {
114
135
  // Variant
115
136
  if (random() < 0.3) {
116
137
  // Option type (common variant pattern)
117
- return OptionType(randomType(depth + 1, { includeRecursive: false, includeFunctions: false }));
138
+ return OptionType(randomType(depth + 1, child));
118
139
  }
119
140
  else {
120
141
  // Custom variant with 1-3 cases
121
142
  const caseCount = 1 + Math.floor(random() * 3);
122
143
  const cases = {};
123
144
  for (let i = 0; i < caseCount; i++) {
124
- cases[`case${i}`] = randomType(depth + 1, { includeRecursive: false, includeFunctions: false });
145
+ cases[`case${i}`] = randomType(depth + 1, child);
125
146
  }
126
147
  return VariantType(cases);
127
148
  }
@@ -137,17 +158,30 @@ export function randomType(depth = 0, options = {}) {
137
158
  return MatrixType(elemTypes[Math.floor(random() * elemTypes.length)]);
138
159
  }
139
160
  else if (r < 8 && includeRecursive && depth === 0) {
140
- // Recursive type - only at top level to avoid nested recursion complexity
141
- return randomRecursiveType();
161
+ // Recursive type at the top level
162
+ return randomRecursiveType({ randomBody: nestedRecursive });
142
163
  }
143
- else {
164
+ else if (r < totalWeight && includeFunctions) {
144
165
  // Function type
145
166
  return randomFunctionType();
146
167
  }
168
+ else if (r < totalWeight + 1) {
169
+ // A closed recursive type as a leaf below the top level
170
+ return randomRecursiveType({ randomBody: true });
171
+ }
172
+ else {
173
+ // One recursive type shared by several fields
174
+ return randomSharedRecursiveType();
175
+ }
147
176
  }
148
177
  /**
149
178
  * Generates a random recursive type pattern.
150
179
  *
180
+ * @param options - `randomBody` (default `false`) draws the body at random
181
+ * half of the time instead of from the fixed patterns below: a struct or
182
+ * variant whose self-references sit under Array, Option, Dict, Ref or a
183
+ * struct, with a nested closed recursive type or a type value as a leaf
184
+ * now and then, and always with a terminating path.
151
185
  * @returns A randomly generated {@link RecursiveType}
152
186
  *
153
187
  * @remarks
@@ -158,7 +192,10 @@ export function randomType(depth = 0, options = {}) {
158
192
  * - Binary tree: `rec t. <leaf: T, node: (left: t, right: t)>`
159
193
  * - Nested variant: `rec t. <a: T, b: (inner: t)>`
160
194
  */
161
- export function randomRecursiveType() {
195
+ export function randomRecursiveType(options = {}) {
196
+ if (options.randomBody && random() < 0.5) {
197
+ return RecursiveType((self) => randomRecursiveBody(self));
198
+ }
162
199
  const innerType = randomPrimitiveType();
163
200
  const pattern = Math.floor(random() * 5);
164
201
  switch (pattern) {
@@ -195,6 +232,112 @@ export function randomRecursiveType() {
195
232
  }));
196
233
  }
197
234
  }
235
+ /** A leaf of a random recursive body: a primitive, a small non-recursive
236
+ * compound, and — unless the leaf must terminate the value — a nested
237
+ * closed recursive type or a type value now and then. */
238
+ function randomRecursiveLeaf(terminal) {
239
+ const r = random();
240
+ if (r < 0.45)
241
+ return randomPrimitiveType();
242
+ if (r < 0.55)
243
+ return ArrayType(randomPrimitiveType());
244
+ if (r < 0.67 || terminal)
245
+ return StructType({ id: IntegerType, label: StringType });
246
+ if (r < 0.92)
247
+ return randomNestedRecursiveLeaf(); // nested recursion, SCC size 1
248
+ return EastTypeType;
249
+ }
250
+ /**
251
+ * A nested closed recursive type as a leaf of an enclosing wrapper's body:
252
+ * bare, or reached through the container its own body recurses through —
253
+ * `Array<T>` beside `T`'s `children: Array<self>`, `Option<T>` beside
254
+ * `next: Option<self>`, `Dict<String, T>` beside `children: Dict<String,
255
+ * self>`. In a canonical type table that container is one entry inside and
256
+ * outside the wrapper, and a reader walking the enclosing wrapper's body
257
+ * meets it before the nested wrapper it names — the shape east-ui's
258
+ * `TreeView.nodes` has and the #771 reader rejected (#773).
259
+ */
260
+ function randomNestedRecursiveLeaf() {
261
+ const r = random();
262
+ if (r < 0.25)
263
+ return randomRecursiveType();
264
+ if (r < 0.5)
265
+ return randomRecursiveType({ randomBody: true });
266
+ const value = randomPrimitiveType();
267
+ if (r < 0.7)
268
+ return ArrayType(RecursiveType((self) => StructType({ value, children: ArrayType(self) })));
269
+ if (r < 0.85)
270
+ return OptionType(RecursiveType((self) => StructType({ value, next: OptionType(self) })));
271
+ return DictType(StringType, RecursiveType((self) => StructType({ value, children: DictType(StringType, self) })));
272
+ }
273
+ /**
274
+ * A random body for a recursive type: a struct whose self-references sit
275
+ * under Array, Option or Dict (all of which can be empty), or a variant with
276
+ * at least one case that does not recurse. Either way every value has a
277
+ * finite spelling, so {@link randomValueFor} terminates.
278
+ */
279
+ function randomRecursiveBody(self) {
280
+ const viaContainer = () => {
281
+ const r = random();
282
+ if (r < 0.4)
283
+ return ArrayType(self);
284
+ if (r < 0.7)
285
+ return OptionType(self);
286
+ if (r < 0.85)
287
+ return DictType(StringType, self);
288
+ return ArrayType(StructType({ key: StringType, node: self }));
289
+ };
290
+ if (random() < 0.5) {
291
+ // Struct body: 1-3 fields, at least one recursing through a container.
292
+ const fieldCount = 1 + Math.floor(random() * 3);
293
+ const recursing = Math.floor(random() * fieldCount);
294
+ const fields = {};
295
+ for (let i = 0; i < fieldCount; i++) {
296
+ fields[`f${i}`] = i === recursing || random() < 0.3 ? viaContainer() : randomRecursiveLeaf(false);
297
+ }
298
+ return StructType(fields);
299
+ }
300
+ // Variant body: 2-4 cases, the first terminal, the rest recursing directly
301
+ // or through a struct, a Ref, or a container.
302
+ const caseCount = 2 + Math.floor(random() * 3);
303
+ const cases = {};
304
+ cases["end"] = randomRecursiveLeaf(true);
305
+ for (let i = 1; i < caseCount; i++) {
306
+ const r = random();
307
+ cases[`c${i}`] = r < 0.25 ? self
308
+ : r < 0.45 ? StructType({ left: self, right: self })
309
+ : r < 0.6 ? RefType(self)
310
+ : r < 0.8 ? viaContainer()
311
+ : randomRecursiveLeaf(false);
312
+ }
313
+ return VariantType(cases);
314
+ }
315
+ /**
316
+ * A struct that names one recursive type from several fields — bare, under
317
+ * Array, Option and Dict — in random order, so the type may be reached first
318
+ * through a container and only then itself; half of the time the struct is
319
+ * itself the body of an enclosing recursive type, so a reader walking that
320
+ * body top-down meets the container before the wrapper it names (#773).
321
+ *
322
+ * @returns A {@link StructType} over one random {@link RecursiveType}, or a
323
+ * {@link RecursiveType} whose body is that struct
324
+ */
325
+ export function randomSharedRecursiveType() {
326
+ const rec = randomRecursiveType({ randomBody: true });
327
+ const shapes = [rec, ArrayType(rec), OptionType(rec), DictType(StringType, rec), ArrayType(ArrayType(rec))];
328
+ // Fisher–Yates over the deterministic stream, then take 2-4 of them.
329
+ for (let i = shapes.length - 1; i > 0; i--) {
330
+ const j = Math.floor(random() * (i + 1));
331
+ [shapes[i], shapes[j]] = [shapes[j], shapes[i]];
332
+ }
333
+ const fieldCount = 2 + Math.floor(random() * 3);
334
+ const fields = {};
335
+ for (let i = 0; i < fieldCount; i++)
336
+ fields[`f${i}`] = shapes[i];
337
+ if (random() < 0.5)
338
+ return StructType(fields);
339
+ return RecursiveType((self) => StructType({ ...fields, next: OptionType(self) }));
340
+ }
198
341
  /**
199
342
  * Generates a random function type.
200
343
  *
@@ -554,13 +697,17 @@ function randomValueForRecursive(innerNode, ctx) {
554
697
  // Return a function that starts generation at depth 0
555
698
  return () => selfGenerator(0);
556
699
  }
557
- export function randomValueFor(type) {
700
+ export function randomValueFor(type, options = {}) {
558
701
  const ctx = {
559
702
  generators: new Map(),
560
- maxDepth: 5, // Limit recursion depth to avoid huge values
703
+ maxDepth: options.maxDepth ?? 5, // Limit recursion depth to avoid huge values
561
704
  };
562
705
  // Check if this is an EastType (not yet converted)
563
706
  if (!isVariant(type)) {
707
+ if (type === EastTypeType) {
708
+ const gen = buildValueGenerator(EastTypeValueType, ctx);
709
+ return () => gen(0);
710
+ }
564
711
  // Handle RecursiveType specially before conversion
565
712
  if (type.type === "Recursive") {
566
713
  return randomValueForRecursive(type.node, ctx);
@@ -611,7 +758,7 @@ export function randomValueFor(type) {
611
758
  */
612
759
  export async function fuzzerTest(fn, n_types = 100, n_samples = 10, options = {}) {
613
760
  // Default: include recursive types but NOT functions (can't generate values for functions)
614
- const { includeRecursive = true, includeFunctions = false } = options;
761
+ const { includeRecursive = true, includeFunctions = false, nestedRecursive = false, includeTypeValues = false } = options;
615
762
  let n_type_success = 0;
616
763
  let n_type_fail = 0;
617
764
  const type_cache = new Set();
@@ -622,7 +769,7 @@ export async function fuzzerTest(fn, n_types = 100, n_samples = 10, options = {}
622
769
  let type;
623
770
  let attempts = 0;
624
771
  while (true) {
625
- type = randomType(0, { includeRecursive, includeFunctions });
772
+ type = randomType(0, { includeRecursive, includeFunctions, nestedRecursive, includeTypeValues });
626
773
  const typeStr = printType(type);
627
774
  if (!type_cache.has(typeStr)) {
628
775
  type_cache.add(typeStr);
@@ -666,4 +813,67 @@ export async function fuzzerTest(fn, n_types = 100, n_samples = 10, options = {}
666
813
  return true;
667
814
  }
668
815
  }
816
+ /**
817
+ * A short, process-independent name for a type: the FNV-1a-64 hash of its
818
+ * canonical beast2 type section (#770), as 16 hex digits. `printType` embeds
819
+ * the ids of recursive types, which depend on what a process built first, so
820
+ * it cannot name a case in a corpus replayed elsewhere.
821
+ *
822
+ * @param type - the type to name
823
+ * @returns 16 hex digits, equal for structurally equal types
824
+ */
825
+ export function typeFingerprint(type) {
826
+ const writer = new BufferWriter();
827
+ writeTypeSection(type, writer);
828
+ return fnv1a64(writer.toUint8Array()).toString(16).padStart(16, "0");
829
+ }
830
+ /**
831
+ * Generates distinct random types with sample values of each, for suites
832
+ * that replay one corpus on every runtime. Types whose values cannot be
833
+ * generated within the depth limit are skipped; generation stops after
834
+ * three attempts per requested type.
835
+ *
836
+ * @param options - how many types and samples, the seed, and the type kinds
837
+ * @returns the generated cases, in generation order
838
+ */
839
+ export function generateFuzzValues(options = {}) {
840
+ const { numTypes = 50, numSamples = 3, seed = 0xea57, valueDepth = 5, ...typeOptions } = options;
841
+ seedFuzz(seed);
842
+ const cases = [];
843
+ const seen = new Set();
844
+ const maxAttempts = numTypes * 3;
845
+ for (let attempts = 0; cases.length < numTypes && attempts < maxAttempts; attempts++) {
846
+ const type = randomType(0, typeOptions);
847
+ const typeName = printType(type);
848
+ if (seen.has(typeName))
849
+ continue;
850
+ const generate = randomValueFor(type, { maxDepth: valueDepth });
851
+ const values = [];
852
+ try {
853
+ for (let j = 0; j < numSamples; j++) {
854
+ let value;
855
+ let retries = 0;
856
+ for (;;) {
857
+ try {
858
+ value = generate();
859
+ break;
860
+ }
861
+ catch (e) {
862
+ if (!e.message?.includes("max recursion depth") || ++retries >= 20)
863
+ throw e;
864
+ }
865
+ }
866
+ values.push(value);
867
+ }
868
+ }
869
+ catch (e) {
870
+ if (e.message?.includes("max recursion depth"))
871
+ continue;
872
+ throw e;
873
+ }
874
+ seen.add(typeName);
875
+ cases.push({ type, typeName, fingerprint: typeFingerprint(type), values });
876
+ }
877
+ return cases;
878
+ }
669
879
  //# sourceMappingURL=fuzz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../src/fuzz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../src/fuzz.ts"],"names":[],"mappings":"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"}