@wizeworks/lens-node 0.0.0-stage → 0.3.0-alpha.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/LICENSE +21 -0
- package/README.md +65 -2
- package/dist/adapters/drizzle.d.ts +7 -0
- package/dist/adapters/drizzle.d.ts.map +1 -0
- package/dist/adapters/drizzle.js +41 -0
- package/dist/adapters/drizzle.js.map +1 -0
- package/dist/adapters/mysql2.d.ts +6 -0
- package/dist/adapters/mysql2.d.ts.map +1 -0
- package/dist/adapters/mysql2.js +60 -0
- package/dist/adapters/mysql2.js.map +1 -0
- package/dist/adapters/pg.d.ts +6 -0
- package/dist/adapters/pg.d.ts.map +1 -0
- package/dist/adapters/pg.js +50 -0
- package/dist/adapters/pg.js.map +1 -0
- package/dist/adapters/prisma.d.ts +22 -0
- package/dist/adapters/prisma.d.ts.map +1 -0
- package/dist/adapters/prisma.js +48 -0
- package/dist/adapters/prisma.js.map +1 -0
- package/dist/adapters/registry.d.ts +37 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +41 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/sqlite.d.ts +10 -0
- package/dist/adapters/sqlite.d.ts.map +1 -0
- package/dist/adapters/sqlite.js +59 -0
- package/dist/adapters/sqlite.js.map +1 -0
- package/dist/adapters/typeorm.d.ts +4 -0
- package/dist/adapters/typeorm.d.ts.map +1 -0
- package/dist/adapters/typeorm.js +43 -0
- package/dist/adapters/typeorm.js.map +1 -0
- package/dist/api.d.ts +24 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +106 -0
- package/dist/api.js.map +1 -0
- package/dist/body-capture.d.ts +13 -0
- package/dist/body-capture.d.ts.map +1 -0
- package/dist/body-capture.js +54 -0
- package/dist/body-capture.js.map +1 -0
- package/dist/capture.d.ts +8 -0
- package/dist/capture.d.ts.map +1 -0
- package/dist/capture.js +33 -0
- package/dist/capture.js.map +1 -0
- package/dist/client-spans.d.ts +11 -0
- package/dist/client-spans.d.ts.map +1 -0
- package/dist/client-spans.js +83 -0
- package/dist/client-spans.js.map +1 -0
- package/dist/db.d.ts +25 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +107 -0
- package/dist/db.js.map +1 -0
- package/dist/disabled.d.ts +4 -0
- package/dist/disabled.d.ts.map +1 -0
- package/dist/disabled.js +25 -0
- package/dist/disabled.js.map +1 -0
- package/dist/expose-headers.d.ts +6 -0
- package/dist/expose-headers.d.ts.map +1 -0
- package/dist/expose-headers.js +43 -0
- package/dist/expose-headers.js.map +1 -0
- package/dist/federation.d.ts +7 -0
- package/dist/federation.d.ts.map +1 -0
- package/dist/federation.js +33 -0
- package/dist/federation.js.map +1 -0
- package/dist/frameworks/fastify.d.ts +6 -0
- package/dist/frameworks/fastify.d.ts.map +1 -0
- package/dist/frameworks/fastify.js +60 -0
- package/dist/frameworks/fastify.js.map +1 -0
- package/dist/frameworks/hono.d.ts +6 -0
- package/dist/frameworks/hono.d.ts.map +1 -0
- package/dist/frameworks/hono.js +34 -0
- package/dist/frameworks/hono.js.map +1 -0
- package/dist/frameworks/koa.d.ts +13 -0
- package/dist/frameworks/koa.d.ts.map +1 -0
- package/dist/frameworks/koa.js +42 -0
- package/dist/frameworks/koa.js.map +1 -0
- package/dist/frameworks/next.d.ts +25 -0
- package/dist/frameworks/next.d.ts.map +1 -0
- package/dist/frameworks/next.js +49 -0
- package/dist/frameworks/next.js.map +1 -0
- package/dist/frameworks/node-server.d.ts +6 -0
- package/dist/frameworks/node-server.d.ts.map +1 -0
- package/dist/frameworks/node-server.js +35 -0
- package/dist/frameworks/node-server.js.map +1 -0
- package/dist/grpc/client.d.ts +6 -0
- package/dist/grpc/client.d.ts.map +1 -0
- package/dist/grpc/client.js +52 -0
- package/dist/grpc/client.js.map +1 -0
- package/dist/grpc/index.d.ts +4 -0
- package/dist/grpc/index.d.ts.map +1 -0
- package/dist/grpc/index.js +16 -0
- package/dist/grpc/index.js.map +1 -0
- package/dist/grpc/server.d.ts +10 -0
- package/dist/grpc/server.d.ts.map +1 -0
- package/dist/grpc/server.js +98 -0
- package/dist/grpc/server.js.map +1 -0
- package/dist/grpc/shared.d.ts +40 -0
- package/dist/grpc/shared.d.ts.map +1 -0
- package/dist/grpc/shared.js +45 -0
- package/dist/grpc/shared.js.map +1 -0
- package/dist/http-util.d.ts +10 -0
- package/dist/http-util.d.ts.map +1 -0
- package/dist/http-util.js +47 -0
- package/dist/http-util.js.map +1 -0
- package/dist/hub-connect.d.ts +10 -0
- package/dist/hub-connect.d.ts.map +1 -0
- package/dist/hub-connect.js +22 -0
- package/dist/hub-connect.js.map +1 -0
- package/dist/hub-export.d.ts +34 -0
- package/dist/hub-export.d.ts.map +1 -0
- package/dist/hub-export.js +135 -0
- package/dist/hub-export.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/info.d.ts +18 -0
- package/dist/info.d.ts.map +1 -0
- package/dist/info.js +31 -0
- package/dist/info.js.map +1 -0
- package/dist/kit.d.ts +14 -0
- package/dist/kit.d.ts.map +1 -0
- package/dist/kit.js +12 -0
- package/dist/kit.js.map +1 -0
- package/dist/logger.d.ts +29 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +82 -0
- package/dist/logger.js.map +1 -0
- package/dist/logs/bunyan.d.ts +4 -0
- package/dist/logs/bunyan.d.ts.map +1 -0
- package/dist/logs/bunyan.js +42 -0
- package/dist/logs/bunyan.js.map +1 -0
- package/dist/logs/captured.d.ts +4 -0
- package/dist/logs/captured.d.ts.map +1 -0
- package/dist/logs/captured.js +9 -0
- package/dist/logs/captured.js.map +1 -0
- package/dist/logs/consola.d.ts +4 -0
- package/dist/logs/consola.d.ts.map +1 -0
- package/dist/logs/consola.js +25 -0
- package/dist/logs/consola.js.map +1 -0
- package/dist/logs/console.d.ts +4 -0
- package/dist/logs/console.d.ts.map +1 -0
- package/dist/logs/console.js +49 -0
- package/dist/logs/console.js.map +1 -0
- package/dist/logs/levels.d.ts +14 -0
- package/dist/logs/levels.d.ts.map +1 -0
- package/dist/logs/levels.js +58 -0
- package/dist/logs/levels.js.map +1 -0
- package/dist/logs/log4js.d.ts +16 -0
- package/dist/logs/log4js.d.ts.map +1 -0
- package/dist/logs/log4js.js +21 -0
- package/dist/logs/log4js.js.map +1 -0
- package/dist/logs/nest.d.ts +6 -0
- package/dist/logs/nest.d.ts.map +1 -0
- package/dist/logs/nest.js +34 -0
- package/dist/logs/nest.js.map +1 -0
- package/dist/logs/otel.d.ts +24 -0
- package/dist/logs/otel.d.ts.map +1 -0
- package/dist/logs/otel.js +31 -0
- package/dist/logs/otel.js.map +1 -0
- package/dist/logs/pino.d.ts +4 -0
- package/dist/logs/pino.d.ts.map +1 -0
- package/dist/logs/pino.js +86 -0
- package/dist/logs/pino.js.map +1 -0
- package/dist/logs/winston.d.ts +4 -0
- package/dist/logs/winston.d.ts.map +1 -0
- package/dist/logs/winston.js +65 -0
- package/dist/logs/winston.js.map +1 -0
- package/dist/mcp-find.d.ts +5 -0
- package/dist/mcp-find.d.ts.map +1 -0
- package/dist/mcp-find.js +42 -0
- package/dist/mcp-find.js.map +1 -0
- package/dist/mcp-metrics.d.ts +5 -0
- package/dist/mcp-metrics.d.ts.map +1 -0
- package/dist/mcp-metrics.js +77 -0
- package/dist/mcp-metrics.js.map +1 -0
- package/dist/mcp-shared.d.ts +30 -0
- package/dist/mcp-shared.d.ts.map +1 -0
- package/dist/mcp-shared.js +5 -0
- package/dist/mcp-shared.js.map +1 -0
- package/dist/mcp-traces.d.ts +5 -0
- package/dist/mcp-traces.d.ts.map +1 -0
- package/dist/mcp-traces.js +51 -0
- package/dist/mcp-traces.js.map +1 -0
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +26 -0
- package/dist/mcp.js.map +1 -0
- package/dist/messaging/amqplib.d.ts +4 -0
- package/dist/messaging/amqplib.d.ts.map +1 -0
- package/dist/messaging/amqplib.js +89 -0
- package/dist/messaging/amqplib.js.map +1 -0
- package/dist/messaging/kafkajs.d.ts +4 -0
- package/dist/messaging/kafkajs.d.ts.map +1 -0
- package/dist/messaging/kafkajs.js +78 -0
- package/dist/messaging/kafkajs.js.map +1 -0
- package/dist/messaging/servicebus.d.ts +4 -0
- package/dist/messaging/servicebus.d.ts.map +1 -0
- package/dist/messaging/servicebus.js +85 -0
- package/dist/messaging/servicebus.js.map +1 -0
- package/dist/messaging/shared.d.ts +30 -0
- package/dist/messaging/shared.d.ts.map +1 -0
- package/dist/messaging/shared.js +74 -0
- package/dist/messaging/shared.js.map +1 -0
- package/dist/metrics/exponential.d.ts +17 -0
- package/dist/metrics/exponential.d.ts.map +1 -0
- package/dist/metrics/exponential.js +12 -0
- package/dist/metrics/exponential.js.map +1 -0
- package/dist/metrics/gc.d.ts +15 -0
- package/dist/metrics/gc.d.ts.map +1 -0
- package/dist/metrics/gc.js +44 -0
- package/dist/metrics/gc.js.map +1 -0
- package/dist/metrics/otel.d.ts +39 -0
- package/dist/metrics/otel.d.ts.map +1 -0
- package/dist/metrics/otel.js +62 -0
- package/dist/metrics/otel.js.map +1 -0
- package/dist/metrics/runtime.d.ts +17 -0
- package/dist/metrics/runtime.d.ts.map +1 -0
- package/dist/metrics/runtime.js +100 -0
- package/dist/metrics/runtime.js.map +1 -0
- package/dist/metrics/setup.d.ts +13 -0
- package/dist/metrics/setup.d.ts.map +1 -0
- package/dist/metrics/setup.js +20 -0
- package/dist/metrics/setup.js.map +1 -0
- package/dist/metrics/store.d.ts +34 -0
- package/dist/metrics/store.d.ts.map +1 -0
- package/dist/metrics/store.js +94 -0
- package/dist/metrics/store.js.map +1 -0
- package/dist/next.d.ts +5 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +2 -0
- package/dist/next.js.map +1 -0
- package/dist/persist-schema.d.ts +14 -0
- package/dist/persist-schema.d.ts.map +1 -0
- package/dist/persist-schema.js +41 -0
- package/dist/persist-schema.js.map +1 -0
- package/dist/persist-util.d.ts +4 -0
- package/dist/persist-util.d.ts.map +1 -0
- package/dist/persist-util.js +30 -0
- package/dist/persist-util.js.map +1 -0
- package/dist/persist.d.ts +27 -0
- package/dist/persist.d.ts.map +1 -0
- package/dist/persist.js +159 -0
- package/dist/persist.js.map +1 -0
- package/dist/precise.d.ts +8 -0
- package/dist/precise.d.ts.map +1 -0
- package/dist/precise.js +28 -0
- package/dist/precise.js.map +1 -0
- package/dist/processor.d.ts +20 -0
- package/dist/processor.d.ts.map +1 -0
- package/dist/processor.js +102 -0
- package/dist/processor.js.map +1 -0
- package/dist/request-api.d.ts +12 -0
- package/dist/request-api.d.ts.map +1 -0
- package/dist/request-api.js +31 -0
- package/dist/request-api.js.map +1 -0
- package/dist/request-attributes.d.ts +9 -0
- package/dist/request-attributes.d.ts.map +1 -0
- package/dist/request-attributes.js +48 -0
- package/dist/request-attributes.js.map +1 -0
- package/dist/request-capture.d.ts +32 -0
- package/dist/request-capture.d.ts.map +1 -0
- package/dist/request-capture.js +94 -0
- package/dist/request-capture.js.map +1 -0
- package/dist/route-timing.d.ts +6 -0
- package/dist/route-timing.d.ts.map +1 -0
- package/dist/route-timing.js +25 -0
- package/dist/route-timing.js.map +1 -0
- package/dist/sampling.d.ts +37 -0
- package/dist/sampling.d.ts.map +1 -0
- package/dist/sampling.js +120 -0
- package/dist/sampling.js.map +1 -0
- package/dist/spans.d.ts +9 -0
- package/dist/spans.d.ts.map +1 -0
- package/dist/spans.js +17 -0
- package/dist/spans.js.map +1 -0
- package/dist/store-types.d.ts +22 -0
- package/dist/store-types.d.ts.map +1 -0
- package/dist/store-types.js +2 -0
- package/dist/store-types.js.map +1 -0
- package/dist/store.d.ts +59 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +194 -0
- package/dist/store.js.map +1 -0
- package/dist/tracing.d.ts +20 -0
- package/dist/tracing.d.ts.map +1 -0
- package/dist/tracing.js +45 -0
- package/dist/tracing.js.map +1 -0
- package/dist/types.d.ts +125 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +6 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +62 -0
- package/dist/ui.js.map +1 -0
- package/dist/wizelens.d.ts +5 -0
- package/dist/wizelens.d.ts.map +1 -0
- package/dist/wizelens.js +124 -0
- package/dist/wizelens.js.map +1 -0
- package/package.json +109 -3
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { Tracer } from "@opentelemetry/api";
|
|
3
|
+
import type { Trace } from "@wizeworks/lens-core";
|
|
4
|
+
import type { SamplingOptions } from "./sampling.js";
|
|
5
|
+
import type { TraceStore } from "./store.js";
|
|
6
|
+
export interface WizeLensOptions {
|
|
7
|
+
/** Service name shown in the dashboard, e.g. "orders-api". */
|
|
8
|
+
serviceName: string;
|
|
9
|
+
/** Base path for the dashboard and API. Default "/_wizelens". */
|
|
10
|
+
basePath?: string;
|
|
11
|
+
/** Turn WizeLens on. Default: on unless NODE_ENV is "production". */
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
/** Where traces live. "sqlite" keeps them across restarts. Default "sqlite". */
|
|
14
|
+
storage?: "sqlite" | "memory";
|
|
15
|
+
/** SQLite file for `storage: "sqlite"`. Default `{cwd}/.wizelens/traces.db`. */
|
|
16
|
+
storagePath?: string;
|
|
17
|
+
/** Max traces kept (memory and file). Default 2000. */
|
|
18
|
+
maxTraces?: number;
|
|
19
|
+
/** Max trace age in ms (memory and file). Default 24 h. */
|
|
20
|
+
maxAgeMs?: number;
|
|
21
|
+
/** Expose the read-only MCP endpoint at `{basePath}/mcp`. Default false. */
|
|
22
|
+
enableMcp?: boolean;
|
|
23
|
+
/** Key fragments to redact. Default: the contract list. */
|
|
24
|
+
redactKeys?: string[];
|
|
25
|
+
/** Override the `X-WizeLens-Endpoint` value (useful behind proxies). */
|
|
26
|
+
publicEndpoint?: string;
|
|
27
|
+
/** Override where the dashboard build lives. */
|
|
28
|
+
uiDir?: string;
|
|
29
|
+
/** Capture outgoing fetch / undici calls. Default true. */
|
|
30
|
+
instrumentFetch?: boolean;
|
|
31
|
+
/** Database adapters also trace queries that run outside a request (startup, jobs). Default false. */
|
|
32
|
+
traceQueriesOutsideRequests?: boolean;
|
|
33
|
+
/** Copy `console.log`, `warn`, `error`, `info`, `debug`, and `trace` calls made during a request into its trace. Default true. */
|
|
34
|
+
captureConsole?: boolean;
|
|
35
|
+
/** Keep runtime metrics (CPU, memory, heap, event loop, GC) and app metrics from `wizelensMetricExporter`. Default true. */
|
|
36
|
+
captureMetrics?: boolean;
|
|
37
|
+
/** How often runtime metrics are sampled, in ms. Default 10000. */
|
|
38
|
+
metricsIntervalMs?: number;
|
|
39
|
+
/** Oldest metric point kept, in ms. Default 1 h. Metrics are kept in memory only. */
|
|
40
|
+
metricsMaxAgeMs?: number;
|
|
41
|
+
/** Also write wizelens logs to the console. Default false. */
|
|
42
|
+
logToConsole?: boolean;
|
|
43
|
+
/** Where MCP audit lines go. Default console.info. */
|
|
44
|
+
audit?: (line: string) => void;
|
|
45
|
+
/** Keep the first 16 KB of text and JSON response bodies. Default false. */
|
|
46
|
+
captureResponseBody?: boolean;
|
|
47
|
+
/** Queries at or over this many ms are slow. Default 100. */
|
|
48
|
+
slowQueryMs?: number;
|
|
49
|
+
/** Repeats that make an N+1 pattern. Default 5. */
|
|
50
|
+
nPlusOneThreshold?: number;
|
|
51
|
+
/** The project this service belongs to, so a shared hub can group it. Default: the WIZELENS_PROJECT variable. */
|
|
52
|
+
project?: string;
|
|
53
|
+
/** Also send everything to this local hub, for example "http://localhost:5960". Default: the WIZELENS_HUB variable. */
|
|
54
|
+
hub?: string;
|
|
55
|
+
/** Access token for the hub. Default: the WIZELENS_HUB_TOKEN variable. */
|
|
56
|
+
hubToken?: string;
|
|
57
|
+
/** Keep only part of the traces, for busy services. Default: all, or the WIZELENS_SAMPLE_RATE variable. */
|
|
58
|
+
sampling?: SamplingOptions;
|
|
59
|
+
}
|
|
60
|
+
export interface DbCallInfo {
|
|
61
|
+
/** OTel `db.system.name`, e.g. "sqlite", "postgresql", "mysql". */
|
|
62
|
+
system: string;
|
|
63
|
+
/** Adapter name for `wizelens.db.adapter`, e.g. "node-sqlite", "pg", "prisma". */
|
|
64
|
+
adapter?: string;
|
|
65
|
+
/** Database name for `db.namespace`. */
|
|
66
|
+
namespace?: string;
|
|
67
|
+
/** Override the parsed operation (SELECT, INSERT, ...). */
|
|
68
|
+
operation?: string;
|
|
69
|
+
/** Override the parsed table / collection. */
|
|
70
|
+
collection?: string;
|
|
71
|
+
/** Rows in a result that is not a plain array, for `db.response.returned_rows`. */
|
|
72
|
+
rowsOf?: (result: unknown) => number | undefined;
|
|
73
|
+
/** An ORM-level call: driver calls inside it are part of this span, not new ones. */
|
|
74
|
+
outermost?: boolean;
|
|
75
|
+
/** Skip the span when no request (or other span) is active. Set by the database adapters. */
|
|
76
|
+
requireParent?: boolean;
|
|
77
|
+
}
|
|
78
|
+
export type LogFn = (message: string, attributes?: Record<string, unknown>) => void;
|
|
79
|
+
export interface WizeLensLogger {
|
|
80
|
+
trace: LogFn;
|
|
81
|
+
debug: LogFn;
|
|
82
|
+
info: LogFn;
|
|
83
|
+
warn: LogFn;
|
|
84
|
+
error: LogFn;
|
|
85
|
+
critical: LogFn;
|
|
86
|
+
/** Logger with a custom category. */
|
|
87
|
+
child(category: string): WizeLensLogger;
|
|
88
|
+
}
|
|
89
|
+
export type Next = (err?: unknown) => void;
|
|
90
|
+
export type Req = IncomingMessage & {
|
|
91
|
+
originalUrl?: string;
|
|
92
|
+
body?: unknown;
|
|
93
|
+
route?: {
|
|
94
|
+
path?: unknown;
|
|
95
|
+
};
|
|
96
|
+
baseUrl?: string;
|
|
97
|
+
};
|
|
98
|
+
export interface WizeLens {
|
|
99
|
+
readonly enabled: boolean;
|
|
100
|
+
readonly serviceName: string;
|
|
101
|
+
readonly basePath: string;
|
|
102
|
+
readonly store: TraceStore;
|
|
103
|
+
/** The SQLite file in use, or null when traces are kept in memory only. */
|
|
104
|
+
readonly storagePath: string | null;
|
|
105
|
+
readonly tracer: Tracer;
|
|
106
|
+
/** Express / Connect middleware. Traces requests and serves `{basePath}`. Mount it first. */
|
|
107
|
+
middleware: (req: IncomingMessage, res: ServerResponse, next: Next) => void;
|
|
108
|
+
/** Express error middleware. Mount it after your routes to record exceptions. */
|
|
109
|
+
errorMiddleware: (err: unknown, req: IncomingMessage, res: ServerResponse, next: Next) => void;
|
|
110
|
+
/** Plain Node handler for `{basePath}` only. Resolves false when the request is not for WizeLens. */
|
|
111
|
+
handler: (req: IncomingMessage, res: ServerResponse) => Promise<boolean>;
|
|
112
|
+
/** Wrap one database call (sync or async). Driver-level floor for any database. */
|
|
113
|
+
traceDb<T>(info: DbCallInfo, sql: string, params: unknown, fn: () => T): T;
|
|
114
|
+
logger: WizeLensLogger;
|
|
115
|
+
/** Record an exception on the active span. */
|
|
116
|
+
recordException(err: unknown): void;
|
|
117
|
+
/** Tag the current request, e.g. tag("cache", "hit") shows as "cache:hit". No-op outside a request. */
|
|
118
|
+
tag(key: string, value?: string): void;
|
|
119
|
+
/** Set the user of the current request (`enduser.id`). No-op outside a request. */
|
|
120
|
+
setUser(id: string): void;
|
|
121
|
+
/** Get one trace, optionally federated across downstream services. */
|
|
122
|
+
getTrace(traceId: string, federate?: boolean, hop?: number): Promise<Trace | undefined>;
|
|
123
|
+
shutdown(): Promise<void>;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,kIAAkI;IAClI,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4HAA4H;IAC5H,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iHAAiH;IACjH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAEpF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;IAChB,qCAAqC;IACrC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACzC;AAED,MAAM,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE3C,MAAM,MAAM,GAAG,GAAG,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3H,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6FAA6F;IAC7F,UAAU,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC5E,iFAAiF;IACjF,eAAe,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/F,qGAAqG;IACrG,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,mFAAmF;IACnF,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,EAAE,cAAc,CAAC;IACvB,8CAA8C;IAC9C,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,uGAAuG;IACvG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,mFAAmF;IACnF,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;IACxF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/ui.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ServerResponse } from "node:http";
|
|
2
|
+
/** Find the built dashboard (`@wizeworks/lens-ui/dist`). Returns null when it is not built. */
|
|
3
|
+
export declare function resolveUiDir(explicit?: string): string | null;
|
|
4
|
+
/** Serve one UI file. `relPath` is the path below the base path, without a leading slash. */
|
|
5
|
+
export declare function serveUi(uiDir: string | null, relPath: string, res: ServerResponse): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAqBhD,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU7D;AAED,6FAA6F;AAC7F,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvG"}
|
package/dist/ui.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { dirname, extname, join, normalize, sep } from "node:path";
|
|
5
|
+
const TYPES = {
|
|
6
|
+
".html": "text/html; charset=utf-8",
|
|
7
|
+
".js": "text/javascript; charset=utf-8",
|
|
8
|
+
".css": "text/css; charset=utf-8",
|
|
9
|
+
".json": "application/json; charset=utf-8",
|
|
10
|
+
".svg": "image/svg+xml",
|
|
11
|
+
".png": "image/png",
|
|
12
|
+
".ico": "image/x-icon",
|
|
13
|
+
".woff2": "font/woff2",
|
|
14
|
+
".map": "application/json; charset=utf-8",
|
|
15
|
+
};
|
|
16
|
+
const FALLBACK = `<!doctype html><html><head><meta charset="utf-8"><title>WizeLens</title></head>
|
|
17
|
+
<body style="font-family:system-ui;padding:2rem"><h1>WizeLens</h1>
|
|
18
|
+
<p>The dashboard build was not found. Run <code>pnpm build</code> in the WizeLens repo.</p>
|
|
19
|
+
<p>The API is still available at <a href="./api/traces">./api/traces</a>.</p></body></html>`;
|
|
20
|
+
/** Find the built dashboard (`@wizeworks/lens-ui/dist`). Returns null when it is not built. */
|
|
21
|
+
export function resolveUiDir(explicit) {
|
|
22
|
+
if (explicit)
|
|
23
|
+
return existsSync(explicit) ? explicit : null;
|
|
24
|
+
try {
|
|
25
|
+
const require = createRequire(import.meta.url);
|
|
26
|
+
const pkg = require.resolve("@wizeworks/lens-ui/package.json");
|
|
27
|
+
const dist = join(dirname(pkg), "dist");
|
|
28
|
+
return existsSync(join(dist, "index.html")) ? dist : null;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Serve one UI file. `relPath` is the path below the base path, without a leading slash. */
|
|
35
|
+
export async function serveUi(uiDir, relPath, res) {
|
|
36
|
+
if (!uiDir) {
|
|
37
|
+
res.writeHead(200, { "Content-Type": TYPES[".html"] });
|
|
38
|
+
res.end(FALLBACK);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const clean = normalize(decodeURIComponent(relPath || "index.html")).replace(/^([/\\])+/, "");
|
|
42
|
+
let file = join(uiDir, clean);
|
|
43
|
+
if (!file.startsWith(uiDir + sep) && file !== uiDir) {
|
|
44
|
+
res.writeHead(400).end();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!existsSync(file) || extname(file) === "")
|
|
48
|
+
file = join(uiDir, "index.html");
|
|
49
|
+
try {
|
|
50
|
+
const body = await readFile(file);
|
|
51
|
+
const isIndex = file.endsWith("index.html");
|
|
52
|
+
res.writeHead(200, {
|
|
53
|
+
"Content-Type": TYPES[extname(file)] ?? "application/octet-stream",
|
|
54
|
+
"Cache-Control": isIndex ? "no-cache" : "public, max-age=31536000, immutable",
|
|
55
|
+
});
|
|
56
|
+
res.end(body);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
res.writeHead(404).end();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WizeLens, WizeLensOptions } from "./types.js";
|
|
2
|
+
export type { DbCallInfo, LogFn, WizeLens, WizeLensLogger, WizeLensOptions } from "./types.js";
|
|
3
|
+
/** Create the WizeLens add-on for one Node service. */
|
|
4
|
+
export declare function createWizeLens(options: WizeLensOptions): WizeLens;
|
|
5
|
+
//# sourceMappingURL=wizelens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizelens.d.ts","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG5D,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAiE/F,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAsCjE"}
|
package/dist/wizelens.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
3
|
+
import { DEFAULT_BASE_PATH, DEFAULT_REDACT_KEYS } from "@wizeworks/lens-core";
|
|
4
|
+
import { createHandler } from "./api.js";
|
|
5
|
+
import { createMiddleware } from "./capture.js";
|
|
6
|
+
import { addCleanup, registerParts, runCleanups } from "./adapters/registry.js";
|
|
7
|
+
import { createDbSpans, createTraceDb } from "./db.js";
|
|
8
|
+
import { disabledWizeLens } from "./disabled.js";
|
|
9
|
+
import { createGetTrace } from "./federation.js";
|
|
10
|
+
import { connectHub } from "./hub-connect.js";
|
|
11
|
+
import { samplingInfo, TraceSampler } from "./sampling.js";
|
|
12
|
+
import { buildInfo, DEFAULT_N_PLUS_ONE, DEFAULT_SLOW_QUERY_MS, VERSION } from "./info.js";
|
|
13
|
+
import { createLogSink, createLogWriter, makeLogger } from "./logger.js";
|
|
14
|
+
import { captureConsole } from "./logs/console.js";
|
|
15
|
+
import { createMetricParts, mcpMetrics } from "./metrics/setup.js";
|
|
16
|
+
import { SqlitePersister } from "./persist.js";
|
|
17
|
+
import { createErrorMiddleware, recordException, setUser, tag } from "./request-api.js";
|
|
18
|
+
import { TraceStore } from "./store.js";
|
|
19
|
+
import { createTracing, installGlobals } from "./tracing.js";
|
|
20
|
+
import { resolveUiDir } from "./ui.js";
|
|
21
|
+
function normalizeBasePath(basePath) {
|
|
22
|
+
return ("/" + (basePath ?? DEFAULT_BASE_PATH).replace(/^\/+|\/+$/g, "")).replace(/^\/$/, DEFAULT_BASE_PATH);
|
|
23
|
+
}
|
|
24
|
+
function openPersister(store, options) {
|
|
25
|
+
if ((options.storage ?? "sqlite") !== "sqlite")
|
|
26
|
+
return undefined;
|
|
27
|
+
const persister = new SqlitePersister(store, {
|
|
28
|
+
path: options.storagePath ?? join(process.cwd(), ".wizelens", "traces.db"),
|
|
29
|
+
serviceName: options.serviceName,
|
|
30
|
+
});
|
|
31
|
+
if (!persister.open())
|
|
32
|
+
return undefined;
|
|
33
|
+
persister.start();
|
|
34
|
+
return persister;
|
|
35
|
+
}
|
|
36
|
+
function mcpSource(options, store, getTrace, metrics) {
|
|
37
|
+
return {
|
|
38
|
+
service: options.serviceName,
|
|
39
|
+
version: VERSION,
|
|
40
|
+
slowQueryMs: options.slowQueryMs ?? DEFAULT_SLOW_QUERY_MS,
|
|
41
|
+
nPlusOneThreshold: options.nPlusOneThreshold ?? DEFAULT_N_PLUS_ONE,
|
|
42
|
+
list: (limit) => store.list(limit),
|
|
43
|
+
all: () => store.all(),
|
|
44
|
+
get: getTrace,
|
|
45
|
+
audit: options.audit ?? ((line) => console.info(line)),
|
|
46
|
+
...mcpMetrics(metrics),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function buildParts(options, basePath) {
|
|
50
|
+
installGlobals();
|
|
51
|
+
const service = options.serviceName;
|
|
52
|
+
const redactKeys = options.redactKeys ?? DEFAULT_REDACT_KEYS;
|
|
53
|
+
const sampling = samplingInfo(options.sampling);
|
|
54
|
+
const sampler = sampling ? new TraceSampler(sampling) : undefined;
|
|
55
|
+
const store = new TraceStore({ maxTraces: options.maxTraces ?? 2000, maxAgeMs: options.maxAgeMs, sampler });
|
|
56
|
+
const persister = openPersister(store, options);
|
|
57
|
+
const selfEndpoints = new Set(options.publicEndpoint ? [options.publicEndpoint] : []);
|
|
58
|
+
const fetch = options.instrumentFetch ?? true;
|
|
59
|
+
const tracing = createTracing(store, { service, version: VERSION, redactKeys, fetch }, selfEndpoints);
|
|
60
|
+
const logs = createLogSink(store, service, redactKeys);
|
|
61
|
+
const write = createLogWriter(logs, !!options.logToConsole);
|
|
62
|
+
const getTrace = createGetTrace(store, selfEndpoints);
|
|
63
|
+
const startedMs = Date.now();
|
|
64
|
+
const sqlite = () => !!persister?.active;
|
|
65
|
+
const metrics = createMetricParts(options, redactKeys);
|
|
66
|
+
const info = () => buildInfo({ options, store, redactKeys, startedMs, sqlite, metrics: !!metrics });
|
|
67
|
+
const mcp = mcpSource(options, store, getTrace, metrics?.store ?? null);
|
|
68
|
+
const uiDir = resolveUiDir(options.uiDir);
|
|
69
|
+
const hub = connectHub(options, store, info, selfEndpoints, metrics?.store ?? null);
|
|
70
|
+
const handler = createHandler({ basePath, store, redactKeys, uiDir, enableMcp: !!options.enableMcp, mcp, info, getTrace, metrics: metrics?.store ?? null, selfEndpoints });
|
|
71
|
+
const capture = {
|
|
72
|
+
tracer: tracing.tracer,
|
|
73
|
+
basePath,
|
|
74
|
+
publicEndpoint: options.publicEndpoint,
|
|
75
|
+
selfEndpoints,
|
|
76
|
+
w3c: new W3CTraceContextPropagator(),
|
|
77
|
+
captureResponseBody: !!options.captureResponseBody,
|
|
78
|
+
handler,
|
|
79
|
+
};
|
|
80
|
+
return { hub, service, redactKeys, store, persister, tracing, logs, write, getTrace, handler, capture, metrics, middleware: createMiddleware(capture) };
|
|
81
|
+
}
|
|
82
|
+
/** Create the WizeLens add-on for one Node service. */
|
|
83
|
+
export function createWizeLens(options) {
|
|
84
|
+
const basePath = normalizeBasePath(options.basePath);
|
|
85
|
+
if (!(options.enabled ?? process.env.NODE_ENV !== "production"))
|
|
86
|
+
return disabledWizeLens(options, basePath);
|
|
87
|
+
const p = buildParts(options, basePath);
|
|
88
|
+
const startDbSpan = createDbSpans(p.tracing.tracer, p.redactKeys, !!options.traceQueriesOutsideRequests);
|
|
89
|
+
const wizelens = {
|
|
90
|
+
enabled: true,
|
|
91
|
+
serviceName: p.service,
|
|
92
|
+
basePath,
|
|
93
|
+
store: p.store,
|
|
94
|
+
get storagePath() {
|
|
95
|
+
return p.persister?.active ? p.persister.path : null;
|
|
96
|
+
},
|
|
97
|
+
tracer: p.tracing.tracer,
|
|
98
|
+
middleware: p.middleware,
|
|
99
|
+
errorMiddleware: createErrorMiddleware(p.write, p.service),
|
|
100
|
+
handler: p.handler,
|
|
101
|
+
traceDb: createTraceDb(startDbSpan),
|
|
102
|
+
logger: makeLogger(p.write, p.service),
|
|
103
|
+
recordException,
|
|
104
|
+
tag,
|
|
105
|
+
setUser,
|
|
106
|
+
getTrace: p.getTrace,
|
|
107
|
+
shutdown: async () => {
|
|
108
|
+
runCleanups(wizelens);
|
|
109
|
+
await p.hub?.stop();
|
|
110
|
+
p.tracing.undici?.disable();
|
|
111
|
+
await p.tracing.provider.shutdown();
|
|
112
|
+
p.persister?.close();
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
registerParts(wizelens, { dbSpans: startDbSpan, capture: p.capture, logs: p.logs, metrics: p.metrics?.store ?? null, provider: p.tracing.provider });
|
|
116
|
+
if (p.metrics) {
|
|
117
|
+
p.metrics.collector.start();
|
|
118
|
+
addCleanup(wizelens, () => p.metrics.collector.stop());
|
|
119
|
+
}
|
|
120
|
+
if (options.captureConsole ?? true)
|
|
121
|
+
addCleanup(wizelens, captureConsole(p.logs));
|
|
122
|
+
return wizelens;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=wizelens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizelens.js","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,112 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wizeworks/lens-node",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.3.0-alpha.1",
|
|
4
|
+
"description": "WizeLens add-on for Node.js: request timeline, outgoing HTTP, database calls, logs, errors, and an in-app dashboard.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "WizeWorks LLC",
|
|
7
|
+
"homepage": "https://github.com/brandonkorous/wizelens#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/brandonkorous/wizelens.git",
|
|
11
|
+
"directory": "js/packages/node"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/brandonkorous/wizelens/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"wizelens",
|
|
18
|
+
"node",
|
|
19
|
+
"express",
|
|
20
|
+
"fastify",
|
|
21
|
+
"koa",
|
|
22
|
+
"hono",
|
|
23
|
+
"nextjs",
|
|
24
|
+
"tracing",
|
|
25
|
+
"opentelemetry",
|
|
26
|
+
"profiler",
|
|
27
|
+
"prisma",
|
|
28
|
+
"typeorm",
|
|
29
|
+
"drizzle"
|
|
30
|
+
],
|
|
31
|
+
"type": "module",
|
|
32
|
+
"main": "./dist/index.js",
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"import": "./dist/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./kit": {
|
|
40
|
+
"types": "./dist/kit.d.ts",
|
|
41
|
+
"import": "./dist/kit.js"
|
|
42
|
+
},
|
|
43
|
+
"./next": {
|
|
44
|
+
"types": "./dist/next.d.ts",
|
|
45
|
+
"import": "./dist/next.js"
|
|
46
|
+
},
|
|
47
|
+
"./package.json": "./package.json"
|
|
48
|
+
},
|
|
49
|
+
"files": [
|
|
50
|
+
"dist"
|
|
51
|
+
],
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=22.13"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
57
|
+
"@opentelemetry/api": "^1.9.1",
|
|
58
|
+
"@opentelemetry/context-async-hooks": "^2.12.0",
|
|
59
|
+
"@opentelemetry/core": "^2.12.0",
|
|
60
|
+
"@opentelemetry/instrumentation-undici": "^0.33.0",
|
|
61
|
+
"@opentelemetry/resources": "^2.12.0",
|
|
62
|
+
"@opentelemetry/sdk-trace-base": "^2.12.0",
|
|
63
|
+
"zod": "^4.6.7",
|
|
64
|
+
"@wizeworks/lens-core": "^0.3.0-alpha.1",
|
|
65
|
+
"@wizeworks/lens-ui": "^0.3.0-alpha.1"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@azure/service-bus": "^7.10.0",
|
|
69
|
+
"@grpc/grpc-js": "^1.14.6",
|
|
70
|
+
"@grpc/proto-loader": "^0.8.1",
|
|
71
|
+
"@hono/node-server": "^2.1.5",
|
|
72
|
+
"@koa/router": "^15.7.0",
|
|
73
|
+
"@opentelemetry/api-logs": "^0.223.0",
|
|
74
|
+
"@opentelemetry/sdk-logs": "^0.223.0",
|
|
75
|
+
"@opentelemetry/sdk-metrics": "^2.12.0",
|
|
76
|
+
"@types/amqplib": "^0.10.8",
|
|
77
|
+
"@types/better-sqlite3": "^9.6.0",
|
|
78
|
+
"@types/bunyan": "^1.8.11",
|
|
79
|
+
"@types/express": "^5.0.6",
|
|
80
|
+
"@types/koa": "^3.0.3",
|
|
81
|
+
"@types/koa__router": "^15.0.0",
|
|
82
|
+
"@types/node": "^24.19.2",
|
|
83
|
+
"@types/pg": "^8.23.1",
|
|
84
|
+
"amqplib": "^2.2.0",
|
|
85
|
+
"better-sqlite3": "^13.0.3",
|
|
86
|
+
"bunyan": "^1.8.15",
|
|
87
|
+
"consola": "^3.4.2",
|
|
88
|
+
"drizzle-orm": "^0.45.4",
|
|
89
|
+
"express": "^5.3.0",
|
|
90
|
+
"fastify": "^5.12.7",
|
|
91
|
+
"hono": "^4.13.13",
|
|
92
|
+
"kafkajs": "^2.2.4",
|
|
93
|
+
"koa": "^3.2.1",
|
|
94
|
+
"log4js": "^6.9.1",
|
|
95
|
+
"mysql2": "^3.24.6",
|
|
96
|
+
"pg": "^8.23.1",
|
|
97
|
+
"pino": "^10.4.0",
|
|
98
|
+
"reflect-metadata": "^0.2.2",
|
|
99
|
+
"sql.js": "^1.15.0",
|
|
100
|
+
"typeorm": "^1.1.2",
|
|
101
|
+
"typescript": "^7.0.2",
|
|
102
|
+
"vitest": "^5.0.5",
|
|
103
|
+
"winston": "^3.19.0"
|
|
104
|
+
},
|
|
105
|
+
"publishConfig": {
|
|
106
|
+
"access": "public"
|
|
107
|
+
},
|
|
108
|
+
"scripts": {
|
|
109
|
+
"build": "tsc -p tsconfig.build.json",
|
|
110
|
+
"test": "vitest run"
|
|
111
|
+
}
|
|
6
112
|
}
|