@wizeworks/lens-node 0.3.0-alpha.2 → 0.3.0-alpha.4
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/adapters/elasticsearch.d.ts +21 -0
- package/dist/adapters/elasticsearch.d.ts.map +1 -0
- package/dist/adapters/elasticsearch.js +93 -0
- package/dist/adapters/elasticsearch.js.map +1 -0
- package/dist/adapters/ioredis.d.ts +4 -0
- package/dist/adapters/ioredis.d.ts.map +1 -0
- package/dist/adapters/ioredis.js +60 -0
- package/dist/adapters/ioredis.js.map +1 -0
- package/dist/adapters/mongodb-shape.d.ts +16 -0
- package/dist/adapters/mongodb-shape.d.ts.map +1 -0
- package/dist/adapters/mongodb-shape.js +81 -0
- package/dist/adapters/mongodb-shape.js.map +1 -0
- package/dist/adapters/mongodb.d.ts +4 -0
- package/dist/adapters/mongodb.d.ts.map +1 -0
- package/dist/adapters/mongodb.js +95 -0
- package/dist/adapters/mongodb.js.map +1 -0
- package/dist/adapters/nosql.d.ts +14 -0
- package/dist/adapters/nosql.d.ts.map +1 -0
- package/dist/adapters/nosql.js +61 -0
- package/dist/adapters/nosql.js.map +1 -0
- package/dist/adapters/redis-shape.d.ts +31 -0
- package/dist/adapters/redis-shape.d.ts.map +1 -0
- package/dist/adapters/redis-shape.js +80 -0
- package/dist/adapters/redis-shape.js.map +1 -0
- package/dist/adapters/redis.d.ts +4 -0
- package/dist/adapters/redis.d.ts.map +1 -0
- package/dist/adapters/redis.js +93 -0
- package/dist/adapters/redis.js.map +1 -0
- package/dist/adapters/registry.d.ts +2 -0
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +2 -0
- package/dist/adapters/registry.js.map +1 -1
- package/dist/api.d.ts +5 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +25 -7
- package/dist/api.js.map +1 -1
- package/dist/auto/config.d.ts +14 -0
- package/dist/auto/config.d.ts.map +1 -0
- package/dist/auto/config.js +51 -0
- package/dist/auto/config.js.map +1 -0
- package/dist/auto/esm-loader.d.ts +10 -0
- package/dist/auto/esm-loader.d.ts.map +1 -0
- package/dist/auto/esm-loader.js +10 -0
- package/dist/auto/esm-loader.js.map +1 -0
- package/dist/auto/esm-source.d.ts +15 -0
- package/dist/auto/esm-source.d.ts.map +1 -0
- package/dist/auto/esm-source.js +23 -0
- package/dist/auto/esm-source.js.map +1 -0
- package/dist/auto/frameworks.d.ts +3 -0
- package/dist/auto/frameworks.d.ts.map +1 -0
- package/dist/auto/frameworks.js +112 -0
- package/dist/auto/frameworks.js.map +1 -0
- package/dist/auto/handle.d.ts +7 -0
- package/dist/auto/handle.d.ts.map +1 -0
- package/dist/auto/handle.js +47 -0
- package/dist/auto/handle.js.map +1 -0
- package/dist/auto/hono.d.ts +3 -0
- package/dist/auto/hono.d.ts.map +1 -0
- package/dist/auto/hono.js +43 -0
- package/dist/auto/hono.js.map +1 -0
- package/dist/auto/http.d.ts +18 -0
- package/dist/auto/http.d.ts.map +1 -0
- package/dist/auto/http.js +77 -0
- package/dist/auto/http.js.map +1 -0
- package/dist/auto/install.d.ts +5 -0
- package/dist/auto/install.d.ts.map +1 -0
- package/dist/auto/install.js +26 -0
- package/dist/auto/install.js.map +1 -0
- package/dist/auto/libraries.d.ts +3 -0
- package/dist/auto/libraries.d.ts.map +1 -0
- package/dist/auto/libraries.js +108 -0
- package/dist/auto/libraries.js.map +1 -0
- package/dist/auto/module-hooks.d.ts +14 -0
- package/dist/auto/module-hooks.d.ts.map +1 -0
- package/dist/auto/module-hooks.js +90 -0
- package/dist/auto/module-hooks.js.map +1 -0
- package/dist/auto/nest.d.ts +7 -0
- package/dist/auto/nest.d.ts.map +1 -0
- package/dist/auto/nest.js +26 -0
- package/dist/auto/nest.js.map +1 -0
- package/dist/auto/owner.d.ts +19 -0
- package/dist/auto/owner.d.ts.map +1 -0
- package/dist/auto/owner.js +52 -0
- package/dist/auto/owner.js.map +1 -0
- package/dist/auto/prisma.d.ts +3 -0
- package/dist/auto/prisma.d.ts.map +1 -0
- package/dist/auto/prisma.js +55 -0
- package/dist/auto/prisma.js.map +1 -0
- package/dist/auto/sqlite.d.ts +3 -0
- package/dist/auto/sqlite.d.ts.map +1 -0
- package/dist/auto/sqlite.js +31 -0
- package/dist/auto/sqlite.js.map +1 -0
- package/dist/auto/state.d.ts +14 -0
- package/dist/auto/state.d.ts.map +1 -0
- package/dist/auto/state.js +16 -0
- package/dist/auto/state.js.map +1 -0
- package/dist/auto.d.ts +2 -0
- package/dist/auto.d.ts.map +1 -0
- package/dist/auto.js +4 -0
- package/dist/auto.js.map +1 -0
- package/dist/capture.d.ts +3 -1
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +4 -4
- package/dist/capture.js.map +1 -1
- package/dist/client-attributes.d.ts +19 -0
- package/dist/client-attributes.d.ts.map +1 -0
- package/dist/client-attributes.js +56 -0
- package/dist/client-attributes.js.map +1 -0
- package/dist/client-spans.d.ts +6 -4
- package/dist/client-spans.d.ts.map +1 -1
- package/dist/client-spans.js +20 -9
- package/dist/client-spans.js.map +1 -1
- package/dist/db.js +1 -1
- package/dist/db.js.map +1 -1
- package/dist/frameworks/fastify.d.ts.map +1 -1
- package/dist/frameworks/fastify.js +4 -2
- package/dist/frameworks/fastify.js.map +1 -1
- package/dist/frameworks/hono.d.ts +16 -0
- package/dist/frameworks/hono.d.ts.map +1 -1
- package/dist/frameworks/hono.js +4 -4
- package/dist/frameworks/hono.js.map +1 -1
- package/dist/frameworks/koa.d.ts +2 -0
- package/dist/frameworks/koa.d.ts.map +1 -1
- package/dist/frameworks/koa.js +4 -4
- package/dist/frameworks/koa.js.map +1 -1
- package/dist/frameworks/nest-errors.d.ts +10 -0
- package/dist/frameworks/nest-errors.d.ts.map +1 -0
- package/dist/frameworks/nest-errors.js +75 -0
- package/dist/frameworks/nest-errors.js.map +1 -0
- package/dist/frameworks/nest-route.d.ts +31 -0
- package/dist/frameworks/nest-route.d.ts.map +1 -0
- package/dist/frameworks/nest-route.js +58 -0
- package/dist/frameworks/nest-route.js.map +1 -0
- package/dist/frameworks/nest.d.ts +16 -0
- package/dist/frameworks/nest.d.ts.map +1 -0
- package/dist/frameworks/nest.js +73 -0
- package/dist/frameworks/nest.js.map +1 -0
- package/dist/frameworks/node-server.d.ts +3 -0
- package/dist/frameworks/node-server.d.ts.map +1 -1
- package/dist/frameworks/node-server.js +5 -3
- package/dist/frameworks/node-server.js.map +1 -1
- package/dist/graphql/document.d.ts +13 -0
- package/dist/graphql/document.d.ts.map +1 -0
- package/dist/graphql/document.js +62 -0
- package/dist/graphql/document.js.map +1 -0
- package/dist/graphql/index.d.ts +11 -0
- package/dist/graphql/index.d.ts.map +1 -0
- package/dist/graphql/index.js +83 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/graphql/operation.d.ts +37 -0
- package/dist/graphql/operation.d.ts.map +1 -0
- package/dist/graphql/operation.js +58 -0
- package/dist/graphql/operation.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +5 -0
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +79 -0
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/shared.d.ts +14 -0
- package/dist/graphql/shared.d.ts.map +1 -0
- package/dist/graphql/shared.js +21 -0
- package/dist/graphql/shared.js.map +1 -0
- package/dist/http-client.d.ts +8 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +132 -0
- package/dist/http-client.js.map +1 -0
- package/dist/hub-connect.d.ts +2 -0
- package/dist/hub-connect.d.ts.map +1 -1
- package/dist/hub-connect.js +3 -1
- package/dist/hub-connect.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/info.d.ts +2 -0
- package/dist/info.d.ts.map +1 -1
- package/dist/info.js +1 -1
- package/dist/info.js.map +1 -1
- package/dist/kit.d.ts +3 -1
- package/dist/kit.d.ts.map +1 -1
- package/dist/kit.js +1 -0
- package/dist/kit.js.map +1 -1
- package/dist/logger.d.ts +4 -4
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +11 -7
- package/dist/logger.js.map +1 -1
- package/dist/logs/bunyan.d.ts +1 -1
- package/dist/logs/bunyan.d.ts.map +1 -1
- package/dist/logs/bunyan.js +2 -3
- package/dist/logs/bunyan.js.map +1 -1
- package/dist/logs/consola.d.ts +1 -1
- package/dist/logs/consola.d.ts.map +1 -1
- package/dist/logs/consola.js +1 -1
- package/dist/logs/consola.js.map +1 -1
- package/dist/logs/console.d.ts +1 -1
- package/dist/logs/console.d.ts.map +1 -1
- package/dist/logs/console.js +5 -3
- package/dist/logs/console.js.map +1 -1
- package/dist/logs/otel.d.ts.map +1 -1
- package/dist/logs/otel.js +1 -3
- package/dist/logs/otel.js.map +1 -1
- package/dist/logs/pino.d.ts +1 -1
- package/dist/logs/pino.d.ts.map +1 -1
- package/dist/logs/pino.js +2 -3
- package/dist/logs/pino.js.map +1 -1
- package/dist/logs/winston.d.ts +1 -1
- package/dist/logs/winston.d.ts.map +1 -1
- package/dist/logs/winston.js +2 -3
- package/dist/logs/winston.js.map +1 -1
- package/dist/loose-logs.d.ts +13 -0
- package/dist/loose-logs.d.ts.map +1 -0
- package/dist/loose-logs.js +21 -0
- package/dist/loose-logs.js.map +1 -0
- package/dist/mcp-find.d.ts +2 -2
- package/dist/mcp-find.d.ts.map +1 -1
- package/dist/mcp-find.js +68 -26
- package/dist/mcp-find.js.map +1 -1
- package/dist/mcp-memory.d.ts +7 -0
- package/dist/mcp-memory.d.ts.map +1 -0
- package/dist/mcp-memory.js +10 -0
- package/dist/mcp-memory.js.map +1 -0
- package/dist/mcp-metrics.d.ts +2 -2
- package/dist/mcp-metrics.d.ts.map +1 -1
- package/dist/mcp-metrics.js +11 -9
- package/dist/mcp-metrics.js.map +1 -1
- package/dist/mcp-overview.d.ts +5 -0
- package/dist/mcp-overview.d.ts.map +1 -0
- package/dist/mcp-overview.js +71 -0
- package/dist/mcp-overview.js.map +1 -0
- package/dist/mcp-page.d.ts +28 -0
- package/dist/mcp-page.d.ts.map +1 -0
- package/dist/mcp-page.js +77 -0
- package/dist/mcp-page.js.map +1 -0
- package/dist/mcp-problems.d.ts +5 -0
- package/dist/mcp-problems.d.ts.map +1 -0
- package/dist/mcp-problems.js +56 -0
- package/dist/mcp-problems.js.map +1 -0
- package/dist/mcp-projects.d.ts +11 -0
- package/dist/mcp-projects.d.ts.map +1 -0
- package/dist/mcp-projects.js +54 -0
- package/dist/mcp-projects.js.map +1 -0
- package/dist/mcp-search.d.ts +5 -0
- package/dist/mcp-search.d.ts.map +1 -0
- package/dist/mcp-search.js +53 -0
- package/dist/mcp-search.js.map +1 -0
- package/dist/mcp-shared.d.ts +83 -4
- package/dist/mcp-shared.d.ts.map +1 -1
- package/dist/mcp-shared.js +3 -0
- package/dist/mcp-shared.js.map +1 -1
- package/dist/mcp-store.d.ts +27 -0
- package/dist/mcp-store.d.ts.map +1 -0
- package/dist/mcp-store.js +56 -0
- package/dist/mcp-store.js.map +1 -0
- package/dist/mcp-tags.d.ts +8 -0
- package/dist/mcp-tags.d.ts.map +1 -0
- package/dist/mcp-tags.js +22 -0
- package/dist/mcp-tags.js.map +1 -0
- package/dist/mcp-traces.d.ts +2 -2
- package/dist/mcp-traces.d.ts.map +1 -1
- package/dist/mcp-traces.js +37 -25
- package/dist/mcp-traces.js.map +1 -1
- package/dist/mcp-traffic.d.ts +5 -0
- package/dist/mcp-traffic.d.ts.map +1 -0
- package/dist/mcp-traffic.js +87 -0
- package/dist/mcp-traffic.js.map +1 -0
- package/dist/mcp.d.ts +7 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +27 -8
- package/dist/mcp.js.map +1 -1
- package/dist/messaging/bullmq.d.ts +4 -0
- package/dist/messaging/bullmq.d.ts.map +1 -0
- package/dist/messaging/bullmq.js +137 -0
- package/dist/messaging/bullmq.js.map +1 -0
- package/dist/messaging/shared.d.ts +10 -4
- package/dist/messaging/shared.d.ts.map +1 -1
- package/dist/messaging/shared.js +13 -4
- package/dist/messaging/shared.js.map +1 -1
- package/dist/messaging/sqs-message.d.ts +35 -0
- package/dist/messaging/sqs-message.d.ts.map +1 -0
- package/dist/messaging/sqs-message.js +66 -0
- package/dist/messaging/sqs-message.js.map +1 -0
- package/dist/messaging/sqs.d.ts +4 -0
- package/dist/messaging/sqs.d.ts.map +1 -0
- package/dist/messaging/sqs.js +104 -0
- package/dist/messaging/sqs.js.map +1 -0
- package/dist/processor.d.ts +2 -1
- package/dist/processor.d.ts.map +1 -1
- package/dist/processor.js +8 -3
- package/dist/processor.js.map +1 -1
- package/dist/request-capture.d.ts +7 -1
- package/dist/request-capture.d.ts.map +1 -1
- package/dist/request-capture.js +14 -1
- package/dist/request-capture.js.map +1 -1
- package/dist/request-naming.d.ts +8 -0
- package/dist/request-naming.d.ts.map +1 -0
- package/dist/request-naming.js +29 -0
- package/dist/request-naming.js.map +1 -0
- package/dist/sampling.d.ts.map +1 -1
- package/dist/sampling.js +2 -2
- package/dist/sampling.js.map +1 -1
- package/dist/search-api.d.ts +8 -0
- package/dist/search-api.d.ts.map +1 -0
- package/dist/search-api.js +21 -0
- package/dist/search-api.js.map +1 -0
- package/dist/sourcemaps.d.ts +15 -0
- package/dist/sourcemaps.d.ts.map +1 -0
- package/dist/sourcemaps.js +68 -0
- package/dist/sourcemaps.js.map +1 -0
- package/dist/spans.d.ts +3 -0
- package/dist/spans.d.ts.map +1 -1
- package/dist/spans.js +9 -1
- package/dist/spans.js.map +1 -1
- package/dist/store-entries.d.ts +34 -0
- package/dist/store-entries.d.ts.map +1 -0
- package/dist/store-entries.js +70 -0
- package/dist/store-entries.js.map +1 -0
- package/dist/store.d.ts +4 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +19 -22
- package/dist/store.js.map +1 -1
- package/dist/tags-api.d.ts +9 -0
- package/dist/tags-api.d.ts.map +1 -0
- package/dist/tags-api.js +16 -0
- package/dist/tags-api.js.map +1 -0
- package/dist/tracing.d.ts +6 -0
- package/dist/tracing.d.ts.map +1 -1
- package/dist/tracing.js +11 -7
- package/dist/tracing.js.map +1 -1
- package/dist/types.d.ts +16 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +3 -2
- package/dist/ui.js.map +1 -1
- package/dist/wizelens.d.ts +3 -1
- package/dist/wizelens.d.ts.map +1 -1
- package/dist/wizelens.js +29 -13
- package/dist/wizelens.js.map +1 -1
- package/package.json +14 -4
package/dist/client-spans.js
CHANGED
|
@@ -6,6 +6,17 @@ const HEX16 = /^[0-9a-f]{16}$/;
|
|
|
6
6
|
const MAX_EVENTS = 50;
|
|
7
7
|
const LEVELS = ["trace", "debug", "info", "warn", "error", "critical"];
|
|
8
8
|
const text = (v, fallback, max) => (typeof v === "string" && v ? v.slice(0, max) : fallback);
|
|
9
|
+
// A crawler's clock put its page view 4.6 hours before the server request. Within this gap the difference is network time.
|
|
10
|
+
const CLOCK_TOLERANCE_MS = 10_000;
|
|
11
|
+
/** How far (ms) to move a browser's times onto this server's clock: 0 when it sent no clock, or one close enough. */
|
|
12
|
+
export function browserClockOffset(sentAt, receivedAt) {
|
|
13
|
+
const sent = Number(sentAt);
|
|
14
|
+
if (!Number.isFinite(sent) || sent <= 0)
|
|
15
|
+
return 0;
|
|
16
|
+
const offset = receivedAt - sent;
|
|
17
|
+
return Math.abs(offset) > CLOCK_TOLERANCE_MS ? offset : 0;
|
|
18
|
+
}
|
|
19
|
+
const shifted = (ms, shiftMs) => (ms ? ms + shiftMs : ms);
|
|
9
20
|
function toAttributes(raw, redactKeys) {
|
|
10
21
|
const out = {};
|
|
11
22
|
if (raw && typeof raw === "object") {
|
|
@@ -14,17 +25,17 @@ function toAttributes(raw, redactKeys) {
|
|
|
14
25
|
}
|
|
15
26
|
return redactAttributes(out, redactKeys);
|
|
16
27
|
}
|
|
17
|
-
function toEvents(raw, redactKeys) {
|
|
28
|
+
function toEvents(raw, redactKeys, shiftMs) {
|
|
18
29
|
const events = Array.isArray(raw) ? raw : [];
|
|
19
30
|
return events.slice(0, MAX_EVENTS).flatMap((e) => {
|
|
20
31
|
if (!e || typeof e !== "object")
|
|
21
32
|
return [];
|
|
22
33
|
const ev = e;
|
|
23
|
-
return [{ name: String(ev.name ?? "event"), timeMs: Number(ev.timeMs) || 0, attributes: toAttributes(ev.attributes, redactKeys) }];
|
|
34
|
+
return [{ name: String(ev.name ?? "event"), timeMs: shifted(Number(ev.timeMs) || 0, shiftMs), attributes: toAttributes(ev.attributes, redactKeys) }];
|
|
24
35
|
});
|
|
25
36
|
}
|
|
26
|
-
/** Validate and redact one span posted by the browser. Returns null when it is not a valid span. */
|
|
27
|
-
export function sanitizeClientSpan(raw, redactKeys) {
|
|
37
|
+
/** Validate and redact one span posted by the browser, moved by `shiftMs` (see browserClockOffset). Returns null when it is not a valid span. */
|
|
38
|
+
export function sanitizeClientSpan(raw, redactKeys, shiftMs = 0) {
|
|
28
39
|
if (!raw || typeof raw !== "object")
|
|
29
40
|
return null;
|
|
30
41
|
const s = raw;
|
|
@@ -41,23 +52,23 @@ export function sanitizeClientSpan(raw, redactKeys) {
|
|
|
41
52
|
kind: SPAN_KINDS.includes(s.kind) ? s.kind : "client",
|
|
42
53
|
category: CATEGORIES.includes(s.category) ? s.category : "browser",
|
|
43
54
|
service: typeof s.service === "string" && s.service ? s.service.slice(0, 100) : "browser",
|
|
44
|
-
startMs: Number(s.startMs) || 0,
|
|
55
|
+
startMs: shifted(Number(s.startMs) || 0, shiftMs),
|
|
45
56
|
durationMs: Math.max(0, Number(s.durationMs) || 0),
|
|
46
57
|
status: s.status === "error" || s.status === "ok" ? s.status : "unset",
|
|
47
58
|
statusMessage: typeof s.statusMessage === "string" ? s.statusMessage : null,
|
|
48
59
|
attributes: toAttributes(s.attributes, redactKeys),
|
|
49
|
-
events: toEvents(s.events, redactKeys),
|
|
60
|
+
events: toEvents(s.events, redactKeys, shiftMs),
|
|
50
61
|
};
|
|
51
62
|
}
|
|
52
|
-
/** Validate and redact one browser log line
|
|
53
|
-
export function sanitizeClientLog(raw, redactKeys) {
|
|
63
|
+
/** Validate and redact one browser log line, moved by `shiftMs`. Returns null when it has no valid trace. */
|
|
64
|
+
export function sanitizeClientLog(raw, redactKeys, shiftMs = 0) {
|
|
54
65
|
if (!raw || typeof raw !== "object")
|
|
55
66
|
return null;
|
|
56
67
|
const l = raw;
|
|
57
68
|
if (typeof l.traceId !== "string" || !HEX32.test(l.traceId))
|
|
58
69
|
return null;
|
|
59
70
|
const log = {
|
|
60
|
-
timeMs: Number(l.timeMs) || Date.now(),
|
|
71
|
+
timeMs: shifted(Number(l.timeMs), shiftMs) || Date.now(),
|
|
61
72
|
level: LEVELS.includes(l.level) ? l.level : "info",
|
|
62
73
|
category: text(l.category, "console", 100),
|
|
63
74
|
message: typeof l.message === "string" ? l.message.slice(0, 4000) : "",
|
package/dist/client-spans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-spans.js","sourceRoot":"","sources":["../src/client-spans.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAInB,gBAAgB,EAKhB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,GAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACrG,MAAM,UAAU,GAA4B,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACrH,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,MAAM,GAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC5F,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,QAAgB,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEtH,SAAS,YAAY,CAAC,GAAY,EAAE,UAA6B;IAC/D,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,UAA6B;
|
|
1
|
+
{"version":3,"file":"client-spans.js","sourceRoot":"","sources":["../src/client-spans.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
|
@@ -32,7 +32,7 @@ function dbAttributes(info, sql, params, redactKeys) {
|
|
|
32
32
|
const p = redactParams(params, redactKeys);
|
|
33
33
|
if (p !== null)
|
|
34
34
|
attributes["wizelens.db.parameters"] = p;
|
|
35
|
-
return attributes;
|
|
35
|
+
return info.attributes ? { ...info.attributes, ...attributes } : attributes;
|
|
36
36
|
}
|
|
37
37
|
function spanName(attributes) {
|
|
38
38
|
const op = String(attributes["db.operation.name"]);
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAe,MAAM,oBAAoB,CAAC;AAC5J,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,iIAAiI;AACjI,MAAM,SAAS,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AACzD,wGAAwG;AACxG,MAAM,aAAa,GAAG,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;AAEpE,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,SAAS,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,MAAM,UAAU,GAAG,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAQ,KAAmC,EAAE,IAAI,KAAK,UAAU,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB,EAAE,GAAW,EAAE,MAAe,EAAE,UAA6B;IACjG,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,UAAU,GAAmB;QACjC,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,gBAAgB,EAAE,IAAI,CAAC,MAAM;QAC7B,eAAe,EAAE,GAAG;QACpB,mBAAmB,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;QACvD,qBAAqB,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;KACzF,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;IACxD,IAAI,UAAU;QAAE,UAAU,CAAC,oBAAoB,CAAC,GAAG,UAAU,CAAC;IAC9D,IAAI,IAAI,CAAC,SAAS;QAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAChE,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,IAAI;QAAE,UAAU,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACzD,OAAO,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/frameworks/fastify.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAY5C,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../../src/frameworks/fastify.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAY5C,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;AAoDlC,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,SAC3B,OAAO,SAAS,OAAO,QAAQ,IAAI,KAAG,IAAI,CAahE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { context } from "@opentelemetry/api";
|
|
2
2
|
import { captureOf } from "../adapters/registry.js";
|
|
3
|
-
import { captureRequest, isOwnPath,
|
|
3
|
+
import { captureRequest, isOwnPath, isUntraced, pathOf, serveOwnPath, withoutTracing } from "../request-capture.js";
|
|
4
4
|
import { instrumentPino } from "../logs/pino.js";
|
|
5
5
|
import { markRouted } from "../route-timing.js";
|
|
6
6
|
import { recordOn } from "../spans.js";
|
|
@@ -8,8 +8,10 @@ const requests = new WeakMap();
|
|
|
8
8
|
function addHooks(app, d) {
|
|
9
9
|
app.addHook("onRequest", (request, reply, done) => {
|
|
10
10
|
const rawUrl = request.raw.url ?? "/";
|
|
11
|
-
if (isOwnPath(d, pathOf(rawUrl))
|
|
11
|
+
if (isOwnPath(d, pathOf(rawUrl)))
|
|
12
12
|
return done();
|
|
13
|
+
if (isUntraced(request.raw))
|
|
14
|
+
return withoutTracing(() => done());
|
|
13
15
|
const captured = captureRequest(d, request.raw, reply.raw, rawUrl, () => request.routeOptions?.url);
|
|
14
16
|
requests.set(request.raw, captured);
|
|
15
17
|
context.with(captured.ctx, () => done());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/frameworks/fastify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAA0C,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../../src/frameworks/fastify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAA0C,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5J,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA2BvC,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoC,CAAC;AAEjE,SAAS,QAAQ,CAAC,GAAgB,EAAE,CAAc;IAChD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QACtC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAChD,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACpG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8GAA8G;AAC9G,SAAS,YAAY,CAAC,GAAgB,EAAE,CAAc;IACpD,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClC,KAAK,CAAC,2BAA2B,EAAE,CAAC;QACpC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QACrF,MAAM,KAAK,GAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC7C,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,KAAc,EAAE,IAAU,EAAQ,EAAE;QAChE,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC;YACN,QAAQ,CAAC,GAAkB,EAAE,CAAC,CAAC,CAAC;YAChC,YAAY,CAAC,GAAkB,EAAE,CAAC,CAAC,CAAC;YACpC,+EAA+E;YAC/E,cAAc,CAAC,QAAQ,EAAG,GAAyB,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IACF,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IACjH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,5 +1,21 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
1
2
|
import type { WizeLens } from "../types.js";
|
|
3
|
+
export interface HonoContextLike {
|
|
4
|
+
env?: {
|
|
5
|
+
incoming?: IncomingMessage;
|
|
6
|
+
outgoing?: ServerResponse;
|
|
7
|
+
};
|
|
8
|
+
req: {
|
|
9
|
+
matchedRoutes?: {
|
|
10
|
+
method: string;
|
|
11
|
+
path: string;
|
|
12
|
+
}[];
|
|
13
|
+
};
|
|
14
|
+
error?: unknown;
|
|
15
|
+
}
|
|
2
16
|
type HonoNext = () => Promise<void>;
|
|
17
|
+
/** The route of the handler that answered: the last matched route that is not middleware. */
|
|
18
|
+
export declare function honoRoute(c: HonoContextLike): string | undefined;
|
|
3
19
|
/** Hono middleware for @hono/node-server: `app.use(wizelensHono(wizelens))`. Use it first. */
|
|
4
20
|
export declare function wizelensHono(wizelens: WizeLens): (context_: unknown, next: HonoNext) => Promise<Response | void>;
|
|
5
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAKjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC;IAChE,GAAG,EAAE;QAAE,aAAa,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAKpC,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,cACU,OAAO,QAAQ,QAAQ,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAgB1G"}
|
package/dist/frameworks/hono.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { context } from "@opentelemetry/api";
|
|
2
2
|
import { captureOf } from "../adapters/registry.js";
|
|
3
|
-
import { captureRequest, isOwnPath,
|
|
3
|
+
import { captureRequest, isOwnPath, isUntraced, pathOf, serveOwnPath, withoutTracing } from "../request-capture.js";
|
|
4
4
|
import { recordOn } from "../spans.js";
|
|
5
5
|
/** Tells @hono/node-server that the response was already written to the Node response. */
|
|
6
6
|
const alreadySent = () => new Response(null, { headers: { "x-hono-already-sent": "true" } });
|
|
7
7
|
/** The route of the handler that answered: the last matched route that is not middleware. */
|
|
8
|
-
function honoRoute(c) {
|
|
8
|
+
export function honoRoute(c) {
|
|
9
9
|
const routes = c.req.matchedRoutes ?? [];
|
|
10
10
|
return routes.filter((r) => r.method !== "ALL").pop()?.path;
|
|
11
11
|
}
|
|
@@ -23,8 +23,8 @@ export function wizelensHono(wizelens) {
|
|
|
23
23
|
await serveOwnPath(d, incoming, outgoing);
|
|
24
24
|
return alreadySent();
|
|
25
25
|
}
|
|
26
|
-
if (
|
|
27
|
-
return next
|
|
26
|
+
if (isUntraced(incoming))
|
|
27
|
+
return withoutTracing(next);
|
|
28
28
|
const { span, ctx } = captureRequest(d, incoming, outgoing, rawUrl, () => honoRoute(c));
|
|
29
29
|
await context.with(ctx, next);
|
|
30
30
|
if (c.error)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYvC,0FAA0F;AAC1F,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAE7F,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,CAAkB;IAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;AAC9D,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,KAAK,UAAU,sBAAsB,CAAC,QAAiB,EAAE,IAAc;QAC5E,MAAM,CAAC,GAAG,QAA2B,CAAC;QACtC,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/frameworks/koa.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ interface KoaContextLike {
|
|
|
7
7
|
_matchedRoute?: unknown;
|
|
8
8
|
}
|
|
9
9
|
type KoaNext = () => Promise<unknown>;
|
|
10
|
+
/** Koa's error handler removes all headers, then sets `err.headers`. Keep the WizeLens headers so the browser can link the failure. */
|
|
11
|
+
export declare function keepHeaders(err: unknown, res: ServerResponse): void;
|
|
10
12
|
/** Koa middleware: `app.use(wizelensKoa(wizelens))`. Use it first. Reads the route from @koa/router. */
|
|
11
13
|
export declare function wizelensKoa(wizelens: WizeLens): (ctx: KoaContextLike, next: KoaNext) => Promise<void>;
|
|
12
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,UAAU,cAAc;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,UAAU,cAAc;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAItC,uIAAuI;AACvI,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAKnE;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,SACK,cAAc,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F"}
|
package/dist/frameworks/koa.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { context } from "@opentelemetry/api";
|
|
2
2
|
import { HEADER_ENDPOINT, HEADER_TRACE } from "@wizeworks/lens-core";
|
|
3
3
|
import { captureOf } from "../adapters/registry.js";
|
|
4
|
-
import { captureRequest, isOwnPath,
|
|
4
|
+
import { captureRequest, isOwnPath, isUntraced, pathOf, serveOwnPath, withoutTracing } from "../request-capture.js";
|
|
5
5
|
import { watchRoute } from "../route-timing.js";
|
|
6
6
|
import { recordOn } from "../spans.js";
|
|
7
7
|
const KEEP = [HEADER_TRACE, HEADER_ENDPOINT, "Access-Control-Expose-Headers"];
|
|
8
8
|
/** Koa's error handler removes all headers, then sets `err.headers`. Keep the WizeLens headers so the browser can link the failure. */
|
|
9
|
-
function keepHeaders(err, res) {
|
|
9
|
+
export function keepHeaders(err, res) {
|
|
10
10
|
if (!err || typeof err !== "object")
|
|
11
11
|
return;
|
|
12
12
|
const e = err;
|
|
@@ -24,8 +24,8 @@ export function wizelensKoa(wizelens) {
|
|
|
24
24
|
ctx.respond = false;
|
|
25
25
|
return serveOwnPath(d, ctx.req, ctx.res);
|
|
26
26
|
}
|
|
27
|
-
if (
|
|
28
|
-
return void (await next
|
|
27
|
+
if (isUntraced(ctx.req))
|
|
28
|
+
return void (await withoutTracing(next));
|
|
29
29
|
const route = () => (typeof ctx._matchedRoute === "string" ? ctx._matchedRoute : undefined);
|
|
30
30
|
const { span, ctx: otelCtx, startedAt } = captureRequest(d, ctx.req, ctx.res, rawUrl, route);
|
|
31
31
|
watchRoute(ctx, "_matchedRoute", span, startedAt);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.js","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"koa.js","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,+BAA+B,CAAC,CAAC;AAE9E,uIAAuI;AACvI,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,GAAmB;IAC3D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAC5C,MAAM,CAAC,GAAG,GAA4C,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,KAAK,UAAU,qBAAqB,CAAC,GAAmB,EAAE,IAAa;QAC5E,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAClC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7F,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IncomingMessage } from "node:http";
|
|
2
|
+
/** The Node request behind what Nest hands out: the Express request itself, or the Fastify request's `raw`. */
|
|
3
|
+
export declare function rawRequest(req: unknown): IncomingMessage | undefined;
|
|
4
|
+
/** Record a Nest exception on its request's span, once, however many hooks see it. */
|
|
5
|
+
export declare function recordNestError(req: IncomingMessage | undefined, err: unknown): void;
|
|
6
|
+
/** The handler's stream with `onError` called before an error goes on to Nest's exception filters. */
|
|
7
|
+
export declare function tapErrors(source: unknown, onError: (err: unknown) => void): unknown;
|
|
8
|
+
/** Hook Nest's RouterExceptionFilters so every exception its filters answer (guards, pipes, handlers, middleware) is recorded. Run before `app.init()`. */
|
|
9
|
+
export declare function hookExceptionFilters(filters: object): boolean;
|
|
10
|
+
//# sourceMappingURL=nest-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-errors.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAuBjD,+GAA+G;AAC/G,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAIpE;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAKpF;AAoBD,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAanF;AAeD,2JAA2J;AAC3J,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU7D"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { patchMethod } from "../adapters/registry.js";
|
|
2
|
+
import { requestSpan } from "../request-capture.js";
|
|
3
|
+
import { recordOn } from "../spans.js";
|
|
4
|
+
const recorded = new WeakMap();
|
|
5
|
+
/** The Node request behind what Nest hands out: the Express request itself, or the Fastify request's `raw`. */
|
|
6
|
+
export function rawRequest(req) {
|
|
7
|
+
const r = req;
|
|
8
|
+
if (r?.raw && typeof r.raw === "object" && "headers" in r.raw)
|
|
9
|
+
return r.raw;
|
|
10
|
+
return r && typeof r === "object" && r.headers ? r : undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Record a Nest exception on its request's span, once, however many hooks see it. */
|
|
13
|
+
export function recordNestError(req, err) {
|
|
14
|
+
const span = req ? requestSpan(req) : undefined;
|
|
15
|
+
if (!span || err === undefined || recorded.get(span) === err)
|
|
16
|
+
return;
|
|
17
|
+
recorded.set(span, err);
|
|
18
|
+
recordOn(span, err);
|
|
19
|
+
}
|
|
20
|
+
/** The HTTP status of a Nest HttpException, if it is one. */
|
|
21
|
+
function statusOf(err) {
|
|
22
|
+
const getStatus = err?.getStatus;
|
|
23
|
+
return typeof getStatus === "function" ? Number(getStatus.call(err)) : undefined;
|
|
24
|
+
}
|
|
25
|
+
/** An rxjs-compatible stream from a subscribe function: one of the source's own class, else an interop observable. */
|
|
26
|
+
function streamLike(source, subscribe) {
|
|
27
|
+
const Ctor = source.constructor;
|
|
28
|
+
if (typeof Ctor === "function" && Ctor !== Object)
|
|
29
|
+
return new Ctor(subscribe);
|
|
30
|
+
const out = { subscribe };
|
|
31
|
+
const self = () => out;
|
|
32
|
+
out["@@observable"] = self;
|
|
33
|
+
const symbol = Symbol.observable;
|
|
34
|
+
if (symbol)
|
|
35
|
+
out[symbol] = self;
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
/** The handler's stream with `onError` called before an error goes on to Nest's exception filters. */
|
|
39
|
+
export function tapErrors(source, onError) {
|
|
40
|
+
const s = source;
|
|
41
|
+
if (!s || typeof s.subscribe !== "function")
|
|
42
|
+
return source;
|
|
43
|
+
return streamLike(s, (subscriber) => s.subscribe({
|
|
44
|
+
next: (value) => subscriber.next?.(value),
|
|
45
|
+
error: (err) => {
|
|
46
|
+
onError(err);
|
|
47
|
+
subscriber.error?.(err);
|
|
48
|
+
},
|
|
49
|
+
complete: () => subscriber.complete?.(),
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
/** Wrap one exception handler: every exception it is given is recorded, except the 404 of a path no route matched. */
|
|
53
|
+
function hookHandler(handler, appLevel) {
|
|
54
|
+
if (!handler || typeof handler !== "object")
|
|
55
|
+
return;
|
|
56
|
+
patchMethod(handler, "next", (next) => function (exception, host) {
|
|
57
|
+
if (!(appLevel && statusOf(exception) === 404)) {
|
|
58
|
+
const req = host?.getArgByIndex?.(0);
|
|
59
|
+
recordNestError(rawRequest(req), exception);
|
|
60
|
+
}
|
|
61
|
+
return next.call(this, exception, host);
|
|
62
|
+
}, "nest-filter");
|
|
63
|
+
}
|
|
64
|
+
/** Hook Nest's RouterExceptionFilters so every exception its filters answer (guards, pipes, handlers, middleware) is recorded. Run before `app.init()`. */
|
|
65
|
+
export function hookExceptionFilters(filters) {
|
|
66
|
+
return patchMethod(filters, "create", (original) => function (...args) {
|
|
67
|
+
const handler = original.apply(this, args);
|
|
68
|
+
const owner = args[0];
|
|
69
|
+
// The not-found and error handlers of the app are made for a plain `{}`, not a controller.
|
|
70
|
+
const appLevel = !!owner && Object.getPrototypeOf(owner) === Object.prototype;
|
|
71
|
+
hookHandler(handler, appLevel);
|
|
72
|
+
return handler;
|
|
73
|
+
}, "nest-filters");
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=nest-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-errors.js","sourceRoot":"","sources":["../../src/frameworks/nest-errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
type Target = object;
|
|
2
|
+
/** The parts of a Nest ExecutionContext the add-on reads. */
|
|
3
|
+
export interface NestContextLike {
|
|
4
|
+
getClass(): Target & {
|
|
5
|
+
name?: string;
|
|
6
|
+
};
|
|
7
|
+
getHandler(): Target & {
|
|
8
|
+
name?: string;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/** The parts of a Nest app the add-on reads: its global prefix and versioning. Both are private config, read when present. */
|
|
12
|
+
export interface NestConfigHolder {
|
|
13
|
+
config?: {
|
|
14
|
+
getGlobalPrefix?: () => string | undefined;
|
|
15
|
+
getVersioning?: () => {
|
|
16
|
+
type?: number;
|
|
17
|
+
prefix?: string | false;
|
|
18
|
+
defaultVersion?: unknown;
|
|
19
|
+
} | undefined;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** Join route parts into "/a/b/:id", with no empty, double, or trailing slashes. */
|
|
23
|
+
export declare const joinRoute: (...parts: string[]) => string;
|
|
24
|
+
/** True when a route template ("/orders/:id", "/files/*path", "/a{/:b}") matches a path. */
|
|
25
|
+
export declare function routeMatches(template: string, path: string): boolean;
|
|
26
|
+
/** The version this handler declares, else its controller's, as a list. A neutral version (a symbol) is no version. */
|
|
27
|
+
export declare function versionsOf(ctx: NestContextLike, fallback?: unknown): string[];
|
|
28
|
+
/** The route template of a Nest handler from its metadata, picked by the path it answered. Undefined when there is no metadata. */
|
|
29
|
+
export declare function nestRoute(ctx: NestContextLike, app: NestConfigHolder | undefined, path: string): string | undefined;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=nest-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-route.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest-route.ts"],"names":[],"mappings":"AAKA,KAAK,MAAM,GAAG,MAAM,CAAC;AAErB,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,UAAU,IAAI,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,8HAA8H;AAC9H,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;QAC3C,aAAa,CAAC,EAAE,MAAM;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,SAAS,CAAC;KACxG,CAAC;CACH;AAYD,oFAAoF;AACpF,eAAO,MAAM,SAAS,aAAc,MAAM,EAAE,KAAG,MAA4E,CAAC;AAE5H,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpE;AAED,uHAAuH;AACvH,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAG7E;AAsBD,mIAAmI;AACnI,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAInH"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Nest's metadata keys (@nestjs/common constants) and its URI versioning type, so the add-on has no dependency on Nest.
|
|
2
|
+
const PATH_METADATA = "path";
|
|
3
|
+
const VERSION_METADATA = "__version__";
|
|
4
|
+
const VERSIONING_URI = 0;
|
|
5
|
+
const metadata = (key, target) => Reflect.getMetadata?.(key, target);
|
|
6
|
+
const listOf = (value) => {
|
|
7
|
+
const list = Array.isArray(value) ? value : [value];
|
|
8
|
+
return list.filter((v) => typeof v === "string");
|
|
9
|
+
};
|
|
10
|
+
const orRoot = (list) => (list.length > 0 ? list : [""]);
|
|
11
|
+
/** Join route parts into "/a/b/:id", with no empty, double, or trailing slashes. */
|
|
12
|
+
export const joinRoute = (...parts) => `/${parts.flatMap((p) => p.split("/")).filter(Boolean).join("/")}`;
|
|
13
|
+
/** True when a route template ("/orders/:id", "/files/*path", "/a{/:b}") matches a path. */
|
|
14
|
+
export function routeMatches(template, path) {
|
|
15
|
+
const pattern = template
|
|
16
|
+
.replace(/[.+?^$()|[\]\\]/g, "\\$&")
|
|
17
|
+
.replace(/\{/g, "(?:")
|
|
18
|
+
.replace(/\}/g, ")?")
|
|
19
|
+
.replace(/:\w+/g, "[^/]+")
|
|
20
|
+
.replace(/\*\w*/g, ".*");
|
|
21
|
+
return new RegExp(`^${pattern}/?$`).test(path);
|
|
22
|
+
}
|
|
23
|
+
/** The version this handler declares, else its controller's, as a list. A neutral version (a symbol) is no version. */
|
|
24
|
+
export function versionsOf(ctx, fallback) {
|
|
25
|
+
const declared = metadata(VERSION_METADATA, ctx.getHandler()) ?? metadata(VERSION_METADATA, ctx.getClass()) ?? fallback;
|
|
26
|
+
return listOf(declared);
|
|
27
|
+
}
|
|
28
|
+
/** The URI version segments ("v1") a route can start with, or [""] when URI versioning is off. */
|
|
29
|
+
function uriVersions(ctx, app) {
|
|
30
|
+
const versioning = app?.config?.getVersioning?.();
|
|
31
|
+
if (!versioning || versioning.type !== VERSIONING_URI)
|
|
32
|
+
return [""];
|
|
33
|
+
const prefix = versioning.prefix === false ? "" : (versioning.prefix ?? "v");
|
|
34
|
+
return orRoot(versionsOf(ctx, versioning.defaultVersion).map((v) => `${prefix}${v}`));
|
|
35
|
+
}
|
|
36
|
+
/** Every route Nest could have registered this handler under: global prefix (or excluded), version, controller path, handler path. */
|
|
37
|
+
function candidates(ctx, app) {
|
|
38
|
+
const prefix = app?.config?.getGlobalPrefix?.() ?? "";
|
|
39
|
+
const prefixes = prefix ? [prefix, ""] : [""];
|
|
40
|
+
const versions = uriVersions(ctx, app);
|
|
41
|
+
const controllers = orRoot(listOf(metadata(PATH_METADATA, ctx.getClass())));
|
|
42
|
+
const handlers = orRoot(listOf(metadata(PATH_METADATA, ctx.getHandler())));
|
|
43
|
+
const out = [];
|
|
44
|
+
for (const p of prefixes)
|
|
45
|
+
for (const v of versions)
|
|
46
|
+
for (const c of controllers)
|
|
47
|
+
for (const h of handlers)
|
|
48
|
+
out.push(joinRoute(p, v, c, h));
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
/** The route template of a Nest handler from its metadata, picked by the path it answered. Undefined when there is no metadata. */
|
|
52
|
+
export function nestRoute(ctx, app, path) {
|
|
53
|
+
if (metadata(PATH_METADATA, ctx.getHandler()) === undefined)
|
|
54
|
+
return undefined;
|
|
55
|
+
const all = candidates(ctx, app);
|
|
56
|
+
return all.find((route) => routeMatches(route, path)) ?? all[0];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=nest-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-route.js","sourceRoot":"","sources":["../../src/frameworks/nest-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { WizeLens } from "../types.js";
|
|
2
|
+
export interface NestOptions {
|
|
3
|
+
/** Add the request capture for the app's platform (Express middleware or the Fastify plugin). False when you added it yourself. Default true. */
|
|
4
|
+
capture?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** A NestJS interceptor that names the request by its controller and handler and records what they throw: `app.useGlobalInterceptors(new WizeLensNestInterceptor(app))`. */
|
|
7
|
+
export declare class WizeLensNestInterceptor {
|
|
8
|
+
private readonly app;
|
|
9
|
+
constructor(app?: unknown);
|
|
10
|
+
intercept(context: unknown, next: unknown): unknown;
|
|
11
|
+
}
|
|
12
|
+
/** Add the global interceptor and the exception filter hook to a Nest app, once. */
|
|
13
|
+
export declare function addNestHooks(app: unknown): boolean;
|
|
14
|
+
/** Trace a NestJS app on Express or Fastify: call `instrumentNest(wizelens, app)` right after `NestFactory.create`, before `app.listen()`. */
|
|
15
|
+
export declare function instrumentNest(wizelens: WizeLens, app: unknown, options?: NestOptions): boolean;
|
|
16
|
+
//# sourceMappingURL=nest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqBjD,MAAM,WAAW,WAAW;IAC1B,iJAAiJ;IACjJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,4KAA4K;AAC5K,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAE9C,YAAY,GAAG,CAAC,EAAE,OAAO,EAExB;IAED,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAQlD;CACF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASlD;AASD,8IAA8I;AAC9I,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAMnG"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { captureOf } from "../adapters/registry.js";
|
|
2
|
+
import { pathOf, requestSpan } from "../request-capture.js";
|
|
3
|
+
import { setFallbackRoute } from "../request-naming.js";
|
|
4
|
+
import { wizelensFastify } from "./fastify.js";
|
|
5
|
+
import { hookExceptionFilters, rawRequest, recordNestError, tapErrors } from "./nest-errors.js";
|
|
6
|
+
import { nestRoute, versionsOf } from "./nest-route.js";
|
|
7
|
+
const INSTALLED = Symbol.for("wizeworks.wizelens.nest");
|
|
8
|
+
/** Controller, handler, version, and the metadata route of the handler that answers this request. */
|
|
9
|
+
function describeHandler(span, ctx, app, path) {
|
|
10
|
+
const controller = ctx.getClass().name;
|
|
11
|
+
const handler = ctx.getHandler().name;
|
|
12
|
+
if (controller)
|
|
13
|
+
span.setAttribute("nest.controller", controller);
|
|
14
|
+
if (handler)
|
|
15
|
+
span.setAttribute("nest.handler", handler);
|
|
16
|
+
const version = versionsOf(ctx, app?.config?.getVersioning?.()?.defaultVersion)[0];
|
|
17
|
+
if (version)
|
|
18
|
+
span.setAttribute("nest.version", version);
|
|
19
|
+
const route = nestRoute(ctx, app, path);
|
|
20
|
+
if (route)
|
|
21
|
+
setFallbackRoute(span, route);
|
|
22
|
+
}
|
|
23
|
+
/** A NestJS interceptor that names the request by its controller and handler and records what they throw: `app.useGlobalInterceptors(new WizeLensNestInterceptor(app))`. */
|
|
24
|
+
export class WizeLensNestInterceptor {
|
|
25
|
+
app;
|
|
26
|
+
constructor(app) {
|
|
27
|
+
this.app = app;
|
|
28
|
+
}
|
|
29
|
+
intercept(context, next) {
|
|
30
|
+
const ctx = context;
|
|
31
|
+
const handler = next;
|
|
32
|
+
const req = ctx.getType?.() === "http" ? rawRequest(ctx.switchToHttp?.().getRequest?.()) : undefined;
|
|
33
|
+
const span = req ? requestSpan(req) : undefined;
|
|
34
|
+
if (!req || !span)
|
|
35
|
+
return handler.handle();
|
|
36
|
+
describeHandler(span, ctx, this.app, pathOf(req.originalUrl ?? req.url ?? "/"));
|
|
37
|
+
return tapErrors(handler.handle(), (err) => recordNestError(req, err));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Add the global interceptor and the exception filter hook to a Nest app, once. */
|
|
41
|
+
export function addNestHooks(app) {
|
|
42
|
+
const a = app;
|
|
43
|
+
if (!a || typeof a.useGlobalInterceptors !== "function")
|
|
44
|
+
return false;
|
|
45
|
+
if (a[INSTALLED])
|
|
46
|
+
return true;
|
|
47
|
+
a[INSTALLED] = true;
|
|
48
|
+
a.useGlobalInterceptors(new WizeLensNestInterceptor(a));
|
|
49
|
+
const filters = a.routesResolver?.routerExceptionsFilter;
|
|
50
|
+
if (filters)
|
|
51
|
+
hookExceptionFilters(Object.getPrototypeOf(filters));
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
/** Capture requests the way the app's platform needs: the Express middleware, or the Fastify plugin. */
|
|
55
|
+
function addCapture(wizelens, app) {
|
|
56
|
+
const platform = app.getHttpAdapter?.()?.getType?.();
|
|
57
|
+
if (platform === "express")
|
|
58
|
+
app.use?.(wizelens.middleware);
|
|
59
|
+
else if (platform === "fastify")
|
|
60
|
+
void app.register?.(wizelensFastify(wizelens));
|
|
61
|
+
}
|
|
62
|
+
/** Trace a NestJS app on Express or Fastify: call `instrumentNest(wizelens, app)` right after `NestFactory.create`, before `app.listen()`. */
|
|
63
|
+
export function instrumentNest(wizelens, app, options = {}) {
|
|
64
|
+
const a = app;
|
|
65
|
+
if (!captureOf(wizelens) || !a || typeof a.useGlobalInterceptors !== "function")
|
|
66
|
+
return false;
|
|
67
|
+
if (a[INSTALLED])
|
|
68
|
+
return true;
|
|
69
|
+
if (options.capture !== false)
|
|
70
|
+
addCapture(wizelens, a);
|
|
71
|
+
return addNestHooks(a);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=nest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest.js","sourceRoot":"","sources":["../../src/frameworks/nest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { type Span as OtelSpan } from "@opentelemetry/api";
|
|
1
2
|
import { type CaptureDeps } from "../request-capture.js";
|
|
2
3
|
/** True for a path that is not traced, for example a static file. */
|
|
3
4
|
export type IgnorePath = (path: string) => boolean;
|
|
5
|
+
/** A string attribute of a live SDK span. The OTel API has no getter, so this reads the SDK field. */
|
|
6
|
+
export declare function attributeOf(span: OtelSpan, key: string): string | undefined;
|
|
4
7
|
/** Trace each request of every node:http and node:https server in this process. For frameworks with no middleware hook, such as Next.js. */
|
|
5
8
|
export declare function traceServers(d: CaptureDeps, ignore: IgnorePath): void;
|
|
6
9
|
//# sourceMappingURL=node-server.d.ts.map
|