opencons 0.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.
- package/LICENSE +21 -0
- package/README.md +382 -0
- package/opencons.d.ts +55 -0
- package/package.json +73 -0
- package/scripts/vendor-d3.js +22 -0
- package/src/core/context.js +44 -0
- package/src/core/index.js +198 -0
- package/src/core/tracer.js +252 -0
- package/src/drivers/db-language.js +207 -0
- package/src/drivers/detect.js +62 -0
- package/src/drivers/drizzle.js +87 -0
- package/src/drivers/index.js +43 -0
- package/src/drivers/mongoose.js +89 -0
- package/src/drivers/mysql2.js +116 -0
- package/src/drivers/pg.js +130 -0
- package/src/drivers/prisma.js +109 -0
- package/src/drivers/record.js +158 -0
- package/src/index.js +28 -0
- package/src/integrations/nest-lifecycle.js +357 -0
- package/src/integrations/nest.js +89 -0
- package/src/interceptors/express.js +270 -0
- package/src/interceptors/require-hook.js +109 -0
- package/src/lib/config.js +139 -0
- package/src/lib/errors.js +54 -0
- package/src/lib/http-response.js +37 -0
- package/src/lib/logger.js +69 -0
- package/src/lib/serialize.js +22 -0
- package/src/server/static.js +165 -0
- package/src/server/ws.js +62 -0
- package/src/store/source-cache.js +120 -0
- package/src/store/trace-store.js +117 -0
- package/src/transform/ast.js +255 -0
- package/src/transform/natural-language.js +146 -0
- package/src/transform/probe.js +161 -0
- package/src/transform/register.js +44 -0
- package/src/utils/label.js +26 -0
- package/src/utils/observable.js +103 -0
- package/widget/app.js +356 -0
- package/widget/db-language.js +90 -0
- package/widget/graph.js +1167 -0
- package/widget/index.html +132 -0
- package/widget/styles.css +773 -0
- package/widget/timeline.js +57 -0
- package/widget/vendor/d3.min.js +2 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
window.OpenconsTimeline = {
|
|
4
|
+
/**
|
|
5
|
+
* @param {object} trace
|
|
6
|
+
*/
|
|
7
|
+
render(trace) {
|
|
8
|
+
const container = document.querySelector('#timeline-view .timeline-card');
|
|
9
|
+
container.innerHTML = '';
|
|
10
|
+
|
|
11
|
+
const totalDuration = trace.duration_ms || 1;
|
|
12
|
+
let offset = 0;
|
|
13
|
+
|
|
14
|
+
const timedNodes = trace.nodes.filter((n) => n.duration_ms != null && n.duration_ms > 0);
|
|
15
|
+
|
|
16
|
+
if (timedNodes.length === 0) {
|
|
17
|
+
container.innerHTML = '<p class="empty-state">No timed steps in this trace.</p>';
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
for (const node of timedNodes) {
|
|
22
|
+
const row = document.createElement('div');
|
|
23
|
+
row.className = `timeline-row type-${node.type}`;
|
|
24
|
+
|
|
25
|
+
const leftPct = (offset / totalDuration) * 100;
|
|
26
|
+
const widthPct = Math.max((node.duration_ms / totalDuration) * 100, 0.5);
|
|
27
|
+
offset += node.duration_ms;
|
|
28
|
+
|
|
29
|
+
row.innerHTML = `
|
|
30
|
+
<span class="timeline-label" title="${escapeAttr(node.label)}">${escapeHtml(node.label)}</span>
|
|
31
|
+
<div class="timeline-bar-track">
|
|
32
|
+
<div class="timeline-bar" style="left:${leftPct}%;width:${widthPct}%"></div>
|
|
33
|
+
</div>
|
|
34
|
+
<span class="timeline-duration">${node.duration_ms}ms</span>
|
|
35
|
+
`;
|
|
36
|
+
|
|
37
|
+
container.appendChild(row);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @param {string} str
|
|
44
|
+
*/
|
|
45
|
+
function escapeHtml(str) {
|
|
46
|
+
return str
|
|
47
|
+
.replace(/&/g, '&')
|
|
48
|
+
.replace(/</g, '<')
|
|
49
|
+
.replace(/>/g, '>');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @param {string} str
|
|
54
|
+
*/
|
|
55
|
+
function escapeAttr(str) {
|
|
56
|
+
return str.replace(/"/g, '"');
|
|
57
|
+
}
|