@opensip-cli/dashboard 0.1.10 → 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 +4 -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/code-paths/graph-view-model.js +0 -1
- package/dist/code-paths/graph-view-model.js.map +1 -1
- package/dist/css/theme.js +1 -1
- package/dist/generator.d.ts +2 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +10 -4
- 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/dist/tool-tabs-registrations.js +10 -0
- package/dist/tool-tabs-registrations.js.map +1 -1
- 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 -332
- 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/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"}
|
|
@@ -164,7 +164,6 @@ function bumpEdge(edgeByKey, source, target) {
|
|
|
164
164
|
*/
|
|
165
165
|
function deriveNodesAndEdges(packageByHash, edgeByKey) {
|
|
166
166
|
const nodeById = new Map();
|
|
167
|
-
// @fitness-ignore-next-line toctou-race-condition -- synchronous single-pass projector; `nodeById` is a local Map with no async/concurrent access, so there is no time-of-check/time-of-use window between the get and the set.
|
|
168
167
|
const ensure = (id) => {
|
|
169
168
|
let n = nodeById.get(id);
|
|
170
169
|
if (!n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-view-model.js","sourceRoot":"","sources":["../../src/code-paths/graph-view-model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"graph-view-model.js","sourceRoot":"","sources":["../../src/code-paths/graph-view-model.ts"],"names":[],"mappings":"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"}
|
package/dist/css/theme.js
CHANGED
|
@@ -10,7 +10,7 @@ export function dashboardCssTheme() {
|
|
|
10
10
|
--bg: #1a1210; --bg-surface: #231a16; --bg-card: #231a16;
|
|
11
11
|
--bg-hover: #3a2e27; --text: #f4ede5; --text-secondary: #e6ddd2;
|
|
12
12
|
--text-muted: #c0b2a2; --text-dim: #958474; --accent: #c49a6c;
|
|
13
|
-
--accent-fitness: #7ca068; --accent-sim: #9b8aa5;
|
|
13
|
+
--accent-fitness: #7ca068; --accent-sim: #9b8aa5; --accent-yagni: #6f9fb0;
|
|
14
14
|
--success: #8fbc8f; --success-light: rgba(143,188,143,0.2);
|
|
15
15
|
--warning: #d4a574; --warning-light: rgba(212,165,116,0.2);
|
|
16
16
|
--error: #c75b4a; --error-light: rgba(199,91,74,0.2);
|
package/dist/generator.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export interface DashboardInput {
|
|
|
28
28
|
graphRecipeCatalog?: readonly unknown[];
|
|
29
29
|
simScenarioCatalog?: readonly unknown[];
|
|
30
30
|
simRecipeCatalog?: readonly unknown[];
|
|
31
|
+
yagniSummary?: unknown;
|
|
32
|
+
yagniCatalog?: readonly unknown[];
|
|
31
33
|
editorProtocol?: string | null;
|
|
32
34
|
}
|
|
33
35
|
/** Renders a self-contained HTML dashboard string from sessions and catalog inputs. */
|
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
|
|
@@ -62,7 +63,7 @@ function serializeOptionalBlob(id, value, kind) {
|
|
|
62
63
|
}
|
|
63
64
|
/** Renders a self-contained HTML dashboard string from sessions and catalog inputs. */
|
|
64
65
|
export function generateDashboardHtml(input) {
|
|
65
|
-
const { sessions, checkCatalog = [], recipeCatalog = [], graphCatalog = null, graphRuleCatalog = [], graphRecipeCatalog = [], simScenarioCatalog = [], simRecipeCatalog = [], editorProtocol = null, } = input;
|
|
66
|
+
const { sessions, checkCatalog = [], recipeCatalog = [], graphCatalog = null, graphRuleCatalog = [], graphRecipeCatalog = [], simScenarioCatalog = [], simRecipeCatalog = [], yagniSummary = null, yagniCatalog = [], editorProtocol = null, } = input;
|
|
66
67
|
const latest = sessions[0];
|
|
67
68
|
// Coerce score to a finite number before interpolating into the <title>
|
|
68
69
|
// tag — `latest.score` is typed `number` but originates from a SQLite
|
|
@@ -77,6 +78,8 @@ export function generateDashboardHtml(input) {
|
|
|
77
78
|
const safeGraphRecipeCatalogJson = escapeForScriptContext(JSON.stringify(graphRecipeCatalog));
|
|
78
79
|
const safeSimScenarioCatalogJson = escapeForScriptContext(JSON.stringify(simScenarioCatalog));
|
|
79
80
|
const safeSimRecipeCatalogJson = escapeForScriptContext(JSON.stringify(simRecipeCatalog));
|
|
81
|
+
const safeYagniSummaryJson = escapeForScriptContext(JSON.stringify(yagniSummary));
|
|
82
|
+
const safeYagniCatalogJson = escapeForScriptContext(JSON.stringify(yagniCatalog));
|
|
80
83
|
const graphCatalogBlock = serializeOptionalBlob('graph-catalog', graphCatalog, 'json');
|
|
81
84
|
// The Visualization view (view-graph.ts) consumes a slim, pre-projected
|
|
82
85
|
// view-model rather than the raw catalog: projection aggregates the
|
|
@@ -112,7 +115,7 @@ export function generateDashboardHtml(input) {
|
|
|
112
115
|
<meta charset="utf-8">
|
|
113
116
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
114
117
|
<title>OpenSIP CLI${latest ? ` — Pass Rate: ${latestScoreSafe}%` : ''}</title>
|
|
115
|
-
<link rel="icon" type="image/svg+xml" href="
|
|
118
|
+
<link rel="icon" type="image/svg+xml" href="${REPORT_CUP_FAVICON_DATA_URI}">
|
|
116
119
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
117
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">
|
|
118
121
|
<style>
|
|
@@ -122,8 +125,8 @@ ${dashboardCss()}
|
|
|
122
125
|
<body>
|
|
123
126
|
|
|
124
127
|
<div class="header">
|
|
125
|
-
<span class="header-icon"
|
|
126
|
-
<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>
|
|
127
130
|
</div>
|
|
128
131
|
|
|
129
132
|
<div class="tab-bar" id="tab-bar">
|
|
@@ -146,9 +149,12 @@ const graphRuleCatalog = ${safeGraphRuleCatalogJson};
|
|
|
146
149
|
const graphRecipeCatalog = ${safeGraphRecipeCatalogJson};
|
|
147
150
|
const simScenarioCatalog = ${safeSimScenarioCatalogJson};
|
|
148
151
|
const simRecipeCatalog = ${safeSimRecipeCatalogJson};
|
|
152
|
+
const yagniSummary = ${safeYagniSummaryJson};
|
|
153
|
+
const yagniCatalog = ${safeYagniCatalogJson};
|
|
149
154
|
${editorProtocolJs}
|
|
150
155
|
const fitSessions = sessions.filter(s => s.tool === 'fit');
|
|
151
156
|
const simSessions = sessions.filter(s => s.tool === 'sim');
|
|
157
|
+
const yagniSessions = sessions.filter(s => s.tool === 'yagni');
|
|
152
158
|
// Registry-derived Overview maps (tool → badge style / tab id), consumed as page
|
|
153
159
|
// globals by the bundled overview renderer (src/client/overview.ts).
|
|
154
160
|
const toolBadgeStyles = ${toolBadgeStylesJson};
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oEAAoE;AACpE,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,gFAAgF;AAChF,yCAAyC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,8BAA8B,CAAC,CAAC,uCAAuC;
|
|
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"}
|
|
@@ -19,6 +19,8 @@ import { defineToolTab } from './tool-tab-registry.js';
|
|
|
19
19
|
const FITNESS_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.596 12.768a2 2 0 1 0 2.829-2.829l-1.768-1.767a2 2 0 0 0 2.828-2.829l-2.828-2.828a2 2 0 0 0-2.829 2.828l-1.767-1.768a2 2 0 1 0-2.829 2.829z"/><path d="m2.5 21.5 1.4-1.4"/><path d="m20.1 3.9 1.4-1.4"/><path d="M5.343 21.485a2 2 0 1 0 2.829-2.828l1.767 1.768a2 2 0 1 0 2.829-2.829l-6.364-6.364a2 2 0 1 0-2.829 2.829l1.768 1.767a2 2 0 0 0-2.828 2.829z"/><path d="m9.6 14.4 4.8-4.8"/></svg>`;
|
|
20
20
|
const SIMULATION_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"/><path d="M6.453 15h11.094"/><path d="M8.5 2h7"/></svg>`;
|
|
21
21
|
const CODE_PATHS_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><circle cx="5" cy="6" r="2"/><circle cx="19" cy="6" r="2"/><circle cx="5" cy="18" r="2"/><circle cx="19" cy="18" r="2"/><line x1="7" y1="7" x2="10" y2="10"/><line x1="17" y1="7" x2="14" y2="10"/><line x1="7" y1="17" x2="10" y2="14"/><line x1="17" y1="17" x2="14" y2="14"/></svg>`;
|
|
22
|
+
// Scissors — "cut what you aren't gonna need" (YAGNI is a reduction audit).
|
|
23
|
+
const YAGNI_ICON = String.raw `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><path d="M8.12 8.12 12 12"/><path d="M20 4 8.12 15.88"/><circle cx="6" cy="18" r="3"/><path d="M14.8 14.8 20 20"/></svg>`;
|
|
22
24
|
defineToolTab({
|
|
23
25
|
id: 'fitness',
|
|
24
26
|
tool: 'fit',
|
|
@@ -43,4 +45,12 @@ defineToolTab({
|
|
|
43
45
|
badgeStyle: 'background:rgba(196,154,108,0.15);color:var(--accent)',
|
|
44
46
|
renderFunctionName: 'renderCodePathsTab',
|
|
45
47
|
});
|
|
48
|
+
defineToolTab({
|
|
49
|
+
id: 'yagni',
|
|
50
|
+
tool: 'yagni',
|
|
51
|
+
label: 'YAGNI',
|
|
52
|
+
icon: YAGNI_ICON,
|
|
53
|
+
badgeStyle: 'background:rgba(111,159,176,0.15);color:var(--accent-yagni)',
|
|
54
|
+
renderFunctionName: 'renderYagniTab',
|
|
55
|
+
});
|
|
46
56
|
//# sourceMappingURL=tool-tabs-registrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-tabs-registrations.js","sourceRoot":"","sources":["../src/tool-tabs-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kiBAAkiB,CAAC;AAElkB,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,6TAA6T,CAAC;AAEhW,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,ycAAyc,CAAC;AAE5e,aAAa,CAAC;IACZ,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,+DAA+D;IAC3E,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,2DAA2D;IACvE,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,uDAAuD;IACnE,kBAAkB,EAAE,oBAAoB;CACzC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"tool-tabs-registrations.js","sourceRoot":"","sources":["../src/tool-tabs-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kiBAAkiB,CAAC;AAElkB,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,6TAA6T,CAAC;AAEhW,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA,ycAAyc,CAAC;AAE5e,4EAA4E;AAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA,ySAAyS,CAAC;AAEvU,aAAa,CAAC;IACZ,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE,+DAA+D;IAC3E,kBAAkB,EAAE,kBAAkB;CACvC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,2DAA2D;IACvE,kBAAkB,EAAE,qBAAqB;CAC1C,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,uDAAuD;IACnE,kBAAkB,EAAE,oBAAoB;CACzC,CAAC,CAAC;AAEH,aAAa,CAAC;IACZ,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,6DAA6D;IACzE,kBAAkB,EAAE,gBAAgB;CACrC,CAAC,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":"AAAA,2BAA2B;AAC3B;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAQxE,SAAS,OAAO;IACd,8EAA8E;IAC9E,gFAAgF;IAChF,8DAA8D;IAC9D,MAAM,IAAI,GAAG,qCAAqC,CAAC;IACnD,kIAAkI;IAClI,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,sBAAsB,GAAG,uBAAuB,GAAG,IAAI,CAAC,CAAC;IACtF,OAAO,OAAO,EAAS,CAAC;AAC1B,CAAC;AAED,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY;IACpC,OAAO;QACL,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;QAC1B,QAAQ,EAAE,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK;QACpD,OAAO,EAAE,eAAe,GAAG,GAAG;QAC9B,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,KAAK;QACjB,kBAAkB,EAAE,KAAK;QACzB,KAAK,EAAE,EAAE;KAC4B,CAAC;AAC1C,CAAC;AAED,SAAS,OAAO,CAAC,IAA2B;IAC1C,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACjC,SAAS,EAAE,EAAE;QACb,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,GAAG,CAAC,uBAAuB,CACzB,IAAI,EACJ,OAAO,CAAC;YACN,QAAQ,EAAE,2BAA2B;YACrC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE;SACtE,CAAC,CACH,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,EAAE,WAAW,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpC,2CAA2C;QAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,oCAAoC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,SAAS,GAA8C,EAAE,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;YACjF,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,uBAAuB,CACzB,IAAI,EACJ,OAAO,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,SAAS,EAAE,CAAC,CAChE,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrC,qEAAqE;QACrE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,GAAG,CAAC,uBAAuB,CACzB,QAAQ,EACR,OAAO,CAAC;YACN,QAAQ,EAAE,wBAAwB;YAClC,cAAc,EAAE,MAAM;YACtB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;SACrC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,SAAS,CAChF,aAAa,CACd,CAAC;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,GAAG,CAAC,uBAAuB,CACzB,SAAS,EACT,OAAO,CAAC;YACN,QAAQ,EAAE,wBAAwB;YAClC,cAAc,EAAE,OAAO;YACvB,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;SACrC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CACrF,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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"}
|