@zigrivers/scaffold 3.20.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.
- package/README.md +3 -1
- package/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js +40 -0
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/config/loader.test.js +72 -0
- package/dist/config/loader.test.js.map +1 -1
- package/dist/config/schema.d.ts +432 -420
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +35 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +82 -1
- package/dist/config/schema.test.js.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.d.ts.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.js +47 -18
- package/dist/core/assembly/overlay-state-resolver.js.map +1 -1
- package/dist/core/assembly/overlay-state-resolver.test.js +291 -0
- package/dist/core/assembly/overlay-state-resolver.test.js.map +1 -1
- package/dist/dashboard/dependency-graph.d.ts +19 -0
- package/dist/dashboard/dependency-graph.d.ts.map +1 -0
- package/dist/dashboard/dependency-graph.js +180 -0
- package/dist/dashboard/dependency-graph.js.map +1 -0
- package/dist/dashboard/dependency-graph.test.d.ts +2 -0
- package/dist/dashboard/dependency-graph.test.d.ts.map +1 -0
- package/dist/dashboard/dependency-graph.test.js +409 -0
- package/dist/dashboard/dependency-graph.test.js.map +1 -0
- package/dist/dashboard/generator.d.ts +46 -0
- package/dist/dashboard/generator.d.ts.map +1 -1
- package/dist/dashboard/generator.js +1 -0
- package/dist/dashboard/generator.js.map +1 -1
- package/dist/dashboard/multi-service.test.js +257 -1
- package/dist/dashboard/multi-service.test.js.map +1 -1
- package/dist/dashboard/template.d.ts +13 -0
- package/dist/dashboard/template.d.ts.map +1 -1
- package/dist/dashboard/template.js +176 -0
- package/dist/dashboard/template.js.map +1 -1
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts +2 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.d.ts.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.js +130 -0
- package/dist/e2e/dashboard-cross-service-graph-wiring.test.js.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph.test.d.ts +2 -0
- package/dist/e2e/dashboard-cross-service-graph.test.d.ts.map +1 -0
- package/dist/e2e/dashboard-cross-service-graph.test.js +216 -0
- package/dist/e2e/dashboard-cross-service-graph.test.js.map +1 -0
- package/dist/e2e/service-execution.test.js +69 -0
- package/dist/e2e/service-execution.test.js.map +1 -1
- 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('<svc>&"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 -> 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 (`"`); consumers decode
|
|
15
|
+
* via replace(/"/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;
|
|
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, '&')
|
|
@@ -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 (`"`); consumers decode
|
|
1352
|
+
* via replace(/"/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
|