devtools-nestjs 2.0.7 → 2.1.1
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/dist/controllers/profiler.controller.d.ts.map +1 -1
- package/dist/controllers/profiler.controller.js +17 -14
- package/dist/controllers/profiler.controller.js.map +1 -1
- package/dist/interceptors/profiler.interceptor.d.ts +3 -1
- package/dist/interceptors/profiler.interceptor.d.ts.map +1 -1
- package/dist/interceptors/profiler.interceptor.js +16 -3
- package/dist/interceptors/profiler.interceptor.js.map +1 -1
- package/dist/interceptors/toolbar.interceptor.d.ts.map +1 -1
- package/dist/interceptors/toolbar.interceptor.js +1 -1
- package/dist/interceptors/toolbar.interceptor.js.map +1 -1
- package/dist/views/icons/icons.d.ts +2 -0
- package/dist/views/icons/icons.d.ts.map +1 -0
- package/dist/views/icons/icons.js +20 -0
- package/dist/views/icons/icons.js.map +1 -0
- package/dist/views/layout.d.ts +1 -0
- package/dist/views/layout.d.ts.map +1 -1
- package/dist/views/layout.js +110 -88
- package/dist/views/layout.js.map +1 -1
- package/dist/views/panels/cache-panel.d.ts.map +1 -1
- package/dist/views/panels/cache-panel.js +14 -14
- package/dist/views/panels/cache-panel.js.map +1 -1
- package/dist/views/panels/database-panel.d.ts.map +1 -1
- package/dist/views/panels/database-panel.js +16 -15
- package/dist/views/panels/database-panel.js.map +1 -1
- package/dist/views/panels/exception-panel.d.ts.map +1 -1
- package/dist/views/panels/exception-panel.js +5 -10
- package/dist/views/panels/exception-panel.js.map +1 -1
- package/dist/views/panels/log-panel.d.ts.map +1 -1
- package/dist/views/panels/log-panel.js +25 -28
- package/dist/views/panels/log-panel.js.map +1 -1
- package/dist/views/panels/request-panel.js +3 -3
- package/dist/views/panels/request-panel.js.map +1 -1
- package/dist/views/panels/route-panel.js +3 -3
- package/dist/views/panels/route-panel.js.map +1 -1
- package/dist/views/panels/time-panel.d.ts.map +1 -1
- package/dist/views/panels/time-panel.js +13 -10
- package/dist/views/panels/time-panel.js.map +1 -1
- package/dist/views/toolbar.d.ts +4 -3
- package/dist/views/toolbar.d.ts.map +1 -1
- package/dist/views/toolbar.js +87 -114
- package/dist/views/toolbar.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-panel.js","sourceRoot":"","sources":["../../../src/views/panels/cache-panel.ts"],"names":[],"mappings":";;AAEA,
|
|
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,
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
|
43
|
+
<h3>Slow Queries >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,
|
|
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,
|
|
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', '<
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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,
|
|
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,
|
|
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(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
24
|
-
${
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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,
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
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,
|
|
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"}
|
package/dist/views/toolbar.d.ts
CHANGED
|
@@ -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
|
|
5
|
-
private
|
|
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;
|
|
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"}
|