devtools-nestjs 2.0.5 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/adapters/typeorm-setup.d.ts +10 -0
  2. package/dist/adapters/typeorm-setup.d.ts.map +1 -0
  3. package/dist/adapters/typeorm-setup.js +77 -0
  4. package/dist/adapters/typeorm-setup.js.map +1 -0
  5. package/dist/interceptors/toolbar.interceptor.d.ts.map +1 -1
  6. package/dist/interceptors/toolbar.interceptor.js +1 -1
  7. package/dist/interceptors/toolbar.interceptor.js.map +1 -1
  8. package/dist/profiler.module.d.ts.map +1 -1
  9. package/dist/profiler.module.js +4 -0
  10. package/dist/profiler.module.js.map +1 -1
  11. package/dist/profiler.types.d.ts +1 -0
  12. package/dist/profiler.types.d.ts.map +1 -1
  13. package/dist/views/icons/icons.d.ts +2 -0
  14. package/dist/views/icons/icons.d.ts.map +1 -0
  15. package/dist/views/icons/icons.js +20 -0
  16. package/dist/views/icons/icons.js.map +1 -0
  17. package/dist/views/layout.d.ts +1 -0
  18. package/dist/views/layout.d.ts.map +1 -1
  19. package/dist/views/layout.js +112 -88
  20. package/dist/views/layout.js.map +1 -1
  21. package/dist/views/panels/cache-panel.d.ts.map +1 -1
  22. package/dist/views/panels/cache-panel.js +14 -14
  23. package/dist/views/panels/cache-panel.js.map +1 -1
  24. package/dist/views/panels/database-panel.d.ts.map +1 -1
  25. package/dist/views/panels/database-panel.js +16 -15
  26. package/dist/views/panels/database-panel.js.map +1 -1
  27. package/dist/views/panels/exception-panel.d.ts.map +1 -1
  28. package/dist/views/panels/exception-panel.js +5 -10
  29. package/dist/views/panels/exception-panel.js.map +1 -1
  30. package/dist/views/panels/log-panel.d.ts.map +1 -1
  31. package/dist/views/panels/log-panel.js +25 -28
  32. package/dist/views/panels/log-panel.js.map +1 -1
  33. package/dist/views/panels/request-panel.js +3 -3
  34. package/dist/views/panels/request-panel.js.map +1 -1
  35. package/dist/views/panels/route-panel.js +3 -3
  36. package/dist/views/panels/route-panel.js.map +1 -1
  37. package/dist/views/panels/time-panel.d.ts.map +1 -1
  38. package/dist/views/panels/time-panel.js +13 -10
  39. package/dist/views/panels/time-panel.js.map +1 -1
  40. package/dist/views/toolbar.d.ts +4 -3
  41. package/dist/views/toolbar.d.ts.map +1 -1
  42. package/dist/views/toolbar.js +87 -114
  43. package/dist/views/toolbar.js.map +1 -1
  44. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cache-panel.js","sourceRoot":"","sources":["../../../src/views/panels/cache-panel.ts"],"names":[],"mappings":";;AAEA,4CA2CC;AA7CD,sCAA+C;AAE/C,SAAgB,gBAAgB,CAAC,IAA6B;IAC5D,MAAM,UAAU,GAAI,IAAI,CAAC,gBAA2C,IAAI,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAI,IAAI,CAAC,gBAAmD,IAAI,EAAE,CAAC;IAElF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,YAAY,KAAK,YAAY,CAAC;SACpE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,MAAM,GAAG,SAAS;SACrB,OAAO,EAAE;SACT,GAAG,CACF,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;cACH,EAAE,CAAC,MAAM;oBACH,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;cACtC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;cACpD,IAAI,CAAC,KAAK,CAAE,EAAE,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;YACjD,CACP;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;wFAEyE,IAAI,CAAC,eAAe,IAAI,CAAC;kFAC/B,IAAI,CAAC,SAAS,IAAI,CAAC;oFACjB,IAAI,CAAC,WAAW,IAAI,CAAC;sFACnB,IAAI,CAAC,OAAO,IAAI,CAAC;wFACf,IAAI,CAAC,aAAa,IAAI,CAAC;;;;;;eAMhG,QAAQ,IAAI,6CAA6C;;;;;;eAMzD,MAAM,IAAI,6CAA6C;;GAEnE,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"cache-panel.js","sourceRoot":"","sources":["../../../src/views/panels/cache-panel.ts"],"names":[],"mappings":";;AAEA,4CAyCC;AA3CD,sCAAkE;AAElE,SAAgB,gBAAgB,CAAC,IAA6B;IAC5D,MAAM,UAAU,GAAI,IAAI,CAAC,gBAA2C,IAAI,EAAE,CAAC;IAC3E,MAAM,SAAS,GAAI,IAAI,CAAC,gBAAmD,IAAI,EAAE,CAAC;IAElF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,iBAAiB,IAAI,kDAAkD,KAAK,mBAAmB,CAAC;SACvH,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,MAAM,GAAG,SAAS;SACrB,OAAO,EAAE;SACT,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;kBACG,EAAE,CAAC,MAAM;iFACsD,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACrG,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,GAAG;2CACrG,IAAI,CAAC,KAAK,CAAE,EAAE,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;UAChF,CAAC;SACN,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAClE,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;QAC/D,IAAA,0BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,IAAA,0BAAiB,EAAC,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAG,IAAI,CAAC,OAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,OAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/I,IAAA,0BAAiB,EAAC,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;;;;;;eAMnE,QAAQ,IAAI,4EAA4E;;;;;;eAMxF,MAAM,IAAI,qFAAqF;;GAE3G,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"database-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/database-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2DzE"}
