@zigrivers/scaffold 3.21.0 → 3.22.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.
Files changed (30) hide show
  1. package/dist/cli/commands/dashboard.d.ts.map +1 -1
  2. package/dist/cli/commands/dashboard.js +40 -0
  3. package/dist/cli/commands/dashboard.js.map +1 -1
  4. package/dist/dashboard/dependency-graph.d.ts +19 -0
  5. package/dist/dashboard/dependency-graph.d.ts.map +1 -0
  6. package/dist/dashboard/dependency-graph.js +180 -0
  7. package/dist/dashboard/dependency-graph.js.map +1 -0
  8. package/dist/dashboard/dependency-graph.test.d.ts +2 -0
  9. package/dist/dashboard/dependency-graph.test.d.ts.map +1 -0
  10. package/dist/dashboard/dependency-graph.test.js +409 -0
  11. package/dist/dashboard/dependency-graph.test.js.map +1 -0
  12. package/dist/dashboard/generator.d.ts +46 -0
  13. package/dist/dashboard/generator.d.ts.map +1 -1
  14. package/dist/dashboard/generator.js +1 -0
  15. package/dist/dashboard/generator.js.map +1 -1
  16. package/dist/dashboard/multi-service.test.js +257 -1
  17. package/dist/dashboard/multi-service.test.js.map +1 -1
  18. package/dist/dashboard/template.d.ts +13 -0
  19. package/dist/dashboard/template.d.ts.map +1 -1
  20. package/dist/dashboard/template.js +176 -0
  21. package/dist/dashboard/template.js.map +1 -1
  22. package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts +2 -0
  23. package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts.map +1 -0
  24. package/dist/e2e/dashboard-cross-service-graph-wiring.test.js +130 -0
  25. package/dist/e2e/dashboard-cross-service-graph-wiring.test.js.map +1 -0
  26. package/dist/e2e/dashboard-cross-service-graph.test.d.ts +2 -0
  27. package/dist/e2e/dashboard-cross-service-graph.test.d.ts.map +1 -0
  28. package/dist/e2e/dashboard-cross-service-graph.test.js +216 -0
  29. package/dist/e2e/dashboard-cross-service-graph.test.js.map +1 -0
  30. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import { generateMultiServiceDashboardData, generateMultiServiceHtml } from './generator.js';
2
+ import { generateMultiServiceDashboardData, generateMultiServiceHtml, generateHtml, generateDashboardData, } from './generator.js';
3
3
  import { PHASES } from '../types/frontmatter.js';
4
+ import { renderDependencyGraphSection } from './template.js';
4
5
  function makeState(steps, nextEligible = []) {
5
6
  return {
6
7
  'schema-version': 1,
@@ -532,4 +533,259 @@ describe('generateMultiServiceDashboardData — averagePercentage rounding', ()
532
533
  expect(data.services[0].percentage).toBe(0);
533
534
  });
534
535
  });
