@elaraai/east 1.0.77 → 1.0.79

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 (51) 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 +1 -1
  18. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  19. package/dist/src/serialization/beast2/index.js +1 -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/index.spec.js +292 -5
  30. package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
  31. package/dist/src/serialization/beast2/v5/lazy.d.ts +11 -8
  32. package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
  33. package/dist/src/serialization/beast2/v5/lazy.js +49 -39
  34. package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
  35. package/dist/src/serialization/beast2/v5/lazy.spec.js +98 -3
  36. package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
  37. package/dist/src/serialization/beast2/v5/stream.d.ts +25 -0
  38. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  39. package/dist/src/serialization/beast2/v5/stream.js +43 -13
  40. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  41. package/dist/src/serialization/index.d.ts +1 -1
  42. package/dist/src/serialization/index.d.ts.map +1 -1
  43. package/dist/src/serialization/index.js +1 -1
  44. package/dist/src/serialization/index.js.map +1 -1
  45. package/dist/src/type_of_type.d.ts +0 -5
  46. package/dist/src/type_of_type.d.ts.map +1 -1
  47. package/dist/src/type_of_type.js +51 -49
  48. package/dist/src/type_of_type.js.map +1 -1
  49. package/dist/src/type_of_type.to_etv.spec.js +75 -0
  50. package/dist/src/type_of_type.to_etv.spec.js.map +1 -1
  51. package/package.json +1 -1
