@principal-ai/subsystems-react 0.51.1 → 0.51.3
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 +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/subsystem/C4Graph.d.ts +12 -1
- package/dist/subsystem/C4Graph.d.ts.map +1 -1
- package/dist/subsystem/C4Graph.js +82 -14
- package/dist/subsystem/C4Graph.js.map +1 -1
- package/dist/subsystem/C4NodeCard.d.ts +29 -14
- package/dist/subsystem/C4NodeCard.d.ts.map +1 -1
- package/dist/subsystem/C4NodeCard.js +71 -57
- package/dist/subsystem/C4NodeCard.js.map +1 -1
- package/dist/subsystem/IssueList.d.ts.map +1 -1
- package/dist/subsystem/IssueList.js +11 -2
- package/dist/subsystem/IssueList.js.map +1 -1
- package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
- package/dist/subsystem/SubsystemComponentGraph.js +66 -3
- package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
- package/dist/subsystem/TrailsPanel.d.ts.map +1 -1
- package/dist/subsystem/TrailsPanel.js +8 -4
- package/dist/subsystem/TrailsPanel.js.map +1 -1
- package/dist/subsystem/c4.d.ts +31 -92
- package/dist/subsystem/c4.d.ts.map +1 -1
- package/dist/subsystem/c4.js +6 -285
- package/dist/subsystem/c4.js.map +1 -1
- package/dist/subsystem/c4Evidence.d.ts +1 -1
- package/dist/subsystem/c4Evidence.js +2 -2
- package/dist/subsystem/c4Evidence.js.map +1 -1
- package/dist/subsystem/model.d.ts +8 -0
- package/dist/subsystem/model.d.ts.map +1 -1
- package/dist/subsystem/model.js.map +1 -1
- package/dist/subsystem/techIcons/bun.d.ts +11 -0
- package/dist/subsystem/techIcons/bun.d.ts.map +1 -0
- package/dist/subsystem/techIcons/bun.js +11 -0
- package/dist/subsystem/techIcons/bun.js.map +1 -0
- package/dist/subsystem/techIcons/index.d.ts +36 -0
- package/dist/subsystem/techIcons/index.d.ts.map +1 -0
- package/dist/subsystem/techIcons/index.js +55 -0
- package/dist/subsystem/techIcons/index.js.map +1 -0
- package/dist/subsystem/techIcons/node.d.ts +12 -0
- package/dist/subsystem/techIcons/node.d.ts.map +1 -0
- package/dist/subsystem/techIcons/node.js +39 -0
- package/dist/subsystem/techIcons/node.js.map +1 -0
- package/dist/subsystem/techIcons/react.d.ts +12 -0
- package/dist/subsystem/techIcons/react.d.ts.map +1 -0
- package/dist/subsystem/techIcons/react.js +19 -0
- package/dist/subsystem/techIcons/react.js.map +1 -0
- package/dist/utils/elkLayout.d.ts.map +1 -1
- package/dist/utils/elkLayout.js +16 -5
- package/dist/utils/elkLayout.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +4 -6
- package/src/stories/Subsystem/C4Graph/C4Container.stories.tsx +212 -0
- package/src/stories/Subsystem/C4Graph/C4NodeGallery.stories.tsx +21 -8
- package/src/stories/Subsystem/ComponentGraph/IssueOverlay.stories.tsx +4 -2
- package/src/stories/Subsystem/ComponentGraph/Issues.stories.tsx +168 -2
- package/src/subsystem/C4Graph.tsx +127 -12
- package/src/subsystem/C4NodeCard.test.ts +86 -55
- package/src/subsystem/C4NodeCard.tsx +92 -71
- package/src/subsystem/IssueList.tsx +12 -1
- package/src/subsystem/SubsystemComponentGraph.tsx +79 -2
- package/src/subsystem/TrailsPanel.tsx +10 -5
- package/src/subsystem/c4.ts +30 -363
- package/src/subsystem/c4Evidence.test.ts +5 -5
- package/src/subsystem/c4Evidence.ts +2 -2
- package/src/subsystem/model.ts +8 -0
- package/src/subsystem/techIcons/bun.ts +10 -0
- package/src/subsystem/techIcons/index.tsx +73 -0
- package/src/subsystem/techIcons/node.ts +38 -0
- package/src/subsystem/techIcons/react.ts +18 -0
- package/src/subsystem/techIcons/techIcons.test.ts +39 -0
- package/src/utils/elkLayout.ts +16 -5
- package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts +0 -493
- package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts.map +0 -1
- package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js +0 -329
- package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js.map +0 -1
- package/src/stories/Subsystem/C4Graph/ProposedElements.stories.tsx +0 -293
- package/src/stories/Subsystem/C4Graph/c4ProposedElements.fixture.ts +0 -366
- package/src/subsystem/c4.test.ts +0 -573
package/dist/subsystem/c4.d.ts
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* reading `process` strings will produce it — `process` answers "where does
|
|
8
8
|
* this run", which is a different question.
|
|
9
9
|
*
|
|
10
|
-
* So the element list is authored
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* So the element list is authored, and so is the `C4Model` projected from it.
|
|
11
|
+
* There is no builder here: how edges are determined is still open, so a caller
|
|
12
|
+
* supplies the drawable model directly rather than having trails converted into
|
|
13
|
+
* lines.
|
|
13
14
|
*
|
|
14
15
|
* ## Why a union and not one type with two axes
|
|
15
16
|
*
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
*
|
|
31
32
|
* [C4 notation]: https://c4model.com/diagrams/notation
|
|
32
33
|
*/
|
|
33
|
-
import type { SubsystemComponent
|
|
34
|
+
import type { SubsystemComponent } from './model';
|
|
34
35
|
/**
|
|
35
36
|
* Has anyone signed off on this element yet?
|
|
36
37
|
*
|
|
@@ -52,12 +53,9 @@ interface C4ElementBase {
|
|
|
52
53
|
* The component aliases that live directly inside this element.
|
|
53
54
|
*
|
|
54
55
|
* Named explicitly rather than derived from a `process` value, because two
|
|
55
|
-
* runs of code being one container is a judgement, not a lookup.
|
|
56
|
-
* the dedup mechanism: two elements that should be one simply end up as one
|
|
57
|
-
* element holding both member sets.
|
|
56
|
+
* runs of code being one container is a judgement, not a lookup.
|
|
58
57
|
*
|
|
59
|
-
* Each alias belongs to exactly one element.
|
|
60
|
-
* the aliases its components already claim — `buildC4Model` rolls those up.
|
|
58
|
+
* Each alias belongs to exactly one element.
|
|
61
59
|
*/
|
|
62
60
|
members: string[];
|
|
63
61
|
/**
|
|
@@ -79,12 +77,13 @@ interface C4ElementBase {
|
|
|
79
77
|
/**
|
|
80
78
|
* What kind of thing a container is.
|
|
81
79
|
*
|
|
82
|
-
* `application`
|
|
83
|
-
* system reads or writes.
|
|
84
|
-
*
|
|
85
|
-
*
|
|
80
|
+
* C4 recognises exactly two: an `application` (a deployable program) or a
|
|
81
|
+
* `data-store` (something the system reads or writes). There is deliberately
|
|
82
|
+
* no `queue` kind — c4model is explicit that an individual queue or topic *is*
|
|
83
|
+
* a data store, and that the message bus itself is not a container at all, so
|
|
84
|
+
* a queue is a `data-store` whose technology/label say "queue".
|
|
86
85
|
*/
|
|
87
|
-
export type C4ContainerKind = 'application' | 'data-store'
|
|
86
|
+
export type C4ContainerKind = 'application' | 'data-store';
|
|
88
87
|
/** A deployable unit or a store — the C4 level 2 box. */
|
|
89
88
|
export interface C4Container extends C4ElementBase {
|
|
90
89
|
kind: 'container';
|
|
@@ -149,7 +148,7 @@ export interface C4Node {
|
|
|
149
148
|
technology?: string;
|
|
150
149
|
description?: string;
|
|
151
150
|
state: C4ElementState;
|
|
152
|
-
/** `application` / `data-store
|
|
151
|
+
/** `application` / `data-store`. Set on containers only. */
|
|
153
152
|
containerKind?: C4ContainerKind;
|
|
154
153
|
/** Provenance, when the element consolidated several derived keys. */
|
|
155
154
|
derivedFrom?: string[];
|
|
@@ -170,17 +169,28 @@ export interface C4Group {
|
|
|
170
169
|
parentId?: string;
|
|
171
170
|
memberIds: string[];
|
|
172
171
|
}
|
|
173
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* A line between two elements. Authored, like the boxes.
|
|
174
|
+
*
|
|
175
|
+
* C4 asks a container-diagram line to say the *technology/protocol* of the
|
|
176
|
+
* interaction (`protocol`), and the label is that plus the trail verbs where
|
|
177
|
+
* known. `label` is what the chip shows; `protocol` and `mechanisms` are kept
|
|
178
|
+
* separate so a caller can render either.
|
|
179
|
+
*/
|
|
174
180
|
export interface C4Edge {
|
|
175
181
|
id: string;
|
|
176
182
|
source: string;
|
|
177
183
|
target: string;
|
|
184
|
+
/** Text the edge chip shows, e.g. `RPC` or `calls (HTTP)`. */
|
|
178
185
|
label: string;
|
|
186
|
+
/** The interaction's technology/protocol, e.g. `RPC`, `HTTP`, `stdin`. */
|
|
187
|
+
protocol?: string;
|
|
188
|
+
/** Trail verbs that produced this line (`calls`, `writes`, …). */
|
|
179
189
|
mechanisms: string[];
|
|
180
|
-
/**
|
|
190
|
+
/** How many underlying steps this line rolled up. */
|
|
181
191
|
count: number;
|
|
182
192
|
}
|
|
183
|
-
/** A drawable C4 projection. */
|
|
193
|
+
/** A drawable C4 projection. Authored, not derived. */
|
|
184
194
|
export interface C4Model {
|
|
185
195
|
view: C4View;
|
|
186
196
|
system: {
|
|
@@ -192,81 +202,10 @@ export interface C4Model {
|
|
|
192
202
|
groups: C4Group[];
|
|
193
203
|
edges: C4Edge[];
|
|
194
204
|
}
|
|
195
|
-
/** Something an author should fix before this set is trusted. */
|
|
196
|
-
export type C4ProblemKind =
|
|
197
|
-
/** a member is claimed by two elements */
|
|
198
|
-
'conflicting_member'
|
|
199
|
-
/** a member is not in the supplied document */
|
|
200
|
-
| 'unknown_member'
|
|
201
|
-
/** two elements share an id */
|
|
202
|
-
| 'duplicate_id'
|
|
203
|
-
/** an element that should have contents has none */
|
|
204
|
-
| 'empty_element'
|
|
205
|
-
/** a component names a container that is missing, or is not a container */
|
|
206
|
-
| 'unknown_container';
|
|
207
|
-
export interface C4Problem {
|
|
208
|
-
kind: C4ProblemKind;
|
|
209
|
-
message: string;
|
|
210
|
-
/** Alias for member problems, element id for the rest. */
|
|
211
|
-
subject: string;
|
|
212
|
-
}
|
|
213
|
-
export interface C4BuildResult {
|
|
214
|
-
model: C4Model;
|
|
215
|
-
/** Authoring mistakes. An empty array means the set is self-consistent. */
|
|
216
|
-
problems: C4Problem[];
|
|
217
|
-
/** Component aliases in the document that no element claims. */
|
|
218
|
-
unmapped: string[];
|
|
219
|
-
}
|
|
220
|
-
export interface C4BuildOptions {
|
|
221
|
-
/** The elements. The source of truth — nothing is invented. */
|
|
222
|
-
elements: readonly C4Element[];
|
|
223
|
-
/** Supply to resolve members and draw lines from trails. */
|
|
224
|
-
document?: SubsystemModelDocument;
|
|
225
|
-
view?: C4View;
|
|
226
|
-
/** Name of the system the elements sit in. */
|
|
227
|
-
systemLabel?: string;
|
|
228
|
-
/** Override the repo key (defaults to the first member's purl). */
|
|
229
|
-
repoKey?: string;
|
|
230
|
-
/** Model-id attribution per component alias. */
|
|
231
|
-
modelsByAlias?: Record<string, string[]>;
|
|
232
|
-
}
|
|
233
|
-
/** True when this element kind is drawn inside the system frame. */
|
|
234
|
-
export declare function isInBoundary(e: C4Element): boolean;
|
|
235
|
-
/** `owner/name` from a purl, trimmed of scheme and fragment. */
|
|
236
|
-
export declare function labelFromPurl(purl: string): string;
|
|
237
205
|
/**
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
* A plain join with no architectural judgement:
|
|
241
|
-
*
|
|
242
|
-
* boxes ← one per element, named and placed by the author
|
|
243
|
-
* lines ← trail steps, with each endpoint mapped to its owning element
|
|
244
|
-
*
|
|
245
|
-
* Trail steps whose endpoints are not claimed by any element are skipped:
|
|
246
|
-
* drawing them would assert a relationship the author did not describe.
|
|
206
|
+
* `owner/name` from a purl, trimmed of scheme and fragment. Used to label the
|
|
207
|
+
* system frame when a repo key is known.
|
|
247
208
|
*/
|
|
248
|
-
export declare function
|
|
249
|
-
/**
|
|
250
|
-
* Tally for the confirm UI: how much is proposed vs accepted, and how much is
|
|
251
|
-
* still missing what the C4 notation requires.
|
|
252
|
-
*
|
|
253
|
-
* Counts the authored set, not the projection — a rejected element is still a
|
|
254
|
-
* decision that was made, so it is reported rather than forgotten.
|
|
255
|
-
*/
|
|
256
|
-
export declare function summarizeElements(elements: readonly C4Element[]): {
|
|
257
|
-
containers: number;
|
|
258
|
-
components: number;
|
|
259
|
-
externals: number;
|
|
260
|
-
people: number;
|
|
261
|
-
accepted: number;
|
|
262
|
-
proposed: number;
|
|
263
|
-
rejected: number;
|
|
264
|
-
/** Containers missing the technology C4 requires. */
|
|
265
|
-
missingTechnology: number;
|
|
266
|
-
/** Elements missing a description. */
|
|
267
|
-
missingDescription: number;
|
|
268
|
-
/** Elements whose state is not yet `accepted`. */
|
|
269
|
-
needsDecision: number;
|
|
270
|
-
};
|
|
209
|
+
export declare function labelFromPurl(purl: string): string;
|
|
271
210
|
export {};
|
|
272
211
|
//# sourceMappingURL=c4.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4.d.ts","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"c4.d.ts","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"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"}
|
package/dist/subsystem/c4.js
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* reading `process` strings will produce it — `process` answers "where does
|
|
8
8
|
* this run", which is a different question.
|
|
9
9
|
*
|
|
10
|
-
* So the element list is authored
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* So the element list is authored, and so is the `C4Model` projected from it.
|
|
11
|
+
* There is no builder here: how edges are determined is still open, so a caller
|
|
12
|
+
* supplies the drawable model directly rather than having trails converted into
|
|
13
|
+
* lines.
|
|
13
14
|
*
|
|
14
15
|
* ## Why a union and not one type with two axes
|
|
15
16
|
*
|
|
@@ -31,292 +32,12 @@
|
|
|
31
32
|
* [C4 notation]: https://c4model.com/diagrams/notation
|
|
32
33
|
*/
|
|
33
34
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* A C4 container diagram puts external systems *inside* the boundary: they are
|
|
37
|
-
* things this system depends on, drawn as containers we do not own. People go
|
|
38
|
-
* outside it, because a person is never part of any system.
|
|
35
|
+
* `owner/name` from a purl, trimmed of scheme and fragment. Used to label the
|
|
36
|
+
* system frame when a repo key is known.
|
|
39
37
|
*/
|
|
40
|
-
const IN_BOUNDARY = new Set(['container', 'external-system']);
|
|
41
|
-
/** True when this element kind is drawn inside the system frame. */
|
|
42
|
-
export function isInBoundary(e) {
|
|
43
|
-
return IN_BOUNDARY.has(e.kind);
|
|
44
|
-
}
|
|
45
|
-
function purlRepoKey(purl) {
|
|
46
|
-
const p = (purl ?? '').split('#')[0]?.trim();
|
|
47
|
-
if (!p || p === 'external' || p.startsWith('external:'))
|
|
48
|
-
return undefined;
|
|
49
|
-
return p;
|
|
50
|
-
}
|
|
51
|
-
/** `owner/name` from a purl, trimmed of scheme and fragment. */
|
|
52
38
|
export function labelFromPurl(purl) {
|
|
53
39
|
const base = purl.replace(/^external:/, '').split('#')[0]?.trim() ?? '';
|
|
54
40
|
const parts = base.split('/').filter(Boolean);
|
|
55
41
|
return parts.slice(-2).join('/') || base || purl;
|
|
56
42
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Build the drawable projection from authored elements.
|
|
59
|
-
*
|
|
60
|
-
* A plain join with no architectural judgement:
|
|
61
|
-
*
|
|
62
|
-
* boxes ← one per element, named and placed by the author
|
|
63
|
-
* lines ← trail steps, with each endpoint mapped to its owning element
|
|
64
|
-
*
|
|
65
|
-
* Trail steps whose endpoints are not claimed by any element are skipped:
|
|
66
|
-
* drawing them would assert a relationship the author did not describe.
|
|
67
|
-
*/
|
|
68
|
-
export function buildC4Model(options) {
|
|
69
|
-
const view = options.view ?? 'container';
|
|
70
|
-
const doc = options.document;
|
|
71
|
-
const problems = [];
|
|
72
|
-
const byAlias = new Map(doc?.components.map((c) => [c.alias, c]) ?? []);
|
|
73
|
-
/**
|
|
74
|
-
* Alias → owning element, innermost home wins. One owner per alias: this is
|
|
75
|
-
* what makes `conflicting_member` mean "two boxes disagree" rather than
|
|
76
|
-
* "a container and its components both mention the same code".
|
|
77
|
-
*/
|
|
78
|
-
const membersOf = new Map();
|
|
79
|
-
// --- accept each element once, and resolve membership --------------------
|
|
80
|
-
const seenIds = new Set();
|
|
81
|
-
/** alias → element id. One owner per alias; conflicts are reported. */
|
|
82
|
-
const ownerOf = new Map();
|
|
83
|
-
/** Ids in authored order, duplicates dropped. */
|
|
84
|
-
const accepted = [];
|
|
85
|
-
const elementById = new Map();
|
|
86
|
-
for (const e of options.elements) {
|
|
87
|
-
if (seenIds.has(e.id)) {
|
|
88
|
-
problems.push({
|
|
89
|
-
kind: 'duplicate_id',
|
|
90
|
-
subject: e.id,
|
|
91
|
-
message: `two elements share the id ${e.id}`,
|
|
92
|
-
});
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
seenIds.add(e.id);
|
|
96
|
-
accepted.push(e.id);
|
|
97
|
-
elementById.set(e.id, e);
|
|
98
|
-
// A rejected element is not drawn, so its members are inside nothing.
|
|
99
|
-
// Leaving them claimed would hide them from `unmapped` and quietly hide
|
|
100
|
-
// the fact that rejecting an element orphans whatever was in it.
|
|
101
|
-
if (e.state === 'rejected')
|
|
102
|
-
continue;
|
|
103
|
-
for (const alias of e.members) {
|
|
104
|
-
if (doc && !byAlias.has(alias)) {
|
|
105
|
-
problems.push({
|
|
106
|
-
kind: 'unknown_member',
|
|
107
|
-
subject: alias,
|
|
108
|
-
message: `element "${e.id}" claims "${alias}", which is not in the supplied document`,
|
|
109
|
-
});
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
const existing = ownerOf.get(alias);
|
|
113
|
-
if (existing && existing !== e.id) {
|
|
114
|
-
problems.push({
|
|
115
|
-
kind: 'conflicting_member',
|
|
116
|
-
subject: alias,
|
|
117
|
-
message: `"${alias}" is claimed by both ${existing} and ${e.id}; it is drawn inside ${existing}`,
|
|
118
|
-
});
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
ownerOf.set(alias, e.id);
|
|
122
|
-
const list = membersOf.get(e.id) ?? [];
|
|
123
|
-
list.push(alias);
|
|
124
|
-
membersOf.set(e.id, list);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// --- the system boundary -------------------------------------------------
|
|
128
|
-
const repoKey = options.repoKey ??
|
|
129
|
-
options.elements
|
|
130
|
-
.flatMap((e) => e.members)
|
|
131
|
-
.map((alias) => purlRepoKey(byAlias.get(alias)?.purl))
|
|
132
|
-
.find(Boolean);
|
|
133
|
-
const systemId = `system:${repoKey ?? 'unspecified'}`;
|
|
134
|
-
const systemLabel = options.systemLabel ?? (repoKey ? labelFromPurl(repoKey) : 'Software System');
|
|
135
|
-
// --- draw the boxes ------------------------------------------------------
|
|
136
|
-
const nodes = [];
|
|
137
|
-
/**
|
|
138
|
-
* The aliases an element claimed itself, before any rollup. A component's
|
|
139
|
-
* own members and its container's own members are disjoint by construction,
|
|
140
|
-
* which is what lets the two be added together below.
|
|
141
|
-
*/
|
|
142
|
-
const ownMembers = new Map();
|
|
143
|
-
for (const id of accepted) {
|
|
144
|
-
const e = elementById.get(id);
|
|
145
|
-
if (e.state === 'rejected')
|
|
146
|
-
continue;
|
|
147
|
-
const own = membersOf.get(id) ?? [];
|
|
148
|
-
// A component's parent is stated, not inferred. Check it resolves: a
|
|
149
|
-
// dangling parent would silently drop the component out of every frame.
|
|
150
|
-
let parentId;
|
|
151
|
-
if (e.kind === 'component') {
|
|
152
|
-
const parent = elementById.get(e.container);
|
|
153
|
-
if (!parent || parent.state === 'rejected') {
|
|
154
|
-
problems.push({
|
|
155
|
-
kind: 'unknown_container',
|
|
156
|
-
subject: id,
|
|
157
|
-
message: `component "${id}" names container "${e.container}", which is not in this set`,
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
else if (parent.kind !== 'container') {
|
|
161
|
-
problems.push({
|
|
162
|
-
kind: 'unknown_container',
|
|
163
|
-
subject: id,
|
|
164
|
-
message: `component "${id}" names container "${e.container}", which is a ${parent.kind}, not a container`,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
parentId = parent.id;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else if (isInBoundary(e)) {
|
|
172
|
-
parentId = systemId;
|
|
173
|
-
}
|
|
174
|
-
ownMembers.set(id, own);
|
|
175
|
-
nodes.push({
|
|
176
|
-
id: e.id,
|
|
177
|
-
kind: e.kind,
|
|
178
|
-
label: e.label,
|
|
179
|
-
...(parentId ? { parentId } : {}),
|
|
180
|
-
technology: 'technology' in e ? e.technology : undefined,
|
|
181
|
-
description: e.description,
|
|
182
|
-
state: e.state,
|
|
183
|
-
...(e.kind === 'container' ? { containerKind: e.containerKind } : {}),
|
|
184
|
-
...(e.derivedFrom && e.derivedFrom.length > 1 ? { derivedFrom: e.derivedFrom } : {}),
|
|
185
|
-
members: own,
|
|
186
|
-
constructs: [],
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
// --- roll components up into their container ------------------------------
|
|
190
|
-
//
|
|
191
|
-
// A C4 container diagram draws the container as a whole, so a container
|
|
192
|
-
// holds everything inside its components. Membership is still authored
|
|
193
|
-
// exactly once: an alias belongs to one element, so a container must not
|
|
194
|
-
// repeat what its components already claim — that repetition would read as
|
|
195
|
-
// a `conflicting_member` and hide the real question, which is how many
|
|
196
|
-
// components a container has.
|
|
197
|
-
for (const n of nodes) {
|
|
198
|
-
if (n.kind !== 'component' || !n.parentId)
|
|
199
|
-
continue;
|
|
200
|
-
const list = membersOf.get(n.parentId) ?? [];
|
|
201
|
-
list.push(...(ownMembers.get(n.id) ?? []));
|
|
202
|
-
membersOf.set(n.parentId, list);
|
|
203
|
-
}
|
|
204
|
-
for (const n of nodes) {
|
|
205
|
-
n.members = membersOf.get(n.id) ?? [];
|
|
206
|
-
if (n.members.length === 0) {
|
|
207
|
-
problems.push({
|
|
208
|
-
kind: 'empty_element',
|
|
209
|
-
subject: n.id,
|
|
210
|
-
message: `element "${n.id}" (${n.kind}) claims no members, and nothing is inside it either, so there is nothing to draw`,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
const resolved = n.members.map((m) => byAlias.get(m)).filter((c) => !!c);
|
|
214
|
-
const constructs = [];
|
|
215
|
-
for (const c of resolved)
|
|
216
|
-
if (!constructs.includes(c.construct))
|
|
217
|
-
constructs.push(c.construct);
|
|
218
|
-
n.constructs = constructs;
|
|
219
|
-
if (n.kind === 'component' && resolved[0])
|
|
220
|
-
n.component = resolved[0];
|
|
221
|
-
const models = [...new Set(n.members.flatMap((m) => options.modelsByAlias?.[m] ?? []))];
|
|
222
|
-
if (models.length > 0)
|
|
223
|
-
n.models = models;
|
|
224
|
-
}
|
|
225
|
-
// --- compound frames -----------------------------------------------------
|
|
226
|
-
const groups = [];
|
|
227
|
-
if (view === 'container') {
|
|
228
|
-
const containerIds = nodes.filter((n) => n.kind === 'container').map((n) => n.id);
|
|
229
|
-
if (containerIds.length > 0) {
|
|
230
|
-
groups.push({ id: systemId, kind: 'system', label: systemLabel, memberIds: containerIds });
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
const byContainer = new Map();
|
|
235
|
-
for (const n of nodes) {
|
|
236
|
-
if (n.kind !== 'component' || !n.parentId)
|
|
237
|
-
continue;
|
|
238
|
-
const list = byContainer.get(n.parentId) ?? [];
|
|
239
|
-
list.push(n.id);
|
|
240
|
-
byContainer.set(n.parentId, list);
|
|
241
|
-
}
|
|
242
|
-
const framed = [];
|
|
243
|
-
for (const [id, memberIds] of byContainer) {
|
|
244
|
-
const label = nodes.find((n) => n.id === id)?.label ?? id;
|
|
245
|
-
groups.push({ id, kind: 'container', label, parentId: systemId, memberIds });
|
|
246
|
-
framed.push(id);
|
|
247
|
-
}
|
|
248
|
-
if (framed.length > 0) {
|
|
249
|
-
groups.push({ id: systemId, kind: 'system', label: systemLabel, memberIds: framed });
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
// --- lines, from the trails ---------------------------------------------
|
|
253
|
-
const drawn = new Set(nodes.map((n) => n.id));
|
|
254
|
-
const edges = new Map();
|
|
255
|
-
for (const trail of doc?.trails ?? []) {
|
|
256
|
-
for (const step of trail.steps ?? []) {
|
|
257
|
-
const source = ownerOf.get(step.from);
|
|
258
|
-
const target = ownerOf.get(step.to);
|
|
259
|
-
// An endpoint no element claims has no box, so there is no line to draw.
|
|
260
|
-
if (!source || !target || source === target)
|
|
261
|
-
continue;
|
|
262
|
-
if (!drawn.has(source) || !drawn.has(target))
|
|
263
|
-
continue;
|
|
264
|
-
const key = `${source}\0${target}`;
|
|
265
|
-
const edge = edges.get(key);
|
|
266
|
-
if (edge) {
|
|
267
|
-
edge.count += 1;
|
|
268
|
-
if (!edge.mechanisms.includes(step.mechanism))
|
|
269
|
-
edge.mechanisms.push(step.mechanism);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
edges.set(key, {
|
|
273
|
-
id: `flow:${key}`,
|
|
274
|
-
source,
|
|
275
|
-
target,
|
|
276
|
-
label: step.mechanism,
|
|
277
|
-
mechanisms: [step.mechanism],
|
|
278
|
-
count: 1,
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
for (const e of edges.values())
|
|
284
|
-
e.label = [...e.mechanisms].sort().join(' + ');
|
|
285
|
-
const unmapped = (doc?.components ?? []).filter((c) => !ownerOf.has(c.alias)).map((c) => c.alias);
|
|
286
|
-
return {
|
|
287
|
-
model: {
|
|
288
|
-
view,
|
|
289
|
-
system: { id: systemId, label: systemLabel, repoKey },
|
|
290
|
-
nodes,
|
|
291
|
-
groups,
|
|
292
|
-
edges: [...edges.values()],
|
|
293
|
-
},
|
|
294
|
-
problems,
|
|
295
|
-
unmapped,
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Tally for the confirm UI: how much is proposed vs accepted, and how much is
|
|
300
|
-
* still missing what the C4 notation requires.
|
|
301
|
-
*
|
|
302
|
-
* Counts the authored set, not the projection — a rejected element is still a
|
|
303
|
-
* decision that was made, so it is reported rather than forgotten.
|
|
304
|
-
*/
|
|
305
|
-
export function summarizeElements(elements) {
|
|
306
|
-
const live = elements.filter((e) => e.state !== 'rejected');
|
|
307
|
-
return {
|
|
308
|
-
containers: live.filter((e) => e.kind === 'container').length,
|
|
309
|
-
components: live.filter((e) => e.kind === 'component').length,
|
|
310
|
-
externals: live.filter((e) => e.kind === 'external-system').length,
|
|
311
|
-
people: live.filter((e) => e.kind === 'person').length,
|
|
312
|
-
accepted: live.filter((e) => e.state === 'accepted').length,
|
|
313
|
-
proposed: live.filter((e) => e.state === 'proposed').length,
|
|
314
|
-
rejected: elements.filter((e) => e.state === 'rejected').length,
|
|
315
|
-
// `technology` is required by the type on containers and components, so a
|
|
316
|
-
// missing one can only mean an empty string — still worth reporting.
|
|
317
|
-
missingTechnology: live.filter((e) => 'technology' in e && !e.technology).length,
|
|
318
|
-
missingDescription: live.filter((e) => !e.description).length,
|
|
319
|
-
needsDecision: live.filter((e) => e.state !== 'accepted').length,
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
43
|
//# sourceMappingURL=c4.js.map
|
package/dist/subsystem/c4.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4.js","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAyNH;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAoB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEjF,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,CAAY;IACvC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB;IAC3C,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE;;;;OAIG;IACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE9C,4EAA4E;IAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,iDAAiD;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEjD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YACrB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,CAAC,CAAC,EAAE;gBACb,OAAO,EAAE,6BAA6B,CAAC,CAAC,EAAE,EAAE;aAC7C,CAAC,CAAC;YACH,SAAS;SACV;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzB,sEAAsE;QACtE,wEAAwE;QACxE,iEAAiE;QACjE,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU;YAAE,SAAS;QAErC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC9B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,KAAK,0CAA0C;iBACtF,CAAC,CAAC;gBACH,SAAS;aACV;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,EAAE;gBACjC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,IAAI,KAAK,wBAAwB,QAAQ,QAAQ,CAAC,CAAC,EAAE,wBAAwB,QAAQ,EAAE;iBACjG,CAAC,CAAC;gBACH,SAAS;aACV;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SAC3B;KACF;IAED,4EAA4E;IAC5E,MAAM,OAAO,GACX,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,QAAQ;aACb,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;aACrD,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,UAAU,OAAO,IAAI,aAAa,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAElG,4EAA4E;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B;;;;OAIG;IACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU;YAAE,SAAS;QAErC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAEpC,qEAAqE;QACrE,wEAAwE;QACxE,IAAI,QAA4B,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE;YAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE;gBAC1C,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC,SAAS,6BAA6B;iBACxF,CAAC,CAAC;aACJ;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAC,SAAS,iBAAiB,MAAM,CAAC,IAAI,mBAAmB;iBAC1G,CAAC,CAAC;aACJ;iBAAM;gBACL,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;aACtB;SACF;aAAM,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;YAC1B,QAAQ,GAAG,QAAQ,CAAC;SACrB;QAED,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACxD,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;KACJ;IAED,6EAA6E;IAC7E,EAAE;IACF,wEAAwE;IACxE,uEAAuE;IACvE,yEAAyE;IACzE,2EAA2E;IAC3E,uEAAuE;IACvE,8BAA8B;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,SAAS;QACpD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACjC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;QACrB,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,CAAC,CAAC,EAAE;gBACb,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,mFAAmF;aACzH,CAAC,CAAC;SACJ;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;KAC1C;IAED,4EAA4E;IAC5E,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;SAC5F;KACF;SAAM;QACL,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;QAChD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,SAAS;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACnC;QACD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACjB;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;SACtF;KACF;IAED,2EAA2E;IAC3E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,yEAAyE;YACzE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM;gBAAE,SAAS;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,SAAS;YACvD,MAAM,GAAG,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrF;iBAAM;gBACL,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;oBACb,EAAE,EAAE,QAAQ,GAAG,EAAE;oBACjB,MAAM;oBACN,MAAM;oBACN,KAAK,EAAE,IAAI,CAAC,SAAS;oBACrB,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC5B,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;aACJ;SACF;KACF;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/E,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAElG,OAAO;QACL,KAAK,EAAE;YACL,IAAI;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;YACrD,KAAK;YACL,MAAM;YACN,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SAC3B;QACD,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA8B;IAe9D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IAC5D,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM;QAC7D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM;QAC7D,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,MAAM;QAClE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM;QACtD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM;QAC3D,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM;QAC3D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM;QAC/D,0EAA0E;QAC1E,qEAAqE;QACrE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM;QAChF,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM;QAC7D,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM;KACjE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"c4.js","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAwLH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;AACnD,CAAC"}
|
|
@@ -133,7 +133,7 @@ export declare function proposeElements(options: {
|
|
|
133
133
|
* library is a review comment: the `library_shaped` concern carries the
|
|
134
134
|
* question, and the element is proposed as `application` for a person to
|
|
135
135
|
* reject or demote. There is deliberately no `concerns` parameter here for the
|
|
136
|
-
* caller to consult — passing one would only invite
|
|
136
|
+
* caller to consult — passing one would only invite another kind back into the
|
|
137
137
|
* vocabulary.
|
|
138
138
|
*
|
|
139
139
|
* The store split is deliberately conservative: only durable storage becomes
|
|
@@ -200,7 +200,7 @@ export function proposeElements(options) {
|
|
|
200
200
|
label: key,
|
|
201
201
|
containerKind: suggestContainerKind(members),
|
|
202
202
|
// C4 requires a technology on every container. With no framework signal
|
|
203
|
-
// the honest value is empty and
|
|
203
|
+
// the honest value is empty and the notation-gap check reports it —
|
|
204
204
|
// inventing "TypeScript" here would be exactly the derivation this
|
|
205
205
|
// module stopped doing.
|
|
206
206
|
technology: frameworks.length > 0 ? frameworks.join(' + ') : '',
|
|
@@ -223,7 +223,7 @@ export function proposeElements(options) {
|
|
|
223
223
|
* library is a review comment: the `library_shaped` concern carries the
|
|
224
224
|
* question, and the element is proposed as `application` for a person to
|
|
225
225
|
* reject or demote. There is deliberately no `concerns` parameter here for the
|
|
226
|
-
* caller to consult — passing one would only invite
|
|
226
|
+
* caller to consult — passing one would only invite another kind back into the
|
|
227
227
|
* vocabulary.
|
|
228
228
|
*
|
|
229
229
|
* The store split is deliberately conservative: only durable storage becomes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c4Evidence.js","sourceRoot":"","sources":["../../src/subsystem/c4Evidence.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"c4Evidence.js","sourceRoot":"","sources":["../../src/subsystem/c4Evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -347,6 +347,14 @@ export interface SubsystemTrailStep {
|
|
|
347
347
|
* mechanism + filename fallback.
|
|
348
348
|
*/
|
|
349
349
|
symbol: string;
|
|
350
|
+
/**
|
|
351
|
+
* Planned seam — the step describes intended behavior through code that is
|
|
352
|
+
* not written yet. Orthogonal to (and redundant with) the endpoints' own
|
|
353
|
+
* `proposed` flags: a step is proposed when it says so OR either endpoint
|
|
354
|
+
* is proposed. Verification skips source checks either way, and viewers
|
|
355
|
+
* tint it exactly like a proposed node.
|
|
356
|
+
*/
|
|
357
|
+
proposed?: boolean;
|
|
350
358
|
/**
|
|
351
359
|
* Free-text note anchored to this step's site line. Optional — informative
|
|
352
360
|
* only, never verified against source; the Pierre trail code view
|