1
+ {"version":3,"file":"database-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/database-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAwDzE"}
@@ -7,39 +7,40 @@ function renderDatabasePanel(data) {
7
7
  const slowQueries = data.slowQueries || [];
8
8
  const queryCounts = data.queryCountByType || {};
9
9
  const typeRows = Object.entries(queryCounts)
10
- .map(([type, count]) => `<tr><td>${type}</td><td>${count}</td></tr>`)
10
+ .map(([type, count]) => `<tr><td><code>${type}</code></td><td><span class="badge badge-info">${count}</span></td></tr>`)
11
11
  .join('');
12
12
  const slowRows = slowQueries
13
13
  .map((q, i) => `<tr>
14
- <td>${i + 1}</td>
15
- <td><pre style="margin:0">${escapeHtml(String(q.query || ''))}</pre></td>
16
- <td>${Math.round(q.duration * 100) / 100} ms</td>
17
- </tr>`)
14
+ <td>${i + 1}</td>
15
+ <td><pre style="margin:0;max-width:600px;white-space:pre-wrap;font-size:11px">${escapeHtml(String(q.query || ''))}</pre></td>
16
+ <td><span class="badge badge-error">${Math.round(q.duration * 100) / 100} ms</span></td>
17
+ </tr>`)
18
18
  .join('');
19
19
  const queryRows = queries
20
20
  .slice(-50)
21
21
  .reverse()
22
22
  .map((q, i) => `<tr>
23
- <td>${i + 1}</td>
24
- <td><pre style="margin:0;max-width:600px;overflow:hidden;text-overflow:ellipsis">${escapeHtml(String(q.query || ''))}</pre></td>
25
- <td>${Math.round(q.duration * 100) / 100} ms</td>
26
- </tr>`)
23
+ <td>${i + 1}</td>
24
+ <td><pre style="margin:0;max-width:600px;white-space:pre-wrap;font-size:11px">${escapeHtml(String(q.query || ''))}</pre></td>
25
+ <td><span class="badge badge-info">${Math.round(q.duration * 100) / 100} ms</span></td>
26
+ </tr>`)
27
27
  .join('');
28
28
  const body = `
29
29
  <div class="summary-bar">
30
- <div class="summary-item"><div class="label">Total Queries</div><div class="value">${data.totalQueries || 0}</div></div>
31
- <div class="summary-item"><div class="label">Total Time</div><div class="value">${data.totalDuration || 0} ms</div></div>
32
- <div class="summary-item"><div class="label">Average</div><div class="value">${data.averageDuration || 0} ms</div></div>
30
+ ${(0, layout_1.renderSummaryCard)('Total Queries', String(data.totalQueries || 0))}
31
+ ${(0, layout_1.renderSummaryCard)('Total Time', `${data.totalDuration || 0} ms`, 'accent')}
32
+ ${(0, layout_1.renderSummaryCard)('Average', `${data.averageDuration || 0} ms`)}
33
+ ${(0, layout_1.renderSummaryCard)('Slow', String(slowQueries.length), slowQueries.length > 0 ? 'red' : 'green')}
33
34
  </div>
34
35
 
35
36
  <h3>Query Types</h3>
36
37
  <table>
37
38
  <thead><tr><th>Type</th><th>Count</th></tr></thead>
38
- <tbody>${typeRows || '<tr><td colspan="2">No queries</td></tr>'}</tbody>
39
+ <tbody>${typeRows || '<tr><td colspan="2"><div class="empty-state">No queries</div></td></tr>'}</tbody>
39
40
  </table>
40
41
 
41
42
  ${slowQueries.length ? `
