@aetherwing/fcp-drawio 0.2.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/README.md +119 -0
- package/dist/adapter.d.ts +38 -0
- package/dist/adapter.js +259 -0
- package/dist/adapter.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/elk-layout.d.ts +49 -0
- package/dist/layout/elk-layout.js +144 -0
- package/dist/layout/elk-layout.js.map +1 -0
- package/dist/lib/drawio-cli.d.ts +22 -0
- package/dist/lib/drawio-cli.js +88 -0
- package/dist/lib/drawio-cli.js.map +1 -0
- package/dist/lib/node-types.d.ts +22 -0
- package/dist/lib/node-types.js +174 -0
- package/dist/lib/node-types.js.map +1 -0
- package/dist/lib/stencils/aws.d.ts +2 -0
- package/dist/lib/stencils/aws.js +69 -0
- package/dist/lib/stencils/aws.js.map +1 -0
- package/dist/lib/stencils/azure.d.ts +2 -0
- package/dist/lib/stencils/azure.js +54 -0
- package/dist/lib/stencils/azure.js.map +1 -0
- package/dist/lib/stencils/cisco.d.ts +2 -0
- package/dist/lib/stencils/cisco.js +30 -0
- package/dist/lib/stencils/cisco.js.map +1 -0
- package/dist/lib/stencils/gcp.d.ts +2 -0
- package/dist/lib/stencils/gcp.js +38 -0
- package/dist/lib/stencils/gcp.js.map +1 -0
- package/dist/lib/stencils/ibm.d.ts +2 -0
- package/dist/lib/stencils/ibm.js +32 -0
- package/dist/lib/stencils/ibm.js.map +1 -0
- package/dist/lib/stencils/index.d.ts +10 -0
- package/dist/lib/stencils/index.js +33 -0
- package/dist/lib/stencils/index.js.map +1 -0
- package/dist/lib/stencils/k8s.d.ts +2 -0
- package/dist/lib/stencils/k8s.js +32 -0
- package/dist/lib/stencils/k8s.js.map +1 -0
- package/dist/lib/stencils/types.d.ts +14 -0
- package/dist/lib/stencils/types.js +2 -0
- package/dist/lib/stencils/types.js.map +1 -0
- package/dist/lib/themes.d.ts +8 -0
- package/dist/lib/themes.js +32 -0
- package/dist/lib/themes.js.map +1 -0
- package/dist/model/defaults.d.ts +3 -0
- package/dist/model/defaults.js +26 -0
- package/dist/model/defaults.js.map +1 -0
- package/dist/model/diagram-model.d.ts +110 -0
- package/dist/model/diagram-model.js +938 -0
- package/dist/model/diagram-model.js.map +1 -0
- package/dist/model/event-log.d.ts +30 -0
- package/dist/model/event-log.js +112 -0
- package/dist/model/event-log.js.map +1 -0
- package/dist/model/id.d.ts +9 -0
- package/dist/model/id.js +35 -0
- package/dist/model/id.js.map +1 -0
- package/dist/model/reference-registry.d.ts +33 -0
- package/dist/model/reference-registry.js +143 -0
- package/dist/model/reference-registry.js.map +1 -0
- package/dist/model/spatial.d.ts +20 -0
- package/dist/model/spatial.js +59 -0
- package/dist/model/spatial.js.map +1 -0
- package/dist/parser/parse-op.d.ts +18 -0
- package/dist/parser/parse-op.js +430 -0
- package/dist/parser/parse-op.js.map +1 -0
- package/dist/parser/resolve-ref.d.ts +27 -0
- package/dist/parser/resolve-ref.js +232 -0
- package/dist/parser/resolve-ref.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +6 -0
- package/dist/parser/tokenizer.js +7 -0
- package/dist/parser/tokenizer.js.map +1 -0
- package/dist/serialization/connector-intelligence.d.ts +35 -0
- package/dist/serialization/connector-intelligence.js +336 -0
- package/dist/serialization/connector-intelligence.js.map +1 -0
- package/dist/serialization/deserialize.d.ts +6 -0
- package/dist/serialization/deserialize.js +511 -0
- package/dist/serialization/deserialize.js.map +1 -0
- package/dist/serialization/serialize.d.ts +15 -0
- package/dist/serialization/serialize.js +332 -0
- package/dist/serialization/serialize.js.map +1 -0
- package/dist/server/intent-layer.d.ts +48 -0
- package/dist/server/intent-layer.js +1322 -0
- package/dist/server/intent-layer.js.map +1 -0
- package/dist/server/mcp-server.d.ts +7 -0
- package/dist/server/mcp-server.js +26 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/server/model-map.d.ts +8 -0
- package/dist/server/model-map.js +240 -0
- package/dist/server/model-map.js.map +1 -0
- package/dist/server/query-handler.d.ts +19 -0
- package/dist/server/query-handler.js +148 -0
- package/dist/server/query-handler.js.map +1 -0
- package/dist/server/response-formatter.d.ts +56 -0
- package/dist/server/response-formatter.js +351 -0
- package/dist/server/response-formatter.js.map +1 -0
- package/dist/server/session-handler.d.ts +6 -0
- package/dist/server/session-handler.js +127 -0
- package/dist/server/session-handler.js.map +1 -0
- package/dist/types/index.d.ts +238 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/verb-specs.d.ts +6 -0
- package/dist/verb-specs.js +144 -0
- package/dist/verb-specs.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { tokenize, isKeyValue, parseKeyValue, isArrow, isSelector } from "./tokenizer.js";
|
|
2
|
+
const VERBS = new Set([
|
|
3
|
+
"add", "remove", "define", "connect", "disconnect",
|
|
4
|
+
"style", "label", "badge", "move", "resize", "swap",
|
|
5
|
+
"layout", "orient", "group", "ungroup",
|
|
6
|
+
"layer", "page", "checkpoint", "title", "load",
|
|
7
|
+
]);
|
|
8
|
+
/**
|
|
9
|
+
* Parse an operation string into a structured ParsedOp.
|
|
10
|
+
*
|
|
11
|
+
* Every operation follows: VERB [TYPE] TARGET [key:value ...]
|
|
12
|
+
* The verb determines how remaining tokens are interpreted.
|
|
13
|
+
*/
|
|
14
|
+
export function parseOp(input) {
|
|
15
|
+
const raw = input.trim();
|
|
16
|
+
const tokens = tokenize(raw);
|
|
17
|
+
if (tokens.length === 0) {
|
|
18
|
+
return { error: "empty operation", raw };
|
|
19
|
+
}
|
|
20
|
+
const verb = tokens[0].toLowerCase();
|
|
21
|
+
if (!VERBS.has(verb)) {
|
|
22
|
+
return { error: `unknown verb "${tokens[0]}"`, raw };
|
|
23
|
+
}
|
|
24
|
+
const rest = tokens.slice(1);
|
|
25
|
+
switch (verb) {
|
|
26
|
+
case "add":
|
|
27
|
+
return parseAdd(rest, raw);
|
|
28
|
+
case "remove":
|
|
29
|
+
return parseSimpleTarget(verb, rest, raw);
|
|
30
|
+
case "define":
|
|
31
|
+
return parseDefine(rest, raw);
|
|
32
|
+
case "connect":
|
|
33
|
+
return parseConnect(rest, raw);
|
|
34
|
+
case "disconnect":
|
|
35
|
+
return parseDisconnect(rest, raw);
|
|
36
|
+
case "style":
|
|
37
|
+
return parseTargetWithParams(verb, rest, raw);
|
|
38
|
+
case "label":
|
|
39
|
+
return parseLabel(rest, raw);
|
|
40
|
+
case "badge":
|
|
41
|
+
return parseBadge(rest, raw);
|
|
42
|
+
case "move":
|
|
43
|
+
return parseTargetWithParams("move", rest, raw);
|
|
44
|
+
case "resize":
|
|
45
|
+
return parseTargetWithParams("resize", rest, raw);
|
|
46
|
+
case "swap":
|
|
47
|
+
return parseSwap(rest, raw);
|
|
48
|
+
case "group":
|
|
49
|
+
return parseGroup(rest, raw);
|
|
50
|
+
case "ungroup":
|
|
51
|
+
return parseSimpleTarget("ungroup", rest, raw);
|
|
52
|
+
case "layer":
|
|
53
|
+
return parseSubcommand("layer", rest, raw);
|
|
54
|
+
case "page":
|
|
55
|
+
return parseSubcommand("page", rest, raw);
|
|
56
|
+
case "checkpoint":
|
|
57
|
+
return parseSimpleTarget("checkpoint", rest, raw);
|
|
58
|
+
case "title":
|
|
59
|
+
return parseSimpleTarget("title", rest, raw);
|
|
60
|
+
case "layout":
|
|
61
|
+
return parseTargetWithParams("layout", rest, raw);
|
|
62
|
+
case "orient":
|
|
63
|
+
return parseSimpleTarget("orient", rest, raw);
|
|
64
|
+
case "load":
|
|
65
|
+
return parseSimpleTarget("load", rest, raw);
|
|
66
|
+
default:
|
|
67
|
+
return { error: `unhandled verb "${verb}"`, raw };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// ── Verb-specific parsers ────────────────────────────────
|
|
71
|
+
/**
|
|
72
|
+
* add TYPE LABEL [key:value]*
|
|
73
|
+
* add LABEL [key:value]* (type inferred from label)
|
|
74
|
+
*/
|
|
75
|
+
function parseAdd(tokens, raw) {
|
|
76
|
+
if (tokens.length < 1) {
|
|
77
|
+
return { error: "add requires at least a label", raw };
|
|
78
|
+
}
|
|
79
|
+
const params = new Map();
|
|
80
|
+
const nonParams = [];
|
|
81
|
+
for (const token of tokens) {
|
|
82
|
+
if (isKeyValue(token)) {
|
|
83
|
+
const { key, value } = parseKeyValue(token);
|
|
84
|
+
params.set(key, value);
|
|
85
|
+
}
|
|
86
|
+
else if (isSelector(token)) {
|
|
87
|
+
// selector as target
|
|
88
|
+
nonParams.push(token);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
nonParams.push(token);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
let type;
|
|
95
|
+
let target;
|
|
96
|
+
if (nonParams.length >= 2) {
|
|
97
|
+
// First non-param could be a type or the label
|
|
98
|
+
type = nonParams[0];
|
|
99
|
+
target = nonParams[1];
|
|
100
|
+
}
|
|
101
|
+
else if (nonParams.length === 1) {
|
|
102
|
+
target = nonParams[0];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
return { error: "add requires a label", raw };
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
verb: "add",
|
|
109
|
+
raw,
|
|
110
|
+
type,
|
|
111
|
+
target,
|
|
112
|
+
params,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* define NAME base:TYPE [theme:THEME] [badge:TEXT] [size:WxH]
|
|
117
|
+
* define theme NAME fill:#HEX stroke:#HEX [font-color:#HEX]
|
|
118
|
+
*/
|
|
119
|
+
function parseDefine(tokens, raw) {
|
|
120
|
+
if (tokens.length < 1) {
|
|
121
|
+
return { error: "define requires a name", raw };
|
|
122
|
+
}
|
|
123
|
+
const params = new Map();
|
|
124
|
+
const nonParams = [];
|
|
125
|
+
for (const token of tokens) {
|
|
126
|
+
if (isKeyValue(token)) {
|
|
127
|
+
const { key, value } = parseKeyValue(token);
|
|
128
|
+
params.set(key, value);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
nonParams.push(token);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (nonParams.length === 0) {
|
|
135
|
+
return { error: "define requires a name", raw };
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
verb: "define",
|
|
139
|
+
raw,
|
|
140
|
+
target: nonParams[0],
|
|
141
|
+
targets: nonParams,
|
|
142
|
+
params,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* connect REF ARROW REF [ARROW REF]* [key:value]*
|
|
147
|
+
*/
|
|
148
|
+
function parseConnect(tokens, raw) {
|
|
149
|
+
const params = new Map();
|
|
150
|
+
const targets = [];
|
|
151
|
+
const arrows = [];
|
|
152
|
+
for (const token of tokens) {
|
|
153
|
+
if (isKeyValue(token)) {
|
|
154
|
+
const { key, value } = parseKeyValue(token);
|
|
155
|
+
params.set(key, value);
|
|
156
|
+
}
|
|
157
|
+
else if (isArrow(token)) {
|
|
158
|
+
arrows.push(token);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
targets.push(token);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (targets.length < 2 || arrows.length < 1) {
|
|
165
|
+
return { error: "connect requires at least REF ARROW REF", raw };
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
verb: "connect",
|
|
169
|
+
raw,
|
|
170
|
+
target: targets[0],
|
|
171
|
+
targets,
|
|
172
|
+
arrows,
|
|
173
|
+
params,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* disconnect REF ARROW REF
|
|
178
|
+
*/
|
|
179
|
+
function parseDisconnect(tokens, raw) {
|
|
180
|
+
const targets = [];
|
|
181
|
+
const arrows = [];
|
|
182
|
+
for (const token of tokens) {
|
|
183
|
+
if (isArrow(token)) {
|
|
184
|
+
arrows.push(token);
|
|
185
|
+
}
|
|
186
|
+
else if (!isKeyValue(token)) {
|
|
187
|
+
targets.push(token);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (targets.length < 2) {
|
|
191
|
+
return { error: "disconnect requires REF ARROW REF", raw };
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
verb: "disconnect",
|
|
195
|
+
raw,
|
|
196
|
+
target: targets[0],
|
|
197
|
+
targets,
|
|
198
|
+
arrows,
|
|
199
|
+
params: new Map(),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* label REF "new text"
|
|
204
|
+
* label SRC -> TGT "new text"
|
|
205
|
+
*/
|
|
206
|
+
function parseLabel(tokens, raw) {
|
|
207
|
+
if (tokens.length < 2) {
|
|
208
|
+
return { error: "label requires REF and text", raw };
|
|
209
|
+
}
|
|
210
|
+
const params = new Map();
|
|
211
|
+
const nonParams = [];
|
|
212
|
+
const arrows = [];
|
|
213
|
+
for (const token of tokens) {
|
|
214
|
+
if (isKeyValue(token)) {
|
|
215
|
+
const { key, value } = parseKeyValue(token);
|
|
216
|
+
params.set(key, value);
|
|
217
|
+
}
|
|
218
|
+
else if (isArrow(token)) {
|
|
219
|
+
arrows.push(token);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
nonParams.push(token);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Edge form: label A -> B "text"
|
|
226
|
+
if (arrows.length > 0) {
|
|
227
|
+
if (nonParams.length < 3) {
|
|
228
|
+
return { error: 'label edge requires: label SRC -> TGT "text"', raw };
|
|
229
|
+
}
|
|
230
|
+
params.set("text", nonParams[2]);
|
|
231
|
+
return {
|
|
232
|
+
verb: "label",
|
|
233
|
+
raw,
|
|
234
|
+
target: nonParams[0],
|
|
235
|
+
targets: [nonParams[0], nonParams[1]],
|
|
236
|
+
arrows,
|
|
237
|
+
params,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// Shape form: label REF "text"
|
|
241
|
+
if (nonParams.length < 2) {
|
|
242
|
+
return { error: "label requires REF and text", raw };
|
|
243
|
+
}
|
|
244
|
+
params.set("text", nonParams[1]);
|
|
245
|
+
return {
|
|
246
|
+
verb: "label",
|
|
247
|
+
raw,
|
|
248
|
+
target: nonParams[0],
|
|
249
|
+
params,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* badge REF "text" [pos:POSITION]
|
|
254
|
+
*/
|
|
255
|
+
function parseBadge(tokens, raw) {
|
|
256
|
+
if (tokens.length < 2) {
|
|
257
|
+
return { error: "badge requires REF and text", raw };
|
|
258
|
+
}
|
|
259
|
+
const params = new Map();
|
|
260
|
+
const nonParams = [];
|
|
261
|
+
for (const token of tokens) {
|
|
262
|
+
if (isKeyValue(token)) {
|
|
263
|
+
const { key, value } = parseKeyValue(token);
|
|
264
|
+
params.set(key, value);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
nonParams.push(token);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (nonParams.length < 2) {
|
|
271
|
+
return { error: "badge requires REF and text", raw };
|
|
272
|
+
}
|
|
273
|
+
params.set("text", nonParams[1]);
|
|
274
|
+
return {
|
|
275
|
+
verb: "badge",
|
|
276
|
+
raw,
|
|
277
|
+
target: nonParams[0],
|
|
278
|
+
params,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* swap REF REF
|
|
283
|
+
*/
|
|
284
|
+
function parseSwap(tokens, raw) {
|
|
285
|
+
const nonParams = tokens.filter((t) => !isKeyValue(t));
|
|
286
|
+
if (nonParams.length < 2) {
|
|
287
|
+
return { error: "swap requires two REFs", raw };
|
|
288
|
+
}
|
|
289
|
+
return {
|
|
290
|
+
verb: "swap",
|
|
291
|
+
raw,
|
|
292
|
+
target: nonParams[0],
|
|
293
|
+
targets: [nonParams[0], nonParams[1]],
|
|
294
|
+
params: new Map(),
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* group REF [REF]* as:NAME
|
|
299
|
+
*/
|
|
300
|
+
function parseGroup(tokens, raw) {
|
|
301
|
+
const params = new Map();
|
|
302
|
+
const targets = [];
|
|
303
|
+
for (const token of tokens) {
|
|
304
|
+
if (isKeyValue(token)) {
|
|
305
|
+
const { key, value } = parseKeyValue(token);
|
|
306
|
+
params.set(key, value);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
targets.push(token);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (targets.length < 1) {
|
|
313
|
+
return { error: "group requires at least one REF", raw };
|
|
314
|
+
}
|
|
315
|
+
if (!params.has("as")) {
|
|
316
|
+
return { error: 'group requires as:NAME parameter', raw };
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
verb: "group",
|
|
320
|
+
raw,
|
|
321
|
+
target: targets[0],
|
|
322
|
+
targets,
|
|
323
|
+
params,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Generic: VERB TARGET [key:value]*
|
|
328
|
+
* Used for style, move, resize, layout
|
|
329
|
+
*/
|
|
330
|
+
function parseTargetWithParams(verb, tokens, raw) {
|
|
331
|
+
if (tokens.length < 1) {
|
|
332
|
+
return { error: `${verb} requires a target`, raw };
|
|
333
|
+
}
|
|
334
|
+
const params = new Map();
|
|
335
|
+
let target;
|
|
336
|
+
let selector;
|
|
337
|
+
for (const token of tokens) {
|
|
338
|
+
if (isKeyValue(token)) {
|
|
339
|
+
const { key, value } = parseKeyValue(token);
|
|
340
|
+
params.set(key, value);
|
|
341
|
+
}
|
|
342
|
+
else if (isSelector(token) && !target) {
|
|
343
|
+
target = token;
|
|
344
|
+
selector = token;
|
|
345
|
+
}
|
|
346
|
+
else if (!target) {
|
|
347
|
+
target = token;
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
// Bare token after target — treat as boolean flag (e.g., bold, italic, no-bold)
|
|
351
|
+
params.set(token, "true");
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (!target) {
|
|
355
|
+
return { error: `${verb} requires a target`, raw };
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
verb,
|
|
359
|
+
raw,
|
|
360
|
+
target,
|
|
361
|
+
selector,
|
|
362
|
+
params,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Generic simple target: VERB TARGET
|
|
367
|
+
* Used for remove, ungroup, checkpoint, title
|
|
368
|
+
*/
|
|
369
|
+
function parseSimpleTarget(verb, tokens, raw) {
|
|
370
|
+
if (tokens.length < 1) {
|
|
371
|
+
return { error: `${verb} requires a target`, raw };
|
|
372
|
+
}
|
|
373
|
+
// Collect params and non-param tokens
|
|
374
|
+
const params = new Map();
|
|
375
|
+
const nonParams = [];
|
|
376
|
+
for (const token of tokens) {
|
|
377
|
+
if (isKeyValue(token)) {
|
|
378
|
+
const { key, value } = parseKeyValue(token);
|
|
379
|
+
params.set(key, value);
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
nonParams.push(token);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
const target = nonParams[0];
|
|
386
|
+
if (!target) {
|
|
387
|
+
return { error: `${verb} requires a target`, raw };
|
|
388
|
+
}
|
|
389
|
+
return {
|
|
390
|
+
verb,
|
|
391
|
+
raw,
|
|
392
|
+
target,
|
|
393
|
+
selector: isSelector(target) ? target : undefined,
|
|
394
|
+
params,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Subcommand: VERB SUBCOMMAND [args]*
|
|
399
|
+
* Used for page and layer operations.
|
|
400
|
+
*/
|
|
401
|
+
function parseSubcommand(verb, tokens, raw) {
|
|
402
|
+
if (tokens.length < 1) {
|
|
403
|
+
return { error: `${verb} requires a subcommand`, raw };
|
|
404
|
+
}
|
|
405
|
+
const subcommand = tokens[0].toLowerCase();
|
|
406
|
+
const rest = tokens.slice(1);
|
|
407
|
+
const params = new Map();
|
|
408
|
+
const nonParams = [];
|
|
409
|
+
for (const token of rest) {
|
|
410
|
+
if (isKeyValue(token)) {
|
|
411
|
+
const { key, value } = parseKeyValue(token);
|
|
412
|
+
params.set(key, value);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
nonParams.push(token);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
return {
|
|
419
|
+
verb,
|
|
420
|
+
raw,
|
|
421
|
+
subcommand,
|
|
422
|
+
target: nonParams[0],
|
|
423
|
+
targets: nonParams.length > 0 ? nonParams : undefined,
|
|
424
|
+
params,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
export function isParseError(result) {
|
|
428
|
+
return "error" in result;
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=parse-op.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-op.js","sourceRoot":"","sources":["../../src/parser/parse-op.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Shape } from "../types/index.js";
|
|
2
|
+
import type { ReferenceRegistry } from "../model/reference-registry.js";
|
|
3
|
+
import type { DiagramModel } from "../model/diagram-model.js";
|
|
4
|
+
export type ResolveResult = {
|
|
5
|
+
kind: "single";
|
|
6
|
+
shape: Shape;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "multiple";
|
|
9
|
+
shapes: Shape[];
|
|
10
|
+
message: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "none";
|
|
13
|
+
message: string;
|
|
14
|
+
suggestedLabel?: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* 5-level reference resolution cascade.
|
|
18
|
+
*
|
|
19
|
+
* 1. Exact label match (case-sensitive)
|
|
20
|
+
* 2. Case-insensitive match
|
|
21
|
+
* 3. Normalized match (strip hyphens, underscores, spaces)
|
|
22
|
+
* 4. Prefix match
|
|
23
|
+
* 5. Recency match (@recent)
|
|
24
|
+
*
|
|
25
|
+
* Short-circuits at the first level producing exactly one result.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveRef(ref: string, registry: ReferenceRegistry, model: DiagramModel): ResolveResult;
|