@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.
- package/dist/src/fuzz.d.ts +103 -11
- package/dist/src/fuzz.d.ts.map +1 -1
- package/dist/src/fuzz.js +226 -16
- package/dist/src/fuzz.js.map +1 -1
- package/dist/src/patch/fuzz.d.ts +26 -0
- package/dist/src/patch/fuzz.d.ts.map +1 -1
- package/dist/src/patch/fuzz.js +42 -4
- package/dist/src/patch/fuzz.js.map +1 -1
- package/dist/src/patch/type_of_patch.d.ts +14 -1
- package/dist/src/patch/type_of_patch.d.ts.map +1 -1
- package/dist/src/patch/type_of_patch.js +8 -13
- package/dist/src/patch/type_of_patch.js.map +1 -1
- package/dist/src/patch/type_of_patch.spec.d.ts +6 -0
- package/dist/src/patch/type_of_patch.spec.d.ts.map +1 -0
- package/dist/src/patch/type_of_patch.spec.js +74 -0
- package/dist/src/patch/type_of_patch.spec.js.map +1 -0
- package/dist/src/serialization/beast2/index.d.ts +22 -1
- package/dist/src/serialization/beast2/index.d.ts.map +1 -1
- package/dist/src/serialization/beast2/index.js +56 -1
- package/dist/src/serialization/beast2/index.js.map +1 -1
- package/dist/src/serialization/beast2/index.spec.js +16 -0
- package/dist/src/serialization/beast2/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v4/container.js +10 -15
- package/dist/src/serialization/beast2/v4/container.js.map +1 -1
- package/dist/src/serialization/beast2/v4/type-table.d.ts +63 -34
- package/dist/src/serialization/beast2/v4/type-table.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v4/type-table.js +353 -403
- package/dist/src/serialization/beast2/v4/type-table.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.js +147 -50
- package/dist/src/serialization/beast2/v5/deflate.js.map +1 -1
- package/dist/src/serialization/beast2/v5/deflate.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/deflate.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/deflate.spec.js +237 -0
- package/dist/src/serialization/beast2/v5/deflate.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts +119 -0
- package/dist/src/serialization/beast2/v5/frame-pool.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.js +235 -0
- package/dist/src/serialization/beast2/v5/frame-pool.js.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/frame-pool.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js +287 -0
- package/dist/src/serialization/beast2/v5/frame-pool.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-worker.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/frame-worker.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/frame-worker.js +40 -0
- package/dist/src/serialization/beast2/v5/frame-worker.js.map +1 -0
- package/dist/src/serialization/beast2/v5/index.spec.js +292 -5
- package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts +11 -8
- package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.js +49 -39
- package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.spec.js +98 -3
- package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.d.ts +88 -2
- package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.js +175 -22
- package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
- package/dist/src/serialization/index.d.ts +1 -1
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +1 -1
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/type_of_type.d.ts +0 -5
- package/dist/src/type_of_type.d.ts.map +1 -1
- package/dist/src/type_of_type.js +51 -49
- package/dist/src/type_of_type.js.map +1 -1
- package/dist/src/type_of_type.to_etv.spec.js +75 -0
- package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
- package/package.json +1 -1
package/dist/src/fuzz.d.ts
CHANGED
|
@@ -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(
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
package/dist/src/fuzz.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../src/fuzz.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,QAAQ,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
package/dist/src/fuzz.js.map
CHANGED
|
@@ -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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"}
|