@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,332 @@
|
|
|
1
|
+
import { NODE_TYPES } from "../lib/node-types.js";
|
|
2
|
+
import { computeAllEdgeRenderInfo } from "./connector-intelligence.js";
|
|
3
|
+
// ── XML entity escaping ─────────────────────────────────────
|
|
4
|
+
function escapeXml(str) {
|
|
5
|
+
return str
|
|
6
|
+
.replace(/&/g, "&")
|
|
7
|
+
.replace(/</g, "<")
|
|
8
|
+
.replace(/>/g, ">")
|
|
9
|
+
.replace(/"/g, """)
|
|
10
|
+
.replace(/'/g, "'")
|
|
11
|
+
.replace(/\n/g, " ");
|
|
12
|
+
}
|
|
13
|
+
function arrowTypeToStyle(arrowType) {
|
|
14
|
+
switch (arrowType) {
|
|
15
|
+
case "arrow":
|
|
16
|
+
return { arrow: "classic", fill: "1" };
|
|
17
|
+
case "open-arrow":
|
|
18
|
+
return { arrow: "open", fill: "0" };
|
|
19
|
+
case "diamond":
|
|
20
|
+
return { arrow: "diamond", fill: "1" };
|
|
21
|
+
case "circle":
|
|
22
|
+
return { arrow: "oval", fill: "1" };
|
|
23
|
+
case "crow-foot":
|
|
24
|
+
return { arrow: "ERmany", fill: "0" };
|
|
25
|
+
case "none":
|
|
26
|
+
return { arrow: "none", fill: "0" };
|
|
27
|
+
default:
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// ── Style string builders ───────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Build a draw.io style string for a shape.
|
|
34
|
+
* Pattern: baseStyleFromNodeType;fillColor=#xxx;strokeColor=#xxx;fontSize=12;...
|
|
35
|
+
*/
|
|
36
|
+
export function buildShapeStyleString(shape) {
|
|
37
|
+
const parts = [];
|
|
38
|
+
// Use baseStyleOverride (from stencil packs) if present, otherwise fall back to NODE_TYPES
|
|
39
|
+
const baseStyle = shape.baseStyleOverride ?? NODE_TYPES[shape.type]?.baseStyle;
|
|
40
|
+
if (baseStyle) {
|
|
41
|
+
parts.push(baseStyle.replace(/;$/, ""));
|
|
42
|
+
}
|
|
43
|
+
// Append style properties
|
|
44
|
+
const style = shape.style;
|
|
45
|
+
if (style.fillColor)
|
|
46
|
+
parts.push(`fillColor=${style.fillColor}`);
|
|
47
|
+
if (style.strokeColor)
|
|
48
|
+
parts.push(`strokeColor=${style.strokeColor}`);
|
|
49
|
+
if (style.fontColor)
|
|
50
|
+
parts.push(`fontColor=${style.fontColor}`);
|
|
51
|
+
if (style.fontSize !== null)
|
|
52
|
+
parts.push(`fontSize=${style.fontSize}`);
|
|
53
|
+
if (style.fontFamily)
|
|
54
|
+
parts.push(`fontFamily=${style.fontFamily}`);
|
|
55
|
+
if (style.fontStyle !== null && style.fontStyle !== 0)
|
|
56
|
+
parts.push(`fontStyle=${style.fontStyle}`);
|
|
57
|
+
if (style.rounded && !(baseStyle?.includes("rounded=1")))
|
|
58
|
+
parts.push("rounded=1");
|
|
59
|
+
if (style.dashed)
|
|
60
|
+
parts.push("dashed=1");
|
|
61
|
+
if (style.shadow)
|
|
62
|
+
parts.push("shadow=1");
|
|
63
|
+
if (style.opacity !== 100)
|
|
64
|
+
parts.push(`opacity=${style.opacity}`);
|
|
65
|
+
if (style.align)
|
|
66
|
+
parts.push(`align=${style.align}`);
|
|
67
|
+
if (style.verticalAlign)
|
|
68
|
+
parts.push(`verticalAlign=${style.verticalAlign}`);
|
|
69
|
+
// Append any extensible/unknown properties
|
|
70
|
+
for (const [key, value] of Object.entries(style)) {
|
|
71
|
+
if (isKnownStyleKey(key))
|
|
72
|
+
continue;
|
|
73
|
+
if (value !== null && value !== undefined && value !== "") {
|
|
74
|
+
parts.push(`${key}=${value}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return parts.join(";") + ";";
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Build a draw.io style string for an edge.
|
|
81
|
+
*/
|
|
82
|
+
export function buildEdgeStyleString(edge) {
|
|
83
|
+
const parts = [];
|
|
84
|
+
const style = edge.style;
|
|
85
|
+
// Edge base style
|
|
86
|
+
parts.push(`edgeStyle=${style.edgeStyle || "orthogonalEdgeStyle"}`);
|
|
87
|
+
if (style.curved) {
|
|
88
|
+
parts.push("curved=1");
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
parts.push("rounded=1");
|
|
92
|
+
}
|
|
93
|
+
parts.push("orthogonalLoop=1");
|
|
94
|
+
parts.push("jettySize=auto");
|
|
95
|
+
parts.push("html=1");
|
|
96
|
+
// Edge line style
|
|
97
|
+
if (style.dashed)
|
|
98
|
+
parts.push("dashed=1");
|
|
99
|
+
if (style.dotted)
|
|
100
|
+
parts.push("dashPattern=1 3");
|
|
101
|
+
if (style.fillColor)
|
|
102
|
+
parts.push(`fillColor=${style.fillColor}`);
|
|
103
|
+
if (style.strokeColor)
|
|
104
|
+
parts.push(`strokeColor=${style.strokeColor}`);
|
|
105
|
+
if (style.fontColor)
|
|
106
|
+
parts.push(`fontColor=${style.fontColor}`);
|
|
107
|
+
if (style.fontSize !== null)
|
|
108
|
+
parts.push(`fontSize=${style.fontSize}`);
|
|
109
|
+
if (style.fontFamily)
|
|
110
|
+
parts.push(`fontFamily=${style.fontFamily}`);
|
|
111
|
+
if (style.fontStyle !== null && style.fontStyle !== 0)
|
|
112
|
+
parts.push(`fontStyle=${style.fontStyle}`);
|
|
113
|
+
if (style.shadow)
|
|
114
|
+
parts.push("shadow=1");
|
|
115
|
+
if (style.opacity !== 100)
|
|
116
|
+
parts.push(`opacity=${style.opacity}`);
|
|
117
|
+
// Stroke width for thick style
|
|
118
|
+
const strokeWidth = style["strokeWidth"];
|
|
119
|
+
if (strokeWidth !== undefined && strokeWidth !== null) {
|
|
120
|
+
parts.push(`strokeWidth=${strokeWidth}`);
|
|
121
|
+
}
|
|
122
|
+
// Flow animation
|
|
123
|
+
if (style.flowAnimation)
|
|
124
|
+
parts.push("flowAnimation=1");
|
|
125
|
+
// Target arrow
|
|
126
|
+
const targetParts = arrowTypeToStyle(edge.targetArrow);
|
|
127
|
+
if (targetParts) {
|
|
128
|
+
// "arrow" (classic) is the default, only emit if non-default
|
|
129
|
+
if (edge.targetArrow !== "arrow") {
|
|
130
|
+
parts.push(`endArrow=${targetParts.arrow}`);
|
|
131
|
+
parts.push(`endFill=${targetParts.fill}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Source arrow
|
|
135
|
+
const sourceParts = arrowTypeToStyle(edge.sourceArrow);
|
|
136
|
+
if (sourceParts) {
|
|
137
|
+
if (edge.sourceArrow !== "none") {
|
|
138
|
+
parts.push(`startArrow=${sourceParts.arrow}`);
|
|
139
|
+
parts.push(`startFill=${sourceParts.fill}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Append any extensible/unknown properties
|
|
143
|
+
for (const [key, value] of Object.entries(style)) {
|
|
144
|
+
if (isKnownEdgeStyleKey(key))
|
|
145
|
+
continue;
|
|
146
|
+
if (value !== null && value !== undefined && value !== "") {
|
|
147
|
+
parts.push(`${key}=${value}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return parts.join(";") + ";";
|
|
151
|
+
}
|
|
152
|
+
const KNOWN_STYLE_KEYS = new Set([
|
|
153
|
+
"fillColor", "strokeColor", "fontColor", "fontSize", "fontFamily",
|
|
154
|
+
"fontStyle", "rounded", "dashed", "shadow", "opacity", "align", "verticalAlign",
|
|
155
|
+
]);
|
|
156
|
+
const KNOWN_EDGE_STYLE_KEYS = new Set([
|
|
157
|
+
...KNOWN_STYLE_KEYS,
|
|
158
|
+
"edgeStyle", "curved", "flowAnimation", "strokeWidth", "dotted",
|
|
159
|
+
]);
|
|
160
|
+
function isKnownStyleKey(key) {
|
|
161
|
+
return KNOWN_STYLE_KEYS.has(key);
|
|
162
|
+
}
|
|
163
|
+
function isKnownEdgeStyleKey(key) {
|
|
164
|
+
return KNOWN_EDGE_STYLE_KEYS.has(key);
|
|
165
|
+
}
|
|
166
|
+
// ── Edge style + port helpers ────────────────────────────────
|
|
167
|
+
/**
|
|
168
|
+
* Build edge style string, injecting port exit/entry points if provided by connector intelligence.
|
|
169
|
+
*/
|
|
170
|
+
function buildEdgeStyleStringWithPorts(edge, renderInfo) {
|
|
171
|
+
const base = buildEdgeStyleString(edge);
|
|
172
|
+
if (!renderInfo?.ports)
|
|
173
|
+
return base;
|
|
174
|
+
const ports = renderInfo.ports;
|
|
175
|
+
// Remove trailing semicolon, append port styles, re-add semicolon
|
|
176
|
+
const withoutTrailing = base.replace(/;$/, "");
|
|
177
|
+
return `${withoutTrailing};exitX=${ports.exitX};exitY=${ports.exitY};exitDx=0;exitDy=0;entryX=${ports.entryX};entryY=${ports.entryY};entryDx=0;entryDy=0;`;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Build inner geometry content for an edge (waypoints and/or label offset).
|
|
181
|
+
* Returns null if the geometry should be self-closing.
|
|
182
|
+
*/
|
|
183
|
+
function buildEdgeGeometryInner(edge, renderInfo) {
|
|
184
|
+
const parts = [];
|
|
185
|
+
// Waypoints
|
|
186
|
+
if (edge.waypoints.length > 0) {
|
|
187
|
+
const wpLines = edge.waypoints.map((wp) => ` <mxPoint x="${wp.x}" y="${wp.y}"/>`);
|
|
188
|
+
parts.push(` <Array as="points">\n` +
|
|
189
|
+
wpLines.join("\n") + "\n" +
|
|
190
|
+
` </Array>`);
|
|
191
|
+
}
|
|
192
|
+
// Label offset
|
|
193
|
+
if (renderInfo && (renderInfo.labelOffsetX !== 0 || renderInfo.labelOffsetY !== 0)) {
|
|
194
|
+
parts.push(` <mxPoint x="${renderInfo.labelOffsetX}" y="${renderInfo.labelOffsetY}" as="offset"/>`);
|
|
195
|
+
}
|
|
196
|
+
if (parts.length === 0)
|
|
197
|
+
return null;
|
|
198
|
+
return parts.join("\n");
|
|
199
|
+
}
|
|
200
|
+
// ── Serialization ───────────────────────────────────────────
|
|
201
|
+
function serializePage(page) {
|
|
202
|
+
const cells = [];
|
|
203
|
+
// Foundation cells
|
|
204
|
+
cells.push(` <mxCell id="0"/>`);
|
|
205
|
+
// Default layer — use the model's actual defaultLayer ID so child cells can reference it
|
|
206
|
+
cells.push(` <mxCell id="${escapeXml(page.defaultLayer)}" parent="0"/>`);
|
|
207
|
+
// Additional layers (beyond default)
|
|
208
|
+
for (const layer of page.layers) {
|
|
209
|
+
if (layer.id === page.defaultLayer)
|
|
210
|
+
continue;
|
|
211
|
+
cells.push(` <mxCell id="${escapeXml(layer.id)}" value="${escapeXml(layer.name)}" parent="0"/>`);
|
|
212
|
+
}
|
|
213
|
+
// Groups (containers)
|
|
214
|
+
for (const [, group] of page.groups) {
|
|
215
|
+
if (!group.isContainer)
|
|
216
|
+
continue;
|
|
217
|
+
const groupStyle = buildGroupStyleString(group);
|
|
218
|
+
const b = group.bounds;
|
|
219
|
+
cells.push(` <mxCell id="${escapeXml(group.id)}" value="${escapeXml(group.name)}" style="${escapeXml(groupStyle)}" vertex="1" connectable="0" parent="${escapeXml(page.defaultLayer)}">\n` +
|
|
220
|
+
` <mxGeometry x="${b.x}" y="${b.y}" width="${b.width}" height="${b.height}" as="geometry"/>\n` +
|
|
221
|
+
` </mxCell>`);
|
|
222
|
+
}
|
|
223
|
+
// Shapes
|
|
224
|
+
for (const [, shape] of page.shapes) {
|
|
225
|
+
const styleStr = buildShapeStyleString(shape);
|
|
226
|
+
const b = shape.bounds;
|
|
227
|
+
const parent = shape.parentGroup ?? shape.layer;
|
|
228
|
+
// If parented to a group, convert absolute coords to container-relative
|
|
229
|
+
let x = b.x;
|
|
230
|
+
let y = b.y;
|
|
231
|
+
if (shape.parentGroup) {
|
|
232
|
+
const group = page.groups.get(shape.parentGroup);
|
|
233
|
+
if (group) {
|
|
234
|
+
x = b.x - group.bounds.x;
|
|
235
|
+
y = b.y - group.bounds.y;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
cells.push(` <mxCell id="${escapeXml(shape.id)}" value="${escapeXml(shape.label)}" style="${escapeXml(styleStr)}" vertex="1" parent="${escapeXml(parent)}">\n` +
|
|
239
|
+
` <mxGeometry x="${x}" y="${y}" width="${b.width}" height="${b.height}" as="geometry"/>\n` +
|
|
240
|
+
` </mxCell>`);
|
|
241
|
+
}
|
|
242
|
+
// Pre-compute connector intelligence for all edges
|
|
243
|
+
const edgeRenderInfos = computeAllEdgeRenderInfo(page);
|
|
244
|
+
// Edges
|
|
245
|
+
for (const [, edge] of page.edges) {
|
|
246
|
+
const renderInfo = edgeRenderInfos.get(edge.id);
|
|
247
|
+
const styleStr = buildEdgeStyleStringWithPorts(edge, renderInfo);
|
|
248
|
+
const labelAttr = edge.label ? ` value="${escapeXml(edge.label)}"` : ` value=""`;
|
|
249
|
+
// Determine the layer for the edge (use the source shape's layer)
|
|
250
|
+
const sourcePage = page.shapes.get(edge.sourceId);
|
|
251
|
+
const edgeParent = sourcePage?.layer ?? page.defaultLayer;
|
|
252
|
+
// Build geometry inner content
|
|
253
|
+
const geomInner = buildEdgeGeometryInner(edge, renderInfo);
|
|
254
|
+
if (geomInner) {
|
|
255
|
+
cells.push(` <mxCell id="${escapeXml(edge.id)}"${labelAttr} style="${escapeXml(styleStr)}" edge="1" source="${escapeXml(edge.sourceId)}" target="${escapeXml(edge.targetId)}" parent="${escapeXml(edgeParent)}">\n` +
|
|
256
|
+
` <mxGeometry relative="1" as="geometry">\n` +
|
|
257
|
+
geomInner + "\n" +
|
|
258
|
+
` </mxGeometry>\n` +
|
|
259
|
+
` </mxCell>`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
cells.push(` <mxCell id="${escapeXml(edge.id)}"${labelAttr} style="${escapeXml(styleStr)}" edge="1" source="${escapeXml(edge.sourceId)}" target="${escapeXml(edge.targetId)}" parent="${escapeXml(edgeParent)}">\n` +
|
|
263
|
+
` <mxGeometry relative="1" as="geometry"/>\n` +
|
|
264
|
+
` </mxCell>`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const flowAttr = page.flowDirection ? ` flowDirection="${escapeXml(page.flowDirection)}"` : "";
|
|
268
|
+
return (` <diagram id="${escapeXml(page.id)}" name="${escapeXml(page.name)}"${flowAttr}>\n` +
|
|
269
|
+
` <mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1">\n` +
|
|
270
|
+
` <root>\n` +
|
|
271
|
+
cells.join("\n") + "\n" +
|
|
272
|
+
` </root>\n` +
|
|
273
|
+
` </mxGraphModel>\n` +
|
|
274
|
+
` </diagram>`);
|
|
275
|
+
}
|
|
276
|
+
function buildGroupStyleString(group) {
|
|
277
|
+
const parts = [];
|
|
278
|
+
parts.push("whiteSpace=wrap");
|
|
279
|
+
parts.push("html=1");
|
|
280
|
+
parts.push("container=1");
|
|
281
|
+
parts.push("verticalAlign=top");
|
|
282
|
+
parts.push("fontStyle=1");
|
|
283
|
+
parts.push("swimlaneLine=0");
|
|
284
|
+
const style = group.style;
|
|
285
|
+
if (style.fillColor)
|
|
286
|
+
parts.push(`fillColor=${style.fillColor}`);
|
|
287
|
+
if (style.strokeColor)
|
|
288
|
+
parts.push(`strokeColor=${style.strokeColor}`);
|
|
289
|
+
if (style.fontColor)
|
|
290
|
+
parts.push(`fontColor=${style.fontColor}`);
|
|
291
|
+
if (style.dashed)
|
|
292
|
+
parts.push("dashed=1");
|
|
293
|
+
if (style.rounded)
|
|
294
|
+
parts.push("rounded=1");
|
|
295
|
+
if (style.shadow)
|
|
296
|
+
parts.push("shadow=1");
|
|
297
|
+
if (style.opacity !== 100)
|
|
298
|
+
parts.push(`opacity=${style.opacity}`);
|
|
299
|
+
if (group.collapsed)
|
|
300
|
+
parts.push("collapsed=1");
|
|
301
|
+
return parts.join(";") + ";";
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Serialize a Diagram to draw.io XML (mxfile format).
|
|
305
|
+
* Always writes uncompressed XML — no base64/deflate encoding.
|
|
306
|
+
*/
|
|
307
|
+
export function serializeDiagram(diagram) {
|
|
308
|
+
const meta = diagram.metadata;
|
|
309
|
+
const modified = escapeXml(meta.modified);
|
|
310
|
+
const host = escapeXml(meta.host);
|
|
311
|
+
const version = escapeXml(meta.version);
|
|
312
|
+
const pages = diagram.pages.map((page) => serializePage(page));
|
|
313
|
+
// Serialize custom types and themes as JSON in a fcp-meta attribute
|
|
314
|
+
let fcpMetaAttr = "";
|
|
315
|
+
const fcpMeta = {};
|
|
316
|
+
if (diagram.customTypes.size > 0) {
|
|
317
|
+
fcpMeta.customTypes = Object.fromEntries(diagram.customTypes);
|
|
318
|
+
}
|
|
319
|
+
if (diagram.customThemes.size > 0) {
|
|
320
|
+
fcpMeta.customThemes = Object.fromEntries(diagram.customThemes);
|
|
321
|
+
}
|
|
322
|
+
if (diagram.loadedStencilPacks.size > 0) {
|
|
323
|
+
fcpMeta.loadedStencilPacks = [...diagram.loadedStencilPacks];
|
|
324
|
+
}
|
|
325
|
+
if (Object.keys(fcpMeta).length > 0) {
|
|
326
|
+
fcpMetaAttr = ` fcp-meta="${escapeXml(JSON.stringify(fcpMeta))}"`;
|
|
327
|
+
}
|
|
328
|
+
return (`<mxfile host="${host}" modified="${modified}" version="${version}"${fcpMetaAttr}>\n` +
|
|
329
|
+
pages.join("\n") + "\n" +
|
|
330
|
+
`</mxfile>`);
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialization/serialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { OpResult } from "../types/index.js";
|
|
2
|
+
import { DiagramModel } from "../model/diagram-model.js";
|
|
3
|
+
import type { QueryResult } from "./query-handler.js";
|
|
4
|
+
import type { StencilEntry } from "../lib/stencils/index.js";
|
|
5
|
+
export declare class IntentLayer {
|
|
6
|
+
model: DiagramModel;
|
|
7
|
+
private queryHandler;
|
|
8
|
+
private sessionHandler;
|
|
9
|
+
/** O(1) lookup for loaded stencil entries by their short ID (e.g., "lambda", "s3"). */
|
|
10
|
+
loadedStencilEntries: Map<string, StencilEntry>;
|
|
11
|
+
readonly drawioCliPath: string | null;
|
|
12
|
+
constructor(options?: {
|
|
13
|
+
drawioCliPath?: string | null;
|
|
14
|
+
});
|
|
15
|
+
/** Rebuild the stencil entry lookup from loaded packs (e.g., after deserialization). */
|
|
16
|
+
restoreStencilPacks(): void;
|
|
17
|
+
/** Build a suggestion by replacing a bad ref with the suggested label in the raw op string. */
|
|
18
|
+
private buildTypoSuggestion;
|
|
19
|
+
/** Build a type-qualified suggestion for ambiguous references. */
|
|
20
|
+
private buildAmbiguousSuggestion;
|
|
21
|
+
executeOps(ops: string[]): Promise<OpResult[]>;
|
|
22
|
+
executeQuery(query: string): string | QueryResult | Promise<QueryResult>;
|
|
23
|
+
executeSession(action: string): string;
|
|
24
|
+
getHelp(): string;
|
|
25
|
+
executeSingleOp(opStr: string): Promise<OpResult>;
|
|
26
|
+
private dispatchOp;
|
|
27
|
+
private handleAdd;
|
|
28
|
+
private handleConnect;
|
|
29
|
+
private handleDisconnect;
|
|
30
|
+
private handleStyle;
|
|
31
|
+
private handleRemove;
|
|
32
|
+
private handleLabel;
|
|
33
|
+
private handleBadge;
|
|
34
|
+
private handleMove;
|
|
35
|
+
private handleMoveGroup;
|
|
36
|
+
private handleResize;
|
|
37
|
+
private handleSwap;
|
|
38
|
+
private handleGroup;
|
|
39
|
+
private handleUngroup;
|
|
40
|
+
private handleDefine;
|
|
41
|
+
private handleCheckpoint;
|
|
42
|
+
private handleTitle;
|
|
43
|
+
private handlePage;
|
|
44
|
+
private handleLayer;
|
|
45
|
+
private handleLayout;
|
|
46
|
+
private handleOrient;
|
|
47
|
+
private handleLoad;
|
|
48
|
+
}
|