domain-knowledge-kit 0.2.10 → 0.2.11
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/README.md +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/features/adr/commands/adr-related.d.ts.map +1 -1
- package/dist/features/adr/commands/adr-related.js +4 -3
- package/dist/features/adr/commands/adr-related.js.map +1 -1
- package/dist/features/adr/commands/adr-show.d.ts.map +1 -1
- package/dist/features/adr/commands/adr-show.js +3 -2
- package/dist/features/adr/commands/adr-show.js.map +1 -1
- package/dist/features/agent/commands/init.d.ts.map +1 -1
- package/dist/features/agent/commands/init.js +36 -8
- package/dist/features/agent/commands/init.js.map +1 -1
- package/dist/features/agent/commands/prime.d.ts.map +1 -1
- package/dist/features/agent/commands/prime.js +47 -3
- package/dist/features/agent/commands/prime.js.map +1 -1
- package/dist/features/audit/commands/stats.d.ts.map +1 -1
- package/dist/features/audit/commands/stats.js +23 -0
- package/dist/features/audit/commands/stats.js.map +1 -1
- package/dist/features/pipeline/commands/render.d.ts.map +1 -1
- package/dist/features/pipeline/commands/render.js +3 -2
- package/dist/features/pipeline/commands/render.js.map +1 -1
- package/dist/features/pipeline/tests/validator.test.js +16 -0
- package/dist/features/pipeline/tests/validator.test.js.map +1 -1
- package/dist/features/pipeline/validator.d.ts.map +1 -1
- package/dist/features/pipeline/validator.js +7 -0
- package/dist/features/pipeline/validator.js.map +1 -1
- package/dist/features/query/commands/graph.d.ts.map +1 -1
- package/dist/features/query/commands/graph.js +140 -50
- package/dist/features/query/commands/graph.js.map +1 -1
- package/dist/features/query/commands/list.d.ts.map +1 -1
- package/dist/features/query/commands/list.js +2 -1
- package/dist/features/query/commands/list.js.map +1 -1
- package/dist/features/query/commands/related.d.ts.map +1 -1
- package/dist/features/query/commands/related.js +3 -2
- package/dist/features/query/commands/related.js.map +1 -1
- package/dist/features/query/commands/search.d.ts.map +1 -1
- package/dist/features/query/commands/search.js +2 -1
- package/dist/features/query/commands/search.js.map +1 -1
- package/dist/features/query/commands/show.d.ts.map +1 -1
- package/dist/features/query/commands/show.js +3 -2
- package/dist/features/query/commands/show.js.map +1 -1
- package/dist/features/query/commands/summary.d.ts.map +1 -1
- package/dist/features/query/commands/summary.js +60 -4
- package/dist/features/query/commands/summary.js.map +1 -1
- package/dist/features/refactor/commands/move.d.ts +14 -0
- package/dist/features/refactor/commands/move.d.ts.map +1 -0
- package/dist/features/refactor/commands/move.js +166 -0
- package/dist/features/refactor/commands/move.js.map +1 -0
- package/dist/features/refactor/commands/rename.d.ts.map +1 -1
- package/dist/features/refactor/commands/rename.js +329 -131
- package/dist/features/refactor/commands/rename.js.map +1 -1
- package/dist/features/refactor/commands/rm.d.ts.map +1 -1
- package/dist/features/refactor/commands/rm.js +349 -76
- package/dist/features/refactor/commands/rm.js.map +1 -1
- package/dist/features/refactor/refactor-helpers.d.ts +117 -0
- package/dist/features/refactor/refactor-helpers.d.ts.map +1 -0
- package/dist/features/refactor/refactor-helpers.js +653 -0
- package/dist/features/refactor/refactor-helpers.js.map +1 -0
- package/dist/features/scaffold/commands/add-item.d.ts +4 -1
- package/dist/features/scaffold/commands/add-item.d.ts.map +1 -1
- package/dist/features/scaffold/commands/add-item.js +60 -4
- package/dist/features/scaffold/commands/add-item.js.map +1 -1
- package/dist/features/scaffold/commands/new-adr.d.ts.map +1 -1
- package/dist/features/scaffold/commands/new-adr.js +11 -1
- package/dist/features/scaffold/commands/new-adr.js.map +1 -1
- package/dist/features/scaffold/commands/new-domain.d.ts.map +1 -1
- package/dist/features/scaffold/commands/new-domain.js +8 -3
- package/dist/features/scaffold/commands/new-domain.js.map +1 -1
- package/dist/features/scaffold/wiring.d.ts +29 -0
- package/dist/features/scaffold/wiring.d.ts.map +1 -0
- package/dist/features/scaffold/wiring.js +180 -0
- package/dist/features/scaffold/wiring.js.map +1 -0
- package/dist/shared/graph.d.ts.map +1 -1
- package/dist/shared/graph.js +5 -0
- package/dist/shared/graph.js.map +1 -1
- package/dist/shared/tests/graph.test.js +8 -0
- package/dist/shared/tests/graph.test.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,93 +1,366 @@
|
|
|
1
1
|
import { existsSync, rmSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { loadDomainModel } from "../../../shared/loader.js";
|
|
4
|
-
import { contextsDir } from "../../../shared/paths.js";
|
|
4
|
+
import { contextsDir, adrDir } from "../../../shared/paths.js";
|
|
5
5
|
import { DomainGraph } from "../../../shared/graph.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
import { parseYaml, stringifyYaml } from "../../../shared/yaml.js";
|
|
7
|
+
import { classifyId, KIND_TO_DIR, removeGlossaryEntry, removeActorEntry, removeFlowFromIndex, removeFlowStepsForItem, removeFlowStepsForContext, removeContextFromIndex, cleanDomainItemRef, updateAdrFrontmatter, allAdrFiles, allDomainFiles, printDiff, } from "../refactor-helpers.js";
|
|
8
|
+
// ── Dependent detection ───────────────────────────────────────────────
|
|
9
|
+
/**
|
|
10
|
+
* Find all items that hold YAML references to the node being removed.
|
|
11
|
+
*
|
|
12
|
+
* Extends the basic "edge.to === id" check with cases where the graph
|
|
13
|
+
* edge goes FROM the removed node, but the TARGET file holds the back-
|
|
14
|
+
* reference (e.g. event.raised_by, policy.when.events, command.actor).
|
|
15
|
+
*/
|
|
16
|
+
function findDependents(graph, id, nodeKind) {
|
|
17
|
+
const dependents = new Set();
|
|
18
|
+
for (const edge of graph.edges) {
|
|
19
|
+
if (edge.label === "contains")
|
|
20
|
+
continue;
|
|
21
|
+
// Target of an edge points to this node → source holds reference
|
|
22
|
+
if (edge.to === id) {
|
|
23
|
+
dependents.add(edge.from);
|
|
20
24
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
// Source is this node; check edge labels where the TARGET holds a
|
|
26
|
+
// back-reference in its own file.
|
|
27
|
+
if (edge.from === id) {
|
|
28
|
+
if (edge.label === "triggers") {
|
|
29
|
+
// event --triggers--> policy: policy.when.events references this event
|
|
30
|
+
dependents.add(edge.to);
|
|
31
|
+
}
|
|
32
|
+
else if (edge.label === "initiates") {
|
|
33
|
+
// actor --initiates--> command: command.actor references this actor
|
|
34
|
+
dependents.add(edge.to);
|
|
35
|
+
}
|
|
36
|
+
else if (nodeKind === "aggregate" &&
|
|
37
|
+
(edge.label === "emits" || edge.label === "handles")) {
|
|
38
|
+
// aggregate --emits--> event: event.raised_by references this aggregate
|
|
39
|
+
// aggregate --handles--> command: command.handled_by references this aggregate
|
|
40
|
+
dependents.add(edge.to);
|
|
41
|
+
}
|
|
27
42
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
43
|
+
}
|
|
44
|
+
return dependents;
|
|
45
|
+
}
|
|
46
|
+
// ── Inline YAML helpers ───────────────────────────────────────────────
|
|
47
|
+
/** Remove an adr_ref entry from a domain YAML file (YAML-aware). */
|
|
48
|
+
function cleanAdrRef(filePath, adrId, showDiff) {
|
|
49
|
+
if (!existsSync(filePath))
|
|
50
|
+
return;
|
|
51
|
+
const content = readFileSync(filePath, "utf-8");
|
|
52
|
+
const data = parseYaml(content);
|
|
53
|
+
if (!data.adr_refs?.includes(adrId))
|
|
54
|
+
return;
|
|
55
|
+
data.adr_refs = data.adr_refs.filter((r) => r !== adrId);
|
|
56
|
+
if (data.adr_refs.length === 0)
|
|
57
|
+
delete data.adr_refs;
|
|
58
|
+
const newContent = stringifyYaml(data);
|
|
59
|
+
if (showDiff)
|
|
60
|
+
printDiff(filePath, content, newContent);
|
|
61
|
+
writeFileSync(filePath, newContent, "utf-8");
|
|
62
|
+
}
|
|
63
|
+
/** Remove a scoped ID from domain_refs or any list field in a YAML file. */
|
|
64
|
+
function cleanScopedIdFromFile(filePath, scopedId, showDiff) {
|
|
65
|
+
if (!existsSync(filePath))
|
|
66
|
+
return;
|
|
67
|
+
const content = readFileSync(filePath, "utf-8");
|
|
68
|
+
const data = parseYaml(content);
|
|
69
|
+
let changed = false;
|
|
70
|
+
for (const key of ["domain_refs", "adr_refs"]) {
|
|
71
|
+
const arr = data[key];
|
|
72
|
+
if (arr?.includes(scopedId)) {
|
|
73
|
+
const filtered = arr.filter((r) => r !== scopedId);
|
|
74
|
+
if (filtered.length === 0)
|
|
75
|
+
delete data[key];
|
|
76
|
+
else
|
|
77
|
+
data[key] = filtered;
|
|
78
|
+
changed = true;
|
|
33
79
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
80
|
+
}
|
|
81
|
+
if (!changed)
|
|
82
|
+
return;
|
|
83
|
+
const newContent = stringifyYaml(data);
|
|
84
|
+
if (showDiff)
|
|
85
|
+
printDiff(filePath, content, newContent);
|
|
86
|
+
writeFileSync(filePath, newContent, "utf-8");
|
|
87
|
+
}
|
|
88
|
+
// ── Per-kind removal helpers ──────────────────────────────────────────
|
|
89
|
+
function rmActor(actorName, graph, opts) {
|
|
90
|
+
const actorNodeId = `actor.${actorName}`;
|
|
91
|
+
if (!graph.hasNode(actorNodeId)) {
|
|
92
|
+
console.error(`Actor '${actorName}' not found.`);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
const dependents = findDependents(graph, actorNodeId, "actor");
|
|
96
|
+
const realDeps = new Set([...dependents].filter((d) => graph.nodes.get(d)?.kind !== "adr"));
|
|
97
|
+
if (realDeps.size > 0 && !opts.force) {
|
|
98
|
+
console.error(`Cannot remove actor '${actorName}'. It is referenced by:`);
|
|
99
|
+
for (const dep of realDeps)
|
|
100
|
+
console.error(` - ${dep}`);
|
|
101
|
+
console.error(`\nUse --force to clean up references and remove.`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
if (realDeps.size > 0 && opts.force) {
|
|
105
|
+
const ctxBase = contextsDir(opts.root);
|
|
106
|
+
for (const depId of realDeps) {
|
|
107
|
+
const depNode = graph.nodes.get(depId);
|
|
108
|
+
if (!depNode?.context)
|
|
109
|
+
continue;
|
|
110
|
+
const typeDir = KIND_TO_DIR[depNode.kind];
|
|
111
|
+
if (!typeDir)
|
|
112
|
+
continue;
|
|
113
|
+
const filePath = join(ctxBase, depNode.context, typeDir, `${depNode.name}.yml`);
|
|
114
|
+
cleanDomainItemRef(filePath, depNode.kind, actorName, opts.diff ?? false);
|
|
46
115
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
116
|
+
}
|
|
117
|
+
removeActorEntry(opts.root, actorName, opts.diff ?? false);
|
|
118
|
+
console.log(`Successfully removed actor '${actorName}'.`);
|
|
119
|
+
}
|
|
120
|
+
function rmFlow(flowName, graph, opts) {
|
|
121
|
+
if (!graph.hasNode(`flow.${flowName}`)) {
|
|
122
|
+
console.error(`Flow '${flowName}' not found.`);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
removeFlowFromIndex(opts.root, flowName, opts.diff ?? false);
|
|
126
|
+
console.log(`Successfully removed flow '${flowName}'.`);
|
|
127
|
+
}
|
|
128
|
+
function rmAdr(adrId, graph, opts) {
|
|
129
|
+
if (!graph.hasNode(adrId)) {
|
|
130
|
+
console.error(`ADR '${adrId}' not found.`);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
const dependents = findDependents(graph, adrId, "adr");
|
|
134
|
+
const domainDeps = [];
|
|
135
|
+
const adrDeps = [];
|
|
136
|
+
for (const depId of dependents) {
|
|
137
|
+
const node = graph.nodes.get(depId);
|
|
138
|
+
if (!node)
|
|
139
|
+
continue;
|
|
140
|
+
if (node.kind === "adr")
|
|
141
|
+
adrDeps.push(node);
|
|
142
|
+
else
|
|
143
|
+
domainDeps.push(node);
|
|
144
|
+
}
|
|
145
|
+
if ((domainDeps.length > 0 || adrDeps.length > 0) && !opts.force) {
|
|
146
|
+
console.error(`Cannot remove '${adrId}'. It is referenced by:`);
|
|
147
|
+
for (const n of [...domainDeps, ...adrDeps])
|
|
148
|
+
console.error(` - ${n.id}`);
|
|
149
|
+
console.error(`\nUse --force to clean up references and remove.`);
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
if (opts.force) {
|
|
153
|
+
const ctxBase = contextsDir(opts.root);
|
|
154
|
+
for (const node of domainDeps) {
|
|
155
|
+
if (!node.context || node.kind === "glossary")
|
|
156
|
+
continue;
|
|
157
|
+
const typeDir = KIND_TO_DIR[node.kind];
|
|
158
|
+
if (!typeDir)
|
|
159
|
+
continue;
|
|
160
|
+
const filePath = join(ctxBase, node.context, typeDir, `${node.name}.yml`);
|
|
161
|
+
cleanAdrRef(filePath, adrId, opts.diff ?? false);
|
|
162
|
+
}
|
|
163
|
+
const adrBase = adrDir(opts.root);
|
|
164
|
+
for (const node of adrDeps) {
|
|
165
|
+
const filePath = join(adrBase, `${node.name}.md`);
|
|
166
|
+
updateAdrFrontmatter(filePath, (fm) => {
|
|
167
|
+
if (fm["superseded_by"] !== adrId)
|
|
168
|
+
return false;
|
|
169
|
+
delete fm["superseded_by"];
|
|
170
|
+
return true;
|
|
171
|
+
}, opts.diff ?? false);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const adrPath = join(adrDir(opts.root), `${adrId}.md`);
|
|
175
|
+
if (!existsSync(adrPath)) {
|
|
176
|
+
console.error(`ADR file not found: ${adrPath}`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
if (opts.diff) {
|
|
180
|
+
console.log(`\n--- a/${adrPath}\n+++ /dev/null`);
|
|
181
|
+
console.log(`- (File deleted: ${adrPath})`);
|
|
182
|
+
}
|
|
183
|
+
rmSync(adrPath);
|
|
184
|
+
console.log(`Successfully removed '${adrId}'.`);
|
|
185
|
+
}
|
|
186
|
+
function rmContext(ctxName, graph, opts) {
|
|
187
|
+
if (!graph.hasNode(`context.${ctxName}`)) {
|
|
188
|
+
console.error(`Context '${ctxName}' not found.`);
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
const ctxDir = join(contextsDir(opts.root), ctxName);
|
|
192
|
+
const ctxItems = [...graph.nodes.values()].filter((n) => n.context === ctxName);
|
|
193
|
+
const hasItems = ctxItems.some((n) => n.kind !== "context");
|
|
194
|
+
// Find external nodes (outside this context) that reference items in this context
|
|
195
|
+
const externalRefs = new Set();
|
|
196
|
+
for (const edge of graph.edges) {
|
|
197
|
+
if (edge.label === "contains")
|
|
198
|
+
continue;
|
|
199
|
+
const toCtx = graph.nodes.get(edge.to)?.context;
|
|
200
|
+
const fromNode = graph.nodes.get(edge.from);
|
|
201
|
+
if (toCtx === ctxName && fromNode?.context !== ctxName) {
|
|
202
|
+
externalRefs.add(edge.from);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if ((hasItems || externalRefs.size > 0) && !opts.force) {
|
|
206
|
+
if (hasItems) {
|
|
207
|
+
console.error(`Cannot remove context '${ctxName}': it contains ${ctxItems.filter((n) => n.kind !== "context").length} item(s).`);
|
|
208
|
+
}
|
|
209
|
+
if (externalRefs.size > 0) {
|
|
210
|
+
console.error(`Cannot remove context '${ctxName}': it has external references:`);
|
|
211
|
+
for (const ref of externalRefs)
|
|
212
|
+
console.error(` - ${ref}`);
|
|
54
213
|
}
|
|
55
|
-
|
|
56
|
-
|
|
214
|
+
console.error(`\nUse --force to clean up all references and remove.`);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
if (opts.force) {
|
|
218
|
+
// Remove flow steps that reference items in this context
|
|
219
|
+
removeFlowStepsForContext(opts.root, ctxName, opts.diff ?? false);
|
|
220
|
+
// Remove domain_refs in ADRs pointing to items in this context
|
|
221
|
+
for (const adrFilePath of allAdrFiles(opts.root)) {
|
|
222
|
+
updateAdrFrontmatter(adrFilePath, (fm) => {
|
|
223
|
+
const refs = fm["domain_refs"];
|
|
224
|
+
if (!refs?.length)
|
|
225
|
+
return false;
|
|
226
|
+
const filtered = refs.filter((r) => !r.startsWith(`${ctxName}.`));
|
|
227
|
+
if (filtered.length === refs.length)
|
|
228
|
+
return false;
|
|
229
|
+
if (filtered.length === 0)
|
|
230
|
+
delete fm["domain_refs"];
|
|
231
|
+
else
|
|
232
|
+
fm["domain_refs"] = filtered;
|
|
233
|
+
return true;
|
|
234
|
+
}, opts.diff ?? false);
|
|
57
235
|
}
|
|
58
|
-
// Remove
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const content = readFileSync(metaPath, "utf-8");
|
|
67
|
-
// Minimalist glossary removal logic
|
|
68
|
-
const lines = content.split("\n");
|
|
69
|
-
const newLines = lines.filter(line => !line.includes(`term: ${name}`));
|
|
70
|
-
writeFileSync(metaPath, newLines.join("\n"), "utf-8");
|
|
71
|
-
if (opts.diff) {
|
|
72
|
-
console.log(`\n--- a/${metaPath}\n+++ b/${metaPath}`);
|
|
73
|
-
for (const line of lines) {
|
|
74
|
-
if (line.includes(`term: ${name}`))
|
|
75
|
-
console.log(`- ${line}`);
|
|
76
|
-
}
|
|
236
|
+
// Remove cross-context references in other domain item files
|
|
237
|
+
for (const filePath of allDomainFiles(opts.root)) {
|
|
238
|
+
if (filePath.includes(`/contexts/${ctxName}/`))
|
|
239
|
+
continue;
|
|
240
|
+
for (const itemNode of ctxItems) {
|
|
241
|
+
if (itemNode.kind === "context")
|
|
242
|
+
continue;
|
|
243
|
+
cleanScopedIdFromFile(filePath, itemNode.id, opts.diff ?? false);
|
|
77
244
|
}
|
|
78
245
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
246
|
+
}
|
|
247
|
+
if (opts.diff) {
|
|
248
|
+
console.log(`\n--- a/${ctxDir}/\n+++ /dev/null\n- (Directory removed: ${ctxDir}/)`);
|
|
249
|
+
}
|
|
250
|
+
rmSync(ctxDir, { recursive: true });
|
|
251
|
+
removeContextFromIndex(opts.root, ctxName, opts.diff ?? false);
|
|
252
|
+
console.log(`Successfully removed context '${ctxName}'.`);
|
|
253
|
+
}
|
|
254
|
+
function rmDomainItem(id, graph, opts) {
|
|
255
|
+
const dot = id.indexOf(".");
|
|
256
|
+
const ctx = id.slice(0, dot);
|
|
257
|
+
const name = id.slice(dot + 1);
|
|
258
|
+
if (!graph.hasNode(id)) {
|
|
259
|
+
console.error(`Item '${id}' not found.`);
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
const node = graph.nodes.get(id);
|
|
263
|
+
const dependents = findDependents(graph, id, node.kind);
|
|
264
|
+
const realDeps = new Set([...dependents].filter((d) => graph.nodes.get(d)?.kind !== "context"));
|
|
265
|
+
if (realDeps.size > 0 && !opts.force) {
|
|
266
|
+
console.error(`Cannot remove '${id}'. It is referenced by:`);
|
|
267
|
+
for (const dep of realDeps)
|
|
268
|
+
console.error(` - ${dep}`);
|
|
269
|
+
console.error(`\nUse --force to clean up references and remove.`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
if (realDeps.size > 0 && opts.force) {
|
|
273
|
+
const ctxBase = contextsDir(opts.root);
|
|
274
|
+
for (const depId of realDeps) {
|
|
275
|
+
const depNode = graph.nodes.get(depId);
|
|
276
|
+
if (depNode.kind === "adr") {
|
|
277
|
+
const adrFilePath = join(adrDir(opts.root), `${depNode.name}.md`);
|
|
278
|
+
updateAdrFrontmatter(adrFilePath, (fm) => {
|
|
279
|
+
const refs = fm["domain_refs"];
|
|
280
|
+
if (!refs?.includes(id))
|
|
281
|
+
return false;
|
|
282
|
+
const filtered = refs.filter((r) => r !== id);
|
|
283
|
+
if (filtered.length === 0)
|
|
284
|
+
delete fm["domain_refs"];
|
|
285
|
+
else
|
|
286
|
+
fm["domain_refs"] = filtered;
|
|
287
|
+
return true;
|
|
288
|
+
}, opts.diff ?? false);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (depNode.kind === "flow") {
|
|
292
|
+
removeFlowStepsForItem(opts.root, id, opts.diff ?? false);
|
|
293
|
+
continue;
|
|
88
294
|
}
|
|
295
|
+
if (depNode.kind === "context" || depNode.kind === "glossary")
|
|
296
|
+
continue;
|
|
297
|
+
if (!depNode.context)
|
|
298
|
+
continue;
|
|
299
|
+
const typeDir = KIND_TO_DIR[depNode.kind];
|
|
300
|
+
if (!typeDir)
|
|
301
|
+
continue;
|
|
302
|
+
const filePath = join(ctxBase, depNode.context, typeDir, `${depNode.name}.yml`);
|
|
303
|
+
cleanDomainItemRef(filePath, depNode.kind, name, opts.diff ?? false);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
const ctxDir = join(contextsDir(opts.root), ctx);
|
|
307
|
+
if (node.kind === "glossary") {
|
|
308
|
+
removeGlossaryEntry(ctxDir, name, opts.diff ?? false);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
const typeDir = KIND_TO_DIR[node.kind];
|
|
312
|
+
const itemPath = join(ctxDir, typeDir, `${name}.yml`);
|
|
313
|
+
if (!existsSync(itemPath)) {
|
|
314
|
+
console.error(`File not found: ${itemPath}`);
|
|
315
|
+
process.exit(1);
|
|
316
|
+
}
|
|
317
|
+
if (opts.diff) {
|
|
318
|
+
console.log(`\n--- a/${itemPath}\n+++ /dev/null`);
|
|
319
|
+
console.log(`- (File deleted: ${itemPath})`);
|
|
320
|
+
}
|
|
321
|
+
rmSync(itemPath);
|
|
322
|
+
}
|
|
323
|
+
console.log(`Successfully removed '${id}'.`);
|
|
324
|
+
}
|
|
325
|
+
// ── Command registration ──────────────────────────────────────────────
|
|
326
|
+
export function registerRm(program) {
|
|
327
|
+
program
|
|
328
|
+
.command("rm <id>")
|
|
329
|
+
.alias("remove")
|
|
330
|
+
.alias("delete")
|
|
331
|
+
.description("Remove a domain item, actor, ADR, flow, or context safely, without leaving dangling references")
|
|
332
|
+
.option("--diff", "Show a diff of changes made")
|
|
333
|
+
.option("-f, --force", "Clean up dangling references and remove (required when dependents exist)")
|
|
334
|
+
.option("-r, --root <path>", "Override repository root")
|
|
335
|
+
.addHelpText("after", `
|
|
336
|
+
ID formats:
|
|
337
|
+
ctx.ItemName domain item (event/command/policy/aggregate/read_model/glossary)
|
|
338
|
+
actor.ActorName actor
|
|
339
|
+
flow.FlowName flow
|
|
340
|
+
adr-NNNN Architecture Decision Record
|
|
341
|
+
context.ctxName bounded context (or bare: ctxName)
|
|
342
|
+
`)
|
|
343
|
+
.action((id, opts) => {
|
|
344
|
+
const model = loadDomainModel({ root: opts.root });
|
|
345
|
+
const graph = DomainGraph.from(model);
|
|
346
|
+
const parsed = classifyId(id);
|
|
347
|
+
switch (parsed.kind) {
|
|
348
|
+
case "actor":
|
|
349
|
+
rmActor(parsed.name, graph, opts);
|
|
350
|
+
break;
|
|
351
|
+
case "flow":
|
|
352
|
+
rmFlow(parsed.name, graph, opts);
|
|
353
|
+
break;
|
|
354
|
+
case "adr":
|
|
355
|
+
rmAdr(parsed.name, graph, opts);
|
|
356
|
+
break;
|
|
357
|
+
case "context":
|
|
358
|
+
rmContext(parsed.name, graph, opts);
|
|
359
|
+
break;
|
|
360
|
+
case "domain":
|
|
361
|
+
rmDomainItem(id, graph, opts);
|
|
362
|
+
break;
|
|
89
363
|
}
|
|
90
|
-
console.log(`Successfully removed '${id}'.`);
|
|
91
364
|
});
|
|
92
365
|
}
|
|
93
366
|
//# sourceMappingURL=rm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../../src/features/refactor/commands/rm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC,yEAAyE;AAEzE;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,KAAkB,EAClB,EAAU,EACV,QAAkB;IAElB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU;YAAE,SAAS;QACxC,iEAAiE;QACjE,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACnB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,kEAAkE;QAClE,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC9B,uEAAuE;gBACvE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACtC,oEAAoE;gBACpE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,IACL,QAAQ,KAAK,WAAW;gBACxB,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,EACpD,CAAC;gBACD,wEAAwE;gBACxE,+EAA+E;gBAC/E,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,yEAAyE;AAEzE,oEAAoE;AACpE,SAAS,WAAW,CAClB,QAAgB,EAChB,KAAa,EACb,QAAiB;IAEjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,SAAS,CAA0B,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACrD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,4EAA4E;AAC5E,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,QAAgB,EAChB,QAAiB;IAEjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,SAAS,CAA0B,OAAO,CAAC,CAAC;IACzD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAyB,CAAC;QAC9C,IAAI,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;YACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;gBACvC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,yEAAyE;AAEzE,SAAS,OAAO,CACd,SAAiB,EACjB,KAAkB,EAClB,IAAwD;IAExD,MAAM,WAAW,GAAG,SAAS,SAAS,EAAE,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,cAAc,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAClE,CAAC;IAEF,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,wBAAwB,SAAS,yBAAyB,CAAC,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,SAAS;YAChC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;YAChF,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,SAAS,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,MAAM,CACb,QAAgB,EAChB,KAAkB,EAClB,IAAuC;IAEvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,QAAQ,EAAE,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,KAAK,CACZ,KAAa,EACb,KAAkB,EAClB,IAAwD;IAExD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACvC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,yBAAyB,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YACxD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;YAC1E,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;YAClD,oBAAoB,CAClB,QAAQ,EACR,CAAC,EAAE,EAAE,EAAE;gBACL,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAC;gBAChD,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC,EACD,IAAI,CAAC,IAAI,IAAI,KAAK,CACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,iBAAiB,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAChB,OAAe,EACf,KAAkB,EAClB,IAAwD;IAExD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,cAAc,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAE5D,kFAAkF;IAClF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU;YAAE,SAAS;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,OAAO,IAAI,QAAQ,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;YACvD,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,0BAA0B,OAAO,kBAAkB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM,WAAW,CAClH,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,gCAAgC,CAAC,CAAC;YACjF,KAAK,MAAM,GAAG,IAAI,YAAY;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,yDAAyD;QACzD,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QAElE,+DAA+D;QAC/D,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,oBAAoB,CAClB,WAAW,EACX,CAAC,EAAE,EAAE,EAAE;gBACL,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAyB,CAAC;gBACvD,IAAI,CAAC,IAAI,EAAE,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;gBAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC;;oBAC/C,EAAE,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC,EACD,IAAI,CAAC,IAAI,IAAI,KAAK,CACnB,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,OAAO,GAAG,CAAC;gBAAE,SAAS;YACzD,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAChC,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAAE,SAAS;gBAC1C,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,2CAA2C,MAAM,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CACnB,EAAU,EACV,KAAkB,EAClB,IAAwD;IAExD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IAClC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CACtE,CAAC;IAEF,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAC;QAC7D,KAAK,MAAM,GAAG,IAAI,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YAExC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;gBAClE,oBAAoB,CAClB,WAAW,EACX,CAAC,EAAE,EAAE,EAAE;oBACL,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAyB,CAAC;oBACvD,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAAE,OAAO,KAAK,CAAC;oBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC;;wBAC/C,EAAE,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;oBAClC,OAAO,IAAI,CAAC;gBACd,CAAC,EACD,IAAI,CAAC,IAAI,IAAI,KAAK,CACnB,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;gBAC1D,SAAS;YACX,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAExE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,SAAS;YAE/B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;YAChF,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,iBAAiB,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,yEAAyE;AAEzE,MAAM,UAAU,UAAU,CAAC,OAAY;IACrC,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,QAAQ,CAAC;SACf,KAAK,CAAC,QAAQ,CAAC;SACf,WAAW,CACV,gGAAgG,CACjG;SACA,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC;SAC/C,MAAM,CACL,aAAa,EACb,0EAA0E,CAC3E;SACA,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,WAAW,CACV,OAAO,EACP;;;;;;;CAOL,CACI;SACA,MAAM,CACL,CAAC,EAAU,EAAE,IAAwD,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAE9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,OAAO;gBACV,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,SAAS;gBACZ,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,QAAQ;gBACX,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC9B,MAAM;QACV,CAAC;IACH,CAAC,CACF,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { NodeKind } from "../../shared/graph.js";
|
|
2
|
+
export declare const KIND_TO_DIR: Record<string, string>;
|
|
3
|
+
export type IdKind = "actor" | "flow" | "adr" | "context" | "domain";
|
|
4
|
+
export interface ParsedId {
|
|
5
|
+
kind: IdKind;
|
|
6
|
+
/** Simple name (actor name, flow name, ADR id, context name, or item name). */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Context portion for domain items (e.g. "ordering" from "ordering.PlaceOrder"). */
|
|
9
|
+
ctx?: string;
|
|
10
|
+
/** Full original id string. */
|
|
11
|
+
raw: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Classify a user-supplied item id into its kind and component parts.
|
|
15
|
+
*
|
|
16
|
+
* Supported formats:
|
|
17
|
+
* actor.ActorName → actor
|
|
18
|
+
* flow.FlowName → flow
|
|
19
|
+
* adr-NNNN → adr
|
|
20
|
+
* context.ctxName → context
|
|
21
|
+
* ctxName → context (bare, no dot)
|
|
22
|
+
* ctx.ItemName → domain item
|
|
23
|
+
*/
|
|
24
|
+
export declare function classifyId(id: string): ParsedId;
|
|
25
|
+
export declare function printDiff(filePath: string, oldContent: string, newContent: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* List all YAML item files under a context directory (including context.yml).
|
|
28
|
+
*/
|
|
29
|
+
export declare function listContextFiles(ctxPath: string): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Collect all YAML item files across all contexts.
|
|
32
|
+
*/
|
|
33
|
+
export declare function allDomainFiles(root?: string): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Collect all ADR markdown files.
|
|
36
|
+
*/
|
|
37
|
+
export declare function allAdrFiles(root?: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Rewrite all occurrences of oldId → newId in a file using word-boundary
|
|
40
|
+
* regex. Returns true if any changes were made.
|
|
41
|
+
*
|
|
42
|
+
* Safe for scoped IDs like "ordering.OrderPlaced" and "adr-0001".
|
|
43
|
+
*/
|
|
44
|
+
export declare function rewriteFile(filePath: string, oldId: string, newId: string, showDiff?: boolean): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Update an ADR markdown file's YAML frontmatter in-place.
|
|
47
|
+
* The mutator `fn` receives the parsed frontmatter object.
|
|
48
|
+
* Returns true if any changes were made.
|
|
49
|
+
*/
|
|
50
|
+
export declare function updateAdrFrontmatter(filePath: string, fn: (fm: Record<string, unknown>) => boolean, showDiff?: boolean): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Remove a glossary entry (by term) from context.yml.
|
|
53
|
+
* Returns true if the entry was found and removed.
|
|
54
|
+
*/
|
|
55
|
+
export declare function removeGlossaryEntry(ctxPath: string, term: string, showDiff?: boolean): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Rename a glossary term in context.yml.
|
|
58
|
+
* Returns true if the entry was found and renamed.
|
|
59
|
+
*/
|
|
60
|
+
export declare function renameGlossaryEntry(ctxPath: string, oldTerm: string, newTerm: string, showDiff?: boolean): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Remove an actor from actors.yml. Returns true if removed.
|
|
63
|
+
*/
|
|
64
|
+
export declare function removeActorEntry(root: string | undefined, actorName: string, showDiff?: boolean): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Rename an actor in actors.yml. Returns true if renamed.
|
|
67
|
+
*/
|
|
68
|
+
export declare function renameActorEntry(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Remove a reference to `targetName` from the appropriate YAML fields
|
|
71
|
+
* of a domain item file, based on the item's kind.
|
|
72
|
+
*
|
|
73
|
+
* `targetName` is the simple (unscoped) name used in within-context refs.
|
|
74
|
+
* `targetScopedId` is the full scoped id, used here only for actor removal
|
|
75
|
+
* from read_models where the actor name equals the `targetName`.
|
|
76
|
+
*
|
|
77
|
+
* Returns true if any changes were made.
|
|
78
|
+
*/
|
|
79
|
+
export declare function cleanDomainItemRef(filePath: string, depKind: NodeKind, targetName: string, showDiff?: boolean): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Update a reference to `oldName` → `newName` in a domain item's YAML fields.
|
|
82
|
+
* Returns true if any changes were made.
|
|
83
|
+
*/
|
|
84
|
+
export declare function renameDomainItemRef(filePath: string, depKind: NodeKind, oldName: string, newName: string, showDiff?: boolean): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Remove a flow from index.yml by name. Returns true if removed.
|
|
87
|
+
*/
|
|
88
|
+
export declare function removeFlowFromIndex(root: string | undefined, flowName: string, showDiff?: boolean): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Rename a flow in index.yml. Returns true if renamed.
|
|
91
|
+
*/
|
|
92
|
+
export declare function renameFlowInIndex(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Remove all flow steps that reference a given scoped domain item id.
|
|
95
|
+
* Flows that become empty (0 steps) are removed entirely.
|
|
96
|
+
* Returns the number of steps removed.
|
|
97
|
+
*/
|
|
98
|
+
export declare function removeFlowStepsForItem(root: string | undefined, scopedId: string, showDiff?: boolean): number;
|
|
99
|
+
/**
|
|
100
|
+
* Remove all flow steps that reference any item in a given context.
|
|
101
|
+
* Flows that become empty are removed entirely.
|
|
102
|
+
*/
|
|
103
|
+
export declare function removeFlowStepsForContext(root: string | undefined, ctxName: string, showDiff?: boolean): number;
|
|
104
|
+
/**
|
|
105
|
+
* Update flow steps that reference an old scoped id to use a new scoped id.
|
|
106
|
+
* Returns the number of steps updated.
|
|
107
|
+
*/
|
|
108
|
+
export declare function updateFlowStepsForItem(root: string | undefined, oldScopedId: string, newScopedId: string, showDiff?: boolean): number;
|
|
109
|
+
/**
|
|
110
|
+
* Remove a context entry from index.yml. Returns true if removed.
|
|
111
|
+
*/
|
|
112
|
+
export declare function removeContextFromIndex(root: string | undefined, ctxName: string, showDiff?: boolean): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Rename a context entry in index.yml. Returns true if renamed.
|
|
115
|
+
*/
|
|
116
|
+
export declare function renameContextInIndex(root: string | undefined, oldName: string, newName: string, showDiff?: boolean): boolean;
|
|
117
|
+
//# sourceMappingURL=refactor-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refactor-helpers.d.ts","sourceRoot":"","sources":["../../../src/features/refactor/refactor-helpers.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM9C,CAAC;AAIF,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAuB/C;AAID,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAaN;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAc1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAStD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAYnD;AAID;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,UAAQ,GACf,OAAO,CAaT;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,EAC5C,QAAQ,UAAQ,GACf,OAAO,CAeT;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAQ,GACf,OAAO,CAeT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAYT;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,UAAQ,GACf,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAYT;AAID;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,UAAQ,GACf,OAAO,CA6FT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAuGT;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,UAAQ,GACf,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAYT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,UAAQ,GACf,MAAM,CAsBR;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,MAAM,CAsBR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,UAAQ,GACf,MAAM,CAsBR;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,UAAQ,GACf,OAAO,CAsBT"}
|