@typespec/mutator-framework 0.17.0-dev.0 → 0.17.0-dev.3

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.
@@ -0,0 +1,4 @@
1
+
2
+ > @typespec/mutator-framework@0.16.1 build D:\a\_work\1\s\packages\mutator-framework
3
+ > tsc -p tsconfig.build.json
4
+
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog - @typespec/mutator-framework
2
2
 
3
+ ## 0.16.1
4
+
5
+ ### Bump dependencies
6
+
7
+ - [#9838](https://github.com/microsoft/typespec/pull/9838) Upgrade dependencies
8
+
9
+
3
10
  ## 0.16.0
4
11
 
5
12
  ### Bump dependencies
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=alternate-type.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alternate-type.test.d.ts","sourceRoot":"","sources":["../../../src/mutation/alternate-type.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,514 @@
1
+ import { expectTypeEquals, t } from "@typespec/compiler/testing";
2
+ import { $ } from "@typespec/compiler/typekit";
3
+ import { describe, expect, it } from "vitest";
4
+ import { Tester } from "../../test/test-host.js";
5
+ import { MutationHalfEdge } from "./mutation-engine.js";
6
+ import { SimpleModelPropertyMutation, SimpleMutationEngine, SimpleMutationOptions, SimpleOperationMutation, SimpleUnionVariantMutation, } from "./simple-mutation-engine.js";
7
+ // --- Helpers ---
8
+ async function compile(code) {
9
+ const runner = await Tester.createInstance();
10
+ const result = await runner.compile(code);
11
+ return { ...result, tk: $(result.program) };
12
+ }
13
+ function createPropertyEngine(tk, MutationClass) {
14
+ return new SimpleMutationEngine(tk, {
15
+ ModelProperty: MutationClass,
16
+ });
17
+ }
18
+ function createOperationEngine(tk, MutationClass) {
19
+ return new SimpleMutationEngine(tk, {
20
+ Operation: MutationClass,
21
+ });
22
+ }
23
+ function createVariantEngine(tk, MutationClass) {
24
+ return new SimpleMutationEngine(tk, {
25
+ UnionVariant: MutationClass,
26
+ });
27
+ }
28
+ /** Creates a ModelProperty mutation class that replaces the property type using replaceAndMutateReference */
29
+ function createReplacePropertyMutation(getAlternate) {
30
+ return class extends SimpleModelPropertyMutation {
31
+ mutate() {
32
+ const alternate = getAlternate(this.sourceType);
33
+ if (alternate) {
34
+ this.mutationNode.mutate((prop) => {
35
+ prop.type = alternate;
36
+ });
37
+ this.type = this.engine.replaceAndMutateReference(this.sourceType, alternate, this.options, this.startTypeEdge());
38
+ }
39
+ else {
40
+ super.mutate();
41
+ }
42
+ }
43
+ };
44
+ }
45
+ /** Creates a UnionVariant mutation class that replaces the variant type using replaceAndMutateReference */
46
+ function createReplaceVariantMutation(getAlternate) {
47
+ return class extends SimpleUnionVariantMutation {
48
+ mutate() {
49
+ const alternate = getAlternate(this.sourceType);
50
+ if (alternate) {
51
+ this.mutationNode.mutate((variant) => {
52
+ variant.type = alternate;
53
+ });
54
+ this.type = this.engine.replaceAndMutateReference(this.sourceType, alternate, this.options, this.startTypeEdge());
55
+ }
56
+ else {
57
+ super.mutate();
58
+ }
59
+ }
60
+ };
61
+ }
62
+ /**
63
+ * Creates a ModelProperty mutation class that replaces the property type from mutationInfo,
64
+ * using a type map to resolve alternates. This tests the interceptor pattern where
65
+ * replacement happens before the mutation is constructed.
66
+ */
67
+ function createMutationInfoPropertyReplacement(alternateTypeMap) {
68
+ return class AlternateTypePropertyViaInfo extends SimpleModelPropertyMutation {
69
+ static mutationInfo(engine, sourceType, referenceTypes, options, halfEdge, traits) {
70
+ let referencedType = sourceType.type;
71
+ while (referencedType.kind === "ModelProperty" || referencedType.kind === "UnionVariant") {
72
+ referencedType = referencedType.type;
73
+ }
74
+ const alternate = alternateTypeMap.get(referencedType);
75
+ if (alternate) {
76
+ return engine.replaceAndMutateReference(sourceType, alternate, options, halfEdge);
77
+ }
78
+ return super.mutationInfo(engine, sourceType, referenceTypes, options, halfEdge, traits);
79
+ }
80
+ };
81
+ }
82
+ /**
83
+ * Creates a UnionVariant mutation class that replaces the variant type from mutationInfo,
84
+ * using a type map to resolve alternates.
85
+ */
86
+ function createMutationInfoVariantReplacement(alternateTypeMap) {
87
+ return class AlternateTypeVariantViaInfo extends SimpleUnionVariantMutation {
88
+ static mutationInfo(engine, sourceType, referenceTypes, options, halfEdge, traits) {
89
+ let referencedType = sourceType.type;
90
+ while (referencedType.kind === "ModelProperty" || referencedType.kind === "UnionVariant") {
91
+ referencedType = referencedType.type;
92
+ }
93
+ const alternate = alternateTypeMap.get(referencedType);
94
+ if (alternate) {
95
+ return engine.replaceAndMutateReference(sourceType, alternate, options, halfEdge);
96
+ }
97
+ return super.mutationInfo(engine, sourceType, referenceTypes, options, halfEdge, traits);
98
+ }
99
+ };
100
+ }
101
+ function expectModelType(type, name) {
102
+ expect(type.kind).toBe("Model");
103
+ expect(type.name).toBe(name);
104
+ }
105
+ /**
106
+ * Tests for the `@alternateType` pattern where a property/returnType/variant type is
107
+ * replaced with a different type during mutation.
108
+ *
109
+ * The `replaceAndMutateReference` method handles the case where the half-edge expects
110
+ * a member type (ModelProperty/UnionVariant) but the replacement is a different kind
111
+ * (e.g., Model). It creates a "stub member mutation" that wraps the replacement.
112
+ */
113
+ describe("type replacement (@alternateType pattern)", () => {
114
+ describe("ModelProperty.type via replaceAndMutateReference", () => {
115
+ it("replaces property type with a model type", async () => {
116
+ const { Foo, Bar, tk } = await compile(t.code `
117
+ model ${t.model("Foo")} {
118
+ prop: string;
119
+ }
120
+
121
+ model ${t.model("Bar")} {
122
+ name: string;
123
+ }
124
+ `);
125
+ const Mutation = createReplacePropertyMutation(() => Bar);
126
+ const engine = createPropertyEngine(tk, Mutation);
127
+ const fooMutation = engine.mutate(Foo);
128
+ const propMutation = fooMutation.properties.get("prop");
129
+ expectModelType(propMutation.mutatedType.type, "Bar");
130
+ expect(Foo.properties.get("prop").type.kind).toBe("Scalar");
131
+ });
132
+ it("replacement type referenced by multiple properties shares the same mutation instance", async () => {
133
+ const { Foo, program, tk } = await compile(t.code `
134
+ model ${t.model("Foo")} {
135
+ prop1: Bar;
136
+ prop2: string;
137
+ }
138
+
139
+ model ${t.model("Bar")} {
140
+ value: int32;
141
+ }
142
+ `);
143
+ const Bar = program.getGlobalNamespaceType().models.get("Bar");
144
+ const Mutation = createReplacePropertyMutation((prop) => prop.name === "prop2" ? Bar : undefined);
145
+ const engine = createPropertyEngine(tk, Mutation);
146
+ const fooMutation = engine.mutate(Foo);
147
+ const prop1 = fooMutation.properties.get("prop1");
148
+ const prop2 = fooMutation.properties.get("prop2");
149
+ expectModelType(prop1.mutatedType.type, "Bar");
150
+ expectModelType(prop2.mutatedType.type, "Bar");
151
+ expectTypeEquals(prop1.mutatedType.type, prop2.mutatedType.type);
152
+ });
153
+ it("recursively processes the replacement type's properties through the mutator", async () => {
154
+ const { Foo, program, tk } = await compile(t.code `
155
+ model ${t.model("Foo")} {
156
+ prop: string;
157
+ }
158
+
159
+ model ${t.model("Bar")} {
160
+ inner: int32;
161
+ }
162
+
163
+ model ${t.model("Baz")} {
164
+ value: string;
165
+ }
166
+ `);
167
+ const Bar = program.getGlobalNamespaceType().models.get("Bar");
168
+ const Baz = program.getGlobalNamespaceType().models.get("Baz");
169
+ const alternateTypes = new Map([
170
+ ["prop", Bar],
171
+ ["inner", Baz],
172
+ ]);
173
+ const Mutation = createReplacePropertyMutation((prop) => alternateTypes.get(prop.name));
174
+ const engine = createPropertyEngine(tk, Mutation);
175
+ const fooMutation = engine.mutate(Foo);
176
+ const propMutation = fooMutation.properties.get("prop");
177
+ expectModelType(propMutation.mutatedType.type, "Bar");
178
+ // Bar.inner should be recursively replaced with Baz
179
+ const barMutation = propMutation.type;
180
+ expect(barMutation.kind).toBe("Model");
181
+ const innerPropMutation = barMutation.properties.get("inner");
182
+ expectModelType(innerPropMutation.mutatedType.type, "Baz");
183
+ // Originals should be unchanged
184
+ expect(Foo.properties.get("prop").type.kind).toBe("Scalar");
185
+ expect(Bar.properties.get("inner").type.kind).toBe("Scalar");
186
+ });
187
+ it("replaces property type with a union type", async () => {
188
+ const { Foo, MyUnion, tk } = await compile(t.code `
189
+ model ${t.model("Foo")} {
190
+ prop: string;
191
+ }
192
+
193
+ union ${t.union("MyUnion")} {
194
+ a: string;
195
+ b: int32;
196
+ }
197
+ `);
198
+ const Mutation = createReplacePropertyMutation(() => MyUnion);
199
+ const engine = createPropertyEngine(tk, Mutation);
200
+ const fooMutation = engine.mutate(Foo);
201
+ const propMutation = fooMutation.properties.get("prop");
202
+ expect(propMutation.mutatedType.type.kind).toBe("Union");
203
+ expect(propMutation.mutatedType.type.name).toBe("MyUnion");
204
+ expect(Foo.properties.get("prop").type.kind).toBe("Scalar");
205
+ });
206
+ it("replaces property type with a scalar type", async () => {
207
+ const { Foo, program, tk } = await compile(t.code `
208
+ model ${t.model("Foo")} {
209
+ prop: string;
210
+ }
211
+
212
+ scalar ${t.scalar("MyScalar")};
213
+ `);
214
+ const MyScalar = program.getGlobalNamespaceType().scalars.get("MyScalar");
215
+ const Mutation = createReplacePropertyMutation(() => MyScalar);
216
+ const engine = createPropertyEngine(tk, Mutation);
217
+ const fooMutation = engine.mutate(Foo);
218
+ const propMutation = fooMutation.properties.get("prop");
219
+ expect(propMutation.mutatedType.type.kind).toBe("Scalar");
220
+ expect(propMutation.mutatedType.type.name).toBe("MyScalar");
221
+ });
222
+ });
223
+ describe("ModelProperty.type via engine.mutate (direct)", () => {
224
+ it("replaces property type directly via engine.mutate", async () => {
225
+ const { Foo, Bar, tk } = await compile(t.code `
226
+ model ${t.model("Foo")} {
227
+ prop: string;
228
+ }
229
+
230
+ model ${t.model("Bar")} {
231
+ name: string;
232
+ }
233
+ `);
234
+ class DirectMutateProperty extends SimpleModelPropertyMutation {
235
+ mutate() {
236
+ this.mutationNode.mutate((prop) => {
237
+ prop.type = Bar;
238
+ });
239
+ this.type = this.engine.mutate(Bar, this.options, this.startTypeEdge());
240
+ }
241
+ }
242
+ const engine = createPropertyEngine(tk, DirectMutateProperty);
243
+ const fooMutation = engine.mutate(Foo);
244
+ const propMutation = fooMutation.properties.get("prop");
245
+ expectModelType(propMutation.mutatedType.type, "Bar");
246
+ expect(Foo.properties.get("prop").type.kind).toBe("Scalar");
247
+ });
248
+ it("recursively processes replacement type's properties", async () => {
249
+ const { Foo, program, tk } = await compile(t.code `
250
+ model ${t.model("Foo")} {
251
+ prop: string;
252
+ }
253
+
254
+ model ${t.model("Bar")} {
255
+ inner: int32;
256
+ }
257
+
258
+ model ${t.model("Baz")} {
259
+ value: string;
260
+ }
261
+ `);
262
+ const Bar = program.getGlobalNamespaceType().models.get("Bar");
263
+ const Baz = program.getGlobalNamespaceType().models.get("Baz");
264
+ const alternateTypes = new Map([
265
+ ["prop", Bar],
266
+ ["inner", Baz],
267
+ ]);
268
+ class DirectRecursiveMutateProperty extends SimpleModelPropertyMutation {
269
+ mutate() {
270
+ const alternate = alternateTypes.get(this.sourceType.name);
271
+ if (alternate) {
272
+ this.mutationNode.mutate((prop) => {
273
+ prop.type = alternate;
274
+ });
275
+ this.type = this.engine.mutate(alternate, this.options, this.startTypeEdge());
276
+ }
277
+ else {
278
+ super.mutate();
279
+ }
280
+ }
281
+ }
282
+ const engine = createPropertyEngine(tk, DirectRecursiveMutateProperty);
283
+ const fooMutation = engine.mutate(Foo);
284
+ const propMutation = fooMutation.properties.get("prop");
285
+ expectModelType(propMutation.mutatedType.type, "Bar");
286
+ const barMutation = propMutation.type;
287
+ expect(barMutation.kind).toBe("Model");
288
+ const innerPropMutation = barMutation.properties.get("inner");
289
+ expectModelType(innerPropMutation.mutatedType.type, "Baz");
290
+ expect(Foo.properties.get("prop").type.kind).toBe("Scalar");
291
+ expect(Bar.properties.get("inner").type.kind).toBe("Scalar");
292
+ });
293
+ });
294
+ describe("ModelProperty.type via mutationInfo interceptor", () => {
295
+ it("replacement type resolved via mutationInfo has its properties processed by the mutator", async () => {
296
+ const { Foo, program, tk } = await compile(t.code `
297
+ model ${t.model("Foo")} {
298
+ prop: OriginalType;
299
+ }
300
+
301
+ model ${t.model("OriginalType")} {
302
+ value: string;
303
+ }
304
+
305
+ model ${t.model("AlternateModel")} {
306
+ inner: InnerOriginal;
307
+ }
308
+
309
+ model ${t.model("InnerAlternate")} {
310
+ deep: string;
311
+ }
312
+
313
+ model ${t.model("InnerOriginal")} {
314
+ x: int32;
315
+ }
316
+ `);
317
+ const OriginalType = program.getGlobalNamespaceType().models.get("OriginalType");
318
+ const AlternateModel = program.getGlobalNamespaceType().models.get("AlternateModel");
319
+ const InnerOriginal = program.getGlobalNamespaceType().models.get("InnerOriginal");
320
+ const InnerAlternate = program.getGlobalNamespaceType().models.get("InnerAlternate");
321
+ const alternateTypeMap = new Map([
322
+ [OriginalType, AlternateModel],
323
+ [InnerOriginal, InnerAlternate],
324
+ ]);
325
+ const Mutation = createMutationInfoPropertyReplacement(alternateTypeMap);
326
+ const engine = createPropertyEngine(tk, Mutation);
327
+ const fooMutation = engine.mutate(Foo);
328
+ const propMutation = fooMutation.properties.get("prop");
329
+ expectModelType(propMutation.mutatedType.type, "AlternateModel");
330
+ // AlternateModel.inner should also be replaced with InnerAlternate
331
+ const alternateMutation = propMutation.type;
332
+ expect(alternateMutation.kind).toBe("Model");
333
+ const innerPropMutation = alternateMutation.properties.get("inner");
334
+ expectModelType(innerPropMutation.mutatedType.type, "InnerAlternate");
335
+ // Original types should be unchanged
336
+ expectModelType(Foo.properties.get("prop").type, "OriginalType");
337
+ });
338
+ });
339
+ describe("Operation.returnType", () => {
340
+ it("replaces return type with a model type", async () => {
341
+ const { myOp, Bar, tk } = await compile(t.code `
342
+ op ${t.op("myOp")}(): string;
343
+
344
+ model ${t.model("Bar")} {
345
+ name: string;
346
+ }
347
+ `);
348
+ class AlternateReturnType extends SimpleOperationMutation {
349
+ mutateReturnType() {
350
+ this.mutationNode.mutate((op) => {
351
+ op.returnType = Bar;
352
+ });
353
+ this.returnType = this.engine.mutate(Bar, this.options, this.startReturnTypeEdge());
354
+ }
355
+ }
356
+ const engine = createOperationEngine(tk, AlternateReturnType);
357
+ const opMutation = engine.mutate(myOp);
358
+ expectModelType(opMutation.mutatedType.returnType, "Bar");
359
+ expect(myOp.returnType.kind).toBe("Scalar");
360
+ });
361
+ it("replaces return type with a type also used in parameters (shared instance)", async () => {
362
+ const { myOp, program, tk } = await compile(t.code `
363
+ model ${t.model("Bar")} {
364
+ name: string;
365
+ }
366
+
367
+ op ${t.op("myOp")}(param: Bar): string;
368
+ `);
369
+ const Bar = program.getGlobalNamespaceType().models.get("Bar");
370
+ class AlternateReturnType extends SimpleOperationMutation {
371
+ mutateReturnType() {
372
+ this.mutationNode.mutate((op) => {
373
+ op.returnType = Bar;
374
+ });
375
+ this.returnType = this.engine.mutate(Bar, this.options, this.startReturnTypeEdge());
376
+ }
377
+ }
378
+ const engine = createOperationEngine(tk, AlternateReturnType);
379
+ const opMutation = engine.mutate(myOp);
380
+ expectModelType(opMutation.mutatedType.returnType, "Bar");
381
+ const paramProp = opMutation.parameters.properties.get("param");
382
+ expectModelType(paramProp.mutatedType.type, "Bar");
383
+ // Both should reference the same mutated Bar
384
+ expectTypeEquals(opMutation.mutatedType.returnType, paramProp.mutatedType.type);
385
+ expect(myOp.returnType.kind).toBe("Scalar");
386
+ });
387
+ });
388
+ describe("UnionVariant.type", () => {
389
+ it("replaces variant type with a model type", async () => {
390
+ const { MyUnion, Bar, tk } = await compile(t.code `
391
+ union ${t.union("MyUnion")} {
392
+ a: string;
393
+ }
394
+
395
+ model ${t.model("Bar")} {
396
+ name: string;
397
+ }
398
+ `);
399
+ const Mutation = createReplaceVariantMutation(() => Bar);
400
+ const engine = createVariantEngine(tk, Mutation);
401
+ const unionMutation = engine.mutate(MyUnion);
402
+ const variantMutation = unionMutation.variants.get("a");
403
+ expectModelType(variantMutation.mutatedType.type, "Bar");
404
+ expect(MyUnion.variants.get("a").type.kind).toBe("Scalar");
405
+ });
406
+ it("replacement type shared across multiple variants uses same mutation instance", async () => {
407
+ const { MyUnion, External, tk } = await compile(t.code `
408
+ union ${t.union("MyUnion")} {
409
+ a: string;
410
+ b: int32;
411
+ }
412
+
413
+ model ${t.model("External")} {
414
+ id: int32;
415
+ }
416
+ `);
417
+ const Mutation = createReplaceVariantMutation(() => External);
418
+ const engine = createVariantEngine(tk, Mutation);
419
+ const unionMutation = engine.mutate(MyUnion);
420
+ const variantA = unionMutation.variants.get("a");
421
+ const variantB = unionMutation.variants.get("b");
422
+ expectModelType(variantA.mutatedType.type, "External");
423
+ expectModelType(variantB.mutatedType.type, "External");
424
+ expectTypeEquals(variantA.mutatedType.type, variantB.mutatedType.type);
425
+ });
426
+ it("replacement type resolved via mutationInfo has its variants processed by the mutator", async () => {
427
+ const { MyUnion, program, tk } = await compile(t.code `
428
+ model ${t.model("AlternateModel")} {
429
+ value: string;
430
+ }
431
+
432
+ union ${t.union("MyUnion")} {
433
+ a: OriginalType;
434
+ }
435
+
436
+ scalar ${t.scalar("OriginalType")};
437
+ `);
438
+ const OriginalType = program.getGlobalNamespaceType().scalars.get("OriginalType");
439
+ const AlternateModel = program.getGlobalNamespaceType().models.get("AlternateModel");
440
+ const alternateTypeMap = new Map([[OriginalType, AlternateModel]]);
441
+ const Mutation = createMutationInfoVariantReplacement(alternateTypeMap);
442
+ const engine = createVariantEngine(tk, Mutation);
443
+ const unionMutation = engine.mutate(MyUnion);
444
+ const variantA = unionMutation.variants.get("a");
445
+ expectModelType(variantA.mutatedType.type, "AlternateModel");
446
+ expect(MyUnion.variants.get("a").type.kind).toBe("Scalar");
447
+ });
448
+ });
449
+ });
450
+ /**
451
+ * Regression test for the "properties missing" bug when using alternate types.
452
+ *
453
+ * The bug scenario: a downstream library (e.g. CDK) routes ARM and client type
454
+ * edges independently — the ARM edge follows the original source reference while
455
+ * the client edge should follow an alternate type (e.g. from @alternateType).
456
+ *
457
+ * When only a single type edge is wired to the original model, the alternate
458
+ * model is never traversed by the mutation engine, so its properties are never
459
+ * processed and are "missing" from the mutation graph.
460
+ *
461
+ * The fix is to use separate half-edges: one for the ARM path (original type)
462
+ * and one for the client path (alternate type via replaceAndMutateReference with
463
+ * a non-member half-edge kind such as "type-client").
464
+ */
465
+ describe("dual-edge mutation (ARM + client paths) regression", () => {
466
+ it("alternate model properties are accessible when using separate client half-edge", async () => {
467
+ const { Foo, program, tk } = await compile(t.code `
468
+ model ${t.model("Foo")} {
469
+ prop: OriginalModel;
470
+ }
471
+
472
+ model ${t.model("OriginalModel")} {
473
+ x: int32;
474
+ }
475
+
476
+ model ${t.model("AlternateModel")} {
477
+ y: string;
478
+ }
479
+ `);
480
+ const AlternateModel = program.getGlobalNamespaceType().models.get("AlternateModel");
481
+ let capturedAlternateMutation;
482
+ /**
483
+ * Simulates the CDK's ArmPropertyCanonicalization pattern:
484
+ * - ARM edge: follows original source reference (wire-level graph).
485
+ * - Client edge: follows alternate type via replaceAndMutateReference,
486
+ * using a non-member half-edge kind ("type-client") so the engine routes
487
+ * directly to the alternate model instead of creating a stub member.
488
+ */
489
+ class DualEdgePropMutation extends SimpleModelPropertyMutation {
490
+ mutate() {
491
+ // ARM edge: traverse original source reference.
492
+ this.type = this.engine.mutateReference(this.sourceType, this.options, this.startTypeEdge());
493
+ // Client edge: non-member half-edge kind routes directly to AlternateModel.
494
+ const clientHalfEdge = new MutationHalfEdge("type-client", this, (tail) => {
495
+ capturedAlternateMutation = tail;
496
+ });
497
+ this.engine.replaceAndMutateReference(this.sourceType, AlternateModel, this.options, clientHalfEdge);
498
+ }
499
+ }
500
+ const engine = createPropertyEngine(tk, DualEdgePropMutation);
501
+ const fooMutation = engine.mutate(Foo);
502
+ const propMutation = fooMutation.properties.get("prop");
503
+ // ARM path: property type is OriginalModel.
504
+ expectModelType(propMutation.mutatedType.type, "OriginalModel");
505
+ // Client path: AlternateModel's mutation was traversed and its properties are accessible.
506
+ expect(capturedAlternateMutation).toBeDefined();
507
+ expect(capturedAlternateMutation.kind).toBe("Model");
508
+ expectModelType(capturedAlternateMutation.mutatedType, "AlternateModel");
509
+ const altProps = capturedAlternateMutation.mutatedType.properties;
510
+ expect(altProps.has("y")).toBe(true);
511
+ expect(altProps.has("x")).toBe(false);
512
+ });
513
+ });
514
+ //# sourceMappingURL=alternate-type.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alternate-type.test.js","sourceRoot":"","sources":["../../../src/mutation/alternate-type.test.ts"],"names":[],"mappings":"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"}
@@ -82,13 +82,27 @@ export declare class MutationEngine<TCustomMutations extends CustomMutationClass
82
82
  replaceMutationNode(oldNode: MutationNode<Type>, newNode: MutationNode<Type>): void;
83
83
  /**
84
84
  * Replaces a reference with a new type and mutates it.
85
+ *
86
+ * Most often called either:
87
+ * - from inside a member mutation's `mutate()` with the member's own "type"
88
+ * half-edge, which accepts any `Type` (no wrapping needed); or
89
+ * - from inside a member mutation's static `mutationInfo` with the parent's
90
+ * member-yielding half-edge (e.g. a `Model`'s `startPropertyEdge`).
91
+ *
92
+ * In the latter case, if `newType.kind` does not match the slot the
93
+ * half-edge fills (declared via `halfEdge.expectedTailKind`), `newType` is
94
+ * wrapped in a synthetic member (a `ModelProperty` or `UnionVariant` named
95
+ * after the original `reference`) so the parent's slot remains kind-correct.
96
+ * The synthetic's normal mutation flow then mutates `newType` recursively
97
+ * through its own "type" edge.
98
+ *
85
99
  * @param reference - Original reference to replace
86
100
  * @param newType - New type to use
87
101
  * @param options - Mutation options
88
102
  * @param halfEdge - Optional half edge for tracking
89
- * @returns Mutation for the new type
103
+ * @returns Mutation for the new type, or for the synthetic member wrapping it
90
104
  */
91
- replaceAndMutateReference<TType extends Type>(reference: MemberType, newType: TType, options?: MutationOptions, halfEdge?: MutationHalfEdge): MutationFor<TCustomMutations, TType["kind"]>;
105
+ replaceAndMutateReference<TType extends Type>(reference: MemberType, newType: TType, options?: MutationOptions, halfEdge?: MutationHalfEdge): any;
92
106
  /**
93
107
  * Internal worker that creates or retrieves mutations with caching.
94
108
  */
@@ -117,13 +131,24 @@ export declare class MutationOptions {
117
131
  * Half-edge used to link mutations together. This represents the head-end of a
118
132
  * mutation. When the tail is created, it is set on the half-edge and allows the
119
133
  * head mutation to connect its nodes to the tail mutation.
134
+ *
135
+ * `expectedTailKind` declares the kind of `Mutation` the head expects on the
136
+ * other end. The engine uses this so that, when `replaceAndMutateReference` is
137
+ * given a `newType` whose kind does not match the slot the half-edge fills
138
+ * (e.g. a parent `Model` whose `"property"` slot is being substituted with a
139
+ * `Model` instead of a `ModelProperty`), it can wrap the replacement in a
140
+ * synthetic member of the expected kind, preserving the parent's contract.
141
+ *
142
+ * Leaving `expectedTailKind` undefined means the half-edge accepts any
143
+ * `Mutation` kind (e.g. the `"type"` slot of a `ModelProperty`).
120
144
  */
121
145
  export declare class MutationHalfEdge<THead extends Mutation<any, any> = any, TTail extends Mutation<any, any> = any> {
122
146
  #private;
123
147
  head: THead;
124
148
  tail: TTail | undefined;
125
149
  readonly kind: string;
126
- constructor(kind: string, head: THead, onTailCreation: (tail: TTail) => void);
150
+ readonly expectedTailKind?: Type["kind"];
151
+ constructor(kind: string, head: THead, onTailCreation: (tail: TTail) => void, expectedTailKind?: Type["kind"]);
127
152
  setTail(tail: TTail): void;
128
153
  }
129
154
  //# sourceMappingURL=mutation-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-engine.d.ts","sourceRoot":"","sources":["../../../src/mutation/mutation-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation-engine.d.ts","sourceRoot":"","sources":["../../../src/mutation/mutation-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE9E,MAAM,WAAW,sBAAsB,CACrC,gBAAgB,SAAS,qBAAqB,CAC9C,SAAQ,gBAAgB;IACxB,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAChE,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAChE,KAAK,EAAE,aAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACxD,MAAM,EAAE,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC1D,aAAa,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACxE,KAAK,EAAE,aAAa,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACxD,YAAY,EAAE,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACtE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACtD,UAAU,EAAE,kBAAkB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAClE,MAAM,EAAE,eAAe,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC3D,MAAM,EAAE,eAAe,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC3D,OAAO,EAAE,eAAe,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC5D,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;CACjE;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9D,MAAM,MAAM,oBAAoB,CAAC,sBAAsB,SAAS,qBAAqB,IACnF,sBAAsB,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;AAE1E,MAAM,MAAM,WAAW,CACrB,gBAAgB,SAAS,qBAAqB,EAC9C,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IACvC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;AAElD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AACvE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,IAAI;KAC/E,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,sBAAsB,CACrC,WAAW,SAAS,IAAI,EACxB,gBAAgB,SAAS,qBAAqB,EAC9C,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC;IAEnF,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe,CAC9B,WAAW,SAAS,IAAI,EACxB,gBAAgB,SAAS,qBAAqB,EAC9C,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAEnF,SACE,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,EACxE,qBAAqB;CAAG;AAE5B,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,cAAc,CAAC,gBAAgB,SAAS,qBAAqB;;IACxE,+BAA+B;IAC/B,CAAC,EAAE,OAAO,CAAC;IAOX;;;;OAIG;gBACS,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC;IAqBzE;;;;;OAKG;IACH,eAAe,CAAC,CAAC,SAAS,IAAI,EAC5B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GACrC,mBAAmB,CAAC,CAAC,CAAC;IAkBzB;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC;IAc5E;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,yBAAyB,CAAC,KAAK,SAAS,IAAI,EAC1C,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,KAAK,EACd,OAAO,GAAE,eAAuC,EAChD,QAAQ,CAAC,EAAE,gBAAgB;IA8C7B;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,EACvC,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,UAAU,EAAE,EACxB,OAAO,EAAE,eAAe,EACxB,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IA+C/C;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,SAAS,IAAI,EACvB,IAAI,EAAE,KAAK,EACX,OAAO,GAAE,eAAuC,EAChD,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAI/C;;;;;;OAMG;IACH,eAAe,CACb,SAAS,EAAE,UAAU,EACrB,OAAO,GAAE,eAAuC,EAChD,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,WAAW,CAAC,gBAAgB,CAAC;CAKjC;AAeD,qBAAa,eAAe;IAC1B,IAAI,WAAW,IAAI,MAAM,CAExB;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB,CAC3B,KAAK,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,EACtC,KAAK,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;;IAEtC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAIvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,KAAK,EACX,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,EACrC,gBAAgB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAQjC,OAAO,CAAC,IAAI,EAAE,KAAK;CAIpB"}