@squinch/core 0.1.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 +202 -0
- package/NOTICE +41 -0
- package/dist/api.d.ts +91 -0
- package/dist/api.js +232 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.js +9 -0
- package/dist/diff/diff.d.ts +30 -0
- package/dist/diff/diff.js +365 -0
- package/dist/fonts.generated.d.ts +1 -0
- package/dist/fonts.generated.js +6 -0
- package/dist/grammar/parser.js +22 -0
- package/dist/grammar/parser.terms.js +115 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/layout/layout.d.ts +197 -0
- package/dist/layout/layout.js +1721 -0
- package/dist/metrics.d.ts +20 -0
- package/dist/metrics.generated.d.ts +4 -0
- package/dist/metrics.generated.js +4 -0
- package/dist/metrics.js +57 -0
- package/dist/model/build.d.ts +8 -0
- package/dist/model/build.js +1343 -0
- package/dist/model/packs.d.ts +13 -0
- package/dist/model/packs.js +29 -0
- package/dist/model/source.d.ts +10 -0
- package/dist/model/source.js +28 -0
- package/dist/model/suggest.d.ts +2 -0
- package/dist/model/suggest.js +24 -0
- package/dist/model/types.d.ts +226 -0
- package/dist/model/types.js +24 -0
- package/dist/packs/node-fs.d.ts +1 -0
- package/dist/packs/node-fs.js +37 -0
- package/dist/packs/registry.d.ts +61 -0
- package/dist/packs/registry.js +122 -0
- package/dist/packs/sanitize.d.ts +12 -0
- package/dist/packs/sanitize.js +127 -0
- package/dist/packs/sysGlyphs.d.ts +2 -0
- package/dist/packs/sysGlyphs.js +21 -0
- package/dist/render/adaptive.d.ts +13 -0
- package/dist/render/adaptive.js +112 -0
- package/dist/render/html/runtime.d.ts +1 -0
- package/dist/render/html/runtime.generated.d.ts +1 -0
- package/dist/render/html/runtime.generated.js +6 -0
- package/dist/render/html/runtime.js +362 -0
- package/dist/render/html.d.ts +39 -0
- package/dist/render/html.js +235 -0
- package/dist/render/svg.d.ts +75 -0
- package/dist/render/svg.js +1403 -0
- package/dist/render/validate.d.ts +4 -0
- package/dist/render/validate.js +9 -0
- package/dist/themes/index.d.ts +84 -0
- package/dist/themes/index.js +90 -0
- package/dist/view/dive.d.ts +55 -0
- package/dist/view/dive.js +57 -0
- package/dist/view/navigate.d.ts +38 -0
- package/dist/view/navigate.js +81 -0
- package/dist/view/resolve.d.ts +92 -0
- package/dist/view/resolve.js +591 -0
- package/fonts/inter-400.ttf +0 -0
- package/fonts/inter-500.ttf +0 -0
- package/fonts/inter-600.ttf +0 -0
- package/fonts/mono-400.ttf +0 -0
- package/metrics.json +510 -0
- package/package.json +89 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
const edgeId = (e) => `${e.from} ${e.arrow} ${e.to}${e.label ? ` "${e.label}"` : ""}`;
|
|
2
|
+
/** endpoints only: the pair that decides whether two things talk at all */
|
|
3
|
+
const edgePair = (e) => `${e.from}|${e.to}`;
|
|
4
|
+
function mapBy(items, key) {
|
|
5
|
+
const m = new Map();
|
|
6
|
+
for (const it of items)
|
|
7
|
+
m.set(key(it), it);
|
|
8
|
+
return m;
|
|
9
|
+
}
|
|
10
|
+
/** Stable ordering: structural first, then by subject, then by id.
|
|
11
|
+
*
|
|
12
|
+
* Ties break by codepoint, never `localeCompare`. That call consults ICU, so
|
|
13
|
+
* the order of two changes could differ between machines with different locale
|
|
14
|
+
* data — the Turkish dotless i being the classic case. Diff output is not
|
|
15
|
+
* byte-gated the way SVG is, so nothing was failing; it was simply the one
|
|
16
|
+
* place in the codebase where the answer depended on the environment, which is
|
|
17
|
+
* exactly what the determinism rule exists to exclude. */
|
|
18
|
+
const SUBJECT_ORDER = ["system", "container", "node", "edge", "zone", "flow", "view"];
|
|
19
|
+
function sortChanges(changes) {
|
|
20
|
+
return [...changes].sort((a, b) => {
|
|
21
|
+
if (a.weight !== b.weight)
|
|
22
|
+
return a.weight === "structural" ? -1 : 1;
|
|
23
|
+
const s = SUBJECT_ORDER.indexOf(a.subject) - SUBJECT_ORDER.indexOf(b.subject);
|
|
24
|
+
if (s !== 0)
|
|
25
|
+
return s;
|
|
26
|
+
if (a.kind !== b.kind)
|
|
27
|
+
return a.kind < b.kind ? -1 : 1;
|
|
28
|
+
return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function diffModels(before, after) {
|
|
32
|
+
const changes = [];
|
|
33
|
+
const add = (c) => changes.push(c);
|
|
34
|
+
// ── containers ───────────────────────────────────────────────────────────
|
|
35
|
+
for (const [path, c] of after.containers)
|
|
36
|
+
if (!before.containers.has(path))
|
|
37
|
+
add({
|
|
38
|
+
kind: "added", weight: "structural", subject: c.kind, id: path,
|
|
39
|
+
detail: `${path}${c.label ? ` "${c.label}"` : ""} (${c.children.length} children)`,
|
|
40
|
+
});
|
|
41
|
+
for (const [path, c] of before.containers)
|
|
42
|
+
if (!after.containers.has(path))
|
|
43
|
+
add({ kind: "removed", weight: "structural", subject: c.kind, id: path, detail: path });
|
|
44
|
+
for (const [path, b] of before.containers) {
|
|
45
|
+
const a = after.containers.get(path);
|
|
46
|
+
if (!a)
|
|
47
|
+
continue;
|
|
48
|
+
if (b.label !== a.label)
|
|
49
|
+
add({
|
|
50
|
+
kind: "changed", weight: "cosmetic", subject: a.kind, id: path,
|
|
51
|
+
detail: `${path} label`, before: b.label, after: a.label,
|
|
52
|
+
});
|
|
53
|
+
const bTags = [...b.tags].sort().join(","), aTags = [...a.tags].sort().join(",");
|
|
54
|
+
if (bTags !== aTags)
|
|
55
|
+
add({
|
|
56
|
+
kind: "changed", weight: "structural", subject: a.kind, id: path,
|
|
57
|
+
detail: `${path} tags`, before: bTags || "(none)", after: aTags || "(none)",
|
|
58
|
+
});
|
|
59
|
+
if ((b.color ?? "") !== (a.color ?? ""))
|
|
60
|
+
add({
|
|
61
|
+
kind: "changed", weight: "cosmetic", subject: a.kind, id: path,
|
|
62
|
+
detail: `${path} color`, before: b.color ?? "(default)", after: a.color ?? "(default)",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// ── nodes ────────────────────────────────────────────────────────────────
|
|
66
|
+
const icon = (n) => (n?.icon ? `${n.icon.pack}/${n.icon.id}` : "none");
|
|
67
|
+
const addedNodes = [], removedNodes = [];
|
|
68
|
+
for (const [path, n] of after.nodes)
|
|
69
|
+
if (!before.nodes.has(path))
|
|
70
|
+
addedNodes.push(n);
|
|
71
|
+
for (const [path, n] of before.nodes)
|
|
72
|
+
if (!after.nodes.has(path))
|
|
73
|
+
removedNodes.push(n);
|
|
74
|
+
// rename hint: same icon and same neighbours, one in / one out. Reported as
|
|
75
|
+
// a note on the pair — never as a silent rename, because a wrong inference
|
|
76
|
+
// in a security review is worse than a verbose one.
|
|
77
|
+
const neighbours = (model, path) => model.edges
|
|
78
|
+
.filter((e) => e.from === path || e.to === path)
|
|
79
|
+
.map((e) => (e.from === path ? e.to : e.from))
|
|
80
|
+
.sort().join(",");
|
|
81
|
+
const renameOf = new Map();
|
|
82
|
+
for (const gone of removedNodes)
|
|
83
|
+
for (const fresh of addedNodes) {
|
|
84
|
+
if (renameOf.has(fresh.path))
|
|
85
|
+
continue;
|
|
86
|
+
if (icon(gone) !== icon(fresh))
|
|
87
|
+
continue;
|
|
88
|
+
const bn = neighbours(before, gone.path), an = neighbours(after, fresh.path);
|
|
89
|
+
if (bn && bn === an) {
|
|
90
|
+
renameOf.set(fresh.path, gone.path);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (const n of addedNodes)
|
|
95
|
+
add({
|
|
96
|
+
kind: "added", weight: "structural", subject: "node", id: n.path,
|
|
97
|
+
detail: `${n.path}${n.label ? ` "${n.label}"` : ""} (${icon(n)})`,
|
|
98
|
+
note: renameOf.has(n.path) ? `possible rename of ${renameOf.get(n.path)}` : undefined,
|
|
99
|
+
});
|
|
100
|
+
const renamedAway = new Set([...renameOf.values()]);
|
|
101
|
+
for (const n of removedNodes)
|
|
102
|
+
add({
|
|
103
|
+
kind: "removed", weight: "structural", subject: "node", id: n.path,
|
|
104
|
+
detail: n.path,
|
|
105
|
+
note: renamedAway.has(n.path)
|
|
106
|
+
? `possible rename to ${[...renameOf].find(([, v]) => v === n.path)[0]}`
|
|
107
|
+
: undefined,
|
|
108
|
+
});
|
|
109
|
+
for (const [path, b] of before.nodes) {
|
|
110
|
+
const a = after.nodes.get(path);
|
|
111
|
+
if (!a)
|
|
112
|
+
continue;
|
|
113
|
+
if (b.label !== a.label)
|
|
114
|
+
add({
|
|
115
|
+
kind: "changed", weight: "cosmetic", subject: "node", id: path,
|
|
116
|
+
detail: `${path} label`, before: b.label, after: a.label,
|
|
117
|
+
});
|
|
118
|
+
if (icon(b) !== icon(a))
|
|
119
|
+
add({
|
|
120
|
+
kind: "changed", weight: "structural", subject: "node", id: path,
|
|
121
|
+
detail: `${path} icon`, before: icon(b), after: icon(a),
|
|
122
|
+
});
|
|
123
|
+
const bk = [...b.kinds].sort().join(","), ak = [...a.kinds].sort().join(",");
|
|
124
|
+
if (bk !== ak)
|
|
125
|
+
add({
|
|
126
|
+
kind: "changed", weight: "structural", subject: "node", id: path,
|
|
127
|
+
detail: `${path} kind`, before: bk || "(none)", after: ak || "(none)",
|
|
128
|
+
});
|
|
129
|
+
const bTags = [...b.tags].sort().join(","), aTags = [...a.tags].sort().join(",");
|
|
130
|
+
if (bTags !== aTags)
|
|
131
|
+
add({
|
|
132
|
+
kind: "changed", weight: "structural", subject: "node", id: path,
|
|
133
|
+
detail: `${path} tags`, before: bTags || "(none)", after: aTags || "(none)",
|
|
134
|
+
});
|
|
135
|
+
if ((b.description ?? "") !== (a.description ?? ""))
|
|
136
|
+
add({
|
|
137
|
+
kind: "changed", weight: "cosmetic", subject: "node", id: path,
|
|
138
|
+
detail: `${path} description`,
|
|
139
|
+
before: b.description ?? "(none)", after: a.description ?? "(none)",
|
|
140
|
+
});
|
|
141
|
+
if ((b.color ?? "") !== (a.color ?? ""))
|
|
142
|
+
add({
|
|
143
|
+
kind: "changed", weight: "cosmetic", subject: "node", id: path,
|
|
144
|
+
detail: `${path} color`, before: b.color ?? "(default)", after: a.color ?? "(default)",
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
// ── edges ────────────────────────────────────────────────────────────────
|
|
148
|
+
// Match on the endpoint pair first, so a changed arrow or label reads as a
|
|
149
|
+
// modification of one connection rather than a delete plus an add.
|
|
150
|
+
const beforeByPair = new Map();
|
|
151
|
+
for (const e of before.edges)
|
|
152
|
+
(beforeByPair.get(edgePair(e)) ?? beforeByPair.set(edgePair(e), []).get(edgePair(e))).push(e);
|
|
153
|
+
const afterByPair = new Map();
|
|
154
|
+
for (const e of after.edges)
|
|
155
|
+
(afterByPair.get(edgePair(e)) ?? afterByPair.set(edgePair(e), []).get(edgePair(e))).push(e);
|
|
156
|
+
for (const [pair, afters] of afterByPair) {
|
|
157
|
+
const befores = beforeByPair.get(pair) ?? [];
|
|
158
|
+
for (let i = 0; i < afters.length; i++) {
|
|
159
|
+
const a = afters[i], b = befores[i];
|
|
160
|
+
if (!b) {
|
|
161
|
+
add({
|
|
162
|
+
kind: "added", weight: "structural", subject: "edge", id: edgeId(a),
|
|
163
|
+
detail: edgeId(a),
|
|
164
|
+
});
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (b.arrow !== a.arrow)
|
|
168
|
+
add({
|
|
169
|
+
kind: "changed", weight: "structural", subject: "edge", id: edgeId(a),
|
|
170
|
+
detail: `${a.from} → ${a.to} arrow`,
|
|
171
|
+
before: b.arrow === "~>" ? "async" : b.arrow,
|
|
172
|
+
after: a.arrow === "~>" ? "async" : a.arrow,
|
|
173
|
+
});
|
|
174
|
+
if ((b.label ?? "") !== (a.label ?? ""))
|
|
175
|
+
add({
|
|
176
|
+
kind: "changed", weight: "cosmetic", subject: "edge", id: edgeId(a),
|
|
177
|
+
detail: `${a.from} → ${a.to} label`,
|
|
178
|
+
before: b.label ?? "(none)", after: a.label ?? "(none)",
|
|
179
|
+
});
|
|
180
|
+
// Styling attrs are cosmetic by definition, but invisible changes make a
|
|
181
|
+
// reviewer distrust the diff — a PR that switches an edge to `packets`
|
|
182
|
+
// should say so.
|
|
183
|
+
for (const key of ["animate", "style", "color"])
|
|
184
|
+
if ((b.attrs[key] ?? "") !== (a.attrs[key] ?? ""))
|
|
185
|
+
add({
|
|
186
|
+
kind: "changed", weight: "cosmetic", subject: "edge", id: edgeId(a),
|
|
187
|
+
detail: `${a.from} → ${a.to} ${key}`,
|
|
188
|
+
before: b.attrs[key] ?? "(default)", after: a.attrs[key] ?? "(default)",
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
for (const [pair, befores] of beforeByPair) {
|
|
193
|
+
const afters = afterByPair.get(pair) ?? [];
|
|
194
|
+
for (let i = afters.length; i < befores.length; i++)
|
|
195
|
+
add({
|
|
196
|
+
kind: "removed", weight: "structural", subject: "edge", id: edgeId(befores[i]),
|
|
197
|
+
detail: edgeId(befores[i]),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
// ── zones ────────────────────────────────────────────────────────────────
|
|
201
|
+
const bz = mapBy(before.zones, (z) => z.id);
|
|
202
|
+
const az = mapBy(after.zones, (z) => z.id);
|
|
203
|
+
for (const [id, z] of az)
|
|
204
|
+
if (!bz.has(id))
|
|
205
|
+
add({
|
|
206
|
+
kind: "added", weight: "structural", subject: "zone", id,
|
|
207
|
+
detail: `${id} (${z.kind}) — ${z.members.length} members`,
|
|
208
|
+
});
|
|
209
|
+
for (const [id] of bz)
|
|
210
|
+
if (!az.has(id))
|
|
211
|
+
add({ kind: "removed", weight: "structural", subject: "zone", id, detail: id });
|
|
212
|
+
for (const [id, b] of bz) {
|
|
213
|
+
const a = az.get(id);
|
|
214
|
+
if (!a)
|
|
215
|
+
continue;
|
|
216
|
+
if (b.kind !== a.kind)
|
|
217
|
+
add({
|
|
218
|
+
kind: "changed", weight: "structural", subject: "zone", id,
|
|
219
|
+
detail: `${id} kind`, before: b.kind, after: a.kind,
|
|
220
|
+
});
|
|
221
|
+
const gained = a.members.filter((m) => !b.members.includes(m));
|
|
222
|
+
const lost = b.members.filter((m) => !a.members.includes(m));
|
|
223
|
+
if (gained.length || lost.length)
|
|
224
|
+
add({
|
|
225
|
+
kind: "changed", weight: "structural", subject: "zone", id,
|
|
226
|
+
detail: `${id} members`,
|
|
227
|
+
before: lost.length ? `-${lost.join(" -")}` : "(none removed)",
|
|
228
|
+
after: gained.length ? `+${gained.join(" +")}` : "(none added)",
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// ── flows ────────────────────────────────────────────────────────────────
|
|
232
|
+
const bf = mapBy(before.flows, (f) => f.id);
|
|
233
|
+
const af = mapBy(after.flows, (f) => f.id);
|
|
234
|
+
const steps = (f) => f.steps.map((s) => `${s.from}→${s.to}`).join(", ");
|
|
235
|
+
for (const [id, f] of af)
|
|
236
|
+
if (!bf.has(id))
|
|
237
|
+
add({
|
|
238
|
+
kind: "added", weight: "structural", subject: "flow", id,
|
|
239
|
+
detail: `${id} (${f.steps.length} steps)`,
|
|
240
|
+
});
|
|
241
|
+
for (const [id] of bf)
|
|
242
|
+
if (!af.has(id))
|
|
243
|
+
add({ kind: "removed", weight: "structural", subject: "flow", id, detail: id });
|
|
244
|
+
for (const [id, b] of bf) {
|
|
245
|
+
const a = af.get(id);
|
|
246
|
+
if (a && steps(b) !== steps(a))
|
|
247
|
+
add({
|
|
248
|
+
kind: "changed", weight: "structural", subject: "flow", id,
|
|
249
|
+
detail: `${id} steps`, before: steps(b), after: steps(a),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// ── views ────────────────────────────────────────────────────────────────
|
|
253
|
+
// A view change is cosmetic *unless* it changes what a reader can see:
|
|
254
|
+
// excluding a service hides it from everyone who opens the diagram.
|
|
255
|
+
const explicit = (m) => m.views.filter((v) => !v.auto);
|
|
256
|
+
const bv = mapBy(explicit(before), (v) => v.name);
|
|
257
|
+
const av = mapBy(explicit(after), (v) => v.name);
|
|
258
|
+
// Every axis that decides what a reader can see belongs here. `only` and
|
|
259
|
+
// `detail` were missed when they landed, so narrowing a view to `#pci` — the
|
|
260
|
+
// single most visibility-changing edit the language offers — reported "no
|
|
261
|
+
// change". A view's selection is `scope` (where) × `only` (which), plus the
|
|
262
|
+
// adjustments; a fingerprint over half of that answers the wrong question.
|
|
263
|
+
const targets = (ts) => ts.map((i) => (typeof i === "string" ? i : `#${i.tag}`)).sort();
|
|
264
|
+
const visibility = (v) => JSON.stringify({
|
|
265
|
+
scope: v.scope, includeStar: v.includeStar,
|
|
266
|
+
only: targets(v.only),
|
|
267
|
+
include: targets(v.include),
|
|
268
|
+
exclude: targets(v.exclude),
|
|
269
|
+
expand: [...v.expand].sort(), expandStar: v.expandStar,
|
|
270
|
+
detail: [...v.detail].sort(), context: v.context,
|
|
271
|
+
});
|
|
272
|
+
// Deliberately loc-free: hints and notes carry source offsets, and every
|
|
273
|
+
// edit above them shifts those. Comparing raw objects would report a
|
|
274
|
+
// "presentation change" for adding a comment — the sort of false positive
|
|
275
|
+
// that teaches people to ignore the tool.
|
|
276
|
+
const presentation = (v) => JSON.stringify({
|
|
277
|
+
title: v.title, theme: v.theme, highlight: [...v.highlight].sort(),
|
|
278
|
+
colors: (v.colors ?? []).map((c) => [c.tag, c.hue]),
|
|
279
|
+
showDescriptions: v.showDescriptions, showFlow: v.showFlow,
|
|
280
|
+
legend: v.legend, titleblock: v.titleblock,
|
|
281
|
+
notes: v.notes.map((n) => ({ anchor: n.anchor, text: n.text, style: n.style })),
|
|
282
|
+
layout: {
|
|
283
|
+
direction: v.layout.direction,
|
|
284
|
+
density: v.layout.density,
|
|
285
|
+
lines: v.layout.lines,
|
|
286
|
+
rows: v.layout.rows,
|
|
287
|
+
cols: v.layout.cols,
|
|
288
|
+
place: v.layout.place.map((p) => ({ node: p.node, relpos: p.relpos, target: p.target })),
|
|
289
|
+
align: v.layout.align.map((a) => a.nodes),
|
|
290
|
+
channels: v.layout.channels.map((c) => ({ sources: [...c.sources].sort(), target: c.target })),
|
|
291
|
+
routes: v.layout.routes.map((r) => ({
|
|
292
|
+
from: r.from, to: r.to, label: r.label, fromSide: r.fromSide, toSide: r.toSide,
|
|
293
|
+
})),
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
for (const [name] of av)
|
|
297
|
+
if (!bv.has(name))
|
|
298
|
+
add({ kind: "added", weight: "cosmetic", subject: "view", id: name, detail: `view ${name}` });
|
|
299
|
+
for (const [name] of bv)
|
|
300
|
+
if (!av.has(name))
|
|
301
|
+
add({ kind: "removed", weight: "cosmetic", subject: "view", id: name, detail: `view ${name}` });
|
|
302
|
+
for (const [name, b] of bv) {
|
|
303
|
+
const a = av.get(name);
|
|
304
|
+
if (!a)
|
|
305
|
+
continue;
|
|
306
|
+
if (visibility(b) !== visibility(a))
|
|
307
|
+
add({
|
|
308
|
+
kind: "changed", weight: "structural", subject: "view", id: name,
|
|
309
|
+
detail: `view ${name} changes what is visible`,
|
|
310
|
+
});
|
|
311
|
+
if (presentation(b) !== presentation(a))
|
|
312
|
+
add({
|
|
313
|
+
kind: "changed", weight: "cosmetic", subject: "view", id: name,
|
|
314
|
+
detail: `view ${name} presentation (title/layout/annotations)`,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
const sorted = sortChanges(changes);
|
|
318
|
+
const structural = sorted.filter((c) => c.weight === "structural").length;
|
|
319
|
+
return {
|
|
320
|
+
changes: sorted,
|
|
321
|
+
structural,
|
|
322
|
+
cosmetic: sorted.length - structural,
|
|
323
|
+
same: sorted.length === 0,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
const SIGIL = { added: "+", removed: "-", changed: "~" };
|
|
327
|
+
/** Human-readable report, grouped by weight. */
|
|
328
|
+
export function formatDiff(d) {
|
|
329
|
+
if (d.same)
|
|
330
|
+
return "no semantic changes";
|
|
331
|
+
const lines = [];
|
|
332
|
+
for (const weight of ["structural", "cosmetic"]) {
|
|
333
|
+
const group = d.changes.filter((c) => c.weight === weight);
|
|
334
|
+
if (!group.length)
|
|
335
|
+
continue;
|
|
336
|
+
lines.push(weight);
|
|
337
|
+
for (const c of group) {
|
|
338
|
+
const change = c.before !== undefined ? ` ${c.before} → ${c.after}` : "";
|
|
339
|
+
lines.push(` ${SIGIL[c.kind]} ${c.subject.padEnd(9)} ${c.detail}${change}` +
|
|
340
|
+
(c.note ? `\n (${c.note})` : ""));
|
|
341
|
+
}
|
|
342
|
+
lines.push("");
|
|
343
|
+
}
|
|
344
|
+
lines.push(`${d.structural} structural, ${d.cosmetic} cosmetic`);
|
|
345
|
+
return lines.join("\n");
|
|
346
|
+
}
|
|
347
|
+
/** Markdown for a PR comment. */
|
|
348
|
+
export function formatDiffMarkdown(d) {
|
|
349
|
+
if (d.same)
|
|
350
|
+
return "**Squinch**: no semantic changes.";
|
|
351
|
+
const lines = [`**Squinch**: ${d.structural} structural, ${d.cosmetic} cosmetic change(s).`, ""];
|
|
352
|
+
for (const weight of ["structural", "cosmetic"]) {
|
|
353
|
+
const group = d.changes.filter((c) => c.weight === weight);
|
|
354
|
+
if (!group.length)
|
|
355
|
+
continue;
|
|
356
|
+
lines.push(`### ${weight}`, "");
|
|
357
|
+
for (const c of group) {
|
|
358
|
+
const change = c.before !== undefined ? ` — \`${c.before}\` → \`${c.after}\`` : "";
|
|
359
|
+
lines.push(`- \`${SIGIL[c.kind]}\` **${c.subject}** ${c.detail}${change}` +
|
|
360
|
+
(c.note ? ` _(${c.note})_` : ""));
|
|
361
|
+
}
|
|
362
|
+
lines.push("");
|
|
363
|
+
}
|
|
364
|
+
return lines.join("\n");
|
|
365
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FONTS: Record<"inter" | "mono", Partial<Record<"400" | "500" | "600", string>>>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// GENERATED by scripts/gen-fonts.ts — do not edit.
|
|
2
|
+
// Bundled faces subset to the metrics repertoire, woff2, base64. Embedded
|
|
3
|
+
// in every rendered SVG via @font-face so text matches the precomputed
|
|
4
|
+
// metrics everywhere (non-negotiable: rendering never depends on
|
|
5
|
+
// installed fonts).
|
|
6
|
+
export const FONTS = { "inter": { "400": "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", "500": "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", "600": "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" }, "mono": { "400": "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" } };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
2
|
+
import {LRParser} from "@lezer/lr"
|
|
3
|
+
const spec_Ident = {__proto__:null,pack:13, from:15, person:21, system:27, container:29, external:33, datastore:35, box:51, zone:75, contains:83, flow:87, view:95, title:101, theme:105, scope:109, only:113, include:121, exclude:129, detail:133, expand:137, context:141, auto:143, off:145, highlight:149, color:153, show:157, descriptions:159, note:163, "right-of":169, "left-of":171, above:173, below:175, on:177, "top-left":181, "top-right":183, "bottom-left":185, "bottom-right":187, legend:191, titleblock:195, layout:199, direction:203, down:205, right:207, lines:211, density:215, rows:219, cols:229, place:233, align:237, route:241, north:245, south:247, east:249, west:251, to:253, channel:257}
|
|
4
|
+
export const parser = LRParser.deserialize({
|
|
5
|
+
version: 14,
|
|
6
|
+
states: "FWO}QPOOOOQO'#Fl'#FlOOQO'#FS'#FSO!UQPO'#FkO!]QPO'#C|O!hQPO'#C}OOQO'#Fn'#FnO!mQPO'#FkO#gQPO'#FkQOQPOOO#nQPO'#C`O#sQPO'#CeO#xQPO'#ChO#}QPO'#DQO$SQPO'#DWO$XQPO'#D[O$^QPO'#FROOQO-E9Q-E9QO$cQPO,5<VO$nQPO,5<VO$uQPO'#F[O$zQPO,59hO&UQPO,59]O$XQPO,59iO&aQPO,5;oOOQO-E9R-E9RO'XQPO,58zO'gQPO,59PO'xQPO,59SO(ZQPO,59lO(fQPO,59rO)PQPO'#C|O)|QPO,59vOOQO,5;m,5;mO*RQPO1G1qOOQO,5;v,5;vOOQO-E9Y-E9YO*^QPO'#CsO*cQPO1G.wO+QQPO'#DPO+oQPO1G/TP,WQPO'#FTO,`QPO1G.fOOQO'#FU'#FUO,eQPO1G.kO,eQPO1G.kOOQO'#FV'#FVO'{QPO1G.nO-UQPO'#CpOOQO'#Ck'#CkOOQO1G.n1G.nO'{QPO1G.nOOQO'#DS'#DSO-]QPO'#DTOOQO1G/W1G/WO(aQPO1G/WO-nQPO1G/WO-vQPO'#DYOOQO1G/^1G/^O(iQPO1G/^O/`QPO'#D^OOQO1G/b1G/bO/gQPO,59_O/lQPO'#CvOOQO'#FX'#FXO/}QPO7+$cO/}QPO7+$cO$XQPO'#F]O0iQPO,59kOOQO'#F^'#F^O1WQPO7+$oO1WQPO7+$oOOQO7+$Q7+$QOOQO-E9S-E9SO1lQPO7+$VOOQO-E9T-E9TOOQO7+$Y7+$YO1zQPO'#FoO2RQPO'#C|O2aQPO'#FoO2lQPO'#FoO2zQPO,59[O'{QPO7+$YO3PQPO'#FrO3bQPO'#CxO3gQPO'#FrO3rQPO'#FrO3}QPO,59oO$XQPO'#DUOOQO7+$r7+$rO(aQPO7+$rO4SQPO'#FsO4bQPO'#DZO4gQPO'#FsO4rQPO'#FsO4zQPO,59tOOQO7+$x7+$xO5PQPO'#FtOOQO'#Fu'#FuO5WQPO'#FtO6gQPO'#FtO6nQPO,59xO6sQPO'#D_O6xQPO'#DaO$XQPO'#DcO6}QPO'#DeO7VQPO'#DiO6}QPO'#DmO$XQPO'#DoO7bQPO'#DqO7jQPO'#DsO7rQPO'#DwO7wQPO'#DyO7|QPO'#D{O8UQPO'#EOO8sQPO'#E^O8{QPO'#E`O9QQPO'#EbOOQO1G.y1G.yOOQO'#Fp'#FpOOQO'#FY'#FYO9VQPO,59bO9hQPO,59bO9vQPO,59bOOQO,59b,59bOOQO-E9V-E9VO:OQPO<<G}OOQO,5;w,5;wOOQO-E9Z-E9ZOOQO-E9[-E9[O:jQPO<<HZO;OQPO,5<ZO;ZQPO,5<ZO;iQPO,59dO;wQPO,5;rOOQO-E9U-E9UOOQO1G.v1G.vOOQO<<Gt<<GtO<]QPO,5<^O<hQPO,5<^O<sQPO,5;yOOQO-E9]-E9]OOQO1G/Z1G/ZOOQO,59p,59pOOQO<<H^<<H^O=UQPO,5<_O=aQPO,5<_O$XQPO'#FaO=iQPO,59uO=wQPO,5;zOOQO-E9^-E9^OOQO1G/`1G/`O>VQPO,5<`O>bQPO,5<`O>iQPO,5;|OOQO-E9`-E9`OOQO1G/d1G/dOOQO,59y,59yOOQO,59{,59{OOQO,59},59}OOQO'#Dh'#DhO?vQPO'#DgOOQO,5:P,5:POOQO'#Dk'#DkOOQO,5:T,5:TOOQO,5:X,5:XOOQO,5:Z,5:ZOOQO,5:],5:]OOQO,5:_,5:_O@UQPO,5:cO@gQPO,5:eOOQO,5:g,5:gO@lQPO,5:gO$XQPO'#EQOOQO'#EQ'#EQOOQO'#ER'#EROOQO'#EX'#EXO$XQPO'#EQO@qQPO,5:jOOQO,5:x,5:xOOQO,5:z,5:zOAkQPO,5:|OOQO-E9W-E9WOArQPO1G.|OBQQPO1G.|OOQO1G.|1G.|OBYQPO,5;uOOQO-E9X-E9XOBkQPO1G1uOBvQPO'#CzOCXQPO'#C|OOQO'#Cz'#CzOOQO1G/O1G/OP,WQPO'#FWOC`QPO1G1xP,WQPO'#F_OCkQPO1G1yOOQO,5;{,5;{OOQO-E9_-E9_P,WQPO'#F`OCvQPO1G1zP,WQPO'#FbO6}QPO'#FcODRQPO,5:ROOQO'#Fd'#FdODaQPO'#FdODfQPO1G/}OOQO1G0P1G0POOQO1G0R1G0ROOQO,5:l,5:lODwQPO,5:lOD|QPO1G0UOE[QPO'#FvOOQO'#Fw'#FwOEcQPO'#FvOF]QPO'#FvOFdQPO'#EdOFlQPO'#EhOFqQPO'#EjOFvQPO'#ElOFvQPO'#EqO$XQPO'#EsO$XQPO'#EuO$XQPO'#EwO$XQPO'#FPOF{QPO1G0hOOQO7+$h7+$hOGQQPO7+$hPG`QPO'#FZOOQO,5;},5;}OOQO-E9a-E9aOOQO,5<O,5<OOOQO-E9b-E9bO$XQPO1G0WOOQO7+%p7+%pOGkQPO,5<bOGvQPO,5<bOG}QPO,5<POOQO-E9c-E9cOOQO,5;O,5;OOOQO,5;S,5;SOOQO,5;U,5;UO$XQPO'#EpOOQO'#Ff'#FfOHuQPO,5;WOITQPO,5;]OIcQPO,5;_OIqQPO,5;aOIyQPO,5;cOJOQPO,5;kOOQO7+&S7+&SOOQO<<HS<<HSOOQO7+%r7+%rOJTQPO1G1|P,WQPO'#FeOJ`QPO,5;[OOQO-E9d-E9dO$XQPO1G0yOOQO'#Fg'#FgO$XQPO'#FgOJkQPO1G0{O$XQPO1G0}O$XQPO1G1VOJ|QPO1G0vOOQO1G0v1G0vOOQO7+&e7+&eOOQO,5<R,5<ROOQO-E9e-E9eOKXQPO7+&iOOQO7+&q7+&qOOQO7+&b7+&bOKmQPO<<JTOKmQPO<<JTOK{QPO<<JTOOQO'#Ey'#EyOOQOAN?oAN?oOL^QPOAN?oOKmQPOAN?oOKmQPOAN?oOKmQPOG25ZOOQOG25ZG25ZOLlQPOG25ZOOQOLD*uLD*uOKmQPOLD*uOOQO!$'Na!$'Na",
|
|
7
|
+
stateData: "L}~O$^OSPOS~ORPOTSOUYOYZO][O^[Ou]O{^O!P_O!U`O$aPO~O$[$_P~PYO$[$_X~PYOffO$edOrpX~OrgO~ORPO$aPO$[$_X~OTSOUYOYZO][O^[Ou]O{^O!P_O!U`O~O$[$_X~P!xOTjO~OTkO~OTlO~OTmO~OTnO~OToO~OTqO~ORPO$aPO$[$_a~O$[$_a~P!xOTsO~O$edOrpacpaRpaWpaZpakpa$[pa$apabpa!vpa!wpa!xpa!ypaTpa#bpaVpa#rpa~OTuOYvOivO~ORPO$aPOT#waU#waY#wa]#wa^#wau#wa{#wa!P#wa!U#wa$[#wa~OVzORSa$[Sa$aSa~OW}OZ{ORXa$[Xa$aXa~OW!TOZ!OO`!ROa!ROc!QO~OT!UOW!YOc!VO~OW!]Oc!ZO~O$edORpXkpX$apXbpX~OcpXWpXZpX$[pXrpX!vpX!wpX!xpX!ypXTpX#bpXVpX#rpX~P(nOc!^O~ORPO$aPO$[$_i~Oh!`O~OW!dOZ!bO`!ROa!ROc!aORei$[ei$aeibei~Ok!eORsXWsXZsXcsX$[sX$asXbsXrsX~OW!iOZ!gOc!aORqi$[qi$aqibqi~ORPO$aPO~OW!jO~OZ{ORXi$[Xi$aXi~ORPOT!pO][O^[O$aPO~Ob$cP~P,sORPOT!vOy!zO$aPOb$fP~OT!UOc!VO~ORPOToO$aPOb$gP~ORPO!S#YO!U#ZO!W#[O!Y#]O!^#^O!b#_O!d#`O!f#aO!h#bO!l#cO!n#dO!p#eO!s#fO#R#gO#T#hO#V#iO$aPO~Ob$hP~P.UOT#jO~OR#kOT!vOb#pOk#kO$a#kO~OZ!bO`!ROa!ROc!aOReq$[eq$aeqbeq~Ok!eORsaWsaZsacsa$[sa$asabsarsa~OZ!gOc!aORqq$[qq$aqqbqq~OZ{ORXq$[Xq$aXq~Ob$cX~P,sOffOm#yO$edOrpX~ORPO$aPOb$cX~OT!pO][O^[Ob$cX~Ob#|O~ORPOT!vOy!zO$aPOb$fX~Om#yO~ORPO$aPOb$fX~OT!vOy!zOb$fX~Ob$SO~ORPOToO$aPOb$gX~Or$XO~ORPO$aPOb$gX~OToOb$gX~Ob$]O~Ob$hX~P.UORPO$aPOb$hX~O!S#YO!U#ZO!W#[O!Y#]O!^#^O!b#_O!d#`O!f#aO!h#bO!l#cO!n#dO!p#eO!s#fO#R#gO#T#hO#V#iO~Ob$hX~P5cOb$bO~OW$cO~OT$dO~OToOZ$fO~OToOZ$fO!`$iO~OToO!`$iO~O!i$nO!j$nO~OZ$oO~OZ$pO~O{$rO!q$qO~O!v$uO!w$uO!x$uO!y$uO!z$wO!|$vO!}$vO#O$vO#P$vO~O!i$yO!j$yO~Oc!aO~Oc${O~OR#kOT!vOb%POk#kO$a#kO~OR#kOb%POk#kO$a#kO~OT!vOb%PO~OZ!bO`!ROa!ROc!aORey$[ey$aeybey~OZ!gOc!aORqy$[qy$aqybqy~ORPO$aPOb$ca~OT!pO][O^[Ob$ca~OT%UOW%VOZ{Oo%VO~ORPO$aPOT#za]#za^#zab#za~ORPO$aPOb$fa~OT!vOy!zOb$fa~ORPO$aPOT$Rab$Ray$Ra~ORPO$aPOb$ga~OToOb$ga~Or$XOR}ab}a$a}a~ORPO$aPOT$Sab$Sa~ORPO$aPOb$ha~Ob$ha~P5cORPO$aPOb$Ua!S$Ua!U$Ua!W$Ua!Y$Ua!^$Ua!b$Ua!d$Ua!f$Ua!h$Ua!l$Ua!n$Ua!p$Ua!s$Ua#R$Ua#T$Ua#V$Ua~Ok%bOR!ZXb!ZX$a!ZX~OZ%dOk%eOR!kab!ka$a!ka~OT%gO~OT%hO~OW%kO~ORPO#X%pO#]%qO#_%rO#a%sO#f%tO#h%uO#j%vO#l%wO#t%xO$aPO~Ob$jP~P@vOR#kOb%zOk#kO$a#kO~OT!vOb%zO~OR#kOk#kO$a#kOT#}ab#}a~ORPO$aPOb$ci~OZ{ORnXbnX$anXknX~Oh!`O~P(nORPO$aPOb$fi~ORPO$aPOb$gi~ORPO$aPOb$hi~Ok%bOR!Zab!Za$a!Za~OZ&PO~OZ%dOk%eOR!kib!ki$a!ki~Or&RO~Oc!aOR!rib!ri$a!ri~Ob$jX~P@vORPO$aPOb$jX~O#X%pO#]%qO#_%rO#a%sO#f%tO#h%uO#j%vO#l%wO#t%xO~Ob$jX~PEnO#Y&XO#Z&XO~OT&YO~OT&ZO~O#c&[O~Ob&dO~OR#kOb&eOk#kO$a#kO~OR#kOk#kO$a#kO~ORPO$aPOb$ja~Ob$ja~PEnORPO$aPOb$Xa#X$Xa#]$Xa#_$Xa#a$Xa#f$Xa#h$Xa#j$Xa#l$Xa#t$Xa~O#c&[OR#`ab#`a$a#`a~O#c&[OR#eab#ea$a#ea~O!v$uO!w$uO!x$uO!y$uO~OToOk&mO~Or&oO~Or&pO~ORPO$aPOb$ji~OToOk&mO#b&rO~OToOk&mOR#iib#ii$a#ii~OToOk&mO#b&xO~OV&zOW&{O#r&yOR#kqb#kq$a#kq~O#n&|O#o&|O#p&|O#q&|O~OV'QO#r'POR#kyb#ky$a#ky~O#r'ROR#k!Rb#k!R$a#k!R~O#r'VOR#k!Zb#k!Z$a#k!Z~OPh~",
|
|
8
|
+
goto: "3P$lPPPP$mPPPP$mPP$sPP%TPPPP%a$sP%kPP%qP&TP&sP&v$sP(q$mP(z)Q)[P$mP)f)l$mP)v)yP)yP)yP)yP*P*Y)yP*bP)yP)yP)yP)yPPP)yP)yP)yPP)yP*h*kPPPPP*qPPPP)yP)yP)yP*tPPP*tP*tP*tPPP*z*tP*tP*tP*tP+QPPPPP*tP$m+d,z-U-d-n-x.S.a.k.t.z/U/`/j/p/z0Q0W0b0lPPP0v0yP1w2R2UP2_2b2e2h2r2uXUORWcWUORWcQ!q!QS#w!o!rR%S#xW!Ol!P!T!tX!bv!c!d#rQ!SlS!n!P!TR#}!tQvfR%V#yW!bv!c!d#rW!gx!h!i#vQ$z#hR&S%kQ!q!QQ!w!VQ#n!aS#w!o!rS$O!u!xS$}#m#oQ%S#xQ%Y$PR%{%OR%W#y`TORWc!Q!o!r#xQp_Uwg!z%xW#O!Z!}#Q$WQ#s!eQ$e#[W$f#]#^#_%bQ$l#`Q$m#aQ%V#yQ%]$XQ%i$sQ%j$wQ&`%uQ&a%vQ&b%wQ&f&RQ&i&[W&l&a&i&n&qQ&s&kQ&t&mQ&v&oR&w&pQxgQ$T!zR&c%xQ!XmR!|!YQ!WmS!{!X!YR$U!|Q!w!VS$O!u!xR%Y$PQ![nR#S!]Q#P!ZS$V!}#QR%[$WR!_pX#U!^#T#W$_Q$h#]Q$j#^R$k#_U$g#]#^#_R%}%bQ$j#^R$m#aR$x#fQ$s#fR&k&`R$t#fX%m${%l%o&UX&]%s%t&^&_Q&}&yQ'O&zQ'S'PQ'T'QQ'U'RR'W'VQROhaRh!o!u!}#T#z$Q$Z$`%l&VWhVbryQ!o!QQ!u!VQ!}!ZQ#T!^W#z!q#w%S%XW$Q!w$O%Y%ZW$Z#P$V%[%_W$`#V$^%`%aQ%l${X&V%n&T&g&hQWOQcRTiWcQ|kU!k|!l%TQ!l}R%T#yQ!PlS!m!P!tR!t!TQ!r!QQ#x!oT#{!r#xQ!cvS#q!c#rR#r!dQ#m!aS$|#m%QX%Q#n$}%{%|Q#o!aQ%O#mT%R#o%OWeSo!p%URteQ!fwR#t!fQ!hxS#u!h#vR#v!iQ!x!VQ$P!uT$R!x$PQ#Q!ZQ$W!}T$[#Q$WQ$Y#OR%^$YQ#W!^Q$_#TT$a#W$_Q%c$gR&O%cQ%f$oR&Q%fQ%o${Q&U%lT&W%o&UQ&^%sQ&_%tT&j&^&_Q&n&aQ&q&iT&u&n&qRXO!wQORVbhry!Q!V!Z!^!o!q!u!w!}#P#T#V#w#z$O$Q$V$Z$^$`${%S%X%Y%Z%[%_%`%a%l%n&T&V&g&hQVOSbRWRrcR!s!Q_#l!a#m#n$}%Q%{%|R!y!VR#R!ZR#X!^Q#V!^S$^#T#WR%`$_R%y${Q%n${S&T%l%oR&g&U",
|
|
9
|
+
nodeNames: "⚠ Comment File ; PackStmt Ident pack from String PersonDecl person Tag Container system container NodeKind external datastore } { ContainerBody NodeDecl = IconRef / box AttrBlock , Attr : Value Number Path EdgeStmt Arrow PathList ZoneDecl zone ZoneKind ZoneBody ContainsStmt contains FlowDecl flow FlowBody FlowChain View view ViewBody TitleStmt title ThemeStmt theme ScopeStmt scope OnlyStmt only TargetList Target IncludeStmt include Star * ExcludeStmt exclude DetailStmt detail ExpandStmt expand ContextStmt context auto off HighlightStmt highlight ColorStmt color ShowStmt show descriptions NoteStmt note NoteAnchor RelPos right-of left-of above below on Corner top-left top-right bottom-left bottom-right LegendStmt legend TitleBlockStmt titleblock LayoutBlock layout DirectionStmt direction down right LinesStmt lines DensityStmt density RowsStmt rows ] [ Rank ColsStmt cols PlaceStmt place AlignStmt align RouteStmt route Side north south east west to ChannelStmt channel FileTheme",
|
|
10
|
+
maxTerm: 165,
|
|
11
|
+
nodeProps: [
|
|
12
|
+
["openedBy", 18,"{",110,"["],
|
|
13
|
+
["closedBy", 19,"}",111,"]"]
|
|
14
|
+
],
|
|
15
|
+
skippedNodes: [0,1],
|
|
16
|
+
repeatNodeCount: 20,
|
|
17
|
+
tokenData: "(X~RhXY!mYZ!{]^!mpq!mrs#Qst#rz{$j|}$o}!O$t!O!P%S!P!Q%X!Q![%x![!]&c!]!^&h!^!_&m!_!`&y!c!}'O!}#O's#P#Q'x#R#S'O#T#o'O#o#p'}#q#r(S#r#s&s~!rR$^~XY!m]^!mpq!m~#QO$a~~#TUOY#QZr#Qrs#gs;'S#Q;'S;=`#l<%lO#Q~#lOW~~#oP;=`<%l#Q~#uT}!O$U!Q![$U!c!}$U#R#S$U#T#o$U~$ZTZ~}!O$U!Q![$U!c!}$U#R#S$U#T#o$U~$oO!`~~$tOk~~$wQ}!O$}!`!a$}~%SOr~~%XO$e~~%^Ph~!P!Q%a~%fSP~OY%aZ;'S%a;'S;=`%r<%lO%a~%uP;=`<%l%a~%}Qo~!O!P&T!Q![%x~&WP!Q![&Z~&`Po~!Q![&Z~&hOm~~&mOR~~&pP}!O&s~&vP!`!a$}~'OOf~~'TTT~}!O'd!Q!['O!c!}'O#R#S'O#T#o'O~'gS!Q!['O!c!}'O#R#S'O#T#o'O~'xO#c~~'}O#b~~(SOc~~(XOb~",
|
|
18
|
+
tokenizers: [0],
|
|
19
|
+
topRules: {"File":[0,2]},
|
|
20
|
+
specialized: [{term: 5, get: (value) => spec_Ident[value] || -1}],
|
|
21
|
+
tokenPrec: 2020
|
|
22
|
+
})
|