42
- <h3>Slow Queries (>100ms)</h3>
43
+ <h3>Slow Queries &gt;100ms</h3>
43
44
  <table>
44
45
  <thead><tr><th>#</th><th>Query</th><th>Duration</th></tr></thead>
45
46
  <tbody>${slowRows}</tbody>
@@ -48,7 +49,7 @@ function renderDatabasePanel(data) {
48
49
  <h3>Recent Queries</h3>
49
50
  <table>
50
51
  <thead><tr><th>#</th><th>Query</th><th>Duration</th></tr></thead>
51
- <tbody>${queryRows || '<tr><td colspan="3">No queries</td></tr>'}</tbody>
52
+ <tbody>${queryRows || '<tr><td colspan="3"><div class="empty-state">No queries recorded</div></td></tr>'}</tbody>
52
53
  </table>
53
54
  `;
54
55
  return (0, layout_1.renderPanelContent)('Database', body);
@@ -1 +1 @@
1
- {"version":3,"file":"database-panel.js","sourceRoot":"","sources":["../../../src/views/panels/database-panel.ts"],"names":[],"mappings":";;AAEA,kDA2DC;AA7DD,sCAA+C;AAE/C,SAAgB,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,OAAO,GAAI,IAAI,CAAC,OAA0C,IAAI,EAAE,CAAC;IACvE,MAAM,WAAW,GAAI,IAAI,CAAC,WAA8C,IAAI,EAAE,CAAC;IAC/E,MAAM,WAAW,GAAI,IAAI,CAAC,gBAA2C,IAAI,EAAE,CAAC;IAE5E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,YAAY,KAAK,YAAY,CAAC;SACpE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,WAAW;SACzB,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;cACF,CAAC,GAAG,CAAC;oCACiB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;cACvD,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;YAChD,CACP;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,OAAO;SACtB,KAAK,CAAC,CAAC,EAAE,CAAC;SACV,OAAO,EAAE;SACT,GAAG,CACF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;cACF,CAAC,GAAG,CAAC;2FACwE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;cAC9G,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;YAChD,CACP;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;2FAE4E,IAAI,CAAC,YAAY,IAAI,CAAC;wFACzB,IAAI,CAAC,aAAa,IAAI,CAAC;qFAC1B,IAAI,CAAC,eAAe,IAAI,CAAC;;;;;;eAM/F,QAAQ,IAAI,0CAA0C;;;MAG/D,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;;;;eAIZ,QAAQ;aACV,CAAC,CAAC,CAAC,EAAE;;;;;eAKH,SAAS,IAAI,0CAA0C;;GAEnE,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"database-panel.js","sourceRoot":"","sources":["../../../src/views/panels/database-panel.ts"],"names":[],"mappings":";;AAEA,kDAwDC;AA1DD,sCAAkE;AAElE,SAAgB,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,OAAO,GAAI,IAAI,CAAC,OAA0C,IAAI,EAAE,CAAC;IACvE,MAAM,WAAW,GAAI,IAAI,CAAC,WAA8C,IAAI,EAAE,CAAC;IAC/E,MAAM,WAAW,GAAI,IAAI,CAAC,gBAA2C,IAAI,EAAE,CAAC;IAE5E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,iBAAiB,IAAI,kDAAkD,KAAK,mBAAmB,CAAC;SACvH,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,WAAW;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACP,CAAC,GAAG,CAAC;sFACqE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;4CAC3E,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;UAChF,CAAC;SACN,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,SAAS,GAAG,OAAO;SACtB,KAAK,CAAC,CAAC,EAAE,CAAC;SACV,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACP,CAAC,GAAG,CAAC;sFACqE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;2CAC5E,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;UAC/E,CAAC;SACN,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QAClE,IAAA,0BAAiB,EAAC,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1E,IAAA,0BAAiB,EAAC,SAAS,EAAE,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC;QAC/D,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;;;;;;eAMxF,QAAQ,IAAI,yEAAyE;;;MAG9F,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;;;;eAIZ,QAAQ;aACV,CAAC,CAAC,CAAC,EAAE;;;;;eAKH,SAAS,IAAI,kFAAkF;;GAE3G,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exception-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/exception-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAuB1E"}
1
+ {"version":3,"file":"exception-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/exception-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAkB1E"}
@@ -4,23 +4,18 @@ exports.renderExceptionPanel = renderExceptionPanel;
4
4
  const layout_1 = require("../layout");
5
5
  function renderExceptionPanel(data) {
6
6
  if (!data.hasException) {
7
- return (0, layout_1.renderPanelContent)('Exception', '<p>No exceptions were thrown during this request.</p>');
7
+ return (0, layout_1.renderPanelContent)('Exception', '<div class="empty-state">No exceptions were thrown during this request.</div>');
8
8
  }
9
9
  const stack = data.stack || [];
10
10
  const body = `
11
11
  <div class="summary-bar">
12
- <div class="summary-item" style="border-color:#f44336">
13
- <div class="label">Exception</div>
14
- <div class="value" style="color:#f44336">${data.name || 'Error'}</div>
15
- </div>
16
- <div class="summary-item" style="border-color:#f44336">
17
- <div class="label">Message</div>
18
- <div class="value" style="color:#f44336">${data.message || ''}</div>
19
- </div>
12
+ ${(0, layout_1.renderSummaryCard)('Exception', String(data.name || 'Error'), 'red')}
13
+ ${(0, layout_1.renderSummaryCard)('Message', String(data.message || ''), 'red')}
14
+ ${data.code ? (0, layout_1.renderSummaryCard)('Code', String(data.code), 'red') : ''}
20
15
  </div>
21
16
 
22
17
  <h3>Stack Trace</h3>
23
- <pre>${stack.map((line) => escapeHtml(line)).join('\n')}</pre>
18
+ <pre style="border-left:3px solid var(--red);background:#1a0000">${stack.map((line) => escapeHtml(line)).join('\n')}</pre>
24
19
  `;
25
20
  return (0, layout_1.renderPanelContent)('Exception', body);
26
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exception-panel.js","sourceRoot":"","sources":["../../../src/views/panels/exception-panel.ts"],"names":[],"mappings":";;AAEA,oDAuBC;AAzBD,sCAA+C;AAE/C,SAAgB,oBAAoB,CAAC,IAA6B;IAChE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAA,2BAAkB,EAAC,WAAW,EAAE,uDAAuD,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,KAAK,GAAI,IAAI,CAAC,KAAkB,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG;;;;mDAIoC,IAAI,CAAC,IAAI,IAAI,OAAO;;;;mDAIpB,IAAI,CAAC,OAAO,IAAI,EAAE;;;;;WAK1D,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;GAChE,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"exception-panel.js","sourceRoot":"","sources":["../../../src/views/panels/exception-panel.ts"],"names":[],"mappings":";;AAEA,oDAkBC;AApBD,sCAAkE;AAElE,SAAgB,oBAAoB,CAAC,IAA6B;IAChE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAA,2BAAkB,EAAC,WAAW,EAAE,+EAA+E,CAAC,CAAC;IAC1H,CAAC;IAED,MAAM,KAAK,GAAI,IAAI,CAAC,KAAkB,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC;QACnE,IAAA,0BAAiB,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,0BAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;;;;uEAIL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;GAC5H,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"log-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/log-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAiDpE"}
1
+ {"version":3,"file":"log-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/log-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAiCpE"}
@@ -5,53 +5,50 @@ const layout_1 = require("../layout");
5
5
  function renderLogPanel(data) {
6
6
  const logCounts = data.logCounts || {};
7
7
  const logs = data.logs || [];
8
- const countRows = Object.entries(logCounts)
9
- .map(([level, count]) => `<tr><td>${level}</td><td>${count}</td></tr>`)
10
- .join('');
11
8
  const logRows = logs
12
9
  .slice(-100)
13
10
  .reverse()
14
- .map((log, i) => `<tr>
15
- <td style="white-space:nowrap">${log.timestamp || ''}</td>
16
- <td><span class="badge" style="background:${levelColor(log.level)}">${log.level || 'info'}</span></td>
17
- <td>${escapeHtml(String(log.message || ''))}</td>
18
- <td>${log.context || '-'}</td>
19
- </tr>`)
11
+ .map(log => `<tr>
12
+ <td style="white-space:nowrap;font-size:12px;color:var(--text3)">${log.timestamp || ''}</td>
13
+ <td><span class="badge ${levelBadge(log.level)}">${log.level || 'info'}</span></td>
14
+ <td><code>${escapeHtml(String(log.message || ''))}</code></td>
15
+ <td style="color:var(--text3)">${log.context || '-'}</td>
16
+ </tr>`)
17
+ .join('');
18
+ const countCards = Object.entries(logCounts)
19
+ .map(([level, count]) => (0, layout_1.renderSummaryCard)(level, String(count), levelColor(level)))
20
20
  .join('');
21
21
  const body = `
22
22
  <div class="summary-bar">
23
- <div class="summary-item"><div class="label">Total Logs</div><div class="value">${data.totalLogs || 0}</div></div>
24
- ${Object.entries(logCounts)
25
- .map(([level, count]) => `<div class="summary-item"><div class="label">${level}</div><div class="value">${count}</div></div>`)
26
- .join('')}
23
+ ${(0, layout_1.renderSummaryCard)('Total Logs', String(data.totalLogs || 0))}
24
+ ${countCards}
27
25
  </div>
28
26
 
29
- <h3>Log Counts</h3>
30
- <table>
31
- <thead><tr><th>Level</th><th>Count</th></tr></thead>
32
- <tbody>${countRows || '<tr><td colspan="2">No logs</td></tr>'}</tbody>
33
- </table>
34
-
35
27
  <h3>Recent Logs</h3>
36
28
  <table>
37
29
  <thead><tr><th>Timestamp</th><th>Level</th><th>Message</th><th>Context</th></tr></thead>
38
- <tbody>${logRows || '<tr><td colspan="4">No logs</td></tr>'}</tbody>
30
+ <tbody>${logRows || '<tr><td colspan="4"><div class="empty-state">No logs</div></td></tr>'}</tbody>
39
31
  </table>
40
32
  `;
41
33
  return (0, layout_1.renderPanelContent)('Logs', body);
42
34
  }
35
+ function levelBadge(level) {
36
+ switch (level) {
37
+ case 'error':
38
+ case 'fatal': return 'badge-error';
39
+ case 'warn':
40
+ case 'warning': return 'badge-warn';
41
+ case 'debug': return 'badge-info';
42
+ default: return 'badge-success';
43
+ }
44
+ }
43
45
  function levelColor(level) {
44
46
  switch (level) {
45
47
  case 'error':
46
- case 'fatal':
47
- return '#f44336';
48
+ case 'fatal': return 'red';
48
49
  case 'warn':
49
- case 'warning':
50
- return '#ff9800';
51
- case 'debug':
52
- return '#4fc3f7';
53
- default:
54
- return '#4caf50';
50
+ case 'warning': return 'yellow';
51
+ default: return '';
55
52
  }
56
53
  }
57
54
  function escapeHtml(str) {
@@ -1 +1 @@
1
- {"version":3,"file":"log-panel.js","sourceRoot":"","sources":["../../../src/views/panels/log-panel.ts"],"names":[],"mappings":";;AAEA,wCAiDC;AAnDD,sCAA+C;AAE/C,SAAgB,cAAc,CAAC,IAA6B;IAC1D,MAAM,SAAS,GAAI,IAAI,CAAC,SAAoC,IAAI,EAAE,CAAC;IACnE,MAAM,IAAI,GAAI,IAAI,CAAC,IAAuC,IAAI,EAAE,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACxC,GAAG,CACF,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CACjB,WAAW,KAAK,YAAY,KAAK,YAAY,CAChD;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAI;SACjB,KAAK,CAAC,CAAC,GAAG,CAAC;SACX,OAAO,EAAE;SACT,GAAG,CACF,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;yCACuB,GAAG,CAAC,SAAS,IAAI,EAAE;oDACR,UAAU,CAAC,GAAG,CAAC,KAAe,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM;cAC7F,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;cACrC,GAAG,CAAC,OAAO,IAAI,GAAG;YACpB,CACP;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;wFAEyE,IAAI,CAAC,SAAS,IAAI,CAAC;QACnG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACxB,GAAG,CACF,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CACjB,gDAAgD,KAAK,4BAA4B,KAAK,cAAc,CACvG;SACA,IAAI,CAAC,EAAE,CAAC;;;;;;eAMF,SAAS,IAAI,uCAAuC;;;;;;eAMpD,OAAO,IAAI,uCAAuC;;GAE9D,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"log-panel.js","sourceRoot":"","sources":["../../../src/views/panels/log-panel.ts"],"names":[],"mappings":";;AAEA,wCAiCC;AAnCD,sCAAkE;AAElE,SAAgB,cAAc,CAAC,IAA6B;IAC1D,MAAM,SAAS,GAAI,IAAI,CAAC,SAAoC,IAAI,EAAE,CAAC;IACnE,MAAM,IAAI,GAAI,IAAI,CAAC,IAAuC,IAAI,EAAE,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAI;SACjB,KAAK,CAAC,CAAC,GAAG,CAAC;SACX,OAAO,EAAE;SACT,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;yEACyD,GAAG,CAAC,SAAS,IAAI,EAAE;+BAC7D,UAAU,CAAC,GAAG,CAAC,KAAe,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM;kBACpE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;uCAChB,GAAG,CAAC,OAAO,IAAI,GAAG;UAC/C,CAAC;SACN,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAiB,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;SACnF,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAC5D,UAAU;;;;;;eAMH,OAAO,IAAI,sEAAsE;;GAE7F,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QAAC,KAAK,OAAO,CAAC,CAAC,OAAO,aAAa,CAAC;QACjD,KAAK,MAAM,CAAC;QAAC,KAAK,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC;QACjD,KAAK,OAAO,CAAC,CAAC,OAAO,YAAY,CAAC;QAClC,OAAO,CAAC,CAAC,OAAO,eAAe,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QAAC,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;QACzC,KAAK,MAAM,CAAC;QAAC,KAAK,SAAS,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC7C,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
@@ -5,9 +5,9 @@ const layout_1 = require("../layout");
5
5
  function renderRequestPanel(data) {
6
6
  const body = `
7
7
  <div class="summary-bar">
8
- <div class="summary-item"><div class="label">Method</div><div class="value">${data.method || 'GET'}</div></div>
9
- <div class="summary-item"><div class="label">Status</div><div class="value">${data.statusCode || 200}</div></div>
10
- <div class="summary-item"><div class="label">IP</div><div class="value">${data.ip || '-'}</div></div>
8
+ ${(0, layout_1.renderSummaryCard)('Method', String(data.method || 'GET'))}
9
+ ${(0, layout_1.renderSummaryCard)('Status', String(data.statusCode || 200), data.statusCode >= 400 ? 'red' : 'green')}
10
+ ${(0, layout_1.renderSummaryCard)('IP', String(data.ip || '-'))}
11
11
  </div>
12
12
 
13
13
  <h3>Request Headers</h3>
@@ -1 +1 @@
1
- {"version":3,"file":"request-panel.js","sourceRoot":"","sources":["../../../src/views/panels/request-panel.ts"],"names":[],"mappings":";;AAEA,gDAsBC;AAxBD,sCAAoE;AAEpE,SAAgB,kBAAkB,CAAC,IAA6B;IAC9D,MAAM,IAAI,GAAG;;oFAEqE,IAAI,CAAC,MAAM,IAAI,KAAK;oFACpB,IAAI,CAAC,UAAU,IAAI,GAAG;gFAC1B,IAAI,CAAC,EAAE,IAAI,GAAG;;;;MAIxF,IAAA,4BAAmB,EAAE,IAAI,CAAC,OAAmC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;;;MAGvF,IAAA,4BAAmB,EAAE,IAAI,CAAC,eAA2C,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;;;MAG/F,IAAA,4BAAmB,EAAE,IAAI,CAAC,KAAiC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;;;MAGxF,IAAA,4BAAmB,EAAE,IAAI,CAAC,MAAkC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;GAC5F,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"request-panel.js","sourceRoot":"","sources":["../../../src/views/panels/request-panel.ts"],"names":[],"mappings":";;AAEA,gDAsBC;AAxBD,sCAAuF;AAEvF,SAAgB,kBAAkB,CAAC,IAA6B;IAC9D,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACzD,IAAA,0BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,EAAG,IAAI,CAAC,UAAqB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACjH,IAAA,0BAAiB,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;;;;MAIjD,IAAA,4BAAmB,EAAE,IAAI,CAAC,OAAmC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;;;MAGvF,IAAA,4BAAmB,EAAE,IAAI,CAAC,eAA2C,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;;;MAG/F,IAAA,4BAAmB,EAAE,IAAI,CAAC,KAAiC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;;;MAGxF,IAAA,4BAAmB,EAAE,IAAI,CAAC,MAAkC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;GAC5F,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -5,9 +5,9 @@ const layout_1 = require("../layout");
5
5
  function renderRoutePanel(data) {
6
6
  const body = `
7
7
  <div class="summary-bar">
8
- <div class="summary-item"><div class="label">Route</div><div class="value">${data.route || '/'}</div></div>
9
- <div class="summary-item"><div class="label">Controller</div><div class="value">${data.controller || 'unknown'}</div></div>
10
- <div class="summary-item"><div class="label">Method</div><div class="value">${data.method || 'GET'}</div></div>
8
+ ${(0, layout_1.renderSummaryCard)('Route', String(data.route || '/'))}
9
+ ${(0, layout_1.renderSummaryCard)('Controller', String(data.controller || 'unknown'), 'accent')}
10
+ ${(0, layout_1.renderSummaryCard)('Method', String(data.method || 'GET'))}
11
11
  </div>
12
12
 
13
13
  <h3>Route Parameters</h3>
@@ -1 +1 @@
1
- {"version":3,"file":"route-panel.js","sourceRoot":"","sources":["../../../src/views/panels/route-panel.ts"],"names":[],"mappings":";;AAEA,4CAgBC;AAlBD,sCAAoE;AAEpE,SAAgB,gBAAgB,CAAC,IAA6B;IAC5D,MAAM,IAAI,GAAG;;mFAEoE,IAAI,CAAC,KAAK,IAAI,GAAG;wFACZ,IAAI,CAAC,UAAU,IAAI,SAAS;oFAChC,IAAI,CAAC,MAAM,IAAI,KAAK;;;;MAIlG,IAAA,4BAAmB,EAAE,IAAI,CAAC,MAAkC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;;;MAGzF,IAAA,4BAAmB,EAAE,IAAI,CAAC,KAAiC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;GAC3F,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"route-panel.js","sourceRoot":"","sources":["../../../src/views/panels/route-panel.ts"],"names":[],"mappings":";;AAEA,4CAgBC;AAlBD,sCAAuF;AAEvF,SAAgB,gBAAgB,CAAC,IAA6B;IAC5D,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QACrD,IAAA,0BAAiB,EAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE,QAAQ,CAAC;QAC/E,IAAA,0BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;;;;MAI3D,IAAA,4BAAmB,EAAE,IAAI,CAAC,MAAkC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;;;MAGzF,IAAA,4BAAmB,EAAE,IAAI,CAAC,KAAiC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC;GAC3F,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/time-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA6BrE"}
1
+ {"version":3,"file":"time-panel.d.ts","sourceRoot":"","sources":["../../../src/views/panels/time-panel.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2BrE"}
@@ -6,25 +6,28 @@ function renderTimePanel(data) {
6
6
  const timeline = data.timeline || [];
7
7
  const timelineRows = timeline
8
8
  .map((ev, i) => `<tr>
9
- <td>${i + 1}</td>
10
- <td>${ev.name}</td>
11
- <td>${Math.round(ev.duration * 100) / 100} ms</td>
12
- <td>${ev.memory || '-'} MB</td>
13
- </tr>`)
9
+ <td>${i + 1}</td>
10
+ <td><code>${escapeHtml(String(ev.name || ''))}</code></td>
11
+ <td><span class="badge badge-info">${Math.round(ev.duration * 100) / 100} ms</span></td>
12
+ <td>${ev.memory != null ? `${ev.memory} MB` : '-'}</td>
13
+ </tr>`)
14
14
  .join('');
15
15
  const body = `
16
16
  <div class="summary-bar">
17
- <div class="summary-item"><div class="label">Total Duration</div><div class="value">${data.totalDuration || 0} ms</div></div>
18
- <div class="summary-item"><div class="label">Peak Memory</div><div class="value">${data.peakMemory || 0} MB</div></div>
19
- <div class="summary-item"><div class="label">Memory Limit</div><div class="value">${data.memoryLimit || '-'}</div></div>
17
+ ${(0, layout_1.renderSummaryCard)('Total Duration', `${data.totalDuration || 0} ms`, 'accent')}
18
+ ${(0, layout_1.renderSummaryCard)('Peak Memory', `${data.peakMemory || 0} MB`)}
19
+ ${(0, layout_1.renderSummaryCard)('Memory Limit', String(data.memoryLimit || '-'))}
20
20
  </div>
21
21
 
22
- <h3>Timeline</h3>
22
+ <h3>Timeline <span style="color:var(--text3);font-weight:400;text-transform:none;letter-spacing:0">(${timeline.length} events)</span></h3>
23
23
  <table>
24
24
  <thead><tr><th>#</th><th>Event</th><th>Duration</th><th>Memory</th></tr></thead>
25
- <tbody>${timelineRows || '<tr><td colspan="4">No events recorded</td></tr>'}</tbody>
25
+ <tbody>${timelineRows || '<tr><td colspan="4"><div class="empty-state">No events recorded</div></td></tr>'}</tbody>
26
26
  </table>
27
27
  `;
28
28
  return (0, layout_1.renderPanelContent)('Performance', body);
29
29
  }
30
+ function escapeHtml(str) {
31
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
32
+ }
30
33
  //# sourceMappingURL=time-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-panel.js","sourceRoot":"","sources":["../../../src/views/panels/time-panel.ts"],"names":[],"mappings":";;AAEA,0CA6BC;AA/BD,sCAAoE;AAEpE,SAAgB,eAAe,CAAC,IAA6B;IAC3D,MAAM,QAAQ,GAAI,IAAI,CAAC,QAA2C,IAAI,EAAE,CAAC;IAEzE,MAAM,YAAY,GAAG,QAAQ;SAC1B,GAAG,CACF,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;cACH,CAAC,GAAG,CAAC;cACL,EAAE,CAAC,IAAI;cACP,IAAI,CAAC,KAAK,CAAE,EAAE,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;cAC/C,EAAE,CAAC,MAAM,IAAI,GAAG;YAClB,CACP;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;4FAE6E,IAAI,CAAC,aAAa,IAAI,CAAC;yFAC1B,IAAI,CAAC,UAAU,IAAI,CAAC;0FACnB,IAAI,CAAC,WAAW,IAAI,GAAG;;;;;;eAMlG,YAAY,IAAI,kDAAkD;;GAE9E,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"time-panel.js","sourceRoot":"","sources":["../../../src/views/panels/time-panel.ts"],"names":[],"mappings":";;AAEA,0CA2BC;AA7BD,sCAAkE;AAElE,SAAgB,eAAe,CAAC,IAA6B;IAC3D,MAAM,QAAQ,GAAI,IAAI,CAAC,QAA2C,IAAI,EAAE,CAAC;IAEzE,MAAM,YAAY,GAAG,QAAQ;SAC1B,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,GAAG,CAAC;kBACC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;2CACR,IAAI,CAAC,KAAK,CAAE,EAAE,CAAC,QAAmB,GAAG,GAAG,CAAC,GAAG,GAAG;YAC9E,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG;UAC7C,CAAC;SACN,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;;QAEP,IAAA,0BAAiB,EAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC9E,IAAA,0BAAiB,EAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAA,0BAAiB,EAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;;;0GAGgC,QAAQ,CAAC,MAAM;;;eAG1G,YAAY,IAAI,iFAAiF;;GAE7G,CAAC;IAEF,OAAO,IAAA,2BAAkB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { CollectorRegistry } from '../collectors/collector.registry';
2
2
  export declare class ToolbarRenderer {
3
- render(token: string, toolbarPath: string, registry: CollectorRegistry): string;
4
- private renderIcon;
5
- private renderTextPieces;
3
+ render(token: string, toolbarPath: string, registry: CollectorRegistry, method?: string, statusCode?: number, duration?: number, memory?: number): string;
4
+ private renderBlockIcon;
5
+ private renderBlockText;
6
+ private renderBlockInfo;
6
7
  private getStatusClass;
7
8
  }
8
9
  //# sourceMappingURL=toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/views/toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,qBAAa,eAAe;IAC1B,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,GAC1B,MAAM;IA0GT,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,cAAc;CAOvB"}
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/views/toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,qBAAa,eAAe;IAC1B,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM;IA+DT,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,cAAc;CAKvB"}