536
+ describe('generateMultiServiceDashboardData — dependencyGraph pass-through', () => {
537
+ const baseOpts = () => ({
538
+ services: [],
539
+ methodology: 'deep',
540
+ });
541
+ it('returns dependencyGraph as null when option omitted', () => {
542
+ const data = generateMultiServiceDashboardData(baseOpts());
543
+ expect(data.dependencyGraph).toBeNull();
544
+ });
545
+ it('normalizes undefined input to null', () => {
546
+ const data = generateMultiServiceDashboardData({ ...baseOpts(), dependencyGraph: undefined });
547
+ expect(data.dependencyGraph).toBeNull();
548
+ });
549
+ it('normalizes null input to null', () => {
550
+ const data = generateMultiServiceDashboardData({ ...baseOpts(), dependencyGraph: null });
551
+ expect(data.dependencyGraph).toBeNull();
552
+ });
553
+ it('passes populated DependencyGraphData through unchanged', () => {
554
+ const graph = {
555
+ nodes: [
556
+ { name: 'api', projectType: 'backend', layer: 0, x: 10, y: 20 },
557
+ { name: 'web', projectType: 'web-app', layer: 1, x: 230, y: 20 },
558
+ ],
559
+ edges: [{
560
+ consumer: 'web', producer: 'api',
561
+ steps: [{ consumerStep: 'impl', producerStep: 'prd', status: 'completed' }],
562
+ svgPath: 'M 230 42 C 175 42, 175 42, 150 42',
563
+ }],
564
+ viewBox: { width: 380, height: 92 },
565
+ };
566
+ const data = generateMultiServiceDashboardData({ ...baseOpts(), dependencyGraph: graph });
567
+ expect(data.dependencyGraph).toBe(graph);
568
+ });
569
+ });
570
+ describe('renderDependencyGraphSection', () => {
571
+ // Helper: extract data-steps attribute JSON for an edge (works around no jsdom).
572
+ function extractDataSteps(html, consumer, producer) {
573
+ const pattern = new RegExp(`data-consumer="${consumer}"[^>]*data-producer="${producer}"[^>]*data-steps="([^"]*)"`);
574
+ const match = html.match(pattern);
575
+ if (!match)
576
+ throw new Error(`edge ${consumer} -> ${producer} not found`);
577
+ const json = match[1].replace(/"/g, '"');
578
+ return JSON.parse(json);
579
+ }
580
+ it('test 14: returns empty string for null and undefined', () => {
581
+ expect(renderDependencyGraphSection(null)).toBe('');
582
+ expect(renderDependencyGraphSection(undefined)).toBe('');
583
+ });
584
+ it('test 15: small graph renders <section class="dep-graph"> with expected viewBox', () => {
585
+ const data = {
586
+ nodes: [
587
+ { name: 'api', projectType: 'backend', layer: 0, x: 24, y: 24 },
588
+ { name: 'web', projectType: 'web-app', layer: 1, x: 244, y: 24 },
589
+ ],
590
+ edges: [
591
+ { consumer: 'web', producer: 'api', steps: [
592
+ { consumerStep: 'impl', producerStep: 'prd', status: 'completed' },
593
+ ], svgPath: 'M 244 46 C 192 46, 192 46, 164 46' },
594
+ ],
595
+ viewBox: { width: 408, height: 92 },
596
+ };
597
+ const html = renderDependencyGraphSection(data);
598
+ expect(html).toContain('<section class="dep-graph"');
599
+ expect(html).toContain('viewBox="0 0 408 92"');
600
+ expect(html).toContain('data-consumer="web"');
601
+ expect(html).toContain('data-producer="api"');
602
+ });
603
+ it('test 16: service names with special characters are HTML-escaped', () => {
604
+ const data = {
605
+ nodes: [
606
+ { name: '<svc>&"a', projectType: 'backend', layer: 0, x: 0, y: 0 },
607
+ { name: 'web', projectType: 'web-app', layer: 1, x: 220, y: 0 },
608
+ ],
609
+ edges: [
610
+ { consumer: 'web', producer: '<svc>&"a', steps: [
611
+ { consumerStep: 's', producerStep: 't', status: 'completed' },
612
+ ], svgPath: 'M 0 0' },
613
+ ],
614
+ viewBox: { width: 360, height: 92 },
615
+ };
616
+ const html = renderDependencyGraphSection(data);
617
+ expect(html).toContain('&lt;svc&gt;&amp;&quot;a');
618
+ // Raw form must NOT appear inside attribute values or text content.
619
+ // Narrowed regex avoids matching inside SVG path bytes.
620
+ expect(html).not.toMatch(/data-producer="<svc>&"a"/);
621
+ expect(html).not.toMatch(/<text[^>]*>.*<svc>&"a.*<\/text>/);
622
+ });
623
+ it('test 17: data-steps round-trips via extractDataSteps helper', () => {
624
+ const steps = [
625
+ { consumerStep: 'impl-plan', producerStep: 'create-prd', status: 'completed' },
626
+ { consumerStep: 'tech-stack', producerStep: 'arch', status: 'pending' },
627
+ ];
628
+ const data = {
629
+ nodes: [
630
+ { name: 'api', projectType: 'backend', layer: 0, x: 0, y: 0 },
631
+ { name: 'web', projectType: 'web-app', layer: 1, x: 220, y: 0 },
632
+ ],
633
+ edges: [{ consumer: 'web', producer: 'api', steps, svgPath: 'M 0 0' }],
634
+ viewBox: { width: 360, height: 92 },
635
+ };
636
+ const html = renderDependencyGraphSection(data);
637
+ const extracted = extractDataSteps(html, 'web', 'api');
638
+ expect(extracted).toEqual(steps);
639
+ });
640
+ it('test 18: defs contain <marker id="arrow" ... orient="auto">', () => {
641
+ const data = {
642
+ nodes: [
643
+ { name: 'api', projectType: 'backend', layer: 0, x: 0, y: 0 },
644
+ { name: 'web', projectType: 'web-app', layer: 1, x: 220, y: 0 },
645
+ ],
646
+ edges: [{ consumer: 'web', producer: 'api', steps: [
647
+ { consumerStep: 's', producerStep: 't', status: 'completed' },
648
+ ], svgPath: 'M 0 0' }],
649
+ viewBox: { width: 360, height: 92 },
650
+ };
651
+ const html = renderDependencyGraphSection(data);
652
+ expect(html).toMatch(/<marker\s+id="arrow"[^>]*orient="auto"/);
653
+ });
654
+ it('test 19: each edge has both dep-edge-hit and dep-edge-line paths', () => {
655
+ const data = {
656
+ nodes: [
657
+ { name: 'api', projectType: 'backend', layer: 0, x: 0, y: 0 },
658
+ { name: 'web', projectType: 'web-app', layer: 1, x: 220, y: 0 },
659
+ ],
660
+ edges: [{ consumer: 'web', producer: 'api', steps: [
661
+ { consumerStep: 's', producerStep: 't', status: 'completed' },
662
+ ], svgPath: 'M 0 0' }],
663
+ viewBox: { width: 360, height: 92 },
664
+ };
665
+ const html = renderDependencyGraphSection(data);
666
+ expect(html).toMatch(/class="dep-edge-hit"/);
667
+ expect(html).toMatch(/class="dep-edge-line"/);
668
+ });
669
+ it('test 20: each edge <g> has tabindex="0" and a nested <title>', () => {
670
+ const data = {
671
+ nodes: [
672
+ { name: 'api', projectType: 'backend', layer: 0, x: 0, y: 0 },
673
+ { name: 'web', projectType: 'web-app', layer: 1, x: 220, y: 0 },
674
+ ],
675
+ edges: [{ consumer: 'web', producer: 'api', steps: [
676
+ { consumerStep: 'impl', producerStep: 'prd', status: 'completed' },
677
+ ], svgPath: 'M 0 0' }],
678
+ viewBox: { width: 360, height: 92 },
679
+ };
680
+ const html = renderDependencyGraphSection(data);
681
+ expect(html).toMatch(/<g class="dep-edge"[^>]*tabindex="0"/);
682
+ expect(html).toMatch(/<title>[^<]*web:impl -&gt; api:prd \(completed\)[^<]*<\/title>/);
683
+ });
684
+ });
685
+ describe('buildMultiServiceTemplate — dependency-graph CSS + JS', () => {
686
+ function makeDashboardData() {
687
+ return {
688
+ generatedAt: new Date().toISOString(),
689
+ methodology: 'deep',
690
+ scaffoldVersion: '3.22.0',
691
+ services: [],
692
+ aggregate: {
693
+ totalServices: 0,
694
+ averagePercentage: 0,
695
+ servicesComplete: 0,
696
+ servicesByPhase: [],
697
+ },
698
+ dependencyGraph: null,
699
+ };
700
+ }
701
+ it('CSS block declares .dep-graph, .dep-node-box, .dep-edge, and .dep-tooltip rules', () => {
702
+ const html = generateMultiServiceHtml(makeDashboardData());
703
+ expect(html).toMatch(/\.dep-graph\s*\{/);
704
+ expect(html).toMatch(/\.dep-node-box\s*\{/);
705
+ expect(html).toMatch(/\.dep-edge\s*\{/);
706
+ expect(html).toMatch(/\.dep-tooltip\s*\{/);
707
+ });
708
+ it('JS block contains the dep-edge tooltip IIFE with textContent writes and no innerHTML', () => {
709
+ const html = generateMultiServiceHtml(makeDashboardData());
710
+ // IIFE presence
711
+ expect(html).toMatch(/querySelectorAll\(['"]\.dep-edge['"]\)/);
712
+ // Uses textContent (not innerHTML) for attacker-influenced strings
713
+ expect(html).toContain('row.textContent =');
714
+ // No innerHTML writes in the dep-tooltip JS segment
715
+ const depSegmentMatch = html.match(/\/\/ ---------- Cross-service dependency graph JS ----------[\s\S]*?\}\)\(\);/);
716
+ if (depSegmentMatch) {
717
+ expect(depSegmentMatch[0]).not.toContain('innerHTML =');
718
+ }
719
+ });
720
+ });
721
+ describe('buildMultiServiceTemplate — dependencyGraph integration', () => {
722
+ it('renders <section class="dep-graph"> between .aggregate-block and .services-grid when graph has edges', () => {
723
+ const graph = {
724
+ nodes: [
725
+ { name: 'api', projectType: 'backend', layer: 0, x: 24, y: 24 },
726
+ { name: 'web', projectType: 'web-app', layer: 1, x: 244, y: 24 },
727
+ ],
728
+ edges: [{
729
+ consumer: 'web', producer: 'api', steps: [
730
+ { consumerStep: 'impl', producerStep: 'prd', status: 'completed' },
731
+ ],
732
+ svgPath: 'M 244 46 C 192 46, 192 46, 164 46',
733
+ }],
734
+ viewBox: { width: 408, height: 92 },
735
+ };
736
+ const data = {
737
+ generatedAt: new Date().toISOString(),
738
+ methodology: 'deep',
739
+ scaffoldVersion: '3.22.0',
740
+ services: [],
741
+ aggregate: {
742
+ totalServices: 0, averagePercentage: 0, servicesComplete: 0,
743
+ servicesByPhase: [],
744
+ },
745
+ dependencyGraph: graph,
746
+ };
747
+ const html = generateMultiServiceHtml(data);
748
+ const aggPos = html.indexOf('<div class="aggregate-block">');
749
+ const depPos = html.indexOf('<section class="dep-graph"');
750
+ const gridPos = html.indexOf('<div class="services-grid">');
751
+ expect(aggPos).toBeGreaterThan(-1);
752
+ expect(depPos).toBeGreaterThan(-1);
753
+ expect(gridPos).toBeGreaterThan(-1);
754
+ expect(aggPos).toBeLessThan(depPos);
755
+ expect(depPos).toBeLessThan(gridPos);
756
+ });
757
+ it('omits <section class="dep-graph"> entirely when dependencyGraph is null', () => {
758
+ const data = {
759
+ generatedAt: new Date().toISOString(),
760
+ methodology: 'deep',
761
+ scaffoldVersion: '3.22.0',
762
+ services: [],
763
+ aggregate: {
764
+ totalServices: 0, averagePercentage: 0, servicesComplete: 0,
765
+ servicesByPhase: [],
766
+ },
767
+ dependencyGraph: null,
768
+ };
769
+ const html = generateMultiServiceHtml(data);
770
+ expect(html).not.toContain('<section class="dep-graph"');
771
+ });
772
+ it('single-service dashboard output does NOT include dep-graph section (spec §8.2 compat)', () => {
773
+ // Use the single-service path via generateHtml + generateDashboardData.
774
+ // The single-service path has NO dependencyGraph awareness at all; this
775
+ // test locks that v3.21.0 single-service output remains unaffected.
776
+ const state = {
777
+ 'schema-version': 3, 'scaffold-version': '3.22.0',
778
+ init_methodology: 'deep', config_methodology: 'deep',
779
+ 'init-mode': 'greenfield',
780
+ created: '2026-04-21T00:00:00Z',
781
+ in_progress: null, steps: {}, next_eligible: [], 'extra-steps': [],
782
+ };
783
+ const html = generateHtml(generateDashboardData({
784
+ state, decisions: [], methodology: 'deep',
785
+ }));
786
+ expect(html).not.toContain('dep-graph');
787
+ expect(html).not.toContain('dep-edge');
788
+ expect(html).not.toContain('dep-tooltip');
789
+ });
790
+ });
535
791
  //# sourceMappingURL=multi-service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multi-service.test.js","sourceRoot":"","sources":["../../src/dashboard/multi-service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multi-service.test.js","sourceRoot":"","sources":["../../src/dashboard/multi-service.test.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,17 @@ import type { DashboardData, MultiServiceDashboardData } from './generator.js';
2
2
  export declare function escapeHtml(s: string): string;
3
3
  export declare function buildTemplate(dataJson: string, data: DashboardData): string;
4
4
  export declare function buildMultiServiceTemplate(dataJson: string, data: MultiServiceDashboardData): string;
5
+ /**
6
+ * Render the `<section class="dep-graph">` block containing the SVG graph.
7
+ * Exported so tests can assert on rendered output directly (§6.2).
8
+ *
9
+ * Returns '' when data is null/undefined — caller does string concatenation
10
+ * and the empty slot naturally collapses.
11
+ *
12
+ * Security: attacker-influenced strings (service names, step slugs) flow
13
+ * through escapeHtml before reaching attribute values or text content.
14
+ * data-steps holds JSON with escaped quotes (`&quot;`); consumers decode
15
+ * via replace(/&quot;/g, '"') then JSON.parse.
16
+ */
17
+ export declare function renderDependencyGraphSection(data: MultiServiceDashboardData['dependencyGraph']): string;
5
18
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/dashboard/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAE9E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5C;AAGD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAwzB3E;AAID,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,yBAAyB,GAC9B,MAAM,CAsZR"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/dashboard/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAG9E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5C;AAGD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAwzB3E;AAID,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,yBAAyB,GAC9B,MAAM,CAkgBR;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,GACjD,MAAM,CAmBR"}
@@ -1,3 +1,4 @@
1
+ import { NODE_WIDTH, NODE_HEIGHT } from './dependency-graph.js';
1
2
  export function escapeHtml(s) {
2
3
  return s
3
4
  .replace(/&/g, '&amp;')
@@ -1127,6 +1128,46 @@ body {
1127
1128
  .header { flex-direction: column; }
1128
1129
  .services-grid { grid-template-columns: 1fr; }
1129
1130
  }
1131
+ /* Cross-service dependency graph (§4.4) */
1132
+ .dep-graph {
1133
+ background: var(--card-bg);
1134
+ border: 1px solid var(--border);
1135
+ border-radius: 8px;
1136
+ padding: 16px;
1137
+ margin: 0 0 24px;
1138
+ color: var(--muted);
1139
+ }
1140
+ .dep-graph-title {
1141
+ margin: 0 0 12px;
1142
+ font-size: 1rem;
1143
+ color: var(--text);
1144
+ }
1145
+ .dep-graph-svg { width: 100%; height: auto; max-height: 420px; display: block; }
1146
+ .dep-node-box { fill: var(--bg); stroke: var(--border); stroke-width: 1; }
1147
+ .dep-node-name { font-size: 13px; font-weight: 500; fill: var(--text); font-family: system-ui, sans-serif; }
1148
+ .dep-node-type { font-size: 11px; fill: var(--muted); font-family: system-ui, sans-serif; }
1149
+ .dep-edge { transition: color 0.1s ease; }
1150
+ .dep-edge-line { transition: stroke 0.1s ease, stroke-width 0.1s ease; }
1151
+ .dep-edge:hover,
1152
+ .dep-edge:focus-visible { color: var(--accent); }
1153
+ .dep-edge:hover .dep-edge-line,
1154
+ .dep-edge:focus-visible .dep-edge-line { stroke: var(--accent); stroke-width: 2; }
1155
+ .dep-tooltip {
1156
+ position: fixed; pointer-events: none;
1157
+ background: var(--card-bg); border: 1px solid var(--border);
1158
+ border-radius: 4px; padding: 8px; font-size: 12px; color: var(--text);
1159
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
1160
+ max-width: 360px; z-index: 100;
1161
+ opacity: 0; transition: opacity 0.1s ease;
1162
+ }
1163
+ .dep-tooltip.visible { opacity: 1; }
1164
+ .dep-tooltip-row { padding: 2px 0; }
1165
+ .dep-tooltip-status-completed { color: var(--status-completed); }
1166
+ .dep-tooltip-status-pending,
1167
+ .dep-tooltip-status-not-bootstrapped { color: var(--status-in-progress); }
1168
+ .dep-tooltip-status-read-error,
1169
+ .dep-tooltip-status-service-unknown,
1170
+ .dep-tooltip-status-not-exported { color: var(--stale-text); }
1130
1171
  </style>
1131
1172
  </head>
1132
1173
  <body>
@@ -1156,6 +1197,7 @@ body {
1156
1197
  <div class="aggregate-stat"><strong>${data.aggregate.servicesComplete}</strong> of <strong>${data.aggregate.totalServices}</strong> services complete</div>
1157
1198
  ${servicesByPhase ? `<div class="phase-indicators">${servicesByPhase}</div>` : ''}
1158
1199
  </div>
1200
+ ${renderDependencyGraphSection(data.dependencyGraph)}
1159
1201
  <div class="services-grid">
1160
1202
  ${serviceCards}
1161
1203
  </div>
@@ -1222,10 +1264,144 @@ ${serviceCards}
1222
1264
  }
1223
1265
  }
1224
1266
  })();
1267
+
1268
+ // ---------- Cross-service dependency graph JS ----------
1269
+ (function(){
1270
+ var edges = document.querySelectorAll('.dep-edge');
1271
+ if (edges.length === 0) return;
1272
+ var tooltip = document.createElement('div');
1273
+ tooltip.className = 'dep-tooltip';
1274
+ tooltip.setAttribute('role', 'region');
1275
+ tooltip.setAttribute('aria-live', 'polite');
1276
+ tooltip.setAttribute('aria-label', 'Cross-service dependency details');
1277
+ document.body.appendChild(tooltip);
1278
+
1279
+ function clearTooltip() {
1280
+ while (tooltip.firstChild) tooltip.removeChild(tooltip.firstChild);
1281
+ }
1282
+
1283
+ function showTooltip(edge) {
1284
+ var consumer = edge.getAttribute('data-consumer');
1285
+ var producer = edge.getAttribute('data-producer');
1286
+ var stepsJson = edge.getAttribute('data-steps');
1287
+ var steps;
1288
+ try { steps = JSON.parse(stepsJson); } catch(_) { return; }
1289
+ clearTooltip();
1290
+ steps.forEach(function(s) {
1291
+ var row = document.createElement('div');
1292
+ row.className = 'dep-tooltip-row dep-tooltip-status-' + s.status;
1293
+ row.textContent = consumer + ':' + s.consumerStep
1294
+ + ' -> ' + producer + ':' + s.producerStep
1295
+ + ' (' + s.status + ')';
1296
+ tooltip.appendChild(row);
1297
+ });
1298
+ tooltip.classList.add('visible');
1299
+ }
1300
+
1301
+ function hideTooltip() {
1302
+ tooltip.classList.remove('visible');
1303
+ }
1304
+
1305
+ function positionTooltip(x, y) {
1306
+ var MARGIN = 12;
1307
+ var MAX_W = 370;
1308
+ var MAX_H = 200;
1309
+ var left = Math.min(x + MARGIN, window.innerWidth - MAX_W);
1310
+ var top = Math.min(y + MARGIN, window.innerHeight - MAX_H);
1311
+ tooltip.style.left = Math.max(0, left) + 'px';
1312
+ tooltip.style.top = Math.max(0, top) + 'px';
1313
+ }
1314
+
1315
+ edges.forEach(function(edge) {
1316
+ // mouseenter: position BEFORE showing so a stationary hover doesn't
1317
+ // render at a stale/default location waiting for the first mousemove.
1318
+ edge.addEventListener('mouseenter', function(e) {
1319
+ positionTooltip(e.clientX, e.clientY);
1320
+ showTooltip(edge);
1321
+ });
1322
+ edge.addEventListener('mousemove', function(e) { positionTooltip(e.clientX, e.clientY); });
1323
+ edge.addEventListener('mouseleave', hideTooltip);
1324
+ edge.addEventListener('focusin', function() {
1325
+ var rect = edge.getBoundingClientRect();
1326
+ positionTooltip(rect.right, rect.top);
1327
+ showTooltip(edge);
1328
+ });
1329
+ edge.addEventListener('focusout', hideTooltip);
1330
+ });
1331
+
1332
+ window.addEventListener('scroll', hideTooltip, { passive: true });
1333
+ })();
1225
1334
  })();
1226
1335
  </script>
1227
1336
  </body>
1228
1337
  </html>`;
1229
1338
  }
1230
1339
  /* eslint-enable max-len */
1340
+ /* eslint-disable max-len */
1341
+ // ---------- Cross-service dependency graph ----------
1342
+ /**
1343
+ * Render the `<section class="dep-graph">` block containing the SVG graph.
1344
+ * Exported so tests can assert on rendered output directly (§6.2).
1345
+ *
1346
+ * Returns '' when data is null/undefined — caller does string concatenation
1347
+ * and the empty slot naturally collapses.
1348
+ *
1349
+ * Security: attacker-influenced strings (service names, step slugs) flow
1350
+ * through escapeHtml before reaching attribute values or text content.
1351
+ * data-steps holds JSON with escaped quotes (`&quot;`); consumers decode
1352
+ * via replace(/&quot;/g, '"') then JSON.parse.
1353
+ */
1354
+ export function renderDependencyGraphSection(data) {
1355
+ if (!data)
1356
+ return '';
1357
+ return [
1358
+ '<section class="dep-graph" id="dep-graph">',
1359
+ ' <h2 class="dep-graph-title">Cross-Service Dependencies</h2>',
1360
+ // role="img" would flatten the SVG a11y tree and suppress descendant
1361
+ // <title> elements on many AT combos. SVG AAM handles focusable
1362
+ // descendants with <title> correctly without an explicit role.
1363
+ ` <svg class="dep-graph-svg" viewBox="0 0 ${data.viewBox.width} ${data.viewBox.height}" xmlns="http://www.w3.org/2000/svg" aria-label="Cross-service dependency graph">`,
1364
+ ' <defs>',
1365
+ ' <marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto">',
1366
+ ' <path d="M 0 0 L 10 5 L 0 10 z" fill="currentColor"/>',
1367
+ ' </marker>',
1368
+ ' </defs>',
1369
+ renderDepEdges(data),
1370
+ renderDepNodes(data),
1371
+ ' </svg>',
1372
+ '</section>',
1373
+ ].join('\n');
1374
+ }
1375
+ function renderDepEdges(data) {
1376
+ return data.edges.map(edge => {
1377
+ const tooltipLines = edge.steps.map(s => `${edge.consumer}:${s.consumerStep} -> ${edge.producer}:${s.producerStep} (${s.status})`);
1378
+ const titleText = escapeHtml(tooltipLines.join('\n'));
1379
+ const stepsJson = escapeHtml(JSON.stringify(edge.steps));
1380
+ // Defense-in-depth: svgPath is always produced by layoutGraph from numeric
1381
+ // math today, but `svgPath: string` doesn't restrict content at the type
1382
+ // level. Escape it so a future caller that hand-constructs edges cannot
1383
+ // break out of the d=... attribute.
1384
+ const safePath = escapeHtml(edge.svgPath);
1385
+ return [
1386
+ ` <g class="dep-edge" data-consumer="${escapeHtml(edge.consumer)}" data-producer="${escapeHtml(edge.producer)}" data-steps="${stepsJson}" tabindex="0">`,
1387
+ ` <title>${titleText}</title>`,
1388
+ ` <path class="dep-edge-hit" d="${safePath}" stroke="transparent" stroke-width="14" fill="none" pointer-events="stroke"/>`,
1389
+ ` <path class="dep-edge-line" d="${safePath}" stroke="currentColor" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>`,
1390
+ ' </g>',
1391
+ ].join('\n');
1392
+ }).join('\n');
1393
+ }
1394
+ function renderDepNodes(data) {
1395
+ const HALF_W = NODE_WIDTH / 2;
1396
+ const NAME_BASELINE = 20;
1397
+ const TYPE_BASELINE = NODE_HEIGHT - 8;
1398
+ return data.nodes.map(n => [
1399
+ ` <g class="dep-node" data-service="${escapeHtml(n.name)}" transform="translate(${n.x}, ${n.y})">`,
1400
+ ` <rect class="dep-node-box" width="${NODE_WIDTH}" height="${NODE_HEIGHT}" rx="6"/>`,
1401
+ ` <text class="dep-node-name" x="${HALF_W}" y="${NAME_BASELINE}" text-anchor="middle">${escapeHtml(n.name)}</text>`,
1402
+ ` <text class="dep-node-type" x="${HALF_W}" y="${TYPE_BASELINE}" text-anchor="middle">${escapeHtml(n.projectType)}</text>`,
1403
+ ' </g>',
1404
+ ].join('\n')).join('\n');
1405
+ }
1406
+ /* eslint-enable max-len */
1231
1407
  //# sourceMappingURL=template.js.map