@fazelstudio/floe 1.0.0 → 1.0.1
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/CHANGELOG.md +21 -0
- package/README.md +199 -0
- package/dist/src/cli/check.d.ts.map +1 -1
- package/dist/src/cli/check.js +1 -1
- package/dist/src/cli/check.js.map +1 -1
- package/dist/src/cli/format.d.ts.map +1 -1
- package/dist/src/cli/format.js +4 -35
- package/dist/src/cli/format.js.map +1 -1
- package/dist/src/cli/main.d.ts +0 -16
- package/dist/src/cli/main.d.ts.map +1 -1
- package/dist/src/cli/main.js +0 -7
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/render.d.ts.map +1 -1
- package/dist/src/cli/render.js +0 -15
- package/dist/src/cli/render.js.map +1 -1
- package/dist/src/diagnostics.d.ts +4 -18
- package/dist/src/diagnostics.d.ts.map +1 -1
- package/dist/src/diagnostics.js.map +1 -1
- package/dist/src/index.d.ts +7 -9
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/language/completion.d.ts +1 -2
- package/dist/src/language/completion.d.ts.map +1 -1
- package/dist/src/language/completion.js.map +1 -1
- package/dist/src/language/definitions.d.ts +6 -3
- package/dist/src/language/definitions.d.ts.map +1 -1
- package/dist/src/language/definitions.js.map +1 -1
- package/dist/src/language/diagnosticsService.d.ts +4 -5
- package/dist/src/language/diagnosticsService.d.ts.map +1 -1
- package/dist/src/language/diagnosticsService.js.map +1 -1
- package/dist/src/language/folding.d.ts +2 -3
- package/dist/src/language/folding.d.ts.map +1 -1
- package/dist/src/language/folding.js.map +1 -1
- package/dist/src/language/formatting.d.ts +2 -3
- package/dist/src/language/formatting.d.ts.map +1 -1
- package/dist/src/language/formatting.js.map +1 -1
- package/dist/src/language/highlighting.d.ts +2 -3
- package/dist/src/language/highlighting.d.ts.map +1 -1
- package/dist/src/language/highlighting.js.map +1 -1
- package/dist/src/language/hover.d.ts +4 -2
- package/dist/src/language/hover.d.ts.map +1 -1
- package/dist/src/language/hover.js.map +1 -1
- package/dist/src/language/indentation.d.ts +4 -7
- package/dist/src/language/indentation.d.ts.map +1 -1
- package/dist/src/language/indentation.js.map +1 -1
- package/dist/src/language/index.d.ts +45 -17
- package/dist/src/language/index.d.ts.map +1 -1
- package/dist/src/language/index.js.map +1 -1
- package/dist/src/language/references.d.ts +3 -4
- package/dist/src/language/references.d.ts.map +1 -1
- package/dist/src/language/references.js.map +1 -1
- package/dist/src/language/rename.d.ts +43 -15
- package/dist/src/language/rename.d.ts.map +1 -1
- package/dist/src/language/rename.js.map +1 -1
- package/dist/src/language/semanticModel.d.ts +14 -19
- package/dist/src/language/semanticModel.d.ts.map +1 -1
- package/dist/src/language/semanticModel.js.map +1 -1
- package/dist/src/language/symbols.d.ts +2 -3
- package/dist/src/language/symbols.d.ts.map +1 -1
- package/dist/src/language/symbols.js.map +1 -1
- package/dist/src/language/types.d.ts +0 -44
- package/dist/src/language/types.d.ts.map +1 -1
- package/dist/src/language/utils.d.ts +20 -18
- package/dist/src/language/utils.d.ts.map +1 -1
- package/dist/src/language/utils.js.map +1 -1
- package/dist/src/layout/dagre.d.ts +2 -2
- package/dist/src/layout/dagre.d.ts.map +1 -1
- package/dist/src/layout/dagre.js +14 -55
- package/dist/src/layout/dagre.js.map +1 -1
- package/dist/src/layout/index.d.ts +1 -9
- package/dist/src/layout/index.d.ts.map +1 -1
- package/dist/src/layout/index.js +1 -10
- package/dist/src/layout/index.js.map +1 -1
- package/dist/src/layout/simple.d.ts +1 -1
- package/dist/src/layout/simple.d.ts.map +1 -1
- package/dist/src/layout/simple.js +20 -166
- package/dist/src/layout/simple.js.map +1 -1
- package/dist/src/layout/types.d.ts +0 -1
- package/dist/src/layout/types.d.ts.map +1 -1
- package/dist/src/lexer.d.ts +0 -3
- package/dist/src/lexer.d.ts.map +1 -1
- package/dist/src/lexer.js +13 -54
- package/dist/src/lexer.js.map +1 -1
- package/dist/src/lsp/documents.d.ts +8 -17
- package/dist/src/lsp/documents.d.ts.map +1 -1
- package/dist/src/lsp/documents.js.map +1 -1
- package/dist/src/lsp/server.d.ts +138 -63
- package/dist/src/lsp/server.d.ts.map +1 -1
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/lsp/utils.d.ts +13 -20
- package/dist/src/lsp/utils.d.ts.map +1 -1
- package/dist/src/lsp/utils.js.map +1 -1
- package/dist/src/parser.d.ts +94 -68
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js.map +1 -1
- package/dist/src/pipeline.d.ts +0 -20
- package/dist/src/pipeline.d.ts.map +1 -1
- package/dist/src/pipeline.js +2 -28
- package/dist/src/pipeline.js.map +1 -1
- package/dist/src/range.d.ts +2 -5
- package/dist/src/range.d.ts.map +1 -1
- package/dist/src/range.js +0 -7
- package/dist/src/range.js.map +1 -1
- package/dist/src/render/shapes.d.ts +0 -8
- package/dist/src/render/shapes.d.ts.map +1 -1
- package/dist/src/render/shapes.js +13 -60
- package/dist/src/render/shapes.js.map +1 -1
- package/dist/src/render/svg.d.ts +0 -9
- package/dist/src/render/svg.d.ts.map +1 -1
- package/dist/src/render/svg.js +18 -83
- package/dist/src/render/svg.js.map +1 -1
- package/dist/src/security/url.d.ts +2 -2
- package/dist/src/security/url.d.ts.map +1 -1
- package/dist/src/security/url.js.map +1 -1
- package/dist/src/types.d.ts +3 -45
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +1 -1
- package/dist/src/validator.d.ts +4 -33
- package/dist/src/validator.d.ts.map +1 -1
- package/dist/src/validator.js +4 -2
- package/dist/src/validator.js.map +1 -1
- package/package.json +1 -1
package/dist/src/range.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Source position and range utilities
|
|
3
|
-
* Line and column are 1-indexed, offset is 0-indexed.
|
|
4
|
-
*/
|
|
5
1
|
export function pos(line, column, offset) {
|
|
6
2
|
return { line, column, offset };
|
|
7
3
|
}
|
|
@@ -11,9 +7,6 @@ export function range(start, end) {
|
|
|
11
7
|
export function emptyRangeAt(p) {
|
|
12
8
|
return { start: p, end: p };
|
|
13
9
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Compare ranges for debugging / tests
|
|
16
|
-
*/
|
|
17
10
|
export function rangeToString(r) {
|
|
18
11
|
return `${r.start.line}:${r.start.column}-${r.end.line}:${r.end.column}`;
|
|
19
12
|
}
|
package/dist/src/range.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/range.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/range.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;IAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,KAAe,EAAE,GAAa;IAClD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,CAAW;IACtC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,CAAQ;IACpC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAC3E,CAAC"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { LayoutNode } from "../layout/types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Shape types — small initial set.
|
|
4
|
-
* Unknown types fallback to default rect.
|
|
5
|
-
*/
|
|
6
2
|
export type NodeShapeKind = "default" | "person" | "service" | "database" | "client";
|
|
7
3
|
export declare function getShapeKind(type?: string): NodeShapeKind;
|
|
8
4
|
export interface ShapeStyle {
|
|
@@ -12,9 +8,5 @@ export interface ShapeStyle {
|
|
|
12
8
|
rx?: number;
|
|
13
9
|
}
|
|
14
10
|
export declare function shapeStyle(kind: NodeShapeKind): ShapeStyle;
|
|
15
|
-
/**
|
|
16
|
-
* Render a node shape as SVG string (without label).
|
|
17
|
-
* x,y is center; w,h is size.
|
|
18
|
-
*/
|
|
19
11
|
export declare function renderNodeShape(node: LayoutNode): string;
|
|
20
12
|
//# sourceMappingURL=shapes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../../src/render/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../../src/render/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAErF,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAQzD;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAQ1D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAoBxD"}
|
|
@@ -14,22 +14,13 @@ export function getShapeKind(type) {
|
|
|
14
14
|
}
|
|
15
15
|
export function shapeStyle(kind) {
|
|
16
16
|
switch (kind) {
|
|
17
|
-
case "person":
|
|
18
|
-
|
|
19
|
-
case "
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return { fill: "#dcfce7", stroke: "#16a34a", strokeWidth: 1.5 };
|
|
23
|
-
case "client":
|
|
24
|
-
return { fill: "#f3e8ff", stroke: "#9333ea", strokeWidth: 1.5, rx: 6 };
|
|
25
|
-
default:
|
|
26
|
-
return { fill: "#f1f5f9", stroke: "#334155", strokeWidth: 1.5, rx: 6 };
|
|
17
|
+
case "person": return { fill: "#fef3c7", stroke: "#d97706", strokeWidth: 1.5, rx: 24 };
|
|
18
|
+
case "service": return { fill: "#dbeafe", stroke: "#2563eb", strokeWidth: 1.5, rx: 6 };
|
|
19
|
+
case "database": return { fill: "#dcfce7", stroke: "#16a34a", strokeWidth: 1.5 };
|
|
20
|
+
case "client": return { fill: "#f3e8ff", stroke: "#9333ea", strokeWidth: 1.5, rx: 6 };
|
|
21
|
+
default: return { fill: "#f1f5f9", stroke: "#334155", strokeWidth: 1.5, rx: 6 };
|
|
27
22
|
}
|
|
28
23
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Render a node shape as SVG string (without label).
|
|
31
|
-
* x,y is center; w,h is size.
|
|
32
|
-
*/
|
|
33
24
|
export function renderNodeShape(node) {
|
|
34
25
|
const kind = getShapeKind(node.type);
|
|
35
26
|
const style = shapeStyle(kind);
|
|
@@ -37,72 +28,34 @@ export function renderNodeShape(node) {
|
|
|
37
28
|
const y = fmt(node.y - node.height / 2);
|
|
38
29
|
const w = fmt(node.width);
|
|
39
30
|
const h = fmt(node.height);
|
|
40
|
-
const fill = style.fill;
|
|
41
|
-
|
|
42
|
-
const sw = style.strokeWidth;
|
|
43
|
-
if (kind === "database") {
|
|
31
|
+
const fill = style.fill, stroke = style.stroke, sw = style.strokeWidth;
|
|
32
|
+
if (kind === "database")
|
|
44
33
|
return renderDatabaseShape(node, fill, stroke, sw);
|
|
45
|
-
}
|
|
46
34
|
if (kind === "person") {
|
|
47
|
-
// capsule shape: rx = h/2
|
|
48
35
|
const rx = fmt(node.height / 2);
|
|
49
36
|
return `<rect x="${x}" y="${y}" width="${w}" height="${h}" rx="${rx}" ry="${rx}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
50
37
|
}
|
|
51
|
-
// default / service / client : rounded rect
|
|
52
38
|
const rx = fmt(style.rx ?? 6);
|
|
53
39
|
const ry = rx;
|
|
54
|
-
// client gets double stroke effect via extra rect? keep simple variant with dashed?
|
|
55
40
|
if (kind === "client") {
|
|
56
|
-
// client: slightly different — add stroke-dasharray to distinguish? Keep solid but we add shadow via second rect? For determinism, just use same rect with different fill.
|
|
57
41
|
return `<rect x="${x}" y="${y}" width="${w}" height="${h}" rx="${rx}" ry="${ry}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
58
42
|
}
|
|
59
43
|
return `<rect x="${x}" y="${y}" width="${w}" height="${h}" rx="${rx}" ry="${ry}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
60
44
|
}
|
|
61
45
|
function renderDatabaseShape(node, fill, stroke, sw) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const left = cx - w / 2;
|
|
69
|
-
const right = cx + w / 2;
|
|
70
|
-
const top = cy - h / 2;
|
|
71
|
-
const bottom = cy + h / 2;
|
|
72
|
-
const ellipseH = Math.min(10, h * 0.22); // height of ellipse at top/bottom
|
|
73
|
-
// Path for cylinder body
|
|
74
|
-
// M left, top+ellipseH L left, bottom-ellipseH A ... etc.
|
|
75
|
-
// Simpler: draw as combination of rect + two ellipses, but for single shape use path
|
|
76
|
-
const rx = w / 2;
|
|
77
|
-
const ry = ellipseH;
|
|
78
|
-
// Points
|
|
79
|
-
const x1 = fmt(left);
|
|
80
|
-
const x2 = fmt(right);
|
|
81
|
-
const yTop = fmt(top + ry);
|
|
82
|
-
const yBottom = fmt(bottom - ry);
|
|
83
|
-
const yTopCap = fmt(top + ry);
|
|
84
|
-
const yBottomCap = fmt(bottom - ry);
|
|
85
|
-
// Use path:
|
|
86
|
-
// M left, yTop -> line to left, yBottom -> arc to right, yBottom -> line to right, yTop -> arc to left, yTop
|
|
87
|
-
const d = [
|
|
88
|
-
`M ${x1} ${yTop}`,
|
|
89
|
-
`L ${x1} ${yBottom}`,
|
|
90
|
-
`A ${fmt(rx)} ${fmt(ry)} 0 0 0 ${x2} ${yBottom}`,
|
|
91
|
-
`L ${x2} ${yTop}`,
|
|
92
|
-
`A ${fmt(rx)} ${fmt(ry)} 0 0 0 ${x1} ${yTop}`,
|
|
93
|
-
].join(" ");
|
|
94
|
-
// Top ellipse as separate path for fill distinction? We'll include top ellipse as filled
|
|
46
|
+
const cx = node.x, cy = node.y, w = node.width, h = node.height;
|
|
47
|
+
const left = cx - w / 2, right = cx + w / 2, top = cy - h / 2, bottom = cy + h / 2;
|
|
48
|
+
const ellipseH = Math.min(10, h * 0.22);
|
|
49
|
+
const rx = w / 2, ry = ellipseH;
|
|
50
|
+
const x1 = fmt(left), x2 = fmt(right), yTop = fmt(top + ry), yBottom = fmt(bottom - ry);
|
|
51
|
+
const d = [`M ${x1} ${yTop}`, `L ${x1} ${yBottom}`, `A ${fmt(rx)} ${fmt(ry)} 0 0 0 ${x2} ${yBottom}`, `L ${x2} ${yTop}`, `A ${fmt(rx)} ${fmt(ry)} 0 0 0 ${x1} ${yTop}`].join(" ");
|
|
95
52
|
const topEllipse = `<ellipse cx="${fmt(cx)}" cy="${fmt(top + ry)}" rx="${fmt(rx)}" ry="${fmt(ry)}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
96
53
|
const body = `<path d="${d}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
97
|
-
// Bottom ellipse stroke
|
|
98
54
|
const bottomEllipse = `<ellipse cx="${fmt(cx)}" cy="${fmt(bottom - ry)}" rx="${fmt(rx)}" ry="${fmt(ry)}" fill="${fill}" stroke="${stroke}" stroke-width="${sw}" />`;
|
|
99
|
-
// Return group of shapes
|
|
100
55
|
return `${body}\n${topEllipse}\n${bottomEllipse}`;
|
|
101
56
|
}
|
|
102
57
|
function fmt(n) {
|
|
103
|
-
// Round to 2 decimals, remove trailing zeros for determinism and smaller output
|
|
104
58
|
const r = Math.round(n * 100) / 100;
|
|
105
|
-
// Use toString to avoid unnecessary decimals, but ensure deterministic
|
|
106
59
|
if (Number.isInteger(r))
|
|
107
60
|
return String(r);
|
|
108
61
|
return r.toFixed(2).replace(/\.?0+$/, "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/render/shapes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/render/shapes.ts"],"names":[],"mappings":"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"}
|
package/dist/src/render/svg.d.ts
CHANGED
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
import type { LayoutResult } from "../layout/types.js";
|
|
2
2
|
export interface SvgRenderOptions {
|
|
3
|
-
/** Extra padding around diagram (default handled by layout margin) */
|
|
4
3
|
padding?: number;
|
|
5
|
-
/** Background color */
|
|
6
4
|
background?: string;
|
|
7
|
-
/** Font family for labels */
|
|
8
5
|
fontFamily?: string;
|
|
9
|
-
/** Show debug bounding boxes */
|
|
10
6
|
debug?: boolean;
|
|
11
|
-
/** Custom CSS to inject */
|
|
12
7
|
css?: string;
|
|
13
8
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Deterministic SVG renderer.
|
|
16
|
-
* Consumes LayoutResult (semantic + layout), not raw Floe text.
|
|
17
|
-
*/
|
|
18
9
|
export declare function renderSvg(layout: LayoutResult, opts?: SvgRenderOptions): string;
|
|
19
10
|
//# sourceMappingURL=svg.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/render/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC/B,
|
|
1
|
+
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/render/svg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA0F/E"}
|
package/dist/src/render/svg.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { renderNodeShape } from "./shapes.js";
|
|
2
2
|
const DEFAULT_FONT = "ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif";
|
|
3
|
-
/**
|
|
4
|
-
* Deterministic SVG renderer.
|
|
5
|
-
* Consumes LayoutResult (semantic + layout), not raw Floe text.
|
|
6
|
-
*/
|
|
7
3
|
export function renderSvg(layout, opts) {
|
|
8
4
|
const padding = opts?.padding ?? 0;
|
|
9
5
|
const background = opts?.background ?? "#ffffff";
|
|
10
6
|
const fontFamily = opts?.fontFamily ?? DEFAULT_FONT;
|
|
11
|
-
// Deterministic dimensions: layout width/height plus padding
|
|
12
7
|
const width = Math.ceil(layout.width + padding * 2);
|
|
13
8
|
const height = Math.ceil(layout.height + padding * 2);
|
|
14
9
|
const viewBox = `0 0 ${width} ${height}`;
|
|
15
|
-
// Sort for determinism
|
|
16
10
|
const nodesSorted = [...layout.nodes].sort((a, b) => a.id.localeCompare(b.id));
|
|
17
11
|
const edgesSorted = [...layout.edges].sort((a, b) => {
|
|
18
12
|
if (a.source !== b.source)
|
|
@@ -22,66 +16,45 @@ export function renderSvg(layout, opts) {
|
|
|
22
16
|
return (a.label ?? "").localeCompare(b.label ?? "");
|
|
23
17
|
});
|
|
24
18
|
const parts = [];
|
|
25
|
-
// Header
|
|
26
19
|
parts.push(`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="${viewBox}" role="img" font-family="${escapeAttr(fontFamily)}">`);
|
|
27
|
-
|
|
28
|
-
if (background && background !== "transparent") {
|
|
20
|
+
if (background && background !== "transparent")
|
|
29
21
|
parts.push(`<rect width="${width}" height="${height}" fill="${escapeAttr(background)}" />`);
|
|
30
|
-
}
|
|
31
|
-
// Styles
|
|
32
22
|
const css = opts?.css ?? defaultCss();
|
|
33
23
|
parts.push(`<style>${css}</style>`);
|
|
34
|
-
// Defs: arrowhead marker (deterministic id)
|
|
35
24
|
parts.push(`<defs>`);
|
|
36
25
|
parts.push(`<marker id="arrowhead" viewBox="0 0 10 7" refX="9" refY="3.5" markerWidth="10" markerHeight="7" orient="auto" markerUnits="strokeWidth">`);
|
|
37
26
|
parts.push(`<path d="M 0 0 L 10 3.5 L 0 7 z" fill="#334155" />`);
|
|
38
27
|
parts.push(`</marker>`);
|
|
39
28
|
parts.push(`</defs>`);
|
|
40
|
-
// Group for offset padding
|
|
41
29
|
const offset = padding;
|
|
42
30
|
if (offset !== 0)
|
|
43
31
|
parts.push(`<g transform="translate(${offset} ${offset})">`);
|
|
44
|
-
// Groups containers — draw behind nodes/edges but above background
|
|
45
32
|
const groups = layout.groups ?? [];
|
|
46
33
|
if (groups.length > 0) {
|
|
47
34
|
parts.push(`<g class="groups">`);
|
|
48
|
-
// flatten and sort deterministically already done by layout, but re-sort for rendering stability
|
|
49
35
|
const flatGroups = flattenGroups(groups);
|
|
50
|
-
|
|
51
|
-
// Already deterministic, just render each via helper
|
|
52
|
-
for (const g of flatGroups) {
|
|
53
|
-
// For nested rendering, we render all groups individually; outer will be drawn before inner due to flat order (parent before child)
|
|
36
|
+
for (const g of flatGroups)
|
|
54
37
|
parts.push(renderGroupSvg(g, fontFamily));
|
|
55
|
-
}
|
|
56
38
|
parts.push(`</g>`);
|
|
57
39
|
}
|
|
58
|
-
// Edges group (draw first, under nodes)
|
|
59
40
|
parts.push(`<g class="edges" stroke-linecap="round" stroke-linejoin="round">`);
|
|
60
41
|
for (const e of edgesSorted) {
|
|
61
42
|
const d = pointsToPath(e.points);
|
|
62
43
|
const edgeId = `edge-${escapeId(e.source)}-${escapeId(e.target)}${e.label ? "-" + hashLabel(e.label) : ""}`;
|
|
63
|
-
// Edge semantics: directed has arrow, undirected is dashed without arrow
|
|
64
44
|
const isUndirected = e.data?.kind === "undirected";
|
|
65
45
|
const dash = isUndirected ? ` stroke-dasharray="6 3"` : "";
|
|
66
46
|
const marker = isUndirected ? "" : ` marker-end="url(#arrowhead)"`;
|
|
67
47
|
parts.push(`<path id="${edgeId}" d="${d}" fill="none" stroke="#334155" stroke-width="1.6"${dash}${marker} />`);
|
|
68
48
|
}
|
|
69
49
|
parts.push(`</g>`);
|
|
70
|
-
// Edge labels group (above edges, below nodes)
|
|
71
50
|
if (edgesSorted.some((e) => e.label)) {
|
|
72
51
|
parts.push(`<g class="edge-labels">`);
|
|
73
52
|
for (const e of edgesSorted) {
|
|
74
53
|
if (!e.label)
|
|
75
54
|
continue;
|
|
76
55
|
const pos = e.labelPos ?? midpoint(e.points);
|
|
77
|
-
const x = fmt(pos.x);
|
|
78
|
-
const
|
|
79
|
-
const label = escapeXml(e.label);
|
|
80
|
-
// Estimate text width for background rect
|
|
81
|
-
const estW = estimateTextWidth(e.label) + 8;
|
|
82
|
-
const estH = 16;
|
|
83
|
-
const rx = 4;
|
|
84
|
-
// Background rect for readability
|
|
56
|
+
const x = fmt(pos.x), y = fmt(pos.y), label = escapeXml(e.label);
|
|
57
|
+
const estW = estimateTextWidth(e.label) + 8, estH = 16, rx = 4;
|
|
85
58
|
parts.push(`<g class="edge-label" transform="translate(${x} ${y})">`);
|
|
86
59
|
parts.push(`<rect x="${fmt(-estW / 2)}" y="${fmt(-estH / 2 + 1)}" width="${fmt(estW)}" height="${fmt(estH)}" rx="${rx}" ry="${rx}" fill="white" stroke="#e2e8f0" stroke-width="0.8" />`);
|
|
87
60
|
parts.push(`<text text-anchor="middle" dominant-baseline="middle" font-size="11" fill="#334155" font-family="${escapeAttr(fontFamily)}">${label}</text>`);
|
|
@@ -89,31 +62,24 @@ export function renderSvg(layout, opts) {
|
|
|
89
62
|
}
|
|
90
63
|
parts.push(`</g>`);
|
|
91
64
|
}
|
|
92
|
-
// Nodes group
|
|
93
65
|
parts.push(`<g class="nodes">`);
|
|
94
66
|
for (const n of nodesSorted) {
|
|
95
67
|
const shapeSvg = renderNodeShape(n);
|
|
96
68
|
const label = escapeXml(n.label);
|
|
97
|
-
const tx = fmt(n.x);
|
|
98
|
-
const ty = fmt(n.y);
|
|
99
|
-
// Node group with deterministic id and class per type
|
|
69
|
+
const tx = fmt(n.x), ty = fmt(n.y);
|
|
100
70
|
const kindClass = n.type ? `node-${escapeId(n.type)}` : `node-default`;
|
|
101
71
|
parts.push(`<g id="node-${escapeId(n.id)}" class="node ${kindClass}" data-node-id="${escapeAttr(n.id)}"${n.type ? ` data-node-type="${escapeAttr(n.type)}"` : ""}>`);
|
|
102
72
|
parts.push(shapeSvg);
|
|
103
|
-
// Label centered
|
|
104
|
-
// For database shape, label y is slightly lower due to cylinder top? Keep centered for now
|
|
105
73
|
parts.push(`<text x="${tx}" y="${ty}" text-anchor="middle" dominant-baseline="middle" font-size="12" font-weight="500" fill="#0f172a" font-family="${escapeAttr(fontFamily)}">${label}</text>`);
|
|
106
74
|
parts.push(`</g>`);
|
|
107
75
|
}
|
|
108
76
|
parts.push(`</g>`);
|
|
109
77
|
if (offset !== 0)
|
|
110
78
|
parts.push(`</g>`);
|
|
111
|
-
// Optional debug: bounding boxes
|
|
112
79
|
if (opts?.debug) {
|
|
113
80
|
parts.push(`<g class="debug">`);
|
|
114
81
|
for (const n of nodesSorted) {
|
|
115
|
-
const x = fmt(n.x - n.width / 2);
|
|
116
|
-
const y = fmt(n.y - n.height / 2);
|
|
82
|
+
const x = fmt(n.x - n.width / 2), y = fmt(n.y - n.height / 2);
|
|
117
83
|
parts.push(`<rect x="${x}" y="${y}" width="${fmt(n.width)}" height="${fmt(n.height)}" fill="none" stroke="red" stroke-dasharray="3 3" stroke-width="0.5" />`);
|
|
118
84
|
}
|
|
119
85
|
parts.push(`</g>`);
|
|
@@ -134,10 +100,8 @@ function pointsToPath(points) {
|
|
|
134
100
|
return `M ${fmt(points[0].x)} ${fmt(points[0].y)}`;
|
|
135
101
|
const start = points[0];
|
|
136
102
|
let d = `M ${fmt(start.x)} ${fmt(start.y)}`;
|
|
137
|
-
for (let i = 1; i < points.length; i++)
|
|
138
|
-
|
|
139
|
-
d += ` L ${fmt(p.x)} ${fmt(p.y)}`;
|
|
140
|
-
}
|
|
103
|
+
for (let i = 1; i < points.length; i++)
|
|
104
|
+
d += ` L ${fmt(points[i].x)} ${fmt(points[i].y)}`;
|
|
141
105
|
return d;
|
|
142
106
|
}
|
|
143
107
|
function midpoint(points) {
|
|
@@ -145,18 +109,12 @@ function midpoint(points) {
|
|
|
145
109
|
return { x: 0, y: 0 };
|
|
146
110
|
if (points.length === 1)
|
|
147
111
|
return points[0];
|
|
148
|
-
if (points.length === 2)
|
|
149
|
-
|
|
150
|
-
return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 };
|
|
151
|
-
}
|
|
112
|
+
if (points.length === 2)
|
|
113
|
+
return { x: (points[0].x + points[1].x) / 2, y: (points[0].y + points[1].y) / 2 };
|
|
152
114
|
const mid = Math.floor(points.length / 2);
|
|
153
|
-
|
|
154
|
-
return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 };
|
|
155
|
-
}
|
|
156
|
-
function estimateTextWidth(text) {
|
|
157
|
-
// Deterministic char width approximation: 6.5 per char at 11px
|
|
158
|
-
return text.length * 6.5;
|
|
115
|
+
return { x: (points[mid - 1].x + points[mid].x) / 2, y: (points[mid].y + points[mid].y) / 2 };
|
|
159
116
|
}
|
|
117
|
+
function estimateTextWidth(text) { return text.length * 6.5; }
|
|
160
118
|
function fmt(n) {
|
|
161
119
|
const r = Math.round(n * 100) / 100;
|
|
162
120
|
if (Number.isInteger(r))
|
|
@@ -164,48 +122,26 @@ function fmt(n) {
|
|
|
164
122
|
return r.toFixed(2).replace(/\.?0+$/, "");
|
|
165
123
|
}
|
|
166
124
|
function escapeXml(s) {
|
|
167
|
-
return s
|
|
168
|
-
.replace(/&/g, "&")
|
|
169
|
-
.replace(/</g, "<")
|
|
170
|
-
.replace(/>/g, ">")
|
|
171
|
-
.replace(/"/g, """)
|
|
172
|
-
.replace(/'/g, "'");
|
|
173
|
-
}
|
|
174
|
-
function escapeAttr(s) {
|
|
175
|
-
return escapeXml(s);
|
|
176
|
-
}
|
|
177
|
-
function escapeId(s) {
|
|
178
|
-
// For SVG id attribute, replace invalid chars deterministically
|
|
179
|
-
return s.replace(/[^A-Za-z0-9_-]/g, "_");
|
|
125
|
+
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
180
126
|
}
|
|
127
|
+
function escapeAttr(s) { return escapeXml(s); }
|
|
128
|
+
function escapeId(s) { return s.replace(/[^A-Za-z0-9_-]/g, "_"); }
|
|
181
129
|
function hashLabel(s) {
|
|
182
130
|
let h = 0;
|
|
183
|
-
for (let i = 0; i < s.length; i++)
|
|
131
|
+
for (let i = 0; i < s.length; i++)
|
|
184
132
|
h = (h * 31 + s.charCodeAt(i)) | 0;
|
|
185
|
-
}
|
|
186
133
|
return Math.abs(h).toString(36).slice(0, 6);
|
|
187
134
|
}
|
|
188
135
|
function renderGroupSvg(g, fontFamily) {
|
|
189
|
-
const x = fmt(g.x - g.width / 2);
|
|
190
|
-
const
|
|
191
|
-
const w = fmt(g.width);
|
|
192
|
-
const h = fmt(g.height);
|
|
193
|
-
const label = escapeXml(g.label);
|
|
194
|
-
const gid = escapeId(g.id);
|
|
136
|
+
const x = fmt(g.x - g.width / 2), y = fmt(g.y - g.height / 2), w = fmt(g.width), h = fmt(g.height);
|
|
137
|
+
const label = escapeXml(g.label), gid = escapeId(g.id);
|
|
195
138
|
const typeAttr = g.type ? ` data-group-type="${escapeAttr(g.type)}"` : "";
|
|
196
|
-
// Group container rect with subtle fill and header bar for label
|
|
197
139
|
const headerH = 22;
|
|
198
|
-
// Main group rect
|
|
199
140
|
const parts = [];
|
|
200
141
|
parts.push(`<g id="group-${gid}" class="group group-${gid}" data-group-id="${escapeAttr(g.id)}"${typeAttr}>`);
|
|
201
|
-
// Background
|
|
202
142
|
parts.push(`<rect x="${x}" y="${y}" width="${w}" height="${h}" rx="8" ry="8" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1.2" stroke-dasharray="8 4" />`);
|
|
203
|
-
// Header bar
|
|
204
143
|
parts.push(`<rect x="${x}" y="${y}" width="${w}" height="${fmt(headerH)}" rx="8" ry="8" fill="#e2e8f0" stroke="none" />`);
|
|
205
|
-
// To keep header rounded only top, overlay bottom rect of header? Simplify as above.
|
|
206
|
-
// Clip bottom of header: draw rect covering lower part of header's rounded bottom to make sharp bottom
|
|
207
144
|
parts.push(`<rect x="${x}" y="${fmt(g.y - g.height / 2 + headerH / 2)}" width="${w}" height="${fmt(headerH / 2)}" fill="#e2e8f0" stroke="none" />`);
|
|
208
|
-
// Header label
|
|
209
145
|
parts.push(`<text x="${fmt(g.x)}" y="${fmt(g.y - g.height / 2 + headerH / 2 + 1)}" text-anchor="middle" dominant-baseline="middle" font-size="11" font-weight="600" fill="#334155" font-family="${escapeAttr(fontFamily)}">${label}</text>`);
|
|
210
146
|
parts.push(`</g>`);
|
|
211
147
|
return parts.join("\n");
|
|
@@ -213,7 +149,6 @@ function renderGroupSvg(g, fontFamily) {
|
|
|
213
149
|
function flattenGroups(groups) {
|
|
214
150
|
const out = [];
|
|
215
151
|
function dfs(arr) {
|
|
216
|
-
// Deterministic order: sort by id at each level (layout already sorted, but enforce)
|
|
217
152
|
const sorted = [...arr].sort((a, b) => a.id.localeCompare(b.id));
|
|
218
153
|
for (const g of sorted) {
|
|
219
154
|
out.push(g);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/render/svg.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../../src/render/svg.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* URL sanitization for Floe links — prevents execution vectors.
|
|
3
3
|
* Only allow safe schemes; block javascript:, data:, vbscript:
|
|
4
4
|
*/
|
|
5
|
-
export declare function sanitizeUrl(url:
|
|
6
|
-
export declare function isSafeUrl(url:
|
|
5
|
+
export declare function sanitizeUrl(url: any): any;
|
|
6
|
+
export declare function isSafeUrl(url: any): boolean;
|
|
7
7
|
//# sourceMappingURL=url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/security/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/security/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,KAAA,OAkB9B;AACD,wBAAgB,SAAS,CAAC,GAAG,KAAA,WAE5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/security/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/security/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,IAAI,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,iFAAiF;IACjF,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC;IACb,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC;IACb,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QACxC,OAAO,CAAC,CAAC;IACb,kEAAkE;IAClE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChB,OAAO,CAAC,CAAC;IACb,0BAA0B;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,GAAG;IACzB,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACrC,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,50 +1,30 @@
|
|
|
1
1
|
import type { Range } from "./range.js";
|
|
2
|
-
/**
|
|
3
|
-
* Supported diagram directions
|
|
4
|
-
*/
|
|
5
2
|
export type Direction = "TB" | "BT" | "LR" | "RL";
|
|
6
3
|
export declare const DIRECTIONS: readonly Direction[];
|
|
7
4
|
export declare const DEFAULT_DIRECTION: Direction;
|
|
8
5
|
/**
|
|
9
6
|
* Identifier rules:
|
|
10
7
|
* - Must match: [A-Za-z_][A-Za-z0-9_-]*
|
|
11
|
-
* - Must start with letter or underscore
|
|
12
|
-
* - May contain letters, digits, underscore, hyphen
|
|
13
|
-
* - No spaces, no Unicode beyond ASCII, no leading digit, no punctuation other than _ and -
|
|
14
|
-
* - Case-sensitive
|
|
15
|
-
* - Display labels are separate concept; IDs are internal keys
|
|
16
8
|
*/
|
|
17
9
|
export declare const IDENTIFIER_RE: RegExp;
|
|
18
10
|
export declare function isValidIdentifier(id: string): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Semantic edge kind — directed or undirected association
|
|
21
|
-
*/
|
|
11
|
+
/** Semantic edge kind — v0.3 adds undirected */
|
|
22
12
|
export type EdgeKind = "directed" | "undirected";
|
|
23
|
-
/**
|
|
24
|
-
* Renderer-independent semantic model
|
|
25
|
-
* No visual coordinates, SVG, or layout information.
|
|
26
|
-
*/
|
|
13
|
+
/** Renderer-independent semantic model — no visual coordinates */
|
|
27
14
|
export interface FloeNode {
|
|
28
15
|
id: string;
|
|
29
|
-
/** Display label —
|
|
16
|
+
/** Display label — quoted string after id/type, defaults to id if not set */
|
|
30
17
|
label?: string;
|
|
31
18
|
/** Explicit node type, e.g. "person", "service", "database" — semantic style reference */
|
|
32
19
|
type?: string;
|
|
33
|
-
/** Source range covering the identifier (and type brackets if present, and label if present) */
|
|
34
20
|
range: Range;
|
|
35
21
|
}
|
|
36
|
-
/**
|
|
37
|
-
* Annotation — semantic note attached to a node/group or diagram-level if target undefined.
|
|
38
|
-
*/
|
|
39
22
|
export interface FloeAnnotation {
|
|
40
23
|
/** Target node or group id; undefined => diagram-level */
|
|
41
24
|
target?: string;
|
|
42
25
|
text: string;
|
|
43
26
|
range: Range;
|
|
44
27
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Link — semantic external link attached to a node/group.
|
|
47
|
-
*/
|
|
48
28
|
export interface FloeLink {
|
|
49
29
|
target: string;
|
|
50
30
|
url: string;
|
|
@@ -54,56 +34,34 @@ export interface FloeEdge {
|
|
|
54
34
|
source: string;
|
|
55
35
|
target: string;
|
|
56
36
|
label?: string;
|
|
57
|
-
/** Edge semantics: directed ( -> ) or undirected ( -- ) */
|
|
58
37
|
kind: EdgeKind;
|
|
59
|
-
/** Range covering entire edge statement */
|
|
60
38
|
range: Range;
|
|
61
|
-
/** Ranges for sub-components for diagnostics / tooling */
|
|
62
39
|
sourceRange: Range;
|
|
63
40
|
targetRange: Range;
|
|
64
41
|
labelRange?: Range;
|
|
65
42
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Group — semantic container; may be nested. Renderer-independent.
|
|
68
|
-
*/
|
|
69
43
|
export interface FloeGroup {
|
|
70
44
|
id: string;
|
|
71
|
-
/** Display label for group (quoted string), defaults to id */
|
|
72
45
|
label?: string;
|
|
73
|
-
/** Semantic type e.g. "subsystem" */
|
|
74
46
|
type?: string;
|
|
75
47
|
range: Range;
|
|
76
|
-
/** Direct member node ids defined inside this group (not counting nested subgroup members) */
|
|
77
48
|
nodeIds: string[];
|
|
78
|
-
/** Nested groups */
|
|
79
49
|
groups: FloeGroup[];
|
|
80
|
-
/** Semantic metadata scoped to this group */
|
|
81
50
|
metadata: Record<string, string>;
|
|
82
|
-
/** Annotations scoped to this group */
|
|
83
51
|
annotations: FloeAnnotation[];
|
|
84
|
-
/** External link for group */
|
|
85
52
|
link?: string;
|
|
86
|
-
/** Parent group id if nested */
|
|
87
53
|
parentId?: string;
|
|
88
54
|
}
|
|
89
55
|
export interface FloeDiagram {
|
|
90
56
|
direction: Direction;
|
|
91
|
-
/** Direction declaration range if explicitly provided */
|
|
92
57
|
directionRange?: Range;
|
|
93
58
|
nodes: FloeNode[];
|
|
94
59
|
edges: FloeEdge[];
|
|
95
|
-
/** Top-level groups (nested via groups[].groups) */
|
|
96
60
|
groups: FloeGroup[];
|
|
97
|
-
/** Semantic metadata at diagram level */
|
|
98
61
|
metadata: Record<string, string>;
|
|
99
|
-
/** Diagram-level and targeted annotations */
|
|
100
62
|
annotations: FloeAnnotation[];
|
|
101
|
-
/** Semantic external links (target -> url) */
|
|
102
63
|
links: FloeLink[];
|
|
103
64
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Full parse result including diagnostics
|
|
106
|
-
*/
|
|
107
65
|
export interface ParseResult {
|
|
108
66
|
diagram: FloeDiagram;
|
|
109
67
|
diagnostics: import("./diagnostics.js").Diagnostic[];
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAClD,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAsC,CAAC;AAClF,eAAO,MAAM,iBAAiB,EAAE,SAAgB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAA8B,CAAC;AACzD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,gDAAgD;AAChD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAEjD,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,OAAO,kBAAkB,EAAE,UAAU,EAAE,CAAC;CACtD"}
|