@@ -17,6 +17,8 @@ export interface FuzzTestCase<T extends EastType = EastType> {
17
17
  type: T;
18
18
  /** String representation of the type for test naming */
19
19
  typeName: string;
20
+ /** {@link typeFingerprint} of the type — a name stable across processes */
21
+ fingerprint: string;
20
22
  /** Array type for before/after pairs (used by compliance tests) */
21
23
  pairsArrayType: ArrayTypeT<StructTypeT<{
22
24
  before: T;
@@ -39,6 +41,23 @@ export interface FuzzTestCase<T extends EastType = EastType> {
39
41
  v2: ValueTypeOf<T>;
40
42
  v3: ValueTypeOf<T>;
41
43
  }>;
44
+ /**
45
+ * Per pair, the beast2 bytes of `diff(before, after)` as TypeScript
46
+ * computes and encodes it (`0x…`): the corpus asserts every runtime's
47
+ * diff encodes to these bytes, so a patch is the same value on every
48
+ * runtime — not merely one that applies to the same result (#774).
49
+ */
50
+ diffHex: string[];
51
+ /** Per pair, the bytes of `invertPatch(diff(before, after))`. */
52
+ invertHex: string[];
53
+ /**
54
+ * Per triplet, the bytes of `composePatch(diff(v1, v2), diff(v2, v3))`.
55
+ * A composition can carry one input container twice — an element the
56
+ * first patch inserts and the second replaces — and the wire records
57
+ * that sharing as a back-reference, so these bytes also pin that every
58
+ * runtime's writer sees the sharing (#774).
59
+ */
60
+ composeHex: string[];
42
61
  }
43
62
  /**
44
63
  * Options for generating fuzz test cases.
@@ -48,10 +67,17 @@ export interface FuzzTestOptions {
48
67
  numTypes?: number;
49
68
  /** Number of sample values per type */
50
69
  numSamples?: number;
70
+ /** Depth at which sample values stop nesting (default 5) */
71
+ valueDepth?: number;
51
72
  /** Include recursive types in generation */
52
73
  includeRecursive?: boolean;
53
74
  /** Include function types in generation */
54
75
  includeFunctions?: boolean;
76
+ /** Recursion below the top level: closed recursive leaves, a recursive
77
+ * type shared by several fields, random recursive bodies (default true) */
78
+ nestedRecursive?: boolean;
79
+ /** `EastTypeType` as a leaf, with type values as values (default true) */
80
+ includeTypeValues?: boolean;
55
81
  /** Maximum retries when generating values for a single type */
56
82
  maxValueRetries?: number;
57
83
  /** Multiplier for max attempts (numTypes * multiplier) */
@@ -1 +1 @@
1
- {"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../../src/patch/fuzz.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,IAAI,UAAU,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAkB7G;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACvD,uCAAuC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,kEAAkE;IAClE,iBAAiB,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,EAAE,EAAE,CAAC,CAAC;QAAC,EAAE,EAAE,CAAC,CAAC;QAAC,EAAE,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACpE,8CAA8C;IAC9C,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,uCAAuC;IACvC,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;CACnF;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;+CAG2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AA2ED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAgGnF"}
1
+ {"version":3,"file":"fuzz.d.ts","sourceRoot":"","sources":["../../../src/patch/fuzz.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,IAAI,UAAU,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAwB7G;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACvD,uCAAuC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,kEAAkE;IAClE,iBAAiB,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,EAAE,EAAE,CAAC,CAAC;QAAC,EAAE,EAAE,CAAC,CAAC;QAAC,EAAE,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACpE,8CAA8C;IAC9C,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,uCAAuC;IACvC,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IAChF;;;;;OAKG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;gFAC4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;+CAG2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AA6FD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAmHnF"}
@@ -3,12 +3,21 @@
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
5
  import { ArrayType, StructType, VariantType, DictType, SetType, RefType, FunctionType, IntegerType, StringType, FloatType, BooleanType, NullType, printType, } from "../types.js";
6
- import { randomType, randomValueFor, randomRecursiveType, randomFunctionType, seedFuzz } from "../fuzz.js";
6
+ import { EastTypeType } from "../type_of_type.js";
7
+ import { randomType, randomValueFor, randomRecursiveType, randomSharedRecursiveType, randomFunctionType, seedFuzz, typeFingerprint } from "../fuzz.js";
8
+ import { encodeBeast2For } from "../serialization/beast2/index.js";
9
+ import { PatchType } from "./type_of_patch.js";
10
+ import { diffFor } from "./diff.js";
11
+ import { invertFor } from "./invert.js";
12
+ import { composeFor } from "./compose.js";
7
13
  const DEFAULT_OPTIONS = {
8
14
  numTypes: 20,
9
15
  numSamples: 5,
16
+ valueDepth: 5,
10
17
  includeRecursive: true,
11
18
  includeFunctions: true,
19
+ nestedRecursive: true,
20
+ includeTypeValues: true,
12
21
  maxValueRetries: 20,
13
22
  attemptsMultiplier: 3,
14
23
  ensureDiversity: true,
@@ -18,7 +27,7 @@ const DEFAULT_OPTIONS = {
18
27
  * Specific type generators to ensure diversity in test coverage.
19
28
  * These guarantee we test important type patterns that random generation might miss.
20
29
  */
21
- function getDiverseTypes(includeRecursive, includeFunctions) {
30
+ function getDiverseTypes(includeRecursive, includeFunctions, nestedRecursive, includeTypeValues) {
22
31
  const types = [
23
32
  // Variants (often missed by random generation)
24
33
  VariantType({ none: NullType, some: IntegerType }),
@@ -51,6 +60,17 @@ function getDiverseTypes(includeRecursive, includeFunctions) {
51
60
  for (let i = 0; i < 3; i++) {
52
61
  types.push(randomRecursiveType());
53
62
  }
63
+ if (nestedRecursive) {
64
+ // A recursive type reached through a container before itself,
65
+ // random bodies, and recursion nested in recursion (#770).
66
+ types.push(randomSharedRecursiveType());
67
+ types.push(randomRecursiveType({ randomBody: true }));
68
+ types.push(ArrayType(randomRecursiveType({ randomBody: true })));
69
+ }
70
+ }
71
+ // Type values: the shape every IR annotation travels as
72
+ if (includeTypeValues) {
73
+ types.push(EastTypeType, StructType({ a: ArrayType(EastTypeType), b: EastTypeType, c: ArrayType(EastTypeType) }));
54
74
  }
55
75
  // Add function types if enabled
56
76
  if (includeFunctions) {
@@ -89,7 +109,7 @@ export function generateFuzzTestCases(options = {}) {
89
109
  return false;
90
110
  }
91
111
  try {
92
- const genValue = randomValueFor(type);
112
+ const genValue = randomValueFor(type, { maxDepth: opts.valueDepth });
93
113
  // Helper to safely generate a value (retry on depth exceeded)
94
114
  const safeGenValue = () => {
95
115
  for (let retry = 0; retry < opts.maxValueRetries; retry++) {
@@ -118,14 +138,30 @@ export function generateFuzzTestCases(options = {}) {
118
138
  // Create array types for East runtime iteration
119
139
  const pairsArrayType = ArrayType(StructType({ before: type, after: type }));
120
140
  const tripletsArrayType = ArrayType(StructType({ v1: type, v2: type, v3: type }));
141
+ // The reference patch values and their bytes, for the runtimes
142
+ // to match byte for byte.
143
+ const patchType = PatchType(type);
144
+ const diff = diffFor(type);
145
+ const invert = invertFor(type);
146
+ const compose = composeFor(type);
147
+ const encode = encodeBeast2For(patchType);
148
+ const hex = (patch) => `0x${Buffer.from(encode(patch)).toString("hex")}`;
149
+ const diffs = pairs.map(({ before, after }) => diff(before, after));
150
+ const diffHex = diffs.map(hex);
151
+ const invertHex = diffs.map((patch) => hex(invert(patch)));
152
+ const composeHex = triplets.map(({ v1, v2, v3 }) => hex(compose(diff(v1, v2), diff(v2, v3))));
121
153
  seenTypes.add(typeName);
122
154
  testCases.push({
123
155
  type,
124
156
  typeName,
157
+ fingerprint: typeFingerprint(type),
125
158
  pairsArrayType,
126
159
  tripletsArrayType,
127
160
  pairs,
128
161
  triplets,
162
+ diffHex,
163
+ invertHex,
164
+ composeHex,
129
165
  });
130
166
  return true;
131
167
  }
@@ -139,7 +175,7 @@ export function generateFuzzTestCases(options = {}) {
139
175
  };
140
176
  // First, add diverse types to ensure coverage
141
177
  if (opts.ensureDiversity) {
142
- const diverseTypes = getDiverseTypes(opts.includeRecursive, opts.includeFunctions);
178
+ const diverseTypes = getDiverseTypes(opts.includeRecursive, opts.includeFunctions, opts.nestedRecursive, opts.includeTypeValues);
143
179
  for (const type of diverseTypes) {
144
180
  if (testCases.length >= opts.numTypes)
145
181
  break;
@@ -155,6 +191,8 @@ export function generateFuzzTestCases(options = {}) {
155
191
  const type = randomType(0, {
156
192
  includeRecursive: opts.includeRecursive,
157
193
  includeFunctions: opts.includeFunctions,
194
+ nestedRecursive: opts.nestedRecursive,
195
+ includeTypeValues: opts.includeTypeValues,
158
196
  });
159
197
  tryAddType(type);
160
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../../src/patch/fuzz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuzz.js","sourceRoot":"","sources":["../../../src/patch/fuzz.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,20 @@ import { type EastTypeValue } from "../type_of_type.js";
18
18
  * for passing to constructors like {@link StructType} or for round-tripping
19
19
  * via `toEastTypeValue` if a runtime form is needed.
20
20
  *
21
- * Uses a context map to handle recursive types.
21
+ * The patch type is a pure function of the type — every occurrence of a
22
+ * type gets the same patch type, wherever it sits — and it is the type the
23
+ * runtimes' patch values conform to, so it is one definition on every
24
+ * runtime (`PatchType` in east-py's `types.py`; east-c's `patch.c` builds
25
+ * values of exactly these shapes). A **recursive type is replace-only**:
26
+ * its patch has `unchanged` and `replace` cases and no `patch` case, at the
27
+ * wrapper and at every reference back to it, which is what `diffFor`,
28
+ * `applyFor`, `composeFor`, `invertFor`, `mergeFor` and `walkPatch` implement
29
+ * and what the type-level {@link PatchTypeOf} states. (An earlier version
30
+ * descended into the wrapper's body on its first occurrence only, keyed by
31
+ * object identity, so `Struct{a: Array<T>, b: T}` gave `a`'s element and `b`
32
+ * different patch types — a type no runtime's values conformed to; #774.)
33
+ *
34
+ * `ctx` memoizes the result per type object across one computation.
22
35
  */
23
36
  export declare function PatchType<T extends EastType>(type: T, ctx?: Map<EastType, EastType>): EastType;
24
37
  export declare function PatchType(type: EastTypeValue, ctx?: Map<EastType, EastType>): EastType;
@@ -1 +1 @@
1
- {"version":3,"file":"type_of_patch.d.ts","sourceRoot":"","sources":["../../../src/patch/type_of_patch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAG3E;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAChG,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"type_of_patch.d.ts","sourceRoot":"","sources":["../../../src/patch/type_of_patch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AAEH,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAChG,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC"}
@@ -13,13 +13,16 @@ import { isVariant } from "../containers/variant.js";
13
13
  export function PatchType(type, ctx) {
14
14
  if (isVariant(type))
15
15
  type = fromEastTypeValue(type);
16
- // Initialize context for tracking recursive types
17
16
  const context = ctx ?? new Map();
18
- // Check if we've already computed the patch type for this type (handles recursion)
19
17
  const cached = context.get(type);
20
18
  if (cached !== undefined) {
21
19
  return cached;
22
20
  }
21
+ const result = patchTypeOf(type, context);
22
+ context.set(type, result);
23
+ return result;
24
+ }
25
+ function patchTypeOf(type, context) {
23
26
  const t = type;
24
27
  if (t.type === "Never" ||
25
28
  t.type === "Null" ||
@@ -116,20 +119,12 @@ export function PatchType(type, ctx) {
116
119
  });
117
120
  }
118
121
  else if (t.type === "Recursive") {
119
- // Check if we've already seen this type (handles circular back-references)
120
- const cached = context.get(type);
121
- if (cached !== undefined) {
122
- return cached;
123
- }
124
- // For back-references within the recursive structure, use replace-only semantics
125
- // Register this BEFORE recursing so circular refs are caught
126
- const replaceOnlyType = VariantType({
122
+ // Replace-only, at the wrapper and at every reference back to it: the
123
+ // whole recursive value is the unit of change (see the module comment).
124
+ return VariantType({
127
125
  unchanged: NullType,
128
126
  replace: StructType({ before: type, after: type }),
129
127
  });
130
- context.set(type, replaceOnlyType);
131
- // Recurse into the node - the outer structure gets structural patching
132
- return PatchType(t.node, context);
133
128
  }
134
129
  else if (t.type === "Function" || t.type === "AsyncFunction") {
135
130
  return VariantType({
@@ -1 +1 @@
1
- {"version":3,"file":"type_of_patch.js","sourceRoot":"","sources":["../../../src/patch/type_of_patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type_of_patch.js","sourceRoot":"","sources":["../../../src/patch/type_of_patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=type_of_patch.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type_of_patch.spec.d.ts","sourceRoot":"","sources":["../../../src/patch/type_of_patch.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * PatchType over recursive types (#774): a pure function of the type, and
7
+ * replace-only at a recursive wrapper — the patch type every runtime
8
+ * declares and the type every runtime's patch values conform to.
9
+ */
10
+ import { describe, test } from "node:test";
11
+ import assert from "node:assert/strict";
12
+ import { NullType, IntegerType, StringType, ArrayType, DictType, StructType, VariantType, OptionType, RecursiveType, } from "../types.js";
13
+ import { PatchType } from "./type_of_patch.js";
14
+ import { diffFor } from "./diff.js";
15
+ import { applyFor } from "./apply.js";
16
+ import { isValueOf, isTypeEqual } from "../types.js";
17
+ import { variant } from "../containers/variant.js";
18
+ const Linked = RecursiveType((self) => VariantType({
19
+ cons: StructType({ head: IntegerType, tail: self }),
20
+ nil: NullType,
21
+ }));
22
+ const replaceOnly = (t) => VariantType({ unchanged: NullType, replace: StructType({ before: t, after: t }) });
23
+ const caseType = (v, name) => v.cases[name];
24
+ const cases = (v) => Object.keys(v.cases).sort();
25
+ const fieldsOf = (v) => v.fields;
26
+ describe("PatchType — recursive types (#774)", () => {
27
+ test("a recursive type is replace-only: no patch case at the wrapper", () => {
28
+ const p = PatchType(Linked);
29
+ assert.deepEqual(cases(p), ["replace", "unchanged"]);
30
+ assert.ok(isTypeEqual(p, replaceOnly(Linked)));
31
+ // What diffFor computes and applyFor accepts — the type describes the values.
32
+ const before = variant("cons", { head: 1n, tail: variant("nil", null) });
33
+ const after = variant("cons", { head: 2n, tail: variant("nil", null) });
34
+ const patch = diffFor(Linked)(before, after);
35
+ assert.equal(patch.type, "replace");
36
+ assert.ok(isValueOf(patch, p), "the runtime's patch is a value of the patch type");
37
+ assert.deepEqual(applyFor(Linked)(before, patch), after);
38
+ });
39
+ test("the same type gets the same patch type wherever it occurs", () => {
40
+ // A wrapper reached through a container and bare, side by side: the
41
+ // shape the Patch_Fuzz corpus names several times over. An earlier
42
+ // PatchType descended into the wrapper on its first occurrence only, so
43
+ // `a`'s element and `b` disagreed and neither matched the runtime.
44
+ const Both = StructType({ a: ArrayType(Linked), b: Linked, c: Linked });
45
+ const p = PatchType(Both);
46
+ const fields = fieldsOf(caseType(p, "patch"));
47
+ const aElement = caseType(caseType(fields.a, "patch").value.fields.operation, "update");
48
+ assert.ok(isTypeEqual(aElement, fields.b));
49
+ assert.ok(isTypeEqual(fields.b, fields.c));
50
+ assert.ok(isTypeEqual(fields.b, PatchType(Linked)));
51
+ // ...and in the other order.
52
+ const Swapped = StructType({ b: Linked, a: ArrayType(Linked) });
53
+ assert.ok(isTypeEqual(fieldsOf(caseType(PatchType(Swapped), "patch")).b, fields.b));
54
+ });
55
+ test("a nested wrapper under an enclosing wrapper is replace-only too", () => {
56
+ const Outer = RecursiveType((self) => StructType({
57
+ first: DictType(StringType, Linked),
58
+ second: OptionType(Linked),
59
+ third: Linked,
60
+ next: OptionType(self),
61
+ }));
62
+ const p = PatchType(Outer);
63
+ assert.ok(isTypeEqual(p, replaceOnly(Outer)));
64
+ // The wrapper's body, patched as a struct on its own, names Linked's
65
+ // patch type in every position.
66
+ const body = PatchType(Outer.node);
67
+ const fields = fieldsOf(caseType(body, "patch"));
68
+ const firstValue = caseType(caseType(fields.first, "patch").value, "update");
69
+ assert.ok(isTypeEqual(firstValue, PatchType(Linked)));
70
+ assert.ok(isTypeEqual(caseType(caseType(fields.second, "patch"), "some"), PatchType(Linked)));
71
+ assert.ok(isTypeEqual(fields.third, PatchType(Linked)));
72
+ });
73
+ });
74
+ //# sourceMappingURL=type_of_patch.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type_of_patch.spec.js","sourceRoot":"","sources":["../../../src/patch/type_of_patch.spec.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export { MAGIC_BYTES } from "./v4/container.js";
23
23
  export { MAGIC_BYTES_V5 } from "./v5/codec.js";
24
24
  export type { Beast2DecodeOptions } from "./shared.js";
25
25
  export type { Beast2Codec } from "./v5/frames.js";
26
- export { Beast2Writer, type Beast2WriterOptions, encodeBeast2SegmentsFor, encodeBeast2PagedFor, type Beast2PagedEncodeOptions, BEAST2_PAGED_BATCH_DEFAULT, BEAST2_PAGED_TARGET_BYTES_DEFAULT, iterBeast2SegmentsFor, Beast2Pages, openBeast2PagesFor, } from "./v5/stream.js";
26
+ export { Beast2Writer, type Beast2WriterOptions, encodeBeast2SegmentsFor, encodeBeast2PagedFor, type Beast2PagedEncodeOptions, BEAST2_PAGED_BATCH_DEFAULT, BEAST2_PAGED_PROBE_BATCH, BEAST2_PAGED_TARGET_BYTES_DEFAULT, iterBeast2SegmentsFor, Beast2Pages, openBeast2PagesFor, } from "./v5/stream.js";
27
27
  export { type Beast2Extents, readBeast2Extents, carveBeast2, spliceBeast2, rebuildBeast2, type RebuildBeast2Options, type Beast2RangeReader, type Beast2SyncRangeReader, type Beast2RangedExtents, type ReadBeast2ExtentsRangedOptions, readBeast2ExtentsRanged, readBeast2ExtentsSync, isBeast2SyncRangeReader, carveBeast2Ranged, spliceBeast2Tail, } from "./v5/geometry.js";
28
28
  export { openBeast2LazyFor, isBeast2LazySafe, type Beast2LazySafeOptions } from "./v5/lazy.js";
29
29
  import type { Beast2SyncRangeReader } from "./v5/range.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/beast2/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAiBvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,0BAA0B,EAC1B,iCAAiC,EACjC,qBAAqB,EACrB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,aAAa,EAClB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAG9D;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,aAAa,CA6BjF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAMxD;AAMD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AA6B9F,mDAAmD;AACnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B;6EACyE;IACzE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,yDAAyD;IACzD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;+BAC2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU,CAAA;AAC/G,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,CAAA;AAYlI;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG,CAAA;AAC9G,wBAAgB,eAAe,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA;AAiBjI;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;AAC5H,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAmB/I;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAKjH;AAWD;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,GAAG,UAAU,CAEvJ;AAED;;uEAEuE;AACvE,wBAAgB,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ7F;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAQvG;AAiBD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAErH;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAExI"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/beast2/index.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ import { encodeBeast2V5For, decodeBeast2V5For, decodeBeast2V5ForAsync, decodeBea
22
22
  import { BEAST2_WRITE_VERSION } from "./version.js";
23
23
  export { MAGIC_BYTES } from "./v4/container.js";
24
24
  export { MAGIC_BYTES_V5 } from "./v5/codec.js";
25
- export { Beast2Writer, encodeBeast2SegmentsFor, encodeBeast2PagedFor, BEAST2_PAGED_BATCH_DEFAULT, BEAST2_PAGED_TARGET_BYTES_DEFAULT, iterBeast2SegmentsFor, Beast2Pages, openBeast2PagesFor, } from "./v5/stream.js";
25
+ export { Beast2Writer, encodeBeast2SegmentsFor, encodeBeast2PagedFor, BEAST2_PAGED_BATCH_DEFAULT, BEAST2_PAGED_PROBE_BATCH, BEAST2_PAGED_TARGET_BYTES_DEFAULT, iterBeast2SegmentsFor, Beast2Pages, openBeast2PagesFor, } from "./v5/stream.js";
26
26
  export { readBeast2Extents, carveBeast2, spliceBeast2, rebuildBeast2, readBeast2ExtentsRanged, readBeast2ExtentsSync, isBeast2SyncRangeReader, carveBeast2Ranged, spliceBeast2Tail, } from "./v5/geometry.js";
27
27
  export { openBeast2LazyFor, isBeast2LazySafe } from "./v5/lazy.js";
28
28
  import { readIndex, MAGIC_BYTES_V5 } from "./v5/codec.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,MAAM,EAAyC,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAA4B,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAsB,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EACL,YAAY,EAEZ,uBAAuB,EACvB,oBAAoB,EAEpB,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,qBAAqB,EACrB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EAMb,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAA8B,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG1D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,eAAe,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,CAAC;AAED;;;4CAG4C;AAC5C,MAAM,uBAAuB,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA6B;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,QAAQ,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,SAAkB,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;YAAE,MAAM;QACtC,IAAI,GAAG,MAAM,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,gBAAgB,MAAM,yBAAyB,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sEAAsE;YACtE,qEAAqE;YACrE,qCAAqC;YACrC,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,GAAG,CAAC;YAC/B,SAAS,GAAG,GAAG,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,WAAW;QACjE,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACxE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAsB,MAAM,cAAc,CAAC;AAE9F;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,IAAgB;IACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,gBAAgB,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACrI,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACzB,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAmCD,MAAM,UAAU,eAAe,CAAC,IAA8B,EAAE,OAA6B;IAC3F,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,iBAAiB,CAAC,IAAqB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAqB,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAkBD,MAAM,UAAU,eAAe,CAAC,IAA8B,EAAE,OAA6B;IAC3F,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,6EAA6E;IAC7E,6BAA6B;IAC7B,IAAI,EAA2C,CAAC;IAChD,IAAI,EAA2C,CAAC;IAChD,OAAO,CAAC,IAAgB,EAAE,EAAE;QAC1B,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,EAAE,KAAK,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,KAAK,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAiBD,MAAM,UAAU,oBAAoB,CAAC,IAA8B,EAAE,OAA6B;IAChG,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,EAA2C,CAAC;IAChD,IAAI,EAAoD,CAAC;IACzD,OAAO,KAAK,EAAE,IAAgB,EAAE,EAAE;QAChC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,EAAE,KAAK,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,KAAK,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAgB,EAAE,OAA6B;IAC1E,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAChF,0EAA0E;AAC1E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,8BAA8B;AAE9B;;qDAEqD;AACrD,MAAM,UAAU,YAAY,CAAqB,MAAwC,EAAE,OAAgD;IACzI,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAS,CAAC,CAAC;AACjG,CAAC;AAED;;uEAEuE;AACvE,MAAM,UAAU,YAAY,CAAmC,IAAgB;IAC7E,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,EAAE,CAAC,IAAI,8CAA8C,CAAC,CAAC;IAC5H,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAO,EAAgB,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,iBAAiB,CAAmC,IAAgB;IAClF,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,6DAA6D,EAAE,CAAC,IAAI,wCAAwC,CAAC,CAAC;IAChI,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAO,EAAqB,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;+CAC+C;AAC/C,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,gFAAgF;AAEhF,MAAM,UAAU,iBAAiB,CAAqB,EAAc,EAAE,QAA4B;IAChG,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAsB,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAqB,EAAmB,EAAE,QAA4B;IAC1G,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAA+B,CAAC;AAC7E,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,mEAAmE;AACnE,SAAS,WAAW,CAAC,IAA8B;IACjD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAgB,CAAC,CAAC;AACrF,CAAC"}
@@ -11,6 +11,7 @@ import { describe, test } from "node:test";
11
11
  import assert from "node:assert/strict";
12
12
  import { NullType, BooleanType, IntegerType, FloatType, StringType, DateTimeType, BlobType, ArrayType, SetType, DictType, StructType, VariantType, RecursiveType, RefType, VectorType, MatrixType, FunctionType, } from "../../types.js";
13
13
  import { toEastTypeValue, EastTypeValueType } from "../../type_of_type.js";
14
+ import { TypeTableBuilder } from "./v4/type-table.js";
14
15
  import { IRType } from "../../ir.js";
15
16
  import { equalFor } from "../../comparison.js";
16
17
  import { East, variant, ref, some, none } from "../../index.js";
@@ -676,6 +677,21 @@ describe("Beast2 — canonical type table", () => {
676
677
  });
677
678
  assertCanonical(EastTypeValueType, toEastTypeValue(T), "EastTypeValueType");
678
679
  });
680
+ test("a deduplicated wrapper binds every id that named it", () => {
681
+ // One recursive type reaches a table under two wrapper ids — an interned
682
+ // type id for a type built here, a table index for one read off the wire.
683
+ // The ids are runtime artefacts and are never written, so the wrappers
684
+ // dedup to one entry; binding only the first id left a later bare `ref`
685
+ // under the second — which is what a mutable container over the
686
+ // self-reference adds — bound by no wrapper, failing the whole encode.
687
+ const wrapper = (id) => variant("Recursive", variant("wrapper", { id, inner: variant("Integer", null) }));
688
+ const selfRef = (id) => variant("Recursive", variant("ref", id));
689
+ const builder = new TypeTableBuilder();
690
+ const first = builder.add(wrapper(42n));
691
+ assert.equal(builder.add(wrapper(7n)), first, "structurally equal wrappers are one entry");
692
+ assert.equal(builder.add(selfRef(42n)), first);
693
+ assert.equal(builder.add(selfRef(7n)), first, "the deduplicated wrapper's id resolves too");
694
+ });
679
695
  test("one table index yields one shared object", () => {
680
696
  // Identity, not just structure: TypeTableBuilder dedups EastTypeValues by
681
697
  // object identity, so a decoded type that hands out two objects for one