@principal-ai/subsystems-react 0.37.4 → 0.37.6
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/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/stories/Subsystem/C4Graph/c4Fixture.d.ts +3 -0
- package/dist/stories/Subsystem/C4Graph/c4Fixture.d.ts.map +1 -0
- package/dist/stories/Subsystem/C4Graph/c4Fixture.js +2 -0
- package/dist/stories/Subsystem/C4Graph/c4Fixture.js.map +1 -0
- package/dist/subsystem/C4Graph.d.ts +22 -0
- package/dist/subsystem/C4Graph.d.ts.map +1 -0
- package/dist/subsystem/C4Graph.js +305 -0
- package/dist/subsystem/C4Graph.js.map +1 -0
- package/dist/subsystem/ConstructsCatalog.d.ts.map +1 -1
- package/dist/subsystem/ConstructsCatalog.js +8 -4
- package/dist/subsystem/ConstructsCatalog.js.map +1 -1
- package/dist/subsystem/WalkthroughsPanel.d.ts +2 -0
- package/dist/subsystem/WalkthroughsPanel.d.ts.map +1 -1
- package/dist/subsystem/WalkthroughsPanel.js +114 -48
- package/dist/subsystem/WalkthroughsPanel.js.map +1 -1
- package/dist/subsystem/model.js +6 -6
- package/dist/subsystem/toC4.d.ts +95 -0
- package/dist/subsystem/toC4.d.ts.map +1 -0
- package/dist/subsystem/toC4.js +196 -0
- package/dist/subsystem/toC4.js.map +1 -0
- package/dist/subsystem/walkthroughBrief.d.ts +18 -0
- package/dist/subsystem/walkthroughBrief.d.ts.map +1 -0
- package/dist/subsystem/walkthroughBrief.js +34 -0
- package/dist/subsystem/walkthroughBrief.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +6 -1
- package/src/stories/Subsystem/C4Graph/C4Container.stories.tsx +104 -0
- package/src/stories/Subsystem/C4Graph/c4Fixture.ts +6 -0
- package/src/subsystem/C4Graph.tsx +465 -0
- package/src/subsystem/ConstructsCatalog.tsx +25 -14
- package/src/subsystem/WalkthroughsPanel.test.tsx +146 -0
- package/src/subsystem/WalkthroughsPanel.tsx +163 -60
- package/src/subsystem/model.ts +6 -6
- package/src/subsystem/toC4.test.ts +121 -0
- package/src/subsystem/toC4.ts +277 -0
- package/src/subsystem/walkthroughBrief.test.ts +57 -0
- package/src/subsystem/walkthroughBrief.ts +40 -0
|
@@ -12,10 +12,15 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
12
12
|
*/
|
|
13
13
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
14
14
|
import { useTheme } from '@principal-ade/industry-theme';
|
|
15
|
-
import { ChevronDown, GripVertical, Pause, Play } from 'lucide-react';
|
|
15
|
+
import { Check, ChevronDown, Copy, GripVertical, Pause, Play } from 'lucide-react';
|
|
16
16
|
import { PROPOSED_COLOR, reorderTargetIndex, reorderWalkthroughs, walkthroughStepGraphEdgeId, } from './model';
|
|
17
|
+
import { buildStepBrief } from './walkthroughBrief';
|
|
17
18
|
/** Pause (ms) between steps when a walkthrough autoplays. */
|
|
18
19
|
export const WALKTHROUGH_PLAY_PAUSE_MS = 2500;
|
|
20
|
+
/** How long a step's copy button flashes its "copied" checkmark (ms). */
|
|
21
|
+
export const STEP_COPY_FEEDBACK_MS = 2000;
|
|
22
|
+
/** Square size (px) of a walkthrough header's Play/Collapse control. */
|
|
23
|
+
const WALKTHROUGH_CONTROL_SIZE = 34;
|
|
19
24
|
/** One collapsible walkthrough in the sidebar's flows panel. Clicking the
|
|
20
25
|
* title: closed → open + select; open with a step selected → select the whole
|
|
21
26
|
* flow (deselect the step, stay open); open with the whole flow selected →
|
|
@@ -35,6 +40,13 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
35
40
|
const [gripHover, setGripHover] = useState(false);
|
|
36
41
|
const [hoveredStep, setHoveredStep] = useState(null);
|
|
37
42
|
const stepButtonRefs = useRef([]);
|
|
43
|
+
// Per-step copy affordance: revealed while a row is hovered or holds focus.
|
|
44
|
+
// `focusedStep` tracks focus-within (button or its copy control) so the icon
|
|
45
|
+
// stays put while the pointer or focus moves between them.
|
|
46
|
+
const [focusedStep, setFocusedStep] = useState(null);
|
|
47
|
+
const [copyHoverStep, setCopyHoverStep] = useState(null);
|
|
48
|
+
const [copiedStep, setCopiedStep] = useState(null);
|
|
49
|
+
const copyTimerRef = useRef(null);
|
|
38
50
|
// Autoplay: stepping through the flow's steps with a pause between each.
|
|
39
51
|
const [playing, setPlaying] = useState(false);
|
|
40
52
|
const playTimerRef = useRef(null);
|
|
@@ -48,6 +60,30 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
48
60
|
// Clear any pending timer on unmount.
|
|
49
61
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
62
|
useEffect(() => () => stopPlaying(), []);
|
|
63
|
+
const copyStep = useCallback((stepIndex) => {
|
|
64
|
+
const brief = buildStepBrief(walkthrough, stepIndex);
|
|
65
|
+
if (brief.length === 0)
|
|
66
|
+
return;
|
|
67
|
+
const clipboard = navigator.clipboard;
|
|
68
|
+
if (!clipboard)
|
|
69
|
+
return;
|
|
70
|
+
void clipboard
|
|
71
|
+
.writeText(brief)
|
|
72
|
+
.then(() => {
|
|
73
|
+
setCopiedStep(stepIndex);
|
|
74
|
+
if (copyTimerRef.current != null) {
|
|
75
|
+
window.clearTimeout(copyTimerRef.current);
|
|
76
|
+
}
|
|
77
|
+
copyTimerRef.current = window.setTimeout(() => setCopiedStep(null), STEP_COPY_FEEDBACK_MS);
|
|
78
|
+
})
|
|
79
|
+
.catch(() => {
|
|
80
|
+
// best-effort — show nothing when the clipboard is unavailable
|
|
81
|
+
});
|
|
82
|
+
}, [walkthrough]);
|
|
83
|
+
useEffect(() => () => {
|
|
84
|
+
if (copyTimerRef.current != null)
|
|
85
|
+
window.clearTimeout(copyTimerRef.current);
|
|
86
|
+
}, []);
|
|
51
87
|
// Native HTML5 drag suppresses mouse events, so a row hovered when the drag
|
|
52
88
|
// began never gets its mouseleave — its hover styling would stick after the
|
|
53
89
|
// drop. Reset every row's hover whenever a drag starts or ends.
|
|
@@ -110,7 +146,8 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
110
146
|
display: 'flex',
|
|
111
147
|
alignItems: 'center',
|
|
112
148
|
gap: 4,
|
|
113
|
-
|
|
149
|
+
height: WALKTHROUGH_CONTROL_SIZE,
|
|
150
|
+
padding: '0 0 0 16px',
|
|
114
151
|
background: wholeFlowActive || headerHover ? hoverBg : 'transparent',
|
|
115
152
|
transition: 'background 120ms ease',
|
|
116
153
|
}, children: [_jsx("button", { type: "button", onClick: () => {
|
|
@@ -133,7 +170,7 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
133
170
|
display: 'flex',
|
|
134
171
|
alignItems: 'center',
|
|
135
172
|
minWidth: 0,
|
|
136
|
-
padding:
|
|
173
|
+
padding: 0,
|
|
137
174
|
border: 'none',
|
|
138
175
|
background: 'transparent',
|
|
139
176
|
textAlign: 'left',
|
|
@@ -154,11 +191,11 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
154
191
|
alignItems: 'center',
|
|
155
192
|
justifyContent: 'center',
|
|
156
193
|
flexShrink: 0,
|
|
157
|
-
|
|
158
|
-
|
|
194
|
+
alignSelf: 'stretch',
|
|
195
|
+
width: WALKTHROUGH_CONTROL_SIZE,
|
|
159
196
|
padding: 0,
|
|
160
197
|
border: 'none',
|
|
161
|
-
borderRadius:
|
|
198
|
+
borderRadius: 0,
|
|
162
199
|
background: playing || playHover ? theme.colors.border : 'transparent',
|
|
163
200
|
color: playing || playHover ? theme.colors.text : muted,
|
|
164
201
|
cursor: 'pointer',
|
|
@@ -173,11 +210,11 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
173
210
|
alignItems: 'center',
|
|
174
211
|
justifyContent: 'center',
|
|
175
212
|
flexShrink: 0,
|
|
176
|
-
|
|
177
|
-
|
|
213
|
+
alignSelf: 'stretch',
|
|
214
|
+
width: WALKTHROUGH_CONTROL_SIZE,
|
|
178
215
|
padding: 0,
|
|
179
216
|
border: 'none',
|
|
180
|
-
borderRadius:
|
|
217
|
+
borderRadius: 0,
|
|
181
218
|
background: collapseHover ? theme.colors.border : 'transparent',
|
|
182
219
|
color: collapseHover ? theme.colors.text : muted,
|
|
183
220
|
cursor: 'pointer',
|
|
@@ -189,7 +226,7 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
189
226
|
display: 'inline-flex',
|
|
190
227
|
alignItems: 'center',
|
|
191
228
|
flexShrink: 0,
|
|
192
|
-
marginRight:
|
|
229
|
+
marginRight: 8,
|
|
193
230
|
padding: '2px 0',
|
|
194
231
|
color: gripHover || reorder.isDragging ? theme.colors.text : muted,
|
|
195
232
|
cursor: reorder.isDragging ? 'grabbing' : 'grab',
|
|
@@ -200,45 +237,74 @@ function WalkthroughFlow({ walkthrough, collapsed, active, onToggleCollapsed, on
|
|
|
200
237
|
}, children: walkthrough.steps.map((step, i) => {
|
|
201
238
|
const stepActive = active !== null && active.stepIndex === i;
|
|
202
239
|
const proposed = stepProposed(step.from, step.to);
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
cursor: 'pointer',
|
|
220
|
-
transition: 'background 120ms ease',
|
|
221
|
-
}, children: [_jsx("span", { style: {
|
|
222
|
-
flexShrink: 0,
|
|
223
|
-
width: 14,
|
|
224
|
-
fontSize: theme.fontSizes[0],
|
|
225
|
-
fontFamily: theme.fonts.monospace,
|
|
226
|
-
fontWeight: proposed ? 700 : undefined,
|
|
227
|
-
color: proposed
|
|
228
|
-
? PROPOSED_COLOR
|
|
229
|
-
: stepActive
|
|
230
|
-
? theme.colors.text
|
|
231
|
-
: muted,
|
|
232
|
-
}, children: i + 1 }), _jsx("span", { style: {
|
|
233
|
-
flex: 1,
|
|
240
|
+
const revealed = stepActive || hoveredStep === i || focusedStep === i || copiedStep === i;
|
|
241
|
+
const copied = copiedStep === i;
|
|
242
|
+
const copyHovered = copyHoverStep === i;
|
|
243
|
+
return (_jsxs("div", { style: { position: 'relative' }, onFocus: () => setFocusedStep(i), onBlur: (e) => {
|
|
244
|
+
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
245
|
+
setFocusedStep((cur) => (cur === i ? null : cur));
|
|
246
|
+
}
|
|
247
|
+
}, children: [_jsxs("button", { ref: (el) => {
|
|
248
|
+
stepButtonRefs.current[i] = el;
|
|
249
|
+
}, type: "button", title: proposed ? 'Step touches a proposed component' : undefined, onMouseEnter: () => {
|
|
250
|
+
setHoveredStep(i);
|
|
251
|
+
onHoverStep(walkthrough, i);
|
|
252
|
+
}, onClick: () => onFocusStep(walkthrough, i), style: {
|
|
253
|
+
display: 'flex',
|
|
254
|
+
alignItems: 'center',
|
|
255
|
+
gap: 8,
|
|
234
256
|
minWidth: 0,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
257
|
+
width: '100%',
|
|
258
|
+
padding: '8px 36px 8px 17px',
|
|
259
|
+
textAlign: 'left',
|
|
260
|
+
borderRadius: 0,
|
|
261
|
+
border: 'none',
|
|
262
|
+
outline: 'none',
|
|
263
|
+
background: stepActive || hoveredStep === i ? hoverBg : 'transparent',
|
|
264
|
+
cursor: 'pointer',
|
|
265
|
+
transition: 'background 120ms ease',
|
|
266
|
+
}, children: [_jsx("span", { style: {
|
|
267
|
+
flexShrink: 0,
|
|
268
|
+
width: 14,
|
|
269
|
+
fontSize: theme.fontSizes[0],
|
|
270
|
+
fontFamily: theme.fonts.monospace,
|
|
271
|
+
fontWeight: proposed ? 700 : undefined,
|
|
272
|
+
color: proposed
|
|
273
|
+
? PROPOSED_COLOR
|
|
274
|
+
: stepActive
|
|
275
|
+
? theme.colors.text
|
|
276
|
+
: muted,
|
|
277
|
+
}, children: i + 1 }), _jsx("span", { style: {
|
|
278
|
+
flex: 1,
|
|
279
|
+
minWidth: 0,
|
|
280
|
+
overflow: 'hidden',
|
|
281
|
+
textOverflow: 'ellipsis',
|
|
282
|
+
whiteSpace: 'nowrap',
|
|
283
|
+
fontSize: theme.fontSizes[1],
|
|
284
|
+
fontFamily: theme.fonts.monospace,
|
|
285
|
+
color: proposed ? PROPOSED_COLOR : theme.colors.text,
|
|
286
|
+
}, children: step.symbol })] }), revealed && (_jsx("button", { type: "button", "aria-label": `Copy step ${i + 1} of ${walkthrough.title} for an agent`, title: copied ? 'Copied' : 'Copy this step for an agent', onMouseDown: (e) => e.preventDefault(), onMouseEnter: () => setCopyHoverStep(i), onMouseLeave: () => setCopyHoverStep((cur) => (cur === i ? null : cur)), onClick: () => copyStep(i), style: {
|
|
287
|
+
position: 'absolute',
|
|
288
|
+
right: 0,
|
|
289
|
+
top: 0,
|
|
290
|
+
bottom: 0,
|
|
291
|
+
display: 'inline-flex',
|
|
292
|
+
alignItems: 'center',
|
|
293
|
+
justifyContent: 'center',
|
|
294
|
+
width: 'auto',
|
|
295
|
+
aspectRatio: '1 / 1',
|
|
296
|
+
padding: 0,
|
|
297
|
+
border: 'none',
|
|
298
|
+
borderRadius: 0,
|
|
299
|
+
background: copied
|
|
300
|
+
? 'rgba(16,185,129,0.12)'
|
|
301
|
+
: copyHovered
|
|
302
|
+
? theme.colors.border
|
|
303
|
+
: 'transparent',
|
|
304
|
+
color: copied ? '#10b981' : copyHovered ? theme.colors.text : muted,
|
|
305
|
+
cursor: 'pointer',
|
|
306
|
+
transition: 'background 120ms ease, color 120ms ease',
|
|
307
|
+
}, children: copied ? (_jsx(Check, { size: 12, strokeWidth: 2 })) : (_jsx(Copy, { size: 12, strokeWidth: 2 })) }))] }, `${walkthroughStepGraphEdgeId(step)}-${i}`));
|
|
242
308
|
}) }))] }));
|
|
243
309
|
}
|
|
244
310
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalkthroughsPanel.js","sourceRoot":"","sources":["../../src/subsystem/WalkthroughsPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WalkthroughsPanel.js","sourceRoot":"","sources":["../../src/subsystem/WalkthroughsPanel.tsx"],"names":[],"mappings":"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"}
|
package/dist/subsystem/model.js
CHANGED
|
@@ -534,17 +534,17 @@ export function isWalkthroughMechanism(mechanism) {
|
|
|
534
534
|
return WALKTHROUGH_MECHANISM_SET.has(mechanism);
|
|
535
535
|
}
|
|
536
536
|
export const MECHANISM_COLOR = {
|
|
537
|
-
calls: '#
|
|
537
|
+
calls: '#22c55e',
|
|
538
538
|
extends: '#b48ead',
|
|
539
539
|
inherits: '#9b6fd0',
|
|
540
540
|
implements: '#c586c0',
|
|
541
541
|
mixes_in: '#d474a8',
|
|
542
542
|
uses: '#e3b341',
|
|
543
543
|
method: '#c586c0',
|
|
544
|
-
references: '#
|
|
545
|
-
feeds: '#
|
|
546
|
-
produces: '#
|
|
547
|
-
writes: '#
|
|
544
|
+
references: '#3b82f6',
|
|
545
|
+
feeds: '#4ec9b0',
|
|
546
|
+
produces: '#a78bfa',
|
|
547
|
+
writes: '#e8853a',
|
|
548
548
|
reads: '#0ea5e9',
|
|
549
549
|
watches: '#9ca3af',
|
|
550
550
|
'registers-into': '#ff6b35', // orange
|
|
@@ -681,7 +681,7 @@ export function packageColor(name) {
|
|
|
681
681
|
* are the only surface using it, but pick a distinct value if roles ever
|
|
682
682
|
* take over node borders. */
|
|
683
683
|
export const ROLE_COLOR = {
|
|
684
|
-
entry: '#
|
|
684
|
+
entry: '#c0c0c0',
|
|
685
685
|
service: '#0893d2', // blue — external system
|
|
686
686
|
};
|
|
687
687
|
/**
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* toC4 — project a subsystem-model (or a composition of them) onto C4 levels.
|
|
3
|
+
*
|
|
4
|
+
* The stored document is flat: `components[]` carry `process` (runtime unit),
|
|
5
|
+
* `purl` (repo/package), `construct`, `role`, `module`, plus `relations[]`
|
|
6
|
+
* (static) and `walkthroughs[]` (dynamic). C4 wants a hierarchy above the
|
|
7
|
+
* component — system → container → component — with externals and actors
|
|
8
|
+
* outside it. This module derives that hierarchy without inventing data:
|
|
9
|
+
*
|
|
10
|
+
* system ← the repo key (purlRepoKey of the first grounded component)
|
|
11
|
+
* container ← component.process (runtime/deployment boundary)
|
|
12
|
+
* component ← a grounded component
|
|
13
|
+
* external ← construct: 'external'
|
|
14
|
+
* actor ← construct: 'custom_entity' (their authored actor/entity)
|
|
15
|
+
*
|
|
16
|
+
* Edges are rolled up to the owner of each endpoint at the chosen view, so the
|
|
17
|
+
* container view shows container↔container collaborations and the component
|
|
18
|
+
* view shows component↔component ones. Intra-owner edges (from === to) drop.
|
|
19
|
+
*
|
|
20
|
+
* Pure over the document so it is unit-testable and reusable by any renderer.
|
|
21
|
+
*/
|
|
22
|
+
import type { SubsystemComponent, SubsystemModelDocument } from './model';
|
|
23
|
+
/** C4 levels plus the two "outside the system" concepts. */
|
|
24
|
+
export type C4Kind = 'system' | 'container' | 'component' | 'external' | 'actor';
|
|
25
|
+
/** Which projection to build: containers (level 2) or components (level 3). */
|
|
26
|
+
export type C4View = 'container' | 'component';
|
|
27
|
+
/** A C4 element the renderer can draw as a box. */
|
|
28
|
+
export interface C4Node {
|
|
29
|
+
id: string;
|
|
30
|
+
kind: C4Kind;
|
|
31
|
+
label: string;
|
|
32
|
+
/** Compound parent (container → system, component → container). */
|
|
33
|
+
parentId?: string;
|
|
34
|
+
/** Grouping key the node was derived from (process key, purl, alias). */
|
|
35
|
+
key?: string;
|
|
36
|
+
/** Source component aliases rolled into this node. */
|
|
37
|
+
members: string[];
|
|
38
|
+
/** Distinct constructs among the members (for a quick breakdown). */
|
|
39
|
+
constructs: string[];
|
|
40
|
+
/** True when any member is a `store` construct (a data store in C4). */
|
|
41
|
+
isStore: boolean;
|
|
42
|
+
/** Present only in the component view — the backing component. */
|
|
43
|
+
component?: SubsystemComponent;
|
|
44
|
+
/** Source model ids that contributed members, when attribution is supplied. */
|
|
45
|
+
models?: string[];
|
|
46
|
+
}
|
|
47
|
+
/** A compound frame (the system, or a container holding components). */
|
|
48
|
+
export interface C4Group {
|
|
49
|
+
id: string;
|
|
50
|
+
kind: 'system' | 'container';
|
|
51
|
+
label: string;
|
|
52
|
+
parentId?: string;
|
|
53
|
+
/** Member C4 node ids (or nested group ids for the system). */
|
|
54
|
+
memberIds: string[];
|
|
55
|
+
}
|
|
56
|
+
/** A rolled-up collaboration. `relationship` = static, `flow` = walkthrough. */
|
|
57
|
+
export interface C4Edge {
|
|
58
|
+
id: string;
|
|
59
|
+
source: string;
|
|
60
|
+
target: string;
|
|
61
|
+
kind: 'relationship' | 'flow';
|
|
62
|
+
label: string;
|
|
63
|
+
mechanisms: string[];
|
|
64
|
+
count: number;
|
|
65
|
+
}
|
|
66
|
+
export interface C4Model {
|
|
67
|
+
view: C4View;
|
|
68
|
+
system: C4Node;
|
|
69
|
+
nodes: C4Node[];
|
|
70
|
+
groups: C4Group[];
|
|
71
|
+
edges: C4Edge[];
|
|
72
|
+
}
|
|
73
|
+
export interface ToC4Options {
|
|
74
|
+
view?: C4View;
|
|
75
|
+
/** Override the system title; defaults to the repo key's owner/name. */
|
|
76
|
+
systemLabel?: string;
|
|
77
|
+
/** Override the repo key used for the system id. */
|
|
78
|
+
repoKey?: string;
|
|
79
|
+
/** Model-id attribution per component alias (e.g. from a merge sidecar). */
|
|
80
|
+
modelsByAlias?: Record<string, string[]>;
|
|
81
|
+
}
|
|
82
|
+
/** A code component (not an external, not an actor/entity). */
|
|
83
|
+
export declare function isGroundedComponent(c: SubsystemComponent): boolean;
|
|
84
|
+
/** `owner/name` from a purl, trimmed of scheme and fragment. */
|
|
85
|
+
export declare function labelFromPurl(purl: string): string;
|
|
86
|
+
/** The repo key the system is derived from: first grounded component's purl. */
|
|
87
|
+
export declare function deriveRepoKey(doc: SubsystemModelDocument): string | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Derive the C4 projection of a (possibly composed) subsystem document.
|
|
90
|
+
*
|
|
91
|
+
* @param doc - a portable document, or a composed one with canonical aliases.
|
|
92
|
+
* @param options - view + optional system naming + attribution.
|
|
93
|
+
*/
|
|
94
|
+
export declare function toC4(doc: SubsystemModelDocument, options?: ToC4Options): C4Model;
|
|
95
|
+
//# sourceMappingURL=toC4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toC4.d.ts","sourceRoot":"","sources":["../../src/subsystem/toC4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE1E,4DAA4D;AAC5D,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAEjF,+EAA+E;AAC/E,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/C,mDAAmD;AACnD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wEAAwE;AACxE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C;AAKD,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAElE;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAM7E;AAaD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,sBAAsB,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAiJpF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* toC4 — project a subsystem-model (or a composition of them) onto C4 levels.
|
|
3
|
+
*
|
|
4
|
+
* The stored document is flat: `components[]` carry `process` (runtime unit),
|
|
5
|
+
* `purl` (repo/package), `construct`, `role`, `module`, plus `relations[]`
|
|
6
|
+
* (static) and `walkthroughs[]` (dynamic). C4 wants a hierarchy above the
|
|
7
|
+
* component — system → container → component — with externals and actors
|
|
8
|
+
* outside it. This module derives that hierarchy without inventing data:
|
|
9
|
+
*
|
|
10
|
+
* system ← the repo key (purlRepoKey of the first grounded component)
|
|
11
|
+
* container ← component.process (runtime/deployment boundary)
|
|
12
|
+
* component ← a grounded component
|
|
13
|
+
* external ← construct: 'external'
|
|
14
|
+
* actor ← construct: 'custom_entity' (their authored actor/entity)
|
|
15
|
+
*
|
|
16
|
+
* Edges are rolled up to the owner of each endpoint at the chosen view, so the
|
|
17
|
+
* container view shows container↔container collaborations and the component
|
|
18
|
+
* view shows component↔component ones. Intra-owner edges (from === to) drop.
|
|
19
|
+
*
|
|
20
|
+
* Pure over the document so it is unit-testable and reusable by any renderer.
|
|
21
|
+
*/
|
|
22
|
+
const EXTERNAL_PURL = 'external';
|
|
23
|
+
const UNASSIGNED = '(unassigned)';
|
|
24
|
+
/** A code component (not an external, not an actor/entity). */
|
|
25
|
+
export function isGroundedComponent(c) {
|
|
26
|
+
return c.construct !== 'external' && c.construct !== 'custom_entity';
|
|
27
|
+
}
|
|
28
|
+
/** `owner/name` from a purl, trimmed of scheme and fragment. */
|
|
29
|
+
export function labelFromPurl(purl) {
|
|
30
|
+
const base = purl.replace(/^external:/, '').split('#')[0]?.trim() ?? '';
|
|
31
|
+
const parts = base.split('/').filter(Boolean);
|
|
32
|
+
return parts.slice(-2).join('/') || base || purl;
|
|
33
|
+
}
|
|
34
|
+
/** The repo key the system is derived from: first grounded component's purl. */
|
|
35
|
+
export function deriveRepoKey(doc) {
|
|
36
|
+
for (const c of doc.components) {
|
|
37
|
+
const p = (c.purl ?? '').split('#')[0]?.trim();
|
|
38
|
+
if (p && p !== EXTERNAL_PURL && !p.startsWith('external:'))
|
|
39
|
+
return p;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/** Stable identity for an external: its real purl, else the model-local alias. */
|
|
44
|
+
function externalKey(c) {
|
|
45
|
+
const purl = (c.purl ?? '').trim();
|
|
46
|
+
if (purl && purl !== EXTERNAL_PURL && purl !== 'external:proposed')
|
|
47
|
+
return purl;
|
|
48
|
+
return `alias:${c.alias}`;
|
|
49
|
+
}
|
|
50
|
+
function containerKey(c) {
|
|
51
|
+
return c.process?.trim() || UNASSIGNED;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Derive the C4 projection of a (possibly composed) subsystem document.
|
|
55
|
+
*
|
|
56
|
+
* @param doc - a portable document, or a composed one with canonical aliases.
|
|
57
|
+
* @param options - view + optional system naming + attribution.
|
|
58
|
+
*/
|
|
59
|
+
export function toC4(doc, options = {}) {
|
|
60
|
+
const view = options.view ?? 'container';
|
|
61
|
+
const repoKey = options.repoKey ?? deriveRepoKey(doc) ?? 'system';
|
|
62
|
+
const systemId = `system:${repoKey}`;
|
|
63
|
+
const system = {
|
|
64
|
+
id: systemId,
|
|
65
|
+
kind: 'system',
|
|
66
|
+
label: options.systemLabel ?? labelFromPurl(repoKey),
|
|
67
|
+
key: repoKey,
|
|
68
|
+
members: [],
|
|
69
|
+
constructs: [],
|
|
70
|
+
isStore: false,
|
|
71
|
+
};
|
|
72
|
+
const nodes = new Map();
|
|
73
|
+
const ownerOf = new Map();
|
|
74
|
+
const containerNodeId = (key) => `container:${key}`;
|
|
75
|
+
const componentNodeId = (alias) => `component:${alias}`;
|
|
76
|
+
for (const c of doc.components) {
|
|
77
|
+
let id;
|
|
78
|
+
let kind;
|
|
79
|
+
let label;
|
|
80
|
+
let parentId;
|
|
81
|
+
let key;
|
|
82
|
+
if (c.construct === 'external') {
|
|
83
|
+
key = externalKey(c);
|
|
84
|
+
id = `external:${key}`;
|
|
85
|
+
kind = 'external';
|
|
86
|
+
label = key.startsWith('alias:') ? c.name : labelFromPurl(key);
|
|
87
|
+
}
|
|
88
|
+
else if (c.construct === 'custom_entity') {
|
|
89
|
+
key = c.alias;
|
|
90
|
+
id = `actor:${c.alias}`;
|
|
91
|
+
kind = 'actor';
|
|
92
|
+
label = c.name;
|
|
93
|
+
}
|
|
94
|
+
else if (view === 'component') {
|
|
95
|
+
key = containerKey(c);
|
|
96
|
+
id = componentNodeId(c.alias);
|
|
97
|
+
kind = 'component';
|
|
98
|
+
label = c.name;
|
|
99
|
+
parentId = containerNodeId(key);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
key = containerKey(c);
|
|
103
|
+
id = containerNodeId(key);
|
|
104
|
+
kind = 'container';
|
|
105
|
+
label = key === UNASSIGNED ? 'Unassigned' : key;
|
|
106
|
+
parentId = systemId;
|
|
107
|
+
}
|
|
108
|
+
ownerOf.set(c.alias, id);
|
|
109
|
+
let node = nodes.get(id);
|
|
110
|
+
if (!node) {
|
|
111
|
+
node = {
|
|
112
|
+
id,
|
|
113
|
+
kind,
|
|
114
|
+
label,
|
|
115
|
+
parentId,
|
|
116
|
+
key,
|
|
117
|
+
members: [],
|
|
118
|
+
constructs: [],
|
|
119
|
+
isStore: false,
|
|
120
|
+
...(kind === 'component' ? { component: c } : {}),
|
|
121
|
+
};
|
|
122
|
+
nodes.set(id, node);
|
|
123
|
+
}
|
|
124
|
+
node.members.push(c.alias);
|
|
125
|
+
if (!node.constructs.includes(c.construct))
|
|
126
|
+
node.constructs.push(c.construct);
|
|
127
|
+
if (c.construct === 'store')
|
|
128
|
+
node.isStore = true;
|
|
129
|
+
const models = options.modelsByAlias?.[c.alias];
|
|
130
|
+
if (models && models.length > 0) {
|
|
131
|
+
node.models = [...new Set([...(node.models ?? []), ...models])];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// --- Groups (compound frames) ------------------------------------------
|
|
135
|
+
const groups = [];
|
|
136
|
+
if (view === 'container') {
|
|
137
|
+
const containerIds = [...nodes.values()].filter((n) => n.kind === 'container').map((n) => n.id);
|
|
138
|
+
if (containerIds.length > 0) {
|
|
139
|
+
groups.push({ id: systemId, kind: 'system', label: system.label, memberIds: containerIds });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const byContainer = new Map();
|
|
144
|
+
for (const n of nodes.values()) {
|
|
145
|
+
if (n.kind !== 'component' || !n.parentId)
|
|
146
|
+
continue;
|
|
147
|
+
const list = byContainer.get(n.parentId) ?? [];
|
|
148
|
+
list.push(n.id);
|
|
149
|
+
byContainer.set(n.parentId, list);
|
|
150
|
+
}
|
|
151
|
+
const containerIds = [];
|
|
152
|
+
for (const [id, memberIds] of byContainer) {
|
|
153
|
+
const label = id.slice('container:'.length);
|
|
154
|
+
groups.push({ id, kind: 'container', label: label === UNASSIGNED ? 'Unassigned' : label, parentId: systemId, memberIds });
|
|
155
|
+
containerIds.push(id);
|
|
156
|
+
}
|
|
157
|
+
if (containerIds.length > 0) {
|
|
158
|
+
groups.push({ id: systemId, kind: 'system', label: system.label, memberIds: containerIds });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// --- Edges: roll each endpoint up to its owner at this view -------------
|
|
162
|
+
const relEdges = new Map();
|
|
163
|
+
const flowEdges = new Map();
|
|
164
|
+
const addEdge = (bucket, source, target, kind, mechanism) => {
|
|
165
|
+
if (!source || !target || source === target)
|
|
166
|
+
return;
|
|
167
|
+
const key = `${source}\0${target}`;
|
|
168
|
+
let edge = bucket.get(key);
|
|
169
|
+
if (!edge) {
|
|
170
|
+
edge = { id: `${kind}:${key}`, source, target, kind, label: '', mechanisms: [], count: 0 };
|
|
171
|
+
bucket.set(key, edge);
|
|
172
|
+
}
|
|
173
|
+
edge.count += 1;
|
|
174
|
+
if (!edge.mechanisms.includes(mechanism))
|
|
175
|
+
edge.mechanisms.push(mechanism);
|
|
176
|
+
};
|
|
177
|
+
for (const r of doc.relations ?? []) {
|
|
178
|
+
addEdge(relEdges, ownerOf.get(r.from), ownerOf.get(r.to), 'relationship', r.relationType);
|
|
179
|
+
}
|
|
180
|
+
for (const w of doc.walkthroughs ?? []) {
|
|
181
|
+
for (const s of w.steps ?? []) {
|
|
182
|
+
addEdge(flowEdges, ownerOf.get(s.from), ownerOf.get(s.to), 'flow', s.mechanism);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const edges = [...relEdges.values(), ...flowEdges.values()];
|
|
186
|
+
for (const e of edges)
|
|
187
|
+
e.label = [...e.mechanisms].sort().join(' + ');
|
|
188
|
+
return {
|
|
189
|
+
view,
|
|
190
|
+
system,
|
|
191
|
+
nodes: [...nodes.values()].filter((n) => n.kind !== 'system'),
|
|
192
|
+
groups,
|
|
193
|
+
edges,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=toC4.js.map
|