@opensip-cli/dashboard 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +3 -3
  2. package/dist/client-bundle.generated.d.ts.map +1 -1
  3. package/dist/client-bundle.generated.js +1 -1
  4. package/dist/client-bundle.generated.js.map +1 -1
  5. package/dist/generator.d.ts.map +1 -1
  6. package/dist/generator.js +4 -3
  7. package/dist/generator.js.map +1 -1
  8. package/dist/report-cup-icon.d.ts +17 -0
  9. package/dist/report-cup-icon.d.ts.map +1 -0
  10. package/dist/report-cup-icon.js +34 -0
  11. package/dist/report-cup-icon.js.map +1 -0
  12. package/package.json +3 -3
  13. package/dist/__tests__/catalog-provenance.test.d.ts +0 -11
  14. package/dist/__tests__/catalog-provenance.test.d.ts.map +0 -1
  15. package/dist/__tests__/catalog-provenance.test.js +0 -112
  16. package/dist/__tests__/catalog-provenance.test.js.map +0 -1
  17. package/dist/__tests__/coupling-attribution.test.d.ts +0 -9
  18. package/dist/__tests__/coupling-attribution.test.d.ts.map +0 -1
  19. package/dist/__tests__/coupling-attribution.test.js +0 -95
  20. package/dist/__tests__/coupling-attribution.test.js.map +0 -1
  21. package/dist/__tests__/dashboard-bundle-weight.test.d.ts +0 -23
  22. package/dist/__tests__/dashboard-bundle-weight.test.d.ts.map +0 -1
  23. package/dist/__tests__/dashboard-bundle-weight.test.js +0 -80
  24. package/dist/__tests__/dashboard-bundle-weight.test.js.map +0 -1
  25. package/dist/__tests__/dashboard-cell-containment.test.d.ts +0 -2
  26. package/dist/__tests__/dashboard-cell-containment.test.d.ts.map +0 -1
  27. package/dist/__tests__/dashboard-cell-containment.test.js +0 -52
  28. package/dist/__tests__/dashboard-cell-containment.test.js.map +0 -1
  29. package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts +0 -10
  30. package/dist/__tests__/dashboard-cytoscape-vendor.test.d.ts.map +0 -1
  31. package/dist/__tests__/dashboard-cytoscape-vendor.test.js +0 -40
  32. package/dist/__tests__/dashboard-cytoscape-vendor.test.js.map +0 -1
  33. package/dist/__tests__/dashboard-editor-link.test.d.ts +0 -14
  34. package/dist/__tests__/dashboard-editor-link.test.d.ts.map +0 -1
  35. package/dist/__tests__/dashboard-editor-link.test.js +0 -87
  36. package/dist/__tests__/dashboard-editor-link.test.js.map +0 -1
  37. package/dist/__tests__/dashboard-el.test.d.ts +0 -18
  38. package/dist/__tests__/dashboard-el.test.d.ts.map +0 -1
  39. package/dist/__tests__/dashboard-el.test.js +0 -90
  40. package/dist/__tests__/dashboard-el.test.js.map +0 -1
  41. package/dist/__tests__/dashboard-filters.test.d.ts +0 -9
  42. package/dist/__tests__/dashboard-filters.test.d.ts.map +0 -1
  43. package/dist/__tests__/dashboard-filters.test.js +0 -87
  44. package/dist/__tests__/dashboard-filters.test.js.map +0 -1
  45. package/dist/__tests__/dashboard-function-card-singleton.test.d.ts +0 -9
  46. package/dist/__tests__/dashboard-function-card-singleton.test.d.ts.map +0 -1
  47. package/dist/__tests__/dashboard-function-card-singleton.test.js +0 -75
  48. package/dist/__tests__/dashboard-function-card-singleton.test.js.map +0 -1
  49. package/dist/__tests__/dashboard-function-card.test.d.ts +0 -10
  50. package/dist/__tests__/dashboard-function-card.test.d.ts.map +0 -1
  51. package/dist/__tests__/dashboard-function-card.test.js +0 -439
  52. package/dist/__tests__/dashboard-function-card.test.js.map +0 -1
  53. package/dist/__tests__/dashboard-function-row.test.d.ts +0 -11
  54. package/dist/__tests__/dashboard-function-row.test.d.ts.map +0 -1
  55. package/dist/__tests__/dashboard-function-row.test.js +0 -102
  56. package/dist/__tests__/dashboard-function-row.test.js.map +0 -1
  57. package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts +0 -9
  58. package/dist/__tests__/dashboard-generator-graph-catalog.test.d.ts.map +0 -1
  59. package/dist/__tests__/dashboard-generator-graph-catalog.test.js +0 -77
  60. package/dist/__tests__/dashboard-generator-graph-catalog.test.js.map +0 -1
  61. package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts +0 -13
  62. package/dist/__tests__/dashboard-graph-offline.integration.test.d.ts.map +0 -1
  63. package/dist/__tests__/dashboard-graph-offline.integration.test.js +0 -57
  64. package/dist/__tests__/dashboard-graph-offline.integration.test.js.map +0 -1
  65. package/dist/__tests__/dashboard-graph-scc.test.d.ts +0 -17
  66. package/dist/__tests__/dashboard-graph-scc.test.d.ts.map +0 -1
  67. package/dist/__tests__/dashboard-graph-scc.test.js +0 -89
  68. package/dist/__tests__/dashboard-graph-scc.test.js.map +0 -1
  69. package/dist/__tests__/dashboard-graph-view-model.test.d.ts +0 -12
  70. package/dist/__tests__/dashboard-graph-view-model.test.d.ts.map +0 -1
  71. package/dist/__tests__/dashboard-graph-view-model.test.js +0 -331
  72. package/dist/__tests__/dashboard-graph-view-model.test.js.map +0 -1
  73. package/dist/__tests__/dashboard-help-drawer.test.d.ts +0 -9
  74. package/dist/__tests__/dashboard-help-drawer.test.d.ts.map +0 -1
  75. package/dist/__tests__/dashboard-help-drawer.test.js +0 -95
  76. package/dist/__tests__/dashboard-help-drawer.test.js.map +0 -1
  77. package/dist/__tests__/dashboard-html.test.d.ts +0 -2
  78. package/dist/__tests__/dashboard-html.test.d.ts.map +0 -1
  79. package/dist/__tests__/dashboard-html.test.js +0 -169
  80. package/dist/__tests__/dashboard-html.test.js.map +0 -1
  81. package/dist/__tests__/dashboard-indexes.test.d.ts +0 -11
  82. package/dist/__tests__/dashboard-indexes.test.d.ts.map +0 -1
  83. package/dist/__tests__/dashboard-indexes.test.js +0 -214
  84. package/dist/__tests__/dashboard-indexes.test.js.map +0 -1
  85. package/dist/__tests__/dashboard-pagination.test.d.ts +0 -15
  86. package/dist/__tests__/dashboard-pagination.test.d.ts.map +0 -1
  87. package/dist/__tests__/dashboard-pagination.test.js +0 -140
  88. package/dist/__tests__/dashboard-pagination.test.js.map +0 -1
  89. package/dist/__tests__/dashboard-path-utils.test.d.ts +0 -13
  90. package/dist/__tests__/dashboard-path-utils.test.d.ts.map +0 -1
  91. package/dist/__tests__/dashboard-path-utils.test.js +0 -62
  92. package/dist/__tests__/dashboard-path-utils.test.js.map +0 -1
  93. package/dist/__tests__/dashboard-search.test.d.ts +0 -10
  94. package/dist/__tests__/dashboard-search.test.d.ts.map +0 -1
  95. package/dist/__tests__/dashboard-search.test.js +0 -52
  96. package/dist/__tests__/dashboard-search.test.js.map +0 -1
  97. package/dist/__tests__/dashboard-sessions.test.d.ts +0 -14
  98. package/dist/__tests__/dashboard-sessions.test.d.ts.map +0 -1
  99. package/dist/__tests__/dashboard-sessions.test.js +0 -400
  100. package/dist/__tests__/dashboard-sessions.test.js.map +0 -1
  101. package/dist/__tests__/dashboard-trace.test.d.ts +0 -16
  102. package/dist/__tests__/dashboard-trace.test.d.ts.map +0 -1
  103. package/dist/__tests__/dashboard-trace.test.js +0 -170
  104. package/dist/__tests__/dashboard-trace.test.js.map +0 -1
  105. package/dist/__tests__/dashboard-validation.integration.test.d.ts +0 -14
  106. package/dist/__tests__/dashboard-validation.integration.test.d.ts.map +0 -1
  107. package/dist/__tests__/dashboard-validation.integration.test.js +0 -221
  108. package/dist/__tests__/dashboard-validation.integration.test.js.map +0 -1
  109. package/dist/__tests__/dashboard-view-conformance.test.d.ts +0 -12
  110. package/dist/__tests__/dashboard-view-conformance.test.d.ts.map +0 -1
  111. package/dist/__tests__/dashboard-view-conformance.test.js +0 -52
  112. package/dist/__tests__/dashboard-view-conformance.test.js.map +0 -1
  113. package/dist/__tests__/dashboard-view-coupling.test.d.ts +0 -7
  114. package/dist/__tests__/dashboard-view-coupling.test.d.ts.map +0 -1
  115. package/dist/__tests__/dashboard-view-coupling.test.js +0 -360
  116. package/dist/__tests__/dashboard-view-coupling.test.js.map +0 -1
  117. package/dist/__tests__/dashboard-view-distribution.test.d.ts +0 -10
  118. package/dist/__tests__/dashboard-view-distribution.test.d.ts.map +0 -1
  119. package/dist/__tests__/dashboard-view-distribution.test.js +0 -249
  120. package/dist/__tests__/dashboard-view-distribution.test.js.map +0 -1
  121. package/dist/__tests__/dashboard-view-graph.test.d.ts +0 -13
  122. package/dist/__tests__/dashboard-view-graph.test.d.ts.map +0 -1
  123. package/dist/__tests__/dashboard-view-graph.test.js +0 -299
  124. package/dist/__tests__/dashboard-view-graph.test.js.map +0 -1
  125. package/dist/__tests__/dashboard-view-template.test.d.ts +0 -20
  126. package/dist/__tests__/dashboard-view-template.test.d.ts.map +0 -1
  127. package/dist/__tests__/dashboard-view-template.test.js +0 -206
  128. package/dist/__tests__/dashboard-view-template.test.js.map +0 -1
  129. package/dist/__tests__/dashboard.test.d.ts +0 -2
  130. package/dist/__tests__/dashboard.test.d.ts.map +0 -1
  131. package/dist/__tests__/dashboard.test.js +0 -129
  132. package/dist/__tests__/dashboard.test.js.map +0 -1
  133. package/dist/__tests__/graph-tab.test.d.ts +0 -10
  134. package/dist/__tests__/graph-tab.test.d.ts.map +0 -1
  135. package/dist/__tests__/graph-tab.test.js +0 -78
  136. package/dist/__tests__/graph-tab.test.js.map +0 -1
  137. package/dist/__tests__/yagni-tab.test.d.ts +0 -13
  138. package/dist/__tests__/yagni-tab.test.d.ts.map +0 -1
  139. package/dist/__tests__/yagni-tab.test.js +0 -85
  140. package/dist/__tests__/yagni-tab.test.js.map +0 -1
  141. package/dist/client/el.d.ts +0 -17
  142. package/dist/client/el.d.ts.map +0 -1
  143. package/dist/client/el.js +0 -36
  144. package/dist/client/el.js.map +0 -1
  145. package/dist/code-paths/__tests__/views-registry.test.d.ts +0 -18
  146. package/dist/code-paths/__tests__/views-registry.test.d.ts.map +0 -1
  147. package/dist/code-paths/__tests__/views-registry.test.js +0 -41
  148. package/dist/code-paths/__tests__/views-registry.test.js.map +0 -1
