@opensip-cli/dashboard 0.1.11 → 0.1.12
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 +2 -2
- package/dist/client-bundle.generated.d.ts.map +1 -1
- package/dist/client-bundle.generated.js +1 -1
- package/dist/client-bundle.generated.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +4 -3
- package/dist/generator.js.map +1 -1
- package/dist/report-cup-icon.d.ts +17 -0
- package/dist/report-cup-icon.d.ts.map +1 -0
- package/dist/report-cup-icon.js +34 -0
- package/dist/report-cup-icon.js.map +1 -0
- package/package.json +3 -3
- package/dist/__tests__/catalog-provenance.test.d.ts +0 -11
- package/dist/__tests__/catalog-provenance.test.d.ts.map +0 -1
- package/dist/__tests__/catalog-provenance.test.js +0 -112
- package/dist/__tests__/catalog-provenance.test.js.map +0 -1
- package/dist/__tests__/coupling-attribution.test.d.ts +0 -9
- package/dist/__tests__/coupling-attribution.test.d.ts.map +0 -1
- package/dist/__tests__/coupling-attribution.test.js +0 -95
- package/dist/__tests__/coupling-attribution.test.js.map +0 -1
- package/dist/__tests__/dashboard-bundle-weight.test.d.ts +0 -23
- package/dist/__tests__/dashboard-bundle-weight.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-bundle-weight.test.js +0 -80
- package/dist/__tests__/dashboard-bundle-weight.test.js.map +0 -1
- package/dist/__tests__/dashboard-cell-containment.test.d.ts +0 -2
- package/dist/__tests__/dashboard-cell-containment.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-cell-containment.test.js +0 -52
- package/dist/__tests__/dashboard-cell-containment.test.js.map +0 -1
- package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts +0 -10
- package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-cytoscape-vendor.test.js +0 -40
- package/dist/__tests__/dashboard-cytoscape-vendor.test.js.map +0 -1
- package/dist/__tests__/dashboard-editor-link.test.d.ts +0 -14
- package/dist/__tests__/dashboard-editor-link.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-editor-link.test.js +0 -87
- package/dist/__tests__/dashboard-editor-link.test.js.map +0 -1
- package/dist/__tests__/dashboard-el.test.d.ts +0 -18
- package/dist/__tests__/dashboard-el.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-el.test.js +0 -90
- package/dist/__tests__/dashboard-el.test.js.map +0 -1
- package/dist/__tests__/dashboard-filters.test.d.ts +0 -9
- package/dist/__tests__/dashboard-filters.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-filters.test.js +0 -87
- package/dist/__tests__/dashboard-filters.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-card-singleton.test.d.ts +0 -9
- package/dist/__tests__/dashboard-function-card-singleton.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-card-singleton.test.js +0 -75
- package/dist/__tests__/dashboard-function-card-singleton.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-card.test.d.ts +0 -10
- package/dist/__tests__/dashboard-function-card.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-card.test.js +0 -439
- package/dist/__tests__/dashboard-function-card.test.js.map +0 -1
- package/dist/__tests__/dashboard-function-row.test.d.ts +0 -11
- package/dist/__tests__/dashboard-function-row.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-function-row.test.js +0 -102
- package/dist/__tests__/dashboard-function-row.test.js.map +0 -1
- package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts +0 -9
- package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-generator-graph-catalog.test.js +0 -77
- package/dist/__tests__/dashboard-generator-graph-catalog.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts +0 -13
- package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-offline.integration.test.js +0 -57
- package/dist/__tests__/dashboard-graph-offline.integration.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-scc.test.d.ts +0 -17
- package/dist/__tests__/dashboard-graph-scc.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-scc.test.js +0 -89
- package/dist/__tests__/dashboard-graph-scc.test.js.map +0 -1
- package/dist/__tests__/dashboard-graph-view-model.test.d.ts +0 -12
- package/dist/__tests__/dashboard-graph-view-model.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-graph-view-model.test.js +0 -331
- package/dist/__tests__/dashboard-graph-view-model.test.js.map +0 -1
- package/dist/__tests__/dashboard-help-drawer.test.d.ts +0 -9
- package/dist/__tests__/dashboard-help-drawer.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-help-drawer.test.js +0 -95
- package/dist/__tests__/dashboard-help-drawer.test.js.map +0 -1
- package/dist/__tests__/dashboard-html.test.d.ts +0 -2
- package/dist/__tests__/dashboard-html.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-html.test.js +0 -169
- package/dist/__tests__/dashboard-html.test.js.map +0 -1
- package/dist/__tests__/dashboard-indexes.test.d.ts +0 -11
- package/dist/__tests__/dashboard-indexes.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-indexes.test.js +0 -214
- package/dist/__tests__/dashboard-indexes.test.js.map +0 -1
- package/dist/__tests__/dashboard-pagination.test.d.ts +0 -15
- package/dist/__tests__/dashboard-pagination.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-pagination.test.js +0 -140
- package/dist/__tests__/dashboard-pagination.test.js.map +0 -1
- package/dist/__tests__/dashboard-path-utils.test.d.ts +0 -13
- package/dist/__tests__/dashboard-path-utils.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-path-utils.test.js +0 -62
- package/dist/__tests__/dashboard-path-utils.test.js.map +0 -1
- package/dist/__tests__/dashboard-search.test.d.ts +0 -10
- package/dist/__tests__/dashboard-search.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-search.test.js +0 -52
- package/dist/__tests__/dashboard-search.test.js.map +0 -1
- package/dist/__tests__/dashboard-sessions.test.d.ts +0 -14
- package/dist/__tests__/dashboard-sessions.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-sessions.test.js +0 -400
- package/dist/__tests__/dashboard-sessions.test.js.map +0 -1
- package/dist/__tests__/dashboard-trace.test.d.ts +0 -16
- package/dist/__tests__/dashboard-trace.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-trace.test.js +0 -170
- package/dist/__tests__/dashboard-trace.test.js.map +0 -1
- package/dist/__tests__/dashboard-validation.integration.test.d.ts +0 -14
- package/dist/__tests__/dashboard-validation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-validation.integration.test.js +0 -221
- package/dist/__tests__/dashboard-validation.integration.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-conformance.test.d.ts +0 -12
- package/dist/__tests__/dashboard-view-conformance.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-conformance.test.js +0 -52
- package/dist/__tests__/dashboard-view-conformance.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-coupling.test.d.ts +0 -7
- package/dist/__tests__/dashboard-view-coupling.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-coupling.test.js +0 -360
- package/dist/__tests__/dashboard-view-coupling.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-distribution.test.d.ts +0 -10
- package/dist/__tests__/dashboard-view-distribution.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-distribution.test.js +0 -249
- package/dist/__tests__/dashboard-view-distribution.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-graph.test.d.ts +0 -13
- package/dist/__tests__/dashboard-view-graph.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-graph.test.js +0 -299
- package/dist/__tests__/dashboard-view-graph.test.js.map +0 -1
- package/dist/__tests__/dashboard-view-template.test.d.ts +0 -20
- package/dist/__tests__/dashboard-view-template.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard-view-template.test.js +0 -206
- package/dist/__tests__/dashboard-view-template.test.js.map +0 -1
- package/dist/__tests__/dashboard.test.d.ts +0 -2
- package/dist/__tests__/dashboard.test.d.ts.map +0 -1
- package/dist/__tests__/dashboard.test.js +0 -129
- package/dist/__tests__/dashboard.test.js.map +0 -1
- package/dist/__tests__/graph-tab.test.d.ts +0 -10
- package/dist/__tests__/graph-tab.test.d.ts.map +0 -1
- package/dist/__tests__/graph-tab.test.js +0 -78
- package/dist/__tests__/graph-tab.test.js.map +0 -1
- package/dist/__tests__/yagni-tab.test.d.ts +0 -13
- package/dist/__tests__/yagni-tab.test.d.ts.map +0 -1
- package/dist/__tests__/yagni-tab.test.js +0 -85
- package/dist/__tests__/yagni-tab.test.js.map +0 -1
- package/dist/client/el.d.ts +0 -17
- package/dist/client/el.d.ts.map +0 -1
- package/dist/client/el.js +0 -36
- package/dist/client/el.js.map +0 -1
- package/dist/code-paths/__tests__/views-registry.test.d.ts +0 -18
- package/dist/code-paths/__tests__/views-registry.test.d.ts.map +0 -1
- package/dist/code-paths/__tests__/views-registry.test.js +0 -41
- package/dist/code-paths/__tests__/views-registry.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-bundle.generated.js","sourceRoot":"","sources":["../src/client-bundle.generated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAW,
|
|
1
|
+
{"version":3,"file":"client-bundle.generated.js","sourceRoot":"","sources":["../src/client-bundle.generated.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAW,621HAA621H,CAAC"}
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAM1B,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAMnC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAIxC,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAEtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAiDD,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAiInE"}
|
package/dist/generator.js
CHANGED
|
@@ -14,6 +14,7 @@ import { DASHBOARD_CLIENT_BUNDLE } from './client-bundle.generated.js';
|
|
|
14
14
|
import { projectCatalogToGraphViewModel } from './code-paths/graph-view-model.js';
|
|
15
15
|
import { dashboardCodePathsVendorJs } from './code-paths.js';
|
|
16
16
|
import { dashboardCss } from './css.js';
|
|
17
|
+
import { REPORT_CUP_FAVICON_DATA_URI, REPORT_CUP_HEADER_HTML } from './report-cup-icon.js';
|
|
17
18
|
import { listToolTabs } from './tool-tab-registry.js';
|
|
18
19
|
import './tool-tabs-registrations.js'; // side-effect: registers fit/sim/graph
|
|
19
20
|
// Escape all < and > to prevent script injection in HTML <script> context
|
|
@@ -114,7 +115,7 @@ export function generateDashboardHtml(input) {
|
|
|
114
115
|
<meta charset="utf-8">
|
|
115
116
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
116
117
|
<title>OpenSIP CLI${latest ? ` — Pass Rate: ${latestScoreSafe}%` : ''}</title>
|
|
117
|
-
<link rel="icon" type="image/svg+xml" href="
|
|
118
|
+
<link rel="icon" type="image/svg+xml" href="${REPORT_CUP_FAVICON_DATA_URI}">
|
|
118
119
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
119
120
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&display=swap" rel="stylesheet">
|
|
120
121
|
<style>
|
|
@@ -124,8 +125,8 @@ ${dashboardCss()}
|
|
|
124
125
|
<body>
|
|
125
126
|
|
|
126
127
|
<div class="header">
|
|
127
|
-
<span class="header-icon"
|
|
128
|
-
<div><h1><span class="brand-open">Open</span>SIP
|
|
128
|
+
<span class="header-icon">${REPORT_CUP_HEADER_HTML}</span>
|
|
129
|
+
<div><h1><span class="brand-open">Open</span>SIP Report</h1></div>
|
|
129
130
|
</div>
|
|
130
131
|
|
|
131
132
|
<div class="tab-bar" id="tab-bar">
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report cup mark — two renderings of the OpenSIP coffee cup, both faithful to
|
|
3
|
+
* opensip.ai:
|
|
4
|
+
* - FAVICON: a geometric SVG (browser tabs require an image), byte-matching
|
|
5
|
+
* the shapes in opensip.ai/favicon.svg.
|
|
6
|
+
* - HEADER: the CLI `BANNER_MINI_CUP` ASCII art rendered as styled monospace
|
|
7
|
+
* `<pre>` text — exactly the site header `CoffeeLogo` component.
|
|
8
|
+
*/
|
|
9
|
+
/** Data URI for `<link rel="icon" type="image/svg+xml" href="…">`. */
|
|
10
|
+
export declare const REPORT_CUP_FAVICON_DATA_URI: string;
|
|
11
|
+
/**
|
|
12
|
+
* Inline header mark — the site `CoffeeLogo`: `BANNER_MINI_CUP` rendered as
|
|
13
|
+
* styled monospace text. `<pre>` preserves the art's exact spacing; row 0 gets a
|
|
14
|
+
* small left pad to recenter the narrower `⋮` steam glyphs (per opensip.ai).
|
|
15
|
+
*/
|
|
16
|
+
export declare const REPORT_CUP_HEADER_HTML: string;
|
|
17
|
+
//# sourceMappingURL=report-cup-icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-cup-icon.d.ts","sourceRoot":"","sources":["../src/report-cup-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,QAA6D,CAAC;AAWtG;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAKjB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report cup mark — two renderings of the OpenSIP coffee cup, both faithful to
|
|
3
|
+
* opensip.ai:
|
|
4
|
+
* - FAVICON: a geometric SVG (browser tabs require an image), byte-matching
|
|
5
|
+
* the shapes in opensip.ai/favicon.svg.
|
|
6
|
+
* - HEADER: the CLI `BANNER_MINI_CUP` ASCII art rendered as styled monospace
|
|
7
|
+
* `<pre>` text — exactly the site header `CoffeeLogo` component.
|
|
8
|
+
*/
|
|
9
|
+
const REPORT_CUP_BRAND = '#C8956C';
|
|
10
|
+
const REPORT_CUP_STEAM = '#e8e4df';
|
|
11
|
+
const REPORT_CUP_LID = '#d8d4ce';
|
|
12
|
+
/** Geometric favicon geometry (32×32 viewBox), matching opensip.ai/favicon.svg. */
|
|
13
|
+
const REPORT_CUP_SVG_INNER = `<circle cx="11" cy="3" r="1.8" fill="${REPORT_CUP_STEAM}"/>` +
|
|
14
|
+
`<circle cx="20" cy="3" r="1.8" fill="${REPORT_CUP_STEAM}"/>` +
|
|
15
|
+
`<rect x="3" y="7" width="26" height="8" rx="1" fill="${REPORT_CUP_LID}"/>` +
|
|
16
|
+
`<rect x="3" y="16" width="26" height="9" fill="${REPORT_CUP_BRAND}"/>` +
|
|
17
|
+
`<rect x="7" y="26" width="18" height="4" rx="1" fill="${REPORT_CUP_BRAND}"/>`;
|
|
18
|
+
const REPORT_CUP_SVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">${REPORT_CUP_SVG_INNER}</svg>`;
|
|
19
|
+
/** Data URI for `<link rel="icon" type="image/svg+xml" href="…">`. */
|
|
20
|
+
export const REPORT_CUP_FAVICON_DATA_URI = `data:image/svg+xml,${encodeURIComponent(REPORT_CUP_SVG)}`;
|
|
21
|
+
/** CLI mini-cup ASCII art (`BANNER_MINI_CUP`): steam `⋮ ⋮`, lid, body, saucer. */
|
|
22
|
+
const MINI_CUP = [' ⋮ ⋮ ', '▟███▙', '▐███▌', ' ▀▀▀ '];
|
|
23
|
+
/** Rows 0–1 (steam + lid) render near-white; rows 2–3 (body + saucer) brand amber. */
|
|
24
|
+
const MINI_CUP_LIGHT_ROWS = new Set([0, 1]);
|
|
25
|
+
const MINI_CUP_LIGHT = '#f5f5f5';
|
|
26
|
+
const MINI_CUP_PRE_STYLE = "font-family:ui-monospace,'Cascadia Code','SF Mono',Menlo,Consolas,monospace;" +
|
|
27
|
+
'font-size:8px;line-height:1.1;margin:0;padding:0;user-select:none;';
|
|
28
|
+
/**
|
|
29
|
+
* Inline header mark — the site `CoffeeLogo`: `BANNER_MINI_CUP` rendered as
|
|
30
|
+
* styled monospace text. `<pre>` preserves the art's exact spacing; row 0 gets a
|
|
31
|
+
* small left pad to recenter the narrower `⋮` steam glyphs (per opensip.ai).
|
|
32
|
+
*/
|
|
33
|
+
export const REPORT_CUP_HEADER_HTML = `<pre aria-hidden="true" style="${MINI_CUP_PRE_STYLE}">${MINI_CUP.map((line, i) => `<span style="color:${MINI_CUP_LIGHT_ROWS.has(i) ? MINI_CUP_LIGHT : REPORT_CUP_BRAND};display:block;${i === 0 ? 'padding-left:0.15em;' : ''}">${line}</span>`).join('')}</pre>`;
|
|
34
|
+
//# sourceMappingURL=report-cup-icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-cup-icon.js","sourceRoot":"","sources":["../src/report-cup-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,mFAAmF;AACnF,MAAM,oBAAoB,GACxB,wCAAwC,gBAAgB,KAAK;IAC7D,wCAAwC,gBAAgB,KAAK;IAC7D,wDAAwD,cAAc,KAAK;IAC3E,kDAAkD,gBAAgB,KAAK;IACvE,yDAAyD,gBAAgB,KAAK,CAAC;AAEjF,MAAM,cAAc,GAAG,+DAA+D,oBAAoB,QAAQ,CAAC;AAEnH,sEAAsE;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;AAEtG,kFAAkF;AAClF,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACtD,sFAAsF;AACtF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,kBAAkB,GACtB,8EAA8E;IAC9E,oEAAoE,CAAC;AAEvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAAkC,kBAAkB,KAAK,QAAQ,CAAC,GAAG,CACzG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,sBAAsB,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,kBAClF,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EACrC,KAAK,IAAI,SAAS,CACrB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensip-cli/dashboard",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Self-contained HTML dashboard generator for OpenSIP CLI — renders the fit/sim/graph report from session data and graph catalogs",
|
|
6
6
|
"keywords": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"NOTICE"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@opensip-cli/contracts": "0.1.
|
|
35
|
+
"@opensip-cli/contracts": "0.1.12"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^24.13.2",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "tsc -p src/client/tsconfig.json --noEmit && node scripts/bundle-client.mjs && tsc && node scripts/copy-vendor.mjs",
|
|
48
48
|
"test": "vitest run --passWithNoTests",
|
|
49
|
-
"typecheck": "tsc
|
|
49
|
+
"typecheck": "tsc -p src/client/tsconfig.json --noEmit && node scripts/bundle-client.mjs && tsc --noEmit",
|
|
50
50
|
"vendor:cytoscape": "node scripts/vendor-cytoscape.mjs",
|
|
51
51
|
"clean": "rm -rf dist"
|
|
52
52
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @vitest-environment jsdom
|
|
3
|
-
*
|
|
4
|
-
* Explore-tab catalog provenance bar. The Explore views render from the single
|
|
5
|
-
* cached catalog (the latest `graph` build, whatever its scope); this bar tells
|
|
6
|
-
* the reader what that catalog covers, so a scoped/stale build (the
|
|
7
|
-
* `graph packages/contracts` footgun) reads as "1 package" instead of looking
|
|
8
|
-
* broken. Values are derived from the embedded catalog itself (ground truth).
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=catalog-provenance.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-provenance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/catalog-provenance.test.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
|
-
/**
|
|
3
|
-
* @vitest-environment jsdom
|
|
4
|
-
*
|
|
5
|
-
* Explore-tab catalog provenance bar. The Explore views render from the single
|
|
6
|
-
* cached catalog (the latest `graph` build, whatever its scope); this bar tells
|
|
7
|
-
* the reader what that catalog covers, so a scoped/stale build (the
|
|
8
|
-
* `graph packages/contracts` footgun) reads as "1 package" instead of looking
|
|
9
|
-
* broken. Values are derived from the embedded catalog itself (ground truth).
|
|
10
|
-
*/
|
|
11
|
-
import { describe, expect, it, beforeEach } from 'vitest';
|
|
12
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
13
|
-
function loadEnv() {
|
|
14
|
-
// `renderCatalogProvenance` (with `el`, `packagesInCatalog`) now lives in the
|
|
15
|
-
// typed client bundle (L4) and is exposed as a page global; `var sessions = []`
|
|
16
|
-
// satisfies checks.ts's load-time `computeCheckStats()` read.
|
|
17
|
-
const tail = `return { renderCatalogProvenance };`;
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
|
|
19
|
-
const factory = new Function('var sessions = [];\n' + DASHBOARD_CLIENT_BUNDLE + tail);
|
|
20
|
-
return factory();
|
|
21
|
-
}
|
|
22
|
-
function occ(pkg, name) {
|
|
23
|
-
return {
|
|
24
|
-
qualifiedName: name,
|
|
25
|
-
simpleName: name,
|
|
26
|
-
bodyHash: pkg + ':' + name,
|
|
27
|
-
filePath: 'packages/' + pkg + '/src/' + name + '.ts',
|
|
28
|
-
package: '@opensip-cli/' + pkg,
|
|
29
|
-
line: 1,
|
|
30
|
-
column: 0,
|
|
31
|
-
endLine: 5,
|
|
32
|
-
kind: 'function-declaration',
|
|
33
|
-
params: [],
|
|
34
|
-
returnType: null,
|
|
35
|
-
enclosingClass: null,
|
|
36
|
-
decorators: [],
|
|
37
|
-
visibility: 'exported',
|
|
38
|
-
inTestFile: false,
|
|
39
|
-
definedInGenerated: false,
|
|
40
|
-
calls: [],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function catalog(over) {
|
|
44
|
-
return {
|
|
45
|
-
version: '3.0',
|
|
46
|
-
tool: 'graph',
|
|
47
|
-
language: 'typescript',
|
|
48
|
-
builtAt: new Date().toISOString(),
|
|
49
|
-
functions: {},
|
|
50
|
-
...over,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
document.body.innerHTML = '';
|
|
55
|
-
});
|
|
56
|
-
describe('catalog provenance bar', () => {
|
|
57
|
-
it('shows a single-package scope (the scoped-run footgun) with the package name inline', () => {
|
|
58
|
-
const env = loadEnv();
|
|
59
|
-
const host = document.createElement('div');
|
|
60
|
-
env.renderCatalogProvenance(host, catalog({
|
|
61
|
-
cacheKey: 'eng=0.1.0|mode=exact|ts-x',
|
|
62
|
-
functions: { a: [occ('contracts', 'a')], b: [occ('contracts', 'b')] },
|
|
63
|
-
}));
|
|
64
|
-
const bar = host.querySelector('.catalog-provenance');
|
|
65
|
-
expect(bar).not.toBeNull();
|
|
66
|
-
const text = bar?.textContent ?? '';
|
|
67
|
-
expect(text).toContain('1 package');
|
|
68
|
-
expect(text).toContain('contracts');
|
|
69
|
-
// 2 occurrences across the single package.
|
|
70
|
-
expect(text).toContain('2');
|
|
71
|
-
// engine parsed from the cache key.
|
|
72
|
-
expect(text.toLowerCase()).toContain('exact');
|
|
73
|
-
});
|
|
74
|
-
it('shows the full multi-package scope as a count (not an inline list)', () => {
|
|
75
|
-
const env = loadEnv();
|
|
76
|
-
const host = document.createElement('div');
|
|
77
|
-
const functions = {};
|
|
78
|
-
for (const p of ['core', 'cli', 'contracts', 'datastore', 'output', 'targeting']) {
|
|
79
|
-
functions[p] = [occ(p, p + 'Fn')];
|
|
80
|
-
}
|
|
81
|
-
env.renderCatalogProvenance(host, catalog({ cacheKey: 'eng=0.1.0|mode=sharded|s-34', functions }));
|
|
82
|
-
const text = host.querySelector('.catalog-provenance')?.textContent ?? '';
|
|
83
|
-
expect(text).toContain('6 packages');
|
|
84
|
-
// Names are NOT inlined past the small-set threshold (kept compact).
|
|
85
|
-
expect(text).not.toContain(': core,');
|
|
86
|
-
expect(text.toLowerCase()).toContain('sharded');
|
|
87
|
-
});
|
|
88
|
-
it('flags fast (approximate) resolution and omits the flag for exact', () => {
|
|
89
|
-
const env = loadEnv();
|
|
90
|
-
const fastHost = document.createElement('div');
|
|
91
|
-
env.renderCatalogProvenance(fastHost, catalog({
|
|
92
|
-
cacheKey: 'eng=0.1.0|mode=exact|x',
|
|
93
|
-
resolutionMode: 'fast',
|
|
94
|
-
functions: { a: [occ('core', 'a')] },
|
|
95
|
-
}));
|
|
96
|
-
expect(fastHost.querySelector('.catalog-provenance')?.textContent ?? '').toContain('approximate');
|
|
97
|
-
const exactHost = document.createElement('div');
|
|
98
|
-
env.renderCatalogProvenance(exactHost, catalog({
|
|
99
|
-
cacheKey: 'eng=0.1.0|mode=exact|x',
|
|
100
|
-
resolutionMode: 'exact',
|
|
101
|
-
functions: { a: [occ('core', 'a')] },
|
|
102
|
-
}));
|
|
103
|
-
expect(exactHost.querySelector('.catalog-provenance')?.textContent ?? '').not.toContain('approximate');
|
|
104
|
-
});
|
|
105
|
-
it('no-ops when there is no catalog', () => {
|
|
106
|
-
const env = loadEnv();
|
|
107
|
-
const host = document.createElement('div');
|
|
108
|
-
env.renderCatalogProvenance(host, null);
|
|
109
|
-
expect(host.querySelector('.catalog-provenance')).toBeNull();
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
//# sourceMappingURL=catalog-provenance.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-provenance.test.js","sourceRoot":"","sources":["../../src/__tests__/catalog-provenance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @vitest-environment jsdom
|
|
3
|
-
*
|
|
4
|
-
* Coupling-grid attribution: a callee whose body is duplicated across
|
|
5
|
-
* packages must be attributed to the caller's own package, not the
|
|
6
|
-
* byBodyHash collision winner.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=coupling-attribution.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coupling-attribution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/coupling-attribution.test.ts"],"names":[],"mappings":"AACA;;;;;;GAMG"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/// <reference lib="dom" />
|
|
2
|
-
/**
|
|
3
|
-
* @vitest-environment jsdom
|
|
4
|
-
*
|
|
5
|
-
* Coupling-grid attribution: a callee whose body is duplicated across
|
|
6
|
-
* packages must be attributed to the caller's own package, not the
|
|
7
|
-
* byBodyHash collision winner.
|
|
8
|
-
*/
|
|
9
|
-
import { describe, expect, it } from 'vitest';
|
|
10
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
11
|
-
function loadCouplingEnv() {
|
|
12
|
-
// `buildIndexes` / `resolveCalleeOcc` (and the whole Code Paths panel + views)
|
|
13
|
-
// now live in the typed client bundle (L4) and are exposed as page globals.
|
|
14
|
-
// `var sessions = []` / `var EDITOR_PROTOCOL = null` satisfy the bundle's
|
|
15
|
-
// load-time reads.
|
|
16
|
-
const head = `
|
|
17
|
-
var sessions = [];
|
|
18
|
-
var EDITOR_PROTOCOL = null;
|
|
19
|
-
`;
|
|
20
|
-
const tail = `return { buildIndexes, resolveCalleeOcc };`;
|
|
21
|
-
// eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
|
|
22
|
-
const factory = new Function(head + DASHBOARD_CLIENT_BUNDLE + tail);
|
|
23
|
-
return factory();
|
|
24
|
-
}
|
|
25
|
-
function occ(over) {
|
|
26
|
-
return {
|
|
27
|
-
simpleName: 'f',
|
|
28
|
-
line: 1,
|
|
29
|
-
column: 0,
|
|
30
|
-
endLine: 2,
|
|
31
|
-
kind: 'function-declaration',
|
|
32
|
-
params: [],
|
|
33
|
-
returnType: null,
|
|
34
|
-
enclosingClass: null,
|
|
35
|
-
decorators: [],
|
|
36
|
-
visibility: 'exported',
|
|
37
|
-
inTestFile: false,
|
|
38
|
-
definedInGenerated: false,
|
|
39
|
-
calls: [],
|
|
40
|
-
...over,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
describe('coupling callee attribution', () => {
|
|
44
|
-
it('attributes a duplicated-body callee to the caller’s own package', () => {
|
|
45
|
-
const env = loadCouplingEnv();
|
|
46
|
-
// Same body 'H' in pkg-a and pkg-b; caller is in pkg-a.
|
|
47
|
-
const aF = occ({
|
|
48
|
-
bodyHash: 'H',
|
|
49
|
-
filePath: 'packages/pkg-a/src/f.ts',
|
|
50
|
-
qualifiedName: 'packages/pkg-a/src/f.f',
|
|
51
|
-
});
|
|
52
|
-
const bF = occ({
|
|
53
|
-
bodyHash: 'H',
|
|
54
|
-
filePath: 'packages/pkg-b/src/f.ts',
|
|
55
|
-
qualifiedName: 'packages/pkg-b/src/f.f',
|
|
56
|
-
});
|
|
57
|
-
const caller = occ({
|
|
58
|
-
bodyHash: 'C',
|
|
59
|
-
filePath: 'packages/pkg-a/src/call.ts',
|
|
60
|
-
qualifiedName: 'packages/pkg-a/src/call.caller',
|
|
61
|
-
simpleName: 'caller',
|
|
62
|
-
calls: [
|
|
63
|
-
{ to: ['H'], line: 1, column: 0, resolution: 'static', confidence: 'high', text: 'f()' },
|
|
64
|
-
],
|
|
65
|
-
});
|
|
66
|
-
const catalog = { functions: { f: [aF, bF], caller: [caller] } };
|
|
67
|
-
const indexes = env.buildIndexes(catalog);
|
|
68
|
-
const resolved = env.resolveCalleeOcc('H', caller, indexes);
|
|
69
|
-
expect(resolved?.filePath).toBe('packages/pkg-a/src/f.ts'); // caller's package, not the collision winner
|
|
70
|
-
});
|
|
71
|
-
it('falls back deterministically (lowest qualifiedName) when no same-package candidate', () => {
|
|
72
|
-
const env = loadCouplingEnv();
|
|
73
|
-
const aF = occ({
|
|
74
|
-
bodyHash: 'H',
|
|
75
|
-
filePath: 'packages/pkg-a/src/f.ts',
|
|
76
|
-
qualifiedName: 'packages/pkg-a/src/f.f',
|
|
77
|
-
});
|
|
78
|
-
const bF = occ({
|
|
79
|
-
bodyHash: 'H',
|
|
80
|
-
filePath: 'packages/pkg-b/src/f.ts',
|
|
81
|
-
qualifiedName: 'packages/pkg-b/src/f.f',
|
|
82
|
-
});
|
|
83
|
-
const caller = occ({
|
|
84
|
-
bodyHash: 'C',
|
|
85
|
-
filePath: 'packages/pkg-z/src/call.ts',
|
|
86
|
-
qualifiedName: 'packages/pkg-z/src/call.caller',
|
|
87
|
-
simpleName: 'caller',
|
|
88
|
-
});
|
|
89
|
-
const catalog = { functions: { f: [bF, aF], caller: [caller] } };
|
|
90
|
-
const indexes = env.buildIndexes(catalog);
|
|
91
|
-
const resolved = env.resolveCalleeOcc('H', caller, indexes);
|
|
92
|
-
expect(resolved?.qualifiedName).toBe('packages/pkg-a/src/f.f'); // deterministic lowest
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=coupling-attribution.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coupling-attribution.test.js","sourceRoot":"","sources":["../../src/__tests__/coupling-attribution.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bundle-weight CI gate.
|
|
3
|
-
*
|
|
4
|
-
* The Graph view ships a vendored Cytoscape renderer (~482 KB) plus a
|
|
5
|
-
* per-report view-model JSON blob. These assertions fail CI if either
|
|
6
|
-
* grows past the Phase 0 budget, so a careless dependency bump or schema
|
|
7
|
-
* bloat is caught before it lands in every generated report.
|
|
8
|
-
*
|
|
9
|
-
* The Visualization view's JS now lives in the typed client bundle (L4,
|
|
10
|
-
* `DASHBOARD_CLIENT_BUNDLE`) rather than a standalone `dashboardViewGraphJs()`
|
|
11
|
-
* emitter, so the "our own JS" budget is measured against the WHOLE client
|
|
12
|
-
* bundle (every migrated module) rather than the single view's string.
|
|
13
|
-
*
|
|
14
|
-
* Budgets (Phase 0 §1 / §4.5):
|
|
15
|
-
* - vendor bundle raw: <= 600 KB
|
|
16
|
-
* - vendor + our client bundle: <= 700 KB (BUDGET_KB + 100, accounts for the
|
|
17
|
-
* whole migrated client bundle)
|
|
18
|
-
* - client bundle alone: < 200 KB (guards against a data blob sneaking
|
|
19
|
-
* into our hand-written JS)
|
|
20
|
-
* - view-model JSON per element: within the §4.5 per-node/edge estimates
|
|
21
|
-
*/
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=dashboard-bundle-weight.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-bundle-weight.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-bundle-weight.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bundle-weight CI gate.
|
|
3
|
-
*
|
|
4
|
-
* The Graph view ships a vendored Cytoscape renderer (~482 KB) plus a
|
|
5
|
-
* per-report view-model JSON blob. These assertions fail CI if either
|
|
6
|
-
* grows past the Phase 0 budget, so a careless dependency bump or schema
|
|
7
|
-
* bloat is caught before it lands in every generated report.
|
|
8
|
-
*
|
|
9
|
-
* The Visualization view's JS now lives in the typed client bundle (L4,
|
|
10
|
-
* `DASHBOARD_CLIENT_BUNDLE`) rather than a standalone `dashboardViewGraphJs()`
|
|
11
|
-
* emitter, so the "our own JS" budget is measured against the WHOLE client
|
|
12
|
-
* bundle (every migrated module) rather than the single view's string.
|
|
13
|
-
*
|
|
14
|
-
* Budgets (Phase 0 §1 / §4.5):
|
|
15
|
-
* - vendor bundle raw: <= 600 KB
|
|
16
|
-
* - vendor + our client bundle: <= 700 KB (BUDGET_KB + 100, accounts for the
|
|
17
|
-
* whole migrated client bundle)
|
|
18
|
-
* - client bundle alone: < 200 KB (guards against a data blob sneaking
|
|
19
|
-
* into our hand-written JS)
|
|
20
|
-
* - view-model JSON per element: within the §4.5 per-node/edge estimates
|
|
21
|
-
*/
|
|
22
|
-
import { readFileSync } from 'node:fs';
|
|
23
|
-
import { dirname, join } from 'node:path';
|
|
24
|
-
import { fileURLToPath } from 'node:url';
|
|
25
|
-
import { describe, expect, it } from 'vitest';
|
|
26
|
-
import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
|
|
27
|
-
import { dashboardCytoscapeVendorJs } from '../code-paths/cytoscape-vendor.js';
|
|
28
|
-
import { projectCatalogToGraphViewModel } from '../code-paths/graph-view-model.js';
|
|
29
|
-
/** Phase 0 §1 raw-byte budget for the vendor bundle. */
|
|
30
|
-
const BUDGET_KB = 600;
|
|
31
|
-
const KB = 1024;
|
|
32
|
-
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
33
|
-
function loadFixture() {
|
|
34
|
-
const candidates = [
|
|
35
|
-
join(HERE, 'fixtures', 'catalog-small.json'),
|
|
36
|
-
join(HERE, '..', '..', 'src', '__tests__', 'fixtures', 'catalog-small.json'),
|
|
37
|
-
];
|
|
38
|
-
for (const p of candidates) {
|
|
39
|
-
try {
|
|
40
|
-
return JSON.parse(readFileSync(p, 'utf8'));
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// next
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
throw new Error('catalog-small.json fixture not found');
|
|
47
|
-
}
|
|
48
|
-
function size(s) {
|
|
49
|
-
return Buffer.byteLength(s, 'utf8');
|
|
50
|
-
}
|
|
51
|
-
describe('bundle weight gate', () => {
|
|
52
|
-
it('vendor bundle stays within the raw-byte budget', () => {
|
|
53
|
-
const bytes = size(dashboardCytoscapeVendorJs());
|
|
54
|
-
const kb = Math.round(bytes / KB);
|
|
55
|
-
expect(bytes, `vendor bundle ${kb} KB exceeds ${BUDGET_KB} KB budget`).toBeLessThanOrEqual(BUDGET_KB * KB);
|
|
56
|
-
});
|
|
57
|
-
it('vendor + our client bundle together stay within budget + 100 KB', () => {
|
|
58
|
-
const bytes = size(dashboardCytoscapeVendorJs()) + size(DASHBOARD_CLIENT_BUNDLE);
|
|
59
|
-
const kb = Math.round(bytes / KB);
|
|
60
|
-
const limit = (BUDGET_KB + 100) * KB;
|
|
61
|
-
expect(bytes, `vendor + client bundle ${kb} KB exceeds ${BUDGET_KB + 100} KB budget`).toBeLessThanOrEqual(limit);
|
|
62
|
-
});
|
|
63
|
-
it('our client bundle is a small fraction of the vendor weight', () => {
|
|
64
|
-
// Guard against our hand-written client JS ballooning (e.g. an accidental
|
|
65
|
-
// inlined data blob). The whole migrated bundle is tens of KB, not hundreds.
|
|
66
|
-
const bundleKb = size(DASHBOARD_CLIENT_BUNDLE) / KB;
|
|
67
|
-
expect(bundleKb).toBeLessThan(200);
|
|
68
|
-
});
|
|
69
|
-
it('projected (package-level) view-model JSON stays within the per-node/edge byte budget', () => {
|
|
70
|
-
const vm = projectCatalogToGraphViewModel(loadFixture());
|
|
71
|
-
const bytes = size(JSON.stringify(vm));
|
|
72
|
-
// Package nodes are slim ({id,label,totalCoupling,sccId}) and there are
|
|
73
|
-
// few of them — fixed JSON overhead dominates at this scale, so the
|
|
74
|
-
// per-element estimate carries a generous constant floor.
|
|
75
|
-
const budget = Math.round((vm.nodes.length * 160 + vm.edges.length * 100) * 1.5) + 1024;
|
|
76
|
-
const perNode = vm.nodes.length > 0 ? bytes / vm.nodes.length : 0;
|
|
77
|
-
expect(bytes, `view-model ${bytes} B (~${Math.round(perNode)} B/node) exceeds ${budget} B budget`).toBeLessThan(budget);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
//# sourceMappingURL=dashboard-bundle-weight.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-bundle-weight.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-bundle-weight.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-cell-containment.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-cell-containment.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Containment contract for `.data-table` cells.
|
|
3
|
-
*
|
|
4
|
-
* Long free-text columns (finding messages, file paths, and the code
|
|
5
|
-
* snippets inside suggestions) used to overrun the card edge and bleed
|
|
6
|
-
* past the page boundary, because the table default was
|
|
7
|
-
* `white-space: nowrap` with no break behaviour. The fix flips the
|
|
8
|
-
* BODY-cell default to wrap-and-break, with an explicit `.cell-nowrap`
|
|
9
|
-
* opt-out for short metric columns.
|
|
10
|
-
*
|
|
11
|
-
* This guards the systemic invariant: no view can bleed horizontally
|
|
12
|
-
* unless it deliberately opts a long-text cell out of wrapping.
|
|
13
|
-
*/
|
|
14
|
-
import { describe, it, expect } from 'vitest';
|
|
15
|
-
import { dashboardCss } from '../css.js';
|
|
16
|
-
import { generateDashboardHtml } from '../generator.js';
|
|
17
|
-
// Collapse whitespace so the assertions don't depend on formatting.
|
|
18
|
-
const css = dashboardCss().replaceAll(/\s+/g, ' ');
|
|
19
|
-
describe('data-table cell containment contract', () => {
|
|
20
|
-
it('body cells wrap and break long unbreakable tokens by default', () => {
|
|
21
|
-
expect(css).toContain('.data-table td { white-space: normal; overflow-wrap: anywhere; }');
|
|
22
|
-
});
|
|
23
|
-
it('exposes a .cell-nowrap opt-out for short metric columns', () => {
|
|
24
|
-
expect(css).toContain('.data-table td.cell-nowrap { white-space: nowrap; }');
|
|
25
|
-
});
|
|
26
|
-
it('keeps header labels on a single line', () => {
|
|
27
|
-
expect(css).toContain('.data-table th { white-space: nowrap; }');
|
|
28
|
-
});
|
|
29
|
-
it('does not re-introduce a blanket nowrap on body cells', () => {
|
|
30
|
-
// The old footgun: a rule forcing every td onto one line. If this
|
|
31
|
-
// reappears, free-text columns overflow again.
|
|
32
|
-
expect(css).not.toContain('.data-table td, .data-table th { white-space: nowrap; }');
|
|
33
|
-
});
|
|
34
|
-
it('the session timestamp cell opts out via .cell-nowrap', () => {
|
|
35
|
-
// Guards the view wiring: short, space-containing cells (timestamps)
|
|
36
|
-
// must stay on one line under the wrap-by-default contract. The session /
|
|
37
|
-
// overview renderers now live in the bundled, esbuild-emitted client modules
|
|
38
|
-
// (L4) — the timestamp cell is `el('td', { class: 'cell-nowrap', … })`, so
|
|
39
|
-
// match the key/value rather than the legacy single-quote spelling.
|
|
40
|
-
const html = generateDashboardHtml({ sessions: [] });
|
|
41
|
-
expect(html).toContain('class: "cell-nowrap"');
|
|
42
|
-
});
|
|
43
|
-
it('the coupling matrix (the one non-.data-table table) stays contained by its own scroll wrapper', () => {
|
|
44
|
-
// The coupling grid deliberately opts out of the .data-table contract
|
|
45
|
-
// (it is a wide 2D matrix, not free-text rows). Its containment relies
|
|
46
|
-
// on .coupling-scroll bounding it to the card instead of bleeding past
|
|
47
|
-
// the page. Pin that so the opt-out keeps its own safety net.
|
|
48
|
-
expect(css).toContain('.coupling-scroll { overflow: auto;');
|
|
49
|
-
expect(css).toContain('max-width: 100%;');
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=dashboard-cell-containment.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-cell-containment.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-cell-containment.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,oEAAoE;AACpE,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnD,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,kEAAkE;QAClE,+CAA+C;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,yDAAyD,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,qEAAqE;QACrE,0EAA0E;QAC1E,6EAA6E;QAC7E,2EAA2E;QAC3E,oEAAoE;QACpE,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+FAA+F,EAAE,GAAG,EAAE;QACvG,sEAAsE;QACtE,uEAAuE;QACvE,uEAAuE;QACvE,8DAA8D;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vendored Cytoscape emitter — smoke + byte-size guard.
|
|
3
|
-
*
|
|
4
|
-
* The emitter reads the committed `src/vendor/cytoscape-bundle.js` blob
|
|
5
|
-
* and returns it verbatim. These tests assert the version-stamp banner is
|
|
6
|
-
* present, the renderer globals are declared, and the raw size stays
|
|
7
|
-
* within the Phase 0 budget so a careless version bump fails CI.
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=dashboard-cytoscape-vendor.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-cytoscape-vendor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-cytoscape-vendor.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|