@typespec/mutator-framework 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mutation/index.d.ts +13 -0
- package/dist/src/mutation/index.d.ts.map +1 -0
- package/dist/src/mutation/index.js +13 -0
- package/dist/src/mutation/index.js.map +1 -0
- package/dist/src/mutation/interface.d.ts +11 -0
- package/dist/src/mutation/interface.d.ts.map +1 -0
- package/dist/src/mutation/interface.js +17 -0
- package/dist/src/mutation/interface.js.map +1 -0
- package/dist/src/mutation/intrinsic.d.ts +9 -0
- package/dist/src/mutation/intrinsic.d.ts.map +1 -0
- package/dist/src/mutation/intrinsic.js +11 -0
- package/dist/src/mutation/intrinsic.js.map +1 -0
- package/dist/src/mutation/literal.d.ts +9 -0
- package/dist/src/mutation/literal.d.ts.map +1 -0
- package/dist/src/mutation/literal.js +11 -0
- package/dist/src/mutation/literal.js.map +1 -0
- package/dist/src/mutation/model-property.d.ts +12 -0
- package/dist/src/mutation/model-property.d.ts.map +1 -0
- package/dist/src/mutation/model-property.js +18 -0
- package/dist/src/mutation/model-property.js.map +1 -0
- package/dist/src/mutation/model.d.ts +18 -0
- package/dist/src/mutation/model.d.ts.map +1 -0
- package/dist/src/mutation/model.js +34 -0
- package/dist/src/mutation/model.js.map +1 -0
- package/dist/src/mutation/mutation-engine.d.ts +80 -0
- package/dist/src/mutation/mutation-engine.d.ts.map +1 -0
- package/dist/src/mutation/mutation-engine.js +165 -0
- package/dist/src/mutation/mutation-engine.js.map +1 -0
- package/dist/src/mutation/mutation-engine.test.d.ts +2 -0
- package/dist/src/mutation/mutation-engine.test.d.ts.map +1 -0
- package/dist/src/mutation/mutation-engine.test.js +145 -0
- package/dist/src/mutation/mutation-engine.test.js.map +1 -0
- package/dist/src/mutation/mutation.d.ts +45 -0
- package/dist/src/mutation/mutation.d.ts.map +1 -0
- package/dist/src/mutation/mutation.js +29 -0
- package/dist/src/mutation/mutation.js.map +1 -0
- package/dist/src/mutation/operation.d.ts +13 -0
- package/dist/src/mutation/operation.d.ts.map +1 -0
- package/dist/src/mutation/operation.js +20 -0
- package/dist/src/mutation/operation.js.map +1 -0
- package/dist/src/mutation/scalar.d.ts +11 -0
- package/dist/src/mutation/scalar.d.ts.map +1 -0
- package/dist/src/mutation/scalar.js +17 -0
- package/dist/src/mutation/scalar.js.map +1 -0
- package/dist/src/mutation/simple-mutation-engine.d.ts +8 -0
- package/dist/src/mutation/simple-mutation-engine.d.ts.map +1 -0
- package/dist/src/mutation/simple-mutation-engine.js +11 -0
- package/dist/src/mutation/simple-mutation-engine.js.map +1 -0
- package/dist/src/mutation/union-variant.d.ts +10 -0
- package/dist/src/mutation/union-variant.d.ts.map +1 -0
- package/dist/src/mutation/union-variant.js +12 -0
- package/dist/src/mutation/union-variant.js.map +1 -0
- package/dist/src/mutation/union.d.ts +11 -0
- package/dist/src/mutation/union.d.ts.map +1 -0
- package/dist/src/mutation/union.js +18 -0
- package/dist/src/mutation/union.js.map +1 -0
- package/dist/src/mutation-node/enum-member.d.ts +7 -0
- package/dist/src/mutation-node/enum-member.d.ts.map +1 -0
- package/dist/src/mutation-node/enum-member.js +6 -0
- package/dist/src/mutation-node/enum-member.js.map +1 -0
- package/dist/src/mutation-node/enum-member.test.d.ts +2 -0
- package/dist/src/mutation-node/enum-member.test.d.ts.map +1 -0
- package/dist/src/mutation-node/enum-member.test.js +25 -0
- package/dist/src/mutation-node/enum-member.test.js.map +1 -0
- package/dist/src/mutation-node/enum.d.ts +8 -0
- package/dist/src/mutation-node/enum.d.ts.map +1 -0
- package/dist/src/mutation-node/enum.js +30 -0
- package/dist/src/mutation-node/enum.js.map +1 -0
- package/dist/src/mutation-node/enum.test.d.ts +2 -0
- package/dist/src/mutation-node/enum.test.d.ts.map +1 -0
- package/dist/src/mutation-node/enum.test.js +25 -0
- package/dist/src/mutation-node/enum.test.js.map +1 -0
- package/dist/src/mutation-node/factory.d.ts +17 -0
- package/dist/src/mutation-node/factory.d.ts.map +1 -0
- package/dist/src/mutation-node/factory.js +45 -0
- package/dist/src/mutation-node/factory.js.map +1 -0
- package/dist/src/mutation-node/index.d.ts +15 -0
- package/dist/src/mutation-node/index.d.ts.map +1 -0
- package/dist/src/mutation-node/index.js +16 -0
- package/dist/src/mutation-node/index.js.map +1 -0
- package/dist/src/mutation-node/interface.d.ts +8 -0
- package/dist/src/mutation-node/interface.d.ts.map +1 -0
- package/dist/src/mutation-node/interface.js +30 -0
- package/dist/src/mutation-node/interface.js.map +1 -0
- package/dist/src/mutation-node/intrinsic.d.ts +7 -0
- package/dist/src/mutation-node/intrinsic.d.ts.map +1 -0
- package/dist/src/mutation-node/intrinsic.js +6 -0
- package/dist/src/mutation-node/intrinsic.js.map +1 -0
- package/dist/src/mutation-node/literal.d.ts +7 -0
- package/dist/src/mutation-node/literal.d.ts.map +1 -0
- package/dist/src/mutation-node/literal.js +6 -0
- package/dist/src/mutation-node/literal.js.map +1 -0
- package/dist/src/mutation-node/model-property.d.ts +10 -0
- package/dist/src/mutation-node/model-property.d.ts.map +1 -0
- package/dist/src/mutation-node/model-property.js +48 -0
- package/dist/src/mutation-node/model-property.js.map +1 -0
- package/dist/src/mutation-node/model-property.test.d.ts +2 -0
- package/dist/src/mutation-node/model-property.test.d.ts.map +1 -0
- package/dist/src/mutation-node/model-property.test.js +108 -0
- package/dist/src/mutation-node/model-property.test.js.map +1 -0
- package/dist/src/mutation-node/model.d.ts +10 -0
- package/dist/src/mutation-node/model.d.ts.map +1 -0
- package/dist/src/mutation-node/model.js +82 -0
- package/dist/src/mutation-node/model.js.map +1 -0
- package/dist/src/mutation-node/model.test.d.ts +2 -0
- package/dist/src/mutation-node/model.test.d.ts.map +1 -0
- package/dist/src/mutation-node/model.test.js +133 -0
- package/dist/src/mutation-node/model.test.js.map +1 -0
- package/dist/src/mutation-node/mutation-edge.d.ts +18 -0
- package/dist/src/mutation-node/mutation-edge.d.ts.map +1 -0
- package/dist/src/mutation-node/mutation-edge.js +31 -0
- package/dist/src/mutation-node/mutation-edge.js.map +1 -0
- package/dist/src/mutation-node/mutation-node.d.ts +29 -0
- package/dist/src/mutation-node/mutation-node.d.ts.map +1 -0
- package/dist/src/mutation-node/mutation-node.js +82 -0
- package/dist/src/mutation-node/mutation-node.js.map +1 -0
- package/dist/src/mutation-node/mutation-node.test.d.ts +2 -0
- package/dist/src/mutation-node/mutation-node.test.d.ts.map +1 -0
- package/dist/src/mutation-node/mutation-node.test.js +88 -0
- package/dist/src/mutation-node/mutation-node.test.js.map +1 -0
- package/dist/src/mutation-node/mutation-subgraph.d.ts +17 -0
- package/dist/src/mutation-node/mutation-subgraph.d.ts.map +1 -0
- package/dist/src/mutation-node/mutation-subgraph.js +45 -0
- package/dist/src/mutation-node/mutation-subgraph.js.map +1 -0
- package/dist/src/mutation-node/operation.d.ts +9 -0
- package/dist/src/mutation-node/operation.d.ts.map +1 -0
- package/dist/src/mutation-node/operation.js +44 -0
- package/dist/src/mutation-node/operation.js.map +1 -0
- package/dist/src/mutation-node/scalar.d.ts +8 -0
- package/dist/src/mutation-node/scalar.d.ts.map +1 -0
- package/dist/src/mutation-node/scalar.js +28 -0
- package/dist/src/mutation-node/scalar.js.map +1 -0
- package/dist/src/mutation-node/scalar.test.d.ts +2 -0
- package/dist/src/mutation-node/scalar.test.d.ts.map +1 -0
- package/dist/src/mutation-node/scalar.test.js +40 -0
- package/dist/src/mutation-node/scalar.test.js.map +1 -0
- package/dist/src/mutation-node/tuple.d.ts +9 -0
- package/dist/src/mutation-node/tuple.d.ts.map +1 -0
- package/dist/src/mutation-node/tuple.js +32 -0
- package/dist/src/mutation-node/tuple.js.map +1 -0
- package/dist/src/mutation-node/tuple.test.d.ts +2 -0
- package/dist/src/mutation-node/tuple.test.d.ts.map +1 -0
- package/dist/src/mutation-node/tuple.test.js +29 -0
- package/dist/src/mutation-node/tuple.test.js.map +1 -0
- package/dist/src/mutation-node/union-variant.d.ts +8 -0
- package/dist/src/mutation-node/union-variant.d.ts.map +1 -0
- package/dist/src/mutation-node/union-variant.js +23 -0
- package/dist/src/mutation-node/union-variant.js.map +1 -0
- package/dist/src/mutation-node/union-variant.test.d.ts +2 -0
- package/dist/src/mutation-node/union-variant.test.d.ts.map +1 -0
- package/dist/src/mutation-node/union-variant.test.js +27 -0
- package/dist/src/mutation-node/union-variant.test.js.map +1 -0
- package/dist/src/mutation-node/union.d.ts +8 -0
- package/dist/src/mutation-node/union.d.ts.map +1 -0
- package/dist/src/mutation-node/union.js +30 -0
- package/dist/src/mutation-node/union.js.map +1 -0
- package/dist/src/mutation-node/union.test.d.ts +2 -0
- package/dist/src/mutation-node/union.test.d.ts.map +1 -0
- package/dist/src/mutation-node/union.test.js +25 -0
- package/dist/src/mutation-node/union.test.js.map +1 -0
- package/dist/test/test-host.d.ts +2 -0
- package/dist/test/test-host.d.ts.map +1 -0
- package/dist/test/test-host.js +6 -0
- package/dist/test/test-host.js.map +1 -0
- package/dist/test/utils.d.ts +4 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +8 -0
- package/dist/test/utils.js.map +1 -0
- package/package.json +40 -0
- package/package.json.bak +42 -0
- package/readme.md +339 -0
- package/src/index.ts +4 -0
- package/src/mutation/index.ts +12 -0
- package/src/mutation/interface.ts +38 -0
- package/src/mutation/intrinsic.ts +23 -0
- package/src/mutation/literal.ts +29 -0
- package/src/mutation/model-property.ts +35 -0
- package/src/mutation/model.ts +58 -0
- package/src/mutation/mutation-engine.test.ts +202 -0
- package/src/mutation/mutation-engine.ts +288 -0
- package/src/mutation/mutation.ts +90 -0
- package/src/mutation/operation.ts +40 -0
- package/src/mutation/scalar.ts +36 -0
- package/src/mutation/simple-mutation-engine.ts +21 -0
- package/src/mutation/union-variant.ts +30 -0
- package/src/mutation/union.ts +39 -0
- package/src/mutation-node/enum-member.test.ts +26 -0
- package/src/mutation-node/enum-member.ts +8 -0
- package/src/mutation-node/enum.test.ts +26 -0
- package/src/mutation-node/enum.ts +33 -0
- package/src/mutation-node/factory.ts +95 -0
- package/src/mutation-node/index.ts +16 -0
- package/src/mutation-node/interface.ts +33 -0
- package/src/mutation-node/intrinsic.ts +8 -0
- package/src/mutation-node/literal.ts +10 -0
- package/src/mutation-node/model-property.test.ts +136 -0
- package/src/mutation-node/model-property.ts +53 -0
- package/src/mutation-node/model.test.ts +151 -0
- package/src/mutation-node/model.ts +89 -0
- package/src/mutation-node/mutation-edge.ts +43 -0
- package/src/mutation-node/mutation-node.test.ts +94 -0
- package/src/mutation-node/mutation-node.ts +110 -0
- package/src/mutation-node/mutation-subgraph.ts +59 -0
- package/src/mutation-node/operation.ts +49 -0
- package/src/mutation-node/scalar.test.ts +44 -0
- package/src/mutation-node/scalar.ts +32 -0
- package/src/mutation-node/tuple.test.ts +30 -0
- package/src/mutation-node/tuple.ts +35 -0
- package/src/mutation-node/union-variant.test.ts +28 -0
- package/src/mutation-node/union-variant.ts +26 -0
- package/src/mutation-node/union.test.ts +26 -0
- package/src/mutation-node/union.ts +33 -0
- package/test/test-host.ts +6 -0
- package/test/utils.ts +9 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +4 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { t } from "@typespec/compiler/testing";
|
|
2
|
+
import { $ } from "@typespec/compiler/typekit";
|
|
3
|
+
import { expect, it } from "vitest";
|
|
4
|
+
import { Tester } from "../../test/test-host.js";
|
|
5
|
+
import { ModelPropertyMutation } from "./model-property.js";
|
|
6
|
+
import { ModelMutation } from "./model.js";
|
|
7
|
+
import { MutationEngine, MutationOptions } from "./mutation-engine.js";
|
|
8
|
+
import { SimpleMutationEngine } from "./simple-mutation-engine.js";
|
|
9
|
+
class RenameMutationOptions extends MutationOptions {
|
|
10
|
+
prefix;
|
|
11
|
+
suffix;
|
|
12
|
+
constructor(prefix, suffix) {
|
|
13
|
+
super();
|
|
14
|
+
this.prefix = prefix;
|
|
15
|
+
this.suffix = suffix;
|
|
16
|
+
}
|
|
17
|
+
cacheKey() {
|
|
18
|
+
return `${this.prefix}-${this.suffix}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class RenameMutationEngine extends MutationEngine {
|
|
22
|
+
constructor($) {
|
|
23
|
+
super($, {
|
|
24
|
+
Model: RenameModelMutation,
|
|
25
|
+
});
|
|
26
|
+
this.registerSubgraph("prefix");
|
|
27
|
+
this.registerSubgraph("suffix");
|
|
28
|
+
}
|
|
29
|
+
getPrefixSubgraph(options) {
|
|
30
|
+
return this.getMutationSubgraph(options, "prefix");
|
|
31
|
+
}
|
|
32
|
+
getSuffixSubgraph(options) {
|
|
33
|
+
return this.getMutationSubgraph(options, "suffix");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
class RenameModelMutation extends ModelMutation {
|
|
37
|
+
get #prefixSubgraph() {
|
|
38
|
+
return this.engine.getPrefixSubgraph(this.options);
|
|
39
|
+
}
|
|
40
|
+
get #suffixSubgraph() {
|
|
41
|
+
return this.engine.getSuffixSubgraph(this.options);
|
|
42
|
+
}
|
|
43
|
+
get withPrefix() {
|
|
44
|
+
return this.getMutatedType(this.#prefixSubgraph);
|
|
45
|
+
}
|
|
46
|
+
get withSuffix() {
|
|
47
|
+
return this.getMutatedType(this.#suffixSubgraph);
|
|
48
|
+
}
|
|
49
|
+
mutate() {
|
|
50
|
+
if ("name" in this.sourceType && typeof this.sourceType.name === "string") {
|
|
51
|
+
this.mutateType(this.#prefixSubgraph, (m) => (m.name = `${this.options.prefix}${this.sourceType.name}`));
|
|
52
|
+
this.mutateType(this.#suffixSubgraph, (m) => (m.name = `${this.sourceType.name}${this.options.suffix}`));
|
|
53
|
+
}
|
|
54
|
+
// mutate all connected types passing on the same options
|
|
55
|
+
super.mutate();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
it("creates mutations", async () => {
|
|
59
|
+
const runner = await Tester.createInstance();
|
|
60
|
+
const { Foo, Bar, prop, program } = await runner.compile(t.code `
|
|
61
|
+
model ${t.model("Foo")} {
|
|
62
|
+
${t.modelProperty("prop")}: Bar;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
model ${t.model("Bar")} {
|
|
66
|
+
prop: string;
|
|
67
|
+
}
|
|
68
|
+
`);
|
|
69
|
+
const tk = $(program);
|
|
70
|
+
const engine = new RenameMutationEngine(tk);
|
|
71
|
+
const options = new RenameMutationOptions("Pre", "Suf");
|
|
72
|
+
const fooMutation = engine.mutate(Foo, options);
|
|
73
|
+
// can navigate the mutation result to get prefix and suffix names side-by-side
|
|
74
|
+
expect(fooMutation.properties.size).toBe(1);
|
|
75
|
+
const barMutation = fooMutation.properties.get("prop").type;
|
|
76
|
+
expect(barMutation.withPrefix.name).toBe("PreBar");
|
|
77
|
+
// Or you could get barMutation like:
|
|
78
|
+
const barMutation2 = engine.mutate(Bar, options);
|
|
79
|
+
// but these are not the same mutation node because the mutation accessed via
|
|
80
|
+
// the property is a distinct from the one accessed from the scalar.
|
|
81
|
+
expect(barMutation === barMutation2).toBe(false);
|
|
82
|
+
expect(barMutation.referenceTypes.length).toEqual(1);
|
|
83
|
+
expect(barMutation.referenceTypes[0] === prop).toBe(true);
|
|
84
|
+
expect(barMutation2.referenceTypes.length).toEqual(0);
|
|
85
|
+
// The graph is mutated
|
|
86
|
+
const prefixModel = fooMutation.withPrefix;
|
|
87
|
+
const suffixModel = fooMutation.withSuffix;
|
|
88
|
+
expect(prefixModel.name).toBe("PreFoo");
|
|
89
|
+
expect(prefixModel.properties.get("prop").type.name).toBe("PreBar");
|
|
90
|
+
expect(suffixModel.name).toBe("FooSuf");
|
|
91
|
+
expect(suffixModel.properties.get("prop").type.name).toBe("BarSuf");
|
|
92
|
+
});
|
|
93
|
+
class UnionifyModel extends ModelMutation {
|
|
94
|
+
get unionified() {
|
|
95
|
+
return this.getMutatedType();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
class UnionifyProperty extends ModelPropertyMutation {
|
|
99
|
+
get unionified() {
|
|
100
|
+
return this.getMutatedType();
|
|
101
|
+
}
|
|
102
|
+
mutate() {
|
|
103
|
+
if (!this.engine.$.union.is(this.sourceType.type)) {
|
|
104
|
+
// turn it into this union:
|
|
105
|
+
const newUnionType = this.engine.$.union.create({
|
|
106
|
+
variants: [
|
|
107
|
+
this.engine.$.unionVariant.create({ type: this.sourceType.type }),
|
|
108
|
+
this.engine.$.unionVariant.create({
|
|
109
|
+
type: this.engine.$.builtin.string,
|
|
110
|
+
}),
|
|
111
|
+
],
|
|
112
|
+
});
|
|
113
|
+
this.type = this.replaceReferencedType(this.engine.getDefaultMutationSubgraph(this.options), newUnionType);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
super.mutate();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
it("mutates model properties into unions", async () => {
|
|
121
|
+
const runner = await Tester.createInstance();
|
|
122
|
+
const { Foo, program } = await runner.compile(t.code `
|
|
123
|
+
model ${t.model("Foo")} {
|
|
124
|
+
${t.modelProperty("prop")}: Bar;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
model ${t.model("Bar")} {
|
|
128
|
+
barProp: string;
|
|
129
|
+
}
|
|
130
|
+
`);
|
|
131
|
+
const tk = $(program);
|
|
132
|
+
const engine = new SimpleMutationEngine(tk, {
|
|
133
|
+
ModelProperty: UnionifyProperty,
|
|
134
|
+
Model: UnionifyModel,
|
|
135
|
+
});
|
|
136
|
+
const fooMutation = engine.mutate(Foo);
|
|
137
|
+
const propMutation = fooMutation.properties.get("prop");
|
|
138
|
+
const typeMutation = propMutation.type;
|
|
139
|
+
expect(typeMutation.kind).toBe("Union");
|
|
140
|
+
const propType = propMutation.unionified;
|
|
141
|
+
expect(tk.union.is(propType.type)).toBe(true);
|
|
142
|
+
const mutatedFoo = fooMutation.unionified;
|
|
143
|
+
expect(tk.union.is(mutatedFoo.properties.get("prop").type)).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=mutation-engine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-engine.test.js","sourceRoot":"","sources":["../../../src/mutation/mutation-engine.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { MemberType, Type } from "@typespec/compiler";
|
|
2
|
+
import type { MutationNodeForType } from "../mutation-node/factory.js";
|
|
3
|
+
import type { MutationSubgraph } from "../mutation-node/mutation-subgraph.js";
|
|
4
|
+
import type { CustomMutationClasses, MutationEngine, MutationOptions } from "./mutation-engine.js";
|
|
5
|
+
export declare abstract class Mutation<TSourceType extends Type, TCustomMutations extends CustomMutationClasses, TOptions extends MutationOptions = MutationOptions, TEngine extends MutationEngine<TCustomMutations> = MutationEngine<TCustomMutations>> {
|
|
6
|
+
abstract readonly kind: string;
|
|
7
|
+
static readonly subgraphNames: string[];
|
|
8
|
+
engine: TEngine;
|
|
9
|
+
sourceType: TSourceType;
|
|
10
|
+
options: TOptions;
|
|
11
|
+
isMutated: boolean;
|
|
12
|
+
referenceTypes: MemberType[];
|
|
13
|
+
constructor(engine: TEngine, sourceType: TSourceType, referenceTypes: MemberType[], options: TOptions);
|
|
14
|
+
abstract mutate(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Retrieve the mutated type for this mutation's default subgraph.
|
|
17
|
+
*/
|
|
18
|
+
protected getMutatedType(): TSourceType;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieve the mutated type for the provided subgraph.
|
|
21
|
+
*/
|
|
22
|
+
protected getMutatedType(subgraph: MutationSubgraph): TSourceType;
|
|
23
|
+
/**
|
|
24
|
+
* Retrieve the mutation node for this mutation's default subgraph.
|
|
25
|
+
*/
|
|
26
|
+
protected getMutationNode(): MutationNodeForType<TSourceType>;
|
|
27
|
+
/**
|
|
28
|
+
* Retrieve the mutation node for the provided subgraph.
|
|
29
|
+
*/
|
|
30
|
+
protected getMutationNode(subgraph: MutationSubgraph): MutationNodeForType<TSourceType>;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieve the mutation node for either the default subgraph with the given
|
|
33
|
+
* options or a specific subgraph.
|
|
34
|
+
*/
|
|
35
|
+
protected getMutationNode(subgraphOrOptions: MutationSubgraph | MutationOptions): MutationNodeForType<TSourceType>;
|
|
36
|
+
/**
|
|
37
|
+
* Mutate this type in the default subgraph.
|
|
38
|
+
*/
|
|
39
|
+
protected mutateType(initializeMutation?: (type: TSourceType) => void): void;
|
|
40
|
+
/**
|
|
41
|
+
* Mutate this type in the given subgraph
|
|
42
|
+
*/
|
|
43
|
+
protected mutateType(subgraph: MutationSubgraph, initializeMutation?: (type: TSourceType) => void): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=mutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../../../src/mutation/mutation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEnG,8BAAsB,QAAQ,CAC5B,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,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IAE7C,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,OAAO,CAAS;IAC3B,cAAc,EAAE,UAAU,EAAE,CAAC;gBAG3B,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,UAAU,EAAE,EAC5B,OAAO,EAAE,QAAQ;IAQnB,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,WAAW;IACvC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,WAAW;IAKjE;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,mBAAmB,CAAC,WAAW,CAAC;IAC7D;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC;IACvF;;;OAGG;IACH,SAAS,CAAC,eAAe,CACvB,iBAAiB,EAAE,gBAAgB,GAAG,eAAe,GACpD,mBAAmB,CAAC,WAAW,CAAC;IAKnC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAC5E;;OAEG;IACH,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,gBAAgB,EAC1B,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAC/C,IAAI;CAaR"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class Mutation {
|
|
2
|
+
static subgraphNames = [];
|
|
3
|
+
engine;
|
|
4
|
+
sourceType;
|
|
5
|
+
options;
|
|
6
|
+
isMutated = false;
|
|
7
|
+
referenceTypes;
|
|
8
|
+
constructor(engine, sourceType, referenceTypes, options) {
|
|
9
|
+
this.engine = engine;
|
|
10
|
+
this.sourceType = sourceType;
|
|
11
|
+
this.options = options;
|
|
12
|
+
this.referenceTypes = referenceTypes;
|
|
13
|
+
}
|
|
14
|
+
getMutatedType(subgraphOrOptions) {
|
|
15
|
+
return this.engine.getMutatedType(subgraphOrOptions ?? this.options, this.sourceType);
|
|
16
|
+
}
|
|
17
|
+
getMutationNode(subgraphOrOptions) {
|
|
18
|
+
return this.engine.getMutationNode(subgraphOrOptions ?? this.options, this.sourceType);
|
|
19
|
+
}
|
|
20
|
+
mutateType(subgraphOrInit, initializeMutation) {
|
|
21
|
+
if (typeof subgraphOrInit === "function") {
|
|
22
|
+
initializeMutation = subgraphOrInit;
|
|
23
|
+
subgraphOrInit = undefined;
|
|
24
|
+
}
|
|
25
|
+
const node = this.getMutationNode(subgraphOrInit ?? this.options);
|
|
26
|
+
node.mutate(initializeMutation);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../src/mutation/mutation.ts"],"names":[],"mappings":"AAKA,MAAM,OAAgB,QAAQ;IAQ5B,MAAM,CAAU,aAAa,GAAa,EAAE,CAAC;IAE7C,MAAM,CAAU;IAChB,UAAU,CAAc;IACxB,OAAO,CAAW;IAClB,SAAS,GAAY,KAAK,CAAC;IAC3B,cAAc,CAAe;IAE7B,YACE,MAAe,EACf,UAAuB,EACvB,cAA4B,EAC5B,OAAiB;QAEjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAYS,cAAc,CAAC,iBAAsD;QAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACxF,CAAC;IAiBS,eAAe,CAAC,iBAAsD;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC;IAcS,UAAU,CAClB,cAAiE,EACjE,kBAAgD;QAEhD,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,kBAAkB,GAAG,cAAc,CAAC;YACpC,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,kBAA0C,CAAC,CAAC;IAC1D,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MemberType, Operation, Type } from "@typespec/compiler";
|
|
2
|
+
import type { CustomMutationClasses, MutationEngine, MutationFor, MutationOptions } from "./mutation-engine.js";
|
|
3
|
+
import { Mutation } from "./mutation.js";
|
|
4
|
+
export declare class OperationMutation<TOptions extends MutationOptions, TCustomMutations extends CustomMutationClasses, TEngine extends MutationEngine<TCustomMutations> = MutationEngine<TCustomMutations>> extends Mutation<Operation, TCustomMutations, TOptions, TEngine> {
|
|
5
|
+
readonly kind = "Operation";
|
|
6
|
+
parameters: MutationFor<TCustomMutations, "Model">;
|
|
7
|
+
returnType: MutationFor<TCustomMutations, Type["kind"]>;
|
|
8
|
+
constructor(engine: TEngine, sourceType: Operation, referenceTypes: MemberType[] | undefined, options: TOptions);
|
|
9
|
+
protected mutateParameters(): void;
|
|
10
|
+
protected mutateReturnType(): void;
|
|
11
|
+
mutate(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/mutation/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,iBAAiB,CAC5B,QAAQ,SAAS,eAAe,EAChC,gBAAgB,SAAS,qBAAqB,EAC9C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CACnF,SAAQ,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC;IAChE,QAAQ,CAAC,IAAI,eAAe;IAC5B,UAAU,EAAG,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,UAAU,EAAG,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAGvD,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,UAAU,EAAE,YAAK,EACjC,OAAO,EAAE,QAAQ;IAKnB,SAAS,CAAC,gBAAgB;IAI1B,SAAS,CAAC,gBAAgB;IAI1B,MAAM;CAIP"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Mutation } from "./mutation.js";
|
|
2
|
+
export class OperationMutation extends Mutation {
|
|
3
|
+
kind = "Operation";
|
|
4
|
+
parameters;
|
|
5
|
+
returnType;
|
|
6
|
+
constructor(engine, sourceType, referenceTypes = [], options) {
|
|
7
|
+
super(engine, sourceType, referenceTypes, options);
|
|
8
|
+
}
|
|
9
|
+
mutateParameters() {
|
|
10
|
+
this.parameters = this.engine.mutate(this.sourceType.parameters, this.options);
|
|
11
|
+
}
|
|
12
|
+
mutateReturnType() {
|
|
13
|
+
this.returnType = this.engine.mutate(this.sourceType.returnType, this.options);
|
|
14
|
+
}
|
|
15
|
+
mutate() {
|
|
16
|
+
this.mutateParameters();
|
|
17
|
+
this.mutateReturnType();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/mutation/operation.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,iBAIX,SAAQ,QAAwD;IACvD,IAAI,GAAG,WAAW,CAAC;IAC5B,UAAU,CAA0C;IACpD,UAAU,CAA+C;IAEzD,YACE,MAAe,EACf,UAAqB,EACrB,iBAA+B,EAAE,EACjC,OAAiB;QAEjB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MemberType, Scalar } from "@typespec/compiler";
|
|
2
|
+
import type { CustomMutationClasses, MutationEngine, MutationFor, MutationOptions } from "./mutation-engine.js";
|
|
3
|
+
import { Mutation } from "./mutation.js";
|
|
4
|
+
export declare class ScalarMutation<TOptions extends MutationOptions, TCustomMutations extends CustomMutationClasses, TEngine extends MutationEngine<TCustomMutations> = MutationEngine<TCustomMutations>> extends Mutation<Scalar, TCustomMutations, TOptions, TEngine> {
|
|
5
|
+
readonly kind = "Scalar";
|
|
6
|
+
baseScalar?: MutationFor<TCustomMutations, "Scalar">;
|
|
7
|
+
constructor(engine: TEngine, sourceType: Scalar, referenceTypes: MemberType[] | undefined, options: TOptions);
|
|
8
|
+
protected mutateBaseScalar(): void;
|
|
9
|
+
mutate(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=scalar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalar.d.ts","sourceRoot":"","sources":["../../../src/mutation/scalar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,cAAc,CACzB,QAAQ,SAAS,eAAe,EAChC,gBAAgB,SAAS,qBAAqB,EAC9C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CACnF,SAAQ,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC7D,QAAQ,CAAC,IAAI,YAAY;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAGnD,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,UAAU,EAAE,YAAK,EACjC,OAAO,EAAE,QAAQ;IAKnB,SAAS,CAAC,gBAAgB;IAM1B,MAAM;CAGP"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Mutation } from "./mutation.js";
|
|
2
|
+
export class ScalarMutation extends Mutation {
|
|
3
|
+
kind = "Scalar";
|
|
4
|
+
baseScalar;
|
|
5
|
+
constructor(engine, sourceType, referenceTypes = [], options) {
|
|
6
|
+
super(engine, sourceType, referenceTypes, options);
|
|
7
|
+
}
|
|
8
|
+
mutateBaseScalar() {
|
|
9
|
+
if (this.sourceType.baseScalar) {
|
|
10
|
+
this.baseScalar = this.engine.mutate(this.sourceType.baseScalar, this.options);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
mutate() {
|
|
14
|
+
this.mutateBaseScalar();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=scalar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../../../src/mutation/scalar.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,cAIX,SAAQ,QAAqD;IACpD,IAAI,GAAG,QAAQ,CAAC;IACzB,UAAU,CAA2C;IAErD,YACE,MAAe,EACf,UAAkB,EAClB,iBAA+B,EAAE,EACjC,OAAiB;QAEjB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Typekit } from "@typespec/compiler/typekit";
|
|
2
|
+
import type { MutationSubgraph } from "../mutation-node/mutation-subgraph.js";
|
|
3
|
+
import { type ConstructorsFor, type CustomMutationClasses, MutationEngine, MutationOptions } from "./mutation-engine.js";
|
|
4
|
+
export declare class SimpleMutationEngine<TCustomMutations extends CustomMutationClasses> extends MutationEngine<TCustomMutations> {
|
|
5
|
+
constructor($: Typekit, mutatorClasses: ConstructorsFor<TCustomMutations>);
|
|
6
|
+
getDefaultMutationSubgraph(options: MutationOptions): MutationSubgraph;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=simple-mutation-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-mutation-engine.d.ts","sourceRoot":"","sources":["../../../src/mutation/simple-mutation-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,oBAAoB,CAC/B,gBAAgB,SAAS,qBAAqB,CAC9C,SAAQ,cAAc,CAAC,gBAAgB,CAAC;gBAC5B,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC;IAKzE,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB;CAGvE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MutationEngine, MutationOptions, } from "./mutation-engine.js";
|
|
2
|
+
export class SimpleMutationEngine extends MutationEngine {
|
|
3
|
+
constructor($, mutatorClasses) {
|
|
4
|
+
super($, mutatorClasses);
|
|
5
|
+
this.registerSubgraph("subgraph");
|
|
6
|
+
}
|
|
7
|
+
getDefaultMutationSubgraph(options) {
|
|
8
|
+
return super.getMutationSubgraph(options, "subgraph");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=simple-mutation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-mutation-engine.js","sourceRoot":"","sources":["../../../src/mutation/simple-mutation-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,oBAEX,SAAQ,cAAgC;IACxC,YAAY,CAAU,EAAE,cAAiD;QACvE,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,0BAA0B,CAAC,OAAwB;QACjD,OAAO,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MemberType, Type, UnionVariant } from "@typespec/compiler";
|
|
2
|
+
import type { CustomMutationClasses, MutationEngine, MutationFor, MutationOptions } from "./mutation-engine.js";
|
|
3
|
+
import { Mutation } from "./mutation.js";
|
|
4
|
+
export declare class UnionVariantMutation<TOptions extends MutationOptions, TCustomMutations extends CustomMutationClasses, TEngine extends MutationEngine<TCustomMutations> = MutationEngine<TCustomMutations>> extends Mutation<UnionVariant, TCustomMutations, TOptions, TEngine> {
|
|
5
|
+
readonly kind = "UnionVariant";
|
|
6
|
+
type: MutationFor<TCustomMutations, Type["kind"]>;
|
|
7
|
+
constructor(engine: TEngine, sourceType: UnionVariant, referenceTypes: MemberType[] | undefined, options: TOptions);
|
|
8
|
+
mutate(): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=union-variant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-variant.d.ts","sourceRoot":"","sources":["../../../src/mutation/union-variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,oBAAoB,CAC/B,QAAQ,SAAS,eAAe,EAChC,gBAAgB,SAAS,qBAAqB,EAC9C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CACnF,SAAQ,QAAQ,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC;IACnE,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,IAAI,EAAG,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAGjD,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,YAAY,EACxB,cAAc,EAAE,UAAU,EAAE,YAAK,EACjC,OAAO,EAAE,QAAQ;IAKnB,MAAM,IAAI,IAAI;CAGf"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Mutation } from "./mutation.js";
|
|
2
|
+
export class UnionVariantMutation extends Mutation {
|
|
3
|
+
kind = "UnionVariant";
|
|
4
|
+
type;
|
|
5
|
+
constructor(engine, sourceType, referenceTypes = [], options) {
|
|
6
|
+
super(engine, sourceType, referenceTypes, options);
|
|
7
|
+
}
|
|
8
|
+
mutate() {
|
|
9
|
+
this.type = this.engine.mutate(this.sourceType.type, this.options);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=union-variant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-variant.js","sourceRoot":"","sources":["../../../src/mutation/union-variant.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,oBAIX,SAAQ,QAA2D;IAC1D,IAAI,GAAG,cAAc,CAAC;IAC/B,IAAI,CAA+C;IAEnD,YACE,MAAe,EACf,UAAwB,EACxB,iBAA+B,EAAE,EACjC,OAAiB;QAEjB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MemberType, Union } from "@typespec/compiler";
|
|
2
|
+
import type { CustomMutationClasses, MutationEngine, MutationFor, MutationOptions } from "./mutation-engine.js";
|
|
3
|
+
import { Mutation } from "./mutation.js";
|
|
4
|
+
export declare class UnionMutation<TOptions extends MutationOptions, TCustomMutations extends CustomMutationClasses, TEngine extends MutationEngine<TCustomMutations> = MutationEngine<TCustomMutations>> extends Mutation<Union, TCustomMutations, TOptions, TEngine> {
|
|
5
|
+
readonly kind = "Union";
|
|
6
|
+
variants: Map<string | symbol, MutationFor<TCustomMutations, "UnionVariant">>;
|
|
7
|
+
constructor(engine: TEngine, sourceType: Union, referenceTypes: MemberType[] | undefined, options: TOptions);
|
|
8
|
+
protected mutateVariants(): void;
|
|
9
|
+
mutate(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=union.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../src/mutation/union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAa,aAAa,CACxB,QAAQ,SAAS,eAAe,EAChC,gBAAgB,SAAS,qBAAqB,EAC9C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,CACnF,SAAQ,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC5D,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAa;gBAGxF,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,KAAK,EACjB,cAAc,EAAE,UAAU,EAAE,YAAK,EACjC,OAAO,EAAE,QAAQ;IAKnB,SAAS,CAAC,cAAc;IASxB,MAAM;CAGP"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Mutation } from "./mutation.js";
|
|
2
|
+
export class UnionMutation extends Mutation {
|
|
3
|
+
kind = "Union";
|
|
4
|
+
variants = new Map();
|
|
5
|
+
constructor(engine, sourceType, referenceTypes = [], options) {
|
|
6
|
+
super(engine, sourceType, referenceTypes, options);
|
|
7
|
+
}
|
|
8
|
+
mutateVariants() {
|
|
9
|
+
this.variants = new Map([...this.sourceType.variants].map(([name, variant]) => [
|
|
10
|
+
name,
|
|
11
|
+
this.engine.mutate(variant, this.options),
|
|
12
|
+
]));
|
|
13
|
+
}
|
|
14
|
+
mutate() {
|
|
15
|
+
this.mutateVariants();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=union.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union.js","sourceRoot":"","sources":["../../../src/mutation/union.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,aAIX,SAAQ,QAAoD;IACnD,IAAI,GAAG,OAAO,CAAC;IACxB,QAAQ,GAAwE,IAAI,GAAG,EAAE,CAAC;IAE1F,YACE,MAAe,EACf,UAAiB,EACjB,iBAA+B,EAAE,EACjC,OAAiB;QAEjB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAES,cAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CACrB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;YACrD,IAAI;YACJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;SAC1C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EnumMember } from "@typespec/compiler";
|
|
2
|
+
import { MutationNode } from "./mutation-node.js";
|
|
3
|
+
export declare class EnumMemberMutationNode extends MutationNode<EnumMember> {
|
|
4
|
+
readonly kind = "EnumMember";
|
|
5
|
+
traverse(): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=enum-member.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-member.d.ts","sourceRoot":"","sources":["../../../src/mutation-node/enum-member.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,sBAAuB,SAAQ,YAAY,CAAC,UAAU,CAAC;IAClE,QAAQ,CAAC,IAAI,gBAAgB;IAE7B,QAAQ;CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-member.js","sourceRoot":"","sources":["../../../src/mutation-node/enum-member.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,sBAAuB,SAAQ,YAAwB;IACzD,IAAI,GAAG,YAAY,CAAC;IAE7B,QAAQ,KAAI,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-member.test.d.ts","sourceRoot":"","sources":["../../../src/mutation-node/enum-member.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { t } from "@typespec/compiler/testing";
|
|
2
|
+
import { beforeEach, expect, it } from "vitest";
|
|
3
|
+
import { Tester } from "../../test/test-host.js";
|
|
4
|
+
import { getSubgraph } from "../../test/utils.js";
|
|
5
|
+
let runner;
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
runner = await Tester.createInstance();
|
|
8
|
+
});
|
|
9
|
+
it("handles mutation of member values", async () => {
|
|
10
|
+
const { program, Foo, a } = await runner.compile(t.code `
|
|
11
|
+
enum ${t.enum("Foo")} {
|
|
12
|
+
${t.enumMember("a")}: "valueA";
|
|
13
|
+
b: "valueB";
|
|
14
|
+
}
|
|
15
|
+
`);
|
|
16
|
+
const subgraph = getSubgraph(program);
|
|
17
|
+
const fooNode = subgraph.getNode(Foo);
|
|
18
|
+
const aNode = subgraph.getNode(a);
|
|
19
|
+
aNode.mutate((clone) => (clone.value = "valueARenamed"));
|
|
20
|
+
expect(aNode.isMutated).toBe(true);
|
|
21
|
+
expect(fooNode.isMutated).toBe(true);
|
|
22
|
+
expect(fooNode.mutatedType.members.get("a") === aNode.mutatedType).toBe(true);
|
|
23
|
+
expect(aNode.mutatedType.value).toBe("valueARenamed");
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=enum-member.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-member.test.js","sourceRoot":"","sources":["../../../src/mutation-node/enum-member.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAuB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,IAAI,MAAsB,CAAC;AAC3B,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;aAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;UAChB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;;;KAGtB,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Enum, EnumMember } from "@typespec/compiler";
|
|
2
|
+
import { MutationNode } from "./mutation-node.js";
|
|
3
|
+
export declare class EnumMutationNode extends MutationNode<Enum> {
|
|
4
|
+
readonly kind = "Enum";
|
|
5
|
+
traverse(): void;
|
|
6
|
+
connectMember(memberNode: MutationNode<EnumMember>, sourcePropName: string): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/mutation-node/enum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,IAAI,CAAC;IACtD,QAAQ,CAAC,IAAI,UAAU;IAEvB,QAAQ;IAOR,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,MAAM;CAkB3E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MutationEdge } from "./mutation-edge.js";
|
|
2
|
+
import { MutationNode } from "./mutation-node.js";
|
|
3
|
+
export class EnumMutationNode extends MutationNode {
|
|
4
|
+
kind = "Enum";
|
|
5
|
+
traverse() {
|
|
6
|
+
for (const member of this.sourceType.members.values()) {
|
|
7
|
+
const memberNode = this.subgraph.getNode(member);
|
|
8
|
+
this.connectMember(memberNode, member.name);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
connectMember(memberNode, sourcePropName) {
|
|
12
|
+
MutationEdge.create(this, memberNode, {
|
|
13
|
+
onTailMutation: () => {
|
|
14
|
+
this.mutatedType.members.delete(sourcePropName);
|
|
15
|
+
this.mutatedType.members.set(memberNode.mutatedType.name, memberNode.mutatedType);
|
|
16
|
+
},
|
|
17
|
+
onTailDeletion: () => {
|
|
18
|
+
this.mutatedType.members.delete(sourcePropName);
|
|
19
|
+
},
|
|
20
|
+
onTailReplaced: (newTail) => {
|
|
21
|
+
if (newTail.mutatedType.kind !== "EnumMember") {
|
|
22
|
+
throw new Error("Cannot replace enum member with non-enum member type");
|
|
23
|
+
}
|
|
24
|
+
this.mutatedType.members.delete(sourcePropName);
|
|
25
|
+
this.mutatedType.members.set(newTail.mutatedType.name, newTail.mutatedType);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../src/mutation-node/enum.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,gBAAiB,SAAQ,YAAkB;IAC7C,IAAI,GAAG,MAAM,CAAC;IAEvB,QAAQ;QACN,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,aAAa,CAAC,UAAoC,EAAE,cAAsB;QACxE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE;YACpC,cAAc,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;YACpF,CAAC;YACD,cAAc,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,CAAC;YACD,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC1B,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC1E,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9E,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.test.d.ts","sourceRoot":"","sources":["../../../src/mutation-node/enum.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { t } from "@typespec/compiler/testing";
|
|
2
|
+
import { beforeEach, expect, it } from "vitest";
|
|
3
|
+
import { Tester } from "../../test/test-host.js";
|
|
4
|
+
import { getSubgraph } from "../../test/utils.js";
|
|
5
|
+
let runner;
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
runner = await Tester.createInstance();
|
|
8
|
+
});
|
|
9
|
+
it("handles mutation of members", async () => {
|
|
10
|
+
const { program, Foo, a } = await runner.compile(t.code `
|
|
11
|
+
enum ${t.enum("Foo")} {
|
|
12
|
+
${t.enumMember("a")};
|
|
13
|
+
b;
|
|
14
|
+
}
|
|
15
|
+
`);
|
|
16
|
+
const subgraph = getSubgraph(program);
|
|
17
|
+
const fooNode = subgraph.getNode(Foo);
|
|
18
|
+
const aNode = subgraph.getNode(a);
|
|
19
|
+
aNode.mutate((clone) => (clone.name = "aRenamed"));
|
|
20
|
+
expect(aNode.isMutated).toBe(true);
|
|
21
|
+
expect(fooNode.isMutated).toBe(true);
|
|
22
|
+
expect(fooNode.mutatedType.members.get("a") === undefined).toBeTruthy();
|
|
23
|
+
expect(fooNode.mutatedType.members.get("aRenamed") === aNode.mutatedType).toBeTruthy();
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=enum.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.test.js","sourceRoot":"","sources":["../../../src/mutation-node/enum.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAuB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,IAAI,MAAsB,CAAC;AAC3B,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;aAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;UAChB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;;;KAGtB,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACxE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;AACzF,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BooleanLiteral, Enum, EnumMember, Interface, IntrinsicType, Model, ModelProperty, NumericLiteral, Operation, Scalar, StringLiteral, Tuple, Type, Union, UnionVariant } from "@typespec/compiler";
|
|
2
|
+
import { EnumMemberMutationNode } from "./enum-member.js";
|
|
3
|
+
import { EnumMutationNode } from "./enum.js";
|
|
4
|
+
import { InterfaceMutationNode } from "./interface.js";
|
|
5
|
+
import { IntrinsicMutationNode } from "./intrinsic.js";
|
|
6
|
+
import { LiteralMutationNode } from "./literal.js";
|
|
7
|
+
import { ModelPropertyMutationNode } from "./model-property.js";
|
|
8
|
+
import { ModelMutationNode } from "./model.js";
|
|
9
|
+
import type { MutationSubgraph } from "./mutation-subgraph.js";
|
|
10
|
+
import { OperationMutationNode } from "./operation.js";
|
|
11
|
+
import { ScalarMutationNode } from "./scalar.js";
|
|
12
|
+
import { TupleMutationNode } from "./tuple.js";
|
|
13
|
+
import { UnionVariantMutationNode } from "./union-variant.js";
|
|
14
|
+
import { UnionMutationNode } from "./union.js";
|
|
15
|
+
export declare function mutationNodeFor<T extends Type>(subgraph: MutationSubgraph, sourceType: T): MutationNodeForType<T>;
|
|
16
|
+
export type MutationNodeForType<T extends Type> = T extends Model ? ModelMutationNode : T extends Interface ? InterfaceMutationNode : T extends Operation ? OperationMutationNode : T extends ModelProperty ? ModelPropertyMutationNode : T extends Scalar ? ScalarMutationNode : T extends Tuple ? TupleMutationNode : T extends Union ? UnionMutationNode : T extends UnionVariant ? UnionVariantMutationNode : T extends Enum ? EnumMutationNode : T extends EnumMember ? EnumMemberMutationNode : T extends StringLiteral | NumericLiteral | BooleanLiteral ? LiteralMutationNode : T extends IntrinsicType ? IntrinsicMutationNode : never;
|
|
17
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/mutation-node/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACJ,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,MAAM,EACN,aAAa,EACb,KAAK,EACL,IAAI,EACJ,KAAK,EACL,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,eAAe,CAAC,CAAC,SAAS,IAAI,EAC5C,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,CAAC,GACZ,mBAAmB,CAAC,CAAC,CAAC,CAkCxB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,GAC7D,iBAAiB,GACjB,CAAC,SAAS,SAAS,GACjB,qBAAqB,GACrB,CAAC,SAAS,SAAS,GACjB,qBAAqB,GACrB,CAAC,SAAS,aAAa,GACrB,yBAAyB,GACzB,CAAC,SAAS,MAAM,GACd,kBAAkB,GAClB,CAAC,SAAS,KAAK,GACb,iBAAiB,GACjB,CAAC,SAAS,KAAK,GACb,iBAAiB,GACjB,CAAC,SAAS,YAAY,GACpB,wBAAwB,GACxB,CAAC,SAAS,IAAI,GACZ,gBAAgB,GAChB,CAAC,SAAS,UAAU,GAClB,sBAAsB,GACtB,CAAC,SAAS,aAAa,GAAG,cAAc,GAAG,cAAc,GACvD,mBAAmB,GACnB,CAAC,SAAS,aAAa,GACrB,qBAAqB,GACrB,KAAK,CAAC"}
|