@@ -1,439 +0,0 @@
1
- /// <reference lib="dom" />
2
- /**
3
- * @vitest-environment jsdom
4
- *
5
- * Function Card overlay behavior tests. Loads the typed client bundle (L4) —
6
- * which carries indexes + function-card + path-utils + editor-link + trace —
7
- * into the jsdom global scope, then exercises the public API (openFunctionCard,
8
- * closeFunctionCard, both exposed as page globals).
9
- */
10
- import { describe, expect, it, beforeEach } from 'vitest';
11
- import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
12
- function makeOcc(over) {
13
- return {
14
- qualifiedName: over.simpleName,
15
- filePath: 'packages/x/src/x.ts',
16
- line: 10,
17
- column: 0,
18
- endLine: 30,
19
- kind: 'function-declaration',
20
- params: [],
21
- returnType: null,
22
- enclosingClass: null,
23
- decorators: [],
24
- visibility: 'exported',
25
- inTestFile: false,
26
- definedInGenerated: false,
27
- calls: [],
28
- ...over,
29
- };
30
- }
31
- function bootDashboard(catalog) {
32
- // The bundle (with `el`, `buildIndexes`, `editorLinkUrl`, `traceFromEntry`,
33
- // path-utils, function-card) exposes openFunctionCard / closeFunctionCard on
34
- // globalThis. It reads `graphCatalog` / `graphIndexes` as free identifiers;
35
- // declare them (plus `EDITOR_PROTOCOL`, `sessions`) in the eval scope so the
36
- // bundle's IIFE closes over them, then seed graphCatalog / graphIndexes after
37
- // the bundle has defined `buildIndexes` and re-expose them on globalThis.
38
- const head = `
39
- var sessions = [];
40
- var EDITOR_PROTOCOL = null;
41
- var graphCatalog = null;
42
- var graphIndexes = null;
43
- `;
44
- const tail = `
45
- graphCatalog = ${JSON.stringify(catalog)};
46
- graphIndexes = buildIndexes(graphCatalog);
47
- globalThis.openFunctionCard = openFunctionCard;
48
- globalThis.closeFunctionCard = closeFunctionCard;
49
- globalThis.graphIndexes = graphIndexes;
50
- `;
51
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
52
- new Function(head + DASHBOARD_CLIENT_BUNDLE + tail).call(globalThis);
53
- }
54
- function w() {
55
- return globalThis;
56
- }
57
- beforeEach(() => {
58
- document.body.innerHTML = '';
59
- });
60
- describe('Function Card overlay', () => {
61
- it('opens with name + location for a function-declaration occurrence', () => {
62
- bootDashboard({
63
- version: '2.0',
64
- tool: 'graph',
65
- language: 'typescript',
66
- builtAt: 'now',
67
- functions: {
68
- resolveProjectPaths: [
69
- makeOcc({
70
- bodyHash: 'h1',
71
- simpleName: 'resolveProjectPaths',
72
- filePath: 'packages/core/src/lib/paths.ts',
73
- line: 78,
74
- endLine: 96,
75
- }),
76
- ],
77
- },
78
- });
79
- w().openFunctionCard('h1');
80
- const overlay = document.querySelector('.function-card-overlay');
81
- expect(overlay).not.toBeNull();
82
- expect(overlay.textContent).toContain('resolveProjectPaths');
83
- expect(overlay.textContent).toContain('packages/core/src/lib/paths.ts:78');
84
- expect(overlay.textContent).toContain('function-declaration');
85
- });
86
- it('renders a method shape (kind=method) correctly', () => {
87
- bootDashboard({
88
- version: '2.0',
89
- tool: 'graph',
90
- language: 'typescript',
91
- builtAt: 'now',
92
- functions: {
93
- format: [
94
- makeOcc({
95
- bodyHash: 'm1',
96
- simpleName: 'format',
97
- kind: 'method',
98
- enclosingClass: 'Logger',
99
- }),
100
- ],
101
- },
102
- });
103
- w().openFunctionCard('m1');
104
- expect(document.querySelector('.function-card-overlay').textContent).toContain('method');
105
- });
106
- it('renders an arrow shape', () => {
107
- bootDashboard({
108
- version: '2.0',
109
- tool: 'graph',
110
- language: 'typescript',
111
- builtAt: 'now',
112
- functions: {
113
- '<arrow:foo.ts:1:1>': [
114
- makeOcc({ bodyHash: 'a1', simpleName: '<arrow:foo.ts:1:1>', kind: 'arrow' }),
115
- ],
116
- },
117
- });
118
- w().openFunctionCard('a1');
119
- const overlay = document.querySelector('.function-card-overlay');
120
- // Synthetic names are collapsed to just the kind tag in the card
121
- // header; the full simpleName never appears verbatim.
122
- expect(overlay.querySelector('.function-card h3').textContent).toBe('<arrow>');
123
- expect(overlay.textContent).not.toContain('<arrow:foo.ts:1:1>');
124
- // The kind label still surfaces in the meta row.
125
- expect(overlay.querySelector('.fc-meta').textContent).toContain('arrow');
126
- });
127
- it('renders a getter and constructor with the right kind label', () => {
128
- bootDashboard({
129
- version: '2.0',
130
- tool: 'graph',
131
- language: 'typescript',
132
- builtAt: 'now',
133
- functions: {
134
- size: [makeOcc({ bodyHash: 'g1', simpleName: 'size', kind: 'getter' })],
135
- constructor: [makeOcc({ bodyHash: 'c1', simpleName: 'constructor', kind: 'constructor' })],
136
- },
137
- });
138
- w().openFunctionCard('g1');
139
- expect(document.querySelector('.function-card-overlay').textContent).toContain('getter');
140
- w().openFunctionCard('c1');
141
- expect(document.querySelector('.function-card-overlay').textContent).toContain('constructor');
142
- });
143
- it('groups callers by package and shows the right count', () => {
144
- bootDashboard({
145
- version: '2.0',
146
- tool: 'graph',
147
- language: 'typescript',
148
- builtAt: 'now',
149
- functions: {
150
- target: [makeOcc({ bodyHash: 't1', simpleName: 'target' })],
151
- a: [
152
- makeOcc({
153
- bodyHash: 'ca',
154
- simpleName: 'a',
155
- filePath: 'packages/cli/src/a.ts',
156
- calls: [
157
- {
158
- to: ['t1'],
159
- line: 1,
160
- column: 0,
161
- resolution: 'static',
162
- confidence: 'high',
163
- text: 'target()',
164
- },
165
- ],
166
- }),
167
- ],
168
- b: [
169
- makeOcc({
170
- bodyHash: 'cb',
171
- simpleName: 'b',
172
- filePath: 'packages/cli/src/b.ts',
173
- calls: [
174
- {
175
- to: ['t1'],
176
- line: 1,
177
- column: 0,
178
- resolution: 'static',
179
- confidence: 'high',
180
- text: 'target()',
181
- },
182
- ],
183
- }),
184
- ],
185
- c: [
186
- makeOcc({
187
- bodyHash: 'cc',
188
- simpleName: 'c',
189
- filePath: 'packages/contracts/src/c.ts',
190
- calls: [
191
- {
192
- to: ['t1'],
193
- line: 1,
194
- column: 0,
195
- resolution: 'static',
196
- confidence: 'high',
197
- text: 'target()',
198
- },
199
- ],
200
- }),
201
- ],
202
- d: [
203
- makeOcc({
204
- bodyHash: 'cd',
205
- simpleName: 'd',
206
- filePath: 'packages/contracts/src/d.ts',
207
- calls: [
208
- {
209
- to: ['t1'],
210
- line: 1,
211
- column: 0,
212
- resolution: 'static',
213
- confidence: 'high',
214
- text: 'target()',
215
- },
216
- ],
217
- }),
218
- ],
219
- e: [
220
- makeOcc({
221
- bodyHash: 'ce',
222
- simpleName: 'e',
223
- filePath: 'packages/contracts/src/e.ts',
224
- calls: [
225
- {
226
- to: ['t1'],
227
- line: 1,
228
- column: 0,
229
- resolution: 'static',
230
- confidence: 'high',
231
- text: 'target()',
232
- },
233
- ],
234
- }),
235
- ],
236
- f: [
237
- makeOcc({
238
- bodyHash: 'cf',
239
- simpleName: 'f',
240
- filePath: 'packages/contracts/src/f.ts',
241
- calls: [
242
- {
243
- to: ['t1'],
244
- line: 1,
245
- column: 0,
246
- resolution: 'static',
247
- confidence: 'high',
248
- text: 'target()',
249
- },
250
- ],
251
- }),
252
- ],
253
- g: [
254
- makeOcc({
255
- bodyHash: 'cg',
256
- simpleName: 'g',
257
- filePath: 'packages/contracts/src/g.ts',
258
- calls: [
259
- {
260
- to: ['t1'],
261
- line: 1,
262
- column: 0,
263
- resolution: 'static',
264
- confidence: 'high',
265
- text: 'target()',
266
- },
267
- ],
268
- }),
269
- ],
270
- },
271
- });
272
- w().openFunctionCard('t1');
273
- const text = document.querySelector('.function-card-overlay').textContent ?? '';
274
- expect(text).toContain('Callers (7)');
275
- expect(text).toContain('cli (2)');
276
- expect(text).toContain('contracts (5)');
277
- });
278
- it('shows "No callers in catalog." when there are zero callers', () => {
279
- bootDashboard({
280
- version: '2.0',
281
- tool: 'graph',
282
- language: 'typescript',
283
- builtAt: 'now',
284
- functions: { lonely: [makeOcc({ bodyHash: 'l1', simpleName: 'lonely' })] },
285
- });
286
- w().openFunctionCard('l1');
287
- expect(document.querySelector('.function-card-overlay').textContent).toContain('No callers in catalog.');
288
- });
289
- it('shows polymorphic callees as three resolved entries', () => {
290
- bootDashboard({
291
- version: '2.0',
292
- tool: 'graph',
293
- language: 'typescript',
294
- builtAt: 'now',
295
- functions: {
296
- f: [
297
- makeOcc({
298
- bodyHash: 'fh',
299
- simpleName: 'f',
300
- calls: [
301
- {
302
- to: ['h1', 'h2', 'h3'],
303
- line: 2,
304
- column: 0,
305
- resolution: 'method-dispatch',
306
- confidence: 'medium',
307
- text: 'x.foo()',
308
- },
309
- ],
310
- }),
311
- ],
312
- a: [makeOcc({ bodyHash: 'h1', simpleName: 'a' })],
313
- b: [makeOcc({ bodyHash: 'h2', simpleName: 'b' })],
314
- c: [makeOcc({ bodyHash: 'h3', simpleName: 'c' })],
315
- },
316
- });
317
- w().openFunctionCard('fh');
318
- const list = document
319
- .querySelectorAll('.function-card .fc-section')[1]
320
- .querySelectorAll('li[data-body-hash]');
321
- expect(list.length).toBe(3);
322
- });
323
- it('opening a caller swaps the overlay content (recursion uses a single overlay)', () => {
324
- bootDashboard({
325
- version: '2.0',
326
- tool: 'graph',
327
- language: 'typescript',
328
- builtAt: 'now',
329
- functions: {
330
- target: [makeOcc({ bodyHash: 't1', simpleName: 'target' })],
331
- caller: [
332
- makeOcc({
333
- bodyHash: 'cr',
334
- simpleName: 'caller',
335
- calls: [
336
- {
337
- to: ['t1'],
338
- line: 1,
339
- column: 0,
340
- resolution: 'static',
341
- confidence: 'high',
342
- text: 'target()',
343
- },
344
- ],
345
- }),
346
- ],
347
- },
348
- });
349
- w().openFunctionCard('t1');
350
- expect(document.querySelectorAll('.function-card-overlay').length).toBe(1);
351
- w().openFunctionCard('cr');
352
- expect(document.querySelectorAll('.function-card-overlay').length).toBe(1);
353
- expect(document.querySelector('.function-card-overlay').textContent).toContain('caller');
354
- });
355
- it('clicking a caller list item drills into that function (delegated listener)', () => {
356
- // Drill-in is now handled by ONE delegated listener on the overlay (the
357
- // graph:cycle break), not per-item onclick closures — this proves a real
358
- // click on a `li[data-body-hash]` still re-opens the target's card.
359
- bootDashboard({
360
- version: '2.0',
361
- tool: 'graph',
362
- language: 'typescript',
363
- builtAt: 'now',
364
- functions: {
365
- target: [makeOcc({ bodyHash: 't1', simpleName: 'target' })],
366
- theCaller: [
367
- makeOcc({
368
- bodyHash: 'cr',
369
- simpleName: 'theCaller',
370
- filePath: 'packages/cli/src/cr.ts',
371
- calls: [
372
- {
373
- to: ['t1'],
374
- line: 1,
375
- column: 0,
376
- resolution: 'static',
377
- confidence: 'high',
378
- text: 'target()',
379
- },
380
- ],
381
- }),
382
- ],
383
- },
384
- });
385
- w().openFunctionCard('t1');
386
- const overlay = document.querySelector('.function-card-overlay');
387
- expect(overlay.querySelector('.function-card h3').textContent).toBe('target');
388
- // The Callers section lists the caller as a clickable li[data-body-hash].
389
- const callerItem = overlay.querySelector('li[data-body-hash="cr"]');
390
- expect(callerItem).not.toBeNull();
391
- callerItem.dispatchEvent(new MouseEvent('click', { bubbles: true }));
392
- // Still a single overlay (singleton), now showing the caller's card.
393
- expect(document.querySelectorAll('.function-card-overlay').length).toBe(1);
394
- expect(document.querySelector('.function-card h3').textContent).toBe('theCaller');
395
- });
396
- it('clicking a non-item region inside the card does NOT close or drill', () => {
397
- bootDashboard({
398
- version: '2.0',
399
- tool: 'graph',
400
- language: 'typescript',
401
- builtAt: 'now',
402
- functions: { f: [makeOcc({ bodyHash: 'h', simpleName: 'f' })] },
403
- });
404
- w().openFunctionCard('h');
405
- const meta = document.querySelector('.fc-meta');
406
- meta.dispatchEvent(new MouseEvent('click', { bubbles: true }));
407
- // Card stays open and unchanged (the click bubbled to the overlay but matched
408
- // neither the backdrop nor a li[data-body-hash]).
409
- expect(document.querySelector('.function-card-overlay')).not.toBeNull();
410
- expect(document.querySelector('.function-card h3').textContent).toBe('f');
411
- });
412
- it('closeFunctionCard removes the overlay node', () => {
413
- bootDashboard({
414
- version: '2.0',
415
- tool: 'graph',
416
- language: 'typescript',
417
- builtAt: 'now',
418
- functions: { f: [makeOcc({ bodyHash: 'h', simpleName: 'f' })] },
419
- });
420
- w().openFunctionCard('h');
421
- expect(document.querySelector('.function-card-overlay')).not.toBeNull();
422
- w().closeFunctionCard();
423
- expect(document.querySelector('.function-card-overlay')).toBeNull();
424
- });
425
- it('clicking the overlay backdrop closes the card', () => {
426
- bootDashboard({
427
- version: '2.0',
428
- tool: 'graph',
429
- language: 'typescript',
430
- builtAt: 'now',
431
- functions: { f: [makeOcc({ bodyHash: 'h', simpleName: 'f' })] },
432
- });
433
- w().openFunctionCard('h');
434
- const overlay = document.querySelector('.function-card-overlay');
435
- overlay.dispatchEvent(new MouseEvent('click', { bubbles: true }));
436
- expect(document.querySelector('.function-card-overlay')).toBeNull();
437
- });
438
- });
439
- //# sourceMappingURL=dashboard-function-card.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-function-card.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-function-card.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * @vitest-environment jsdom
3
- *
4
- * `renderFunctionRows` shared helper — §11.2 / §11.4.
5
- *
6
- * Three column configurations corresponding to the Hot/Big/Wide views:
7
- * verifies the helper produces the right header cells and the right
8
- * per-row cell values.
9
- */
10
- export {};
11
- //# sourceMappingURL=dashboard-function-row.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-function-row.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-function-row.test.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG"}
@@ -1,102 +0,0 @@
1
- /// <reference lib="dom" />
2
- /**
3
- * @vitest-environment jsdom
4
- *
5
- * `renderFunctionRows` shared helper — §11.2 / §11.4.
6
- *
7
- * Three column configurations corresponding to the Hot/Big/Wide views:
8
- * verifies the helper produces the right header cells and the right
9
- * per-row cell values.
10
- */
11
- import { describe, expect, it, beforeEach } from 'vitest';
12
- import { DASHBOARD_CLIENT_BUNDLE } from '../client-bundle.generated.js';
13
- function loadRenderFn() {
14
- // `renderFunctionRows` (with `el`, the paginators and `makeSortable`) now all
15
- // live in the typed client bundle (L4) and are exposed as page globals;
16
- // `var sessions = []` satisfies checks.ts's load-time `computeCheckStats()` read.
17
- // eslint-disable-next-line @typescript-eslint/no-implied-eval, sonarjs/code-eval -- Trusted source: our own bundled dashboard JS.
18
- return new Function('var sessions = [];\n' + DASHBOARD_CLIENT_BUNDLE + '\nreturn renderFunctionRows;')();
19
- }
20
- beforeEach(() => {
21
- document.body.innerHTML = '';
22
- });
23
- describe('renderFunctionRows', () => {
24
- it('Hot view column shape: Function / Callers / Package / File', () => {
25
- const f = loadRenderFn();
26
- const c = document.createElement('div');
27
- f(c, {
28
- occurrences: [
29
- { simpleName: 'logger', __callers: 12, filePath: 'packages/core/src/lib/logger.ts:42' },
30
- ],
31
- columns: [
32
- { label: 'Function', value: (o) => o.simpleName },
33
- { label: 'Callers', value: (o) => o.__callers },
34
- { label: 'Package', value: () => 'core' },
35
- { label: 'File', value: (o) => o.filePath },
36
- ],
37
- });
38
- // eslint-disable-next-line unicorn/prefer-spread -- TS NodeListOf iteration via spread requires lib.dom.iterable; Array.from is the portable form for the test target.
39
- const ths = Array.from(c.querySelectorAll('th'));
40
- expect(ths.map((t) => t.textContent)).toEqual(['Function', 'Callers', 'Package', 'File']);
41
- // eslint-disable-next-line unicorn/prefer-spread -- See above.
42
- const tds = Array.from(c.querySelectorAll('tbody td'));
43
- expect(tds.map((t) => t.textContent)).toEqual([
44
- 'logger',
45
- '12',
46
- 'core',
47
- 'packages/core/src/lib/logger.ts:42',
48
- ]);
49
- });
50
- it('Big view column shape: Function / Lines / Kind / Package / File', () => {
51
- const f = loadRenderFn();
52
- const c = document.createElement('div');
53
- f(c, {
54
- occurrences: [
55
- {
56
- simpleName: 'foo',
57
- __size: 42,
58
- kind: 'function-declaration',
59
- filePath: 'packages/x/src/x.ts:1',
60
- },
61
- ],
62
- columns: [
63
- { label: 'Function', value: (o) => o.simpleName },
64
- { label: 'Lines', value: (o) => o.__size },
65
- { label: 'Kind', value: (o) => o.kind },
66
- { label: 'Package', value: () => 'x' },
67
- { label: 'File', value: (o) => o.filePath },
68
- ],
69
- });
70
- expect(c.querySelectorAll('thead th').length).toBe(5);
71
- });
72
- it('Wide view shape includes a Signature column with the parameter thumb', () => {
73
- const f = loadRenderFn();
74
- const c = document.createElement('div');
75
- f(c, {
76
- occurrences: [
77
- {
78
- simpleName: 'connect',
79
- __arity: 5,
80
- __thumb: '(a, b, c, d, e)',
81
- filePath: 'packages/x/x.ts:1',
82
- },
83
- ],
84
- columns: [
85
- { label: 'Function', value: (o) => o.simpleName },
86
- { label: 'Params', value: (o) => o.__arity },
87
- { label: 'Signature', value: (o) => o.__thumb },
88
- { label: 'Package', value: () => 'x' },
89
- { label: 'File', value: (o) => o.filePath },
90
- ],
91
- });
92
- const sigCell = c.querySelectorAll('tbody td')[2];
93
- expect(sigCell.textContent).toBe('(a, b, c, d, e)');
94
- });
95
- it('renders the empty state for zero rows', () => {
96
- const f = loadRenderFn();
97
- const c = document.createElement('div');
98
- f(c, { occurrences: [], columns: [{ label: 'X', value: () => 'y' }] });
99
- expect(c.querySelector('.empty')).not.toBeNull();
100
- });
101
- });
102
- //# sourceMappingURL=dashboard-function-row.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-function-row.test.js","sourceRoot":"","sources":["../../src/__tests__/dashboard-function-row.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Generator-level wiring tests for the v0.3 graph-catalog inline blob
3
- * and the editor-protocol JS constant.
4
- *
5
- * Covers Phase P0 (catalog block emission, null vs non-null) and the
6
- * Phase P9 hook (editor protocol constant).
7
- */
8
- export {};
9
- //# sourceMappingURL=dashboard-generator-graph-catalog.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard-generator-graph-catalog.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dashboard-generator-graph-catalog.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}