@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.
Files changed (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -2
  3. package/dist/adapters/drizzle.d.ts +7 -0
  4. package/dist/adapters/drizzle.d.ts.map +1 -0
  5. package/dist/adapters/drizzle.js +41 -0
  6. package/dist/adapters/drizzle.js.map +1 -0
  7. package/dist/adapters/mysql2.d.ts +6 -0
  8. package/dist/adapters/mysql2.d.ts.map +1 -0
  9. package/dist/adapters/mysql2.js +60 -0
  10. package/dist/adapters/mysql2.js.map +1 -0
  11. package/dist/adapters/pg.d.ts +6 -0
  12. package/dist/adapters/pg.d.ts.map +1 -0
  13. package/dist/adapters/pg.js +50 -0
  14. package/dist/adapters/pg.js.map +1 -0
  15. package/dist/adapters/prisma.d.ts +22 -0
  16. package/dist/adapters/prisma.d.ts.map +1 -0
  17. package/dist/adapters/prisma.js +48 -0
  18. package/dist/adapters/prisma.js.map +1 -0
  19. package/dist/adapters/registry.d.ts +37 -0
  20. package/dist/adapters/registry.d.ts.map +1 -0
  21. package/dist/adapters/registry.js +41 -0
  22. package/dist/adapters/registry.js.map +1 -0
  23. package/dist/adapters/sqlite.d.ts +10 -0
  24. package/dist/adapters/sqlite.d.ts.map +1 -0
  25. package/dist/adapters/sqlite.js +59 -0
  26. package/dist/adapters/sqlite.js.map +1 -0
  27. package/dist/adapters/typeorm.d.ts +4 -0
  28. package/dist/adapters/typeorm.d.ts.map +1 -0
  29. package/dist/adapters/typeorm.js +43 -0
  30. package/dist/adapters/typeorm.js.map +1 -0
  31. package/dist/api.d.ts +24 -0
  32. package/dist/api.d.ts.map +1 -0
  33. package/dist/api.js +106 -0
  34. package/dist/api.js.map +1 -0
  35. package/dist/body-capture.d.ts +13 -0
  36. package/dist/body-capture.d.ts.map +1 -0
  37. package/dist/body-capture.js +54 -0
  38. package/dist/body-capture.js.map +1 -0
  39. package/dist/capture.d.ts +8 -0
  40. package/dist/capture.d.ts.map +1 -0
  41. package/dist/capture.js +33 -0
  42. package/dist/capture.js.map +1 -0
  43. package/dist/client-spans.d.ts +11 -0
  44. package/dist/client-spans.d.ts.map +1 -0
  45. package/dist/client-spans.js +83 -0
  46. package/dist/client-spans.js.map +1 -0
  47. package/dist/db.d.ts +25 -0
  48. package/dist/db.d.ts.map +1 -0
  49. package/dist/db.js +107 -0
  50. package/dist/db.js.map +1 -0
  51. package/dist/disabled.d.ts +4 -0
  52. package/dist/disabled.d.ts.map +1 -0
  53. package/dist/disabled.js +25 -0
  54. package/dist/disabled.js.map +1 -0
  55. package/dist/expose-headers.d.ts +6 -0
  56. package/dist/expose-headers.d.ts.map +1 -0
  57. package/dist/expose-headers.js +43 -0
  58. package/dist/expose-headers.js.map +1 -0
  59. package/dist/federation.d.ts +7 -0
  60. package/dist/federation.d.ts.map +1 -0
  61. package/dist/federation.js +33 -0
  62. package/dist/federation.js.map +1 -0
  63. package/dist/frameworks/fastify.d.ts +6 -0
  64. package/dist/frameworks/fastify.d.ts.map +1 -0
  65. package/dist/frameworks/fastify.js +60 -0
  66. package/dist/frameworks/fastify.js.map +1 -0
  67. package/dist/frameworks/hono.d.ts +6 -0
  68. package/dist/frameworks/hono.d.ts.map +1 -0
  69. package/dist/frameworks/hono.js +34 -0
  70. package/dist/frameworks/hono.js.map +1 -0
  71. package/dist/frameworks/koa.d.ts +13 -0
  72. package/dist/frameworks/koa.d.ts.map +1 -0
  73. package/dist/frameworks/koa.js +42 -0
  74. package/dist/frameworks/koa.js.map +1 -0
  75. package/dist/frameworks/next.d.ts +25 -0
  76. package/dist/frameworks/next.d.ts.map +1 -0
  77. package/dist/frameworks/next.js +49 -0
  78. package/dist/frameworks/next.js.map +1 -0
  79. package/dist/frameworks/node-server.d.ts +6 -0
  80. package/dist/frameworks/node-server.d.ts.map +1 -0
  81. package/dist/frameworks/node-server.js +35 -0
  82. package/dist/frameworks/node-server.js.map +1 -0
  83. package/dist/grpc/client.d.ts +6 -0
  84. package/dist/grpc/client.d.ts.map +1 -0
  85. package/dist/grpc/client.js +52 -0
  86. package/dist/grpc/client.js.map +1 -0
  87. package/dist/grpc/index.d.ts +4 -0
  88. package/dist/grpc/index.d.ts.map +1 -0
  89. package/dist/grpc/index.js +16 -0
  90. package/dist/grpc/index.js.map +1 -0
  91. package/dist/grpc/server.d.ts +10 -0
  92. package/dist/grpc/server.d.ts.map +1 -0
  93. package/dist/grpc/server.js +98 -0
  94. package/dist/grpc/server.js.map +1 -0
  95. package/dist/grpc/shared.d.ts +40 -0
  96. package/dist/grpc/shared.d.ts.map +1 -0
  97. package/dist/grpc/shared.js +45 -0
  98. package/dist/grpc/shared.js.map +1 -0
  99. package/dist/http-util.d.ts +10 -0
  100. package/dist/http-util.d.ts.map +1 -0
  101. package/dist/http-util.js +47 -0
  102. package/dist/http-util.js.map +1 -0
  103. package/dist/hub-connect.d.ts +10 -0
  104. package/dist/hub-connect.d.ts.map +1 -0
  105. package/dist/hub-connect.js +22 -0
  106. package/dist/hub-connect.js.map +1 -0
  107. package/dist/hub-export.d.ts +34 -0
  108. package/dist/hub-export.d.ts.map +1 -0
  109. package/dist/hub-export.js +135 -0
  110. package/dist/hub-export.js.map +1 -0
  111. package/dist/index.d.ts +35 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +27 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/info.d.ts +18 -0
  116. package/dist/info.d.ts.map +1 -0
  117. package/dist/info.js +31 -0
  118. package/dist/info.js.map +1 -0
  119. package/dist/kit.d.ts +14 -0
  120. package/dist/kit.d.ts.map +1 -0
  121. package/dist/kit.js +12 -0
  122. package/dist/kit.js.map +1 -0
  123. package/dist/logger.d.ts +29 -0
  124. package/dist/logger.d.ts.map +1 -0
  125. package/dist/logger.js +82 -0
  126. package/dist/logger.js.map +1 -0
  127. package/dist/logs/bunyan.d.ts +4 -0
  128. package/dist/logs/bunyan.d.ts.map +1 -0
  129. package/dist/logs/bunyan.js +42 -0
  130. package/dist/logs/bunyan.js.map +1 -0
  131. package/dist/logs/captured.d.ts +4 -0
  132. package/dist/logs/captured.d.ts.map +1 -0
  133. package/dist/logs/captured.js +9 -0
  134. package/dist/logs/captured.js.map +1 -0
  135. package/dist/logs/consola.d.ts +4 -0
  136. package/dist/logs/consola.d.ts.map +1 -0
  137. package/dist/logs/consola.js +25 -0
  138. package/dist/logs/consola.js.map +1 -0
  139. package/dist/logs/console.d.ts +4 -0
  140. package/dist/logs/console.d.ts.map +1 -0
  141. package/dist/logs/console.js +49 -0
  142. package/dist/logs/console.js.map +1 -0
  143. package/dist/logs/levels.d.ts +14 -0
  144. package/dist/logs/levels.d.ts.map +1 -0
  145. package/dist/logs/levels.js +58 -0
  146. package/dist/logs/levels.js.map +1 -0
  147. package/dist/logs/log4js.d.ts +16 -0
  148. package/dist/logs/log4js.d.ts.map +1 -0
  149. package/dist/logs/log4js.js +21 -0
  150. package/dist/logs/log4js.js.map +1 -0
  151. package/dist/logs/nest.d.ts +6 -0
  152. package/dist/logs/nest.d.ts.map +1 -0
  153. package/dist/logs/nest.js +34 -0
  154. package/dist/logs/nest.js.map +1 -0
  155. package/dist/logs/otel.d.ts +24 -0
  156. package/dist/logs/otel.d.ts.map +1 -0
  157. package/dist/logs/otel.js +31 -0
  158. package/dist/logs/otel.js.map +1 -0
  159. package/dist/logs/pino.d.ts +4 -0
  160. package/dist/logs/pino.d.ts.map +1 -0
  161. package/dist/logs/pino.js +86 -0
  162. package/dist/logs/pino.js.map +1 -0
  163. package/dist/logs/winston.d.ts +4 -0
  164. package/dist/logs/winston.d.ts.map +1 -0
  165. package/dist/logs/winston.js +65 -0
  166. package/dist/logs/winston.js.map +1 -0
  167. package/dist/mcp-find.d.ts +5 -0
  168. package/dist/mcp-find.d.ts.map +1 -0
  169. package/dist/mcp-find.js +42 -0
  170. package/dist/mcp-find.js.map +1 -0
  171. package/dist/mcp-metrics.d.ts +5 -0
  172. package/dist/mcp-metrics.d.ts.map +1 -0
  173. package/dist/mcp-metrics.js +77 -0
  174. package/dist/mcp-metrics.js.map +1 -0
  175. package/dist/mcp-shared.d.ts +30 -0
  176. package/dist/mcp-shared.d.ts.map +1 -0
  177. package/dist/mcp-shared.js +5 -0
  178. package/dist/mcp-shared.js.map +1 -0
  179. package/dist/mcp-traces.d.ts +5 -0
  180. package/dist/mcp-traces.d.ts.map +1 -0
  181. package/dist/mcp-traces.js +51 -0
  182. package/dist/mcp-traces.js.map +1 -0
  183. package/dist/mcp.d.ts +6 -0
  184. package/dist/mcp.d.ts.map +1 -0
  185. package/dist/mcp.js +26 -0
  186. package/dist/mcp.js.map +1 -0
  187. package/dist/messaging/amqplib.d.ts +4 -0
  188. package/dist/messaging/amqplib.d.ts.map +1 -0
  189. package/dist/messaging/amqplib.js +89 -0
  190. package/dist/messaging/amqplib.js.map +1 -0
  191. package/dist/messaging/kafkajs.d.ts +4 -0
  192. package/dist/messaging/kafkajs.d.ts.map +1 -0
  193. package/dist/messaging/kafkajs.js +78 -0
  194. package/dist/messaging/kafkajs.js.map +1 -0
  195. package/dist/messaging/servicebus.d.ts +4 -0
  196. package/dist/messaging/servicebus.d.ts.map +1 -0
  197. package/dist/messaging/servicebus.js +85 -0
  198. package/dist/messaging/servicebus.js.map +1 -0
  199. package/dist/messaging/shared.d.ts +30 -0
  200. package/dist/messaging/shared.d.ts.map +1 -0
  201. package/dist/messaging/shared.js +74 -0
  202. package/dist/messaging/shared.js.map +1 -0
  203. package/dist/metrics/exponential.d.ts +17 -0
  204. package/dist/metrics/exponential.d.ts.map +1 -0
  205. package/dist/metrics/exponential.js +12 -0
  206. package/dist/metrics/exponential.js.map +1 -0
  207. package/dist/metrics/gc.d.ts +15 -0
  208. package/dist/metrics/gc.d.ts.map +1 -0
  209. package/dist/metrics/gc.js +44 -0
  210. package/dist/metrics/gc.js.map +1 -0
  211. package/dist/metrics/otel.d.ts +39 -0
  212. package/dist/metrics/otel.d.ts.map +1 -0
  213. package/dist/metrics/otel.js +62 -0
  214. package/dist/metrics/otel.js.map +1 -0
  215. package/dist/metrics/runtime.d.ts +17 -0
  216. package/dist/metrics/runtime.d.ts.map +1 -0
  217. package/dist/metrics/runtime.js +100 -0
  218. package/dist/metrics/runtime.js.map +1 -0
  219. package/dist/metrics/setup.d.ts +13 -0
  220. package/dist/metrics/setup.d.ts.map +1 -0
  221. package/dist/metrics/setup.js +20 -0
  222. package/dist/metrics/setup.js.map +1 -0
  223. package/dist/metrics/store.d.ts +34 -0
  224. package/dist/metrics/store.d.ts.map +1 -0
  225. package/dist/metrics/store.js +94 -0
  226. package/dist/metrics/store.js.map +1 -0
  227. package/dist/next.d.ts +5 -0
  228. package/dist/next.d.ts.map +1 -0
  229. package/dist/next.js +2 -0
  230. package/dist/next.js.map +1 -0
  231. package/dist/persist-schema.d.ts +14 -0
  232. package/dist/persist-schema.d.ts.map +1 -0
  233. package/dist/persist-schema.js +41 -0
  234. package/dist/persist-schema.js.map +1 -0
  235. package/dist/persist-util.d.ts +4 -0
  236. package/dist/persist-util.d.ts.map +1 -0
  237. package/dist/persist-util.js +30 -0
  238. package/dist/persist-util.js.map +1 -0
  239. package/dist/persist.d.ts +27 -0
  240. package/dist/persist.d.ts.map +1 -0
  241. package/dist/persist.js +159 -0
  242. package/dist/persist.js.map +1 -0
  243. package/dist/precise.d.ts +8 -0
  244. package/dist/precise.d.ts.map +1 -0
  245. package/dist/precise.js +28 -0
  246. package/dist/precise.js.map +1 -0
  247. package/dist/processor.d.ts +20 -0
  248. package/dist/processor.d.ts.map +1 -0
  249. package/dist/processor.js +102 -0
  250. package/dist/processor.js.map +1 -0
  251. package/dist/request-api.d.ts +12 -0
  252. package/dist/request-api.d.ts.map +1 -0
  253. package/dist/request-api.js +31 -0
  254. package/dist/request-api.js.map +1 -0
  255. package/dist/request-attributes.d.ts +9 -0
  256. package/dist/request-attributes.d.ts.map +1 -0
  257. package/dist/request-attributes.js +48 -0
  258. package/dist/request-attributes.js.map +1 -0
  259. package/dist/request-capture.d.ts +32 -0
  260. package/dist/request-capture.d.ts.map +1 -0
  261. package/dist/request-capture.js +94 -0
  262. package/dist/request-capture.js.map +1 -0
  263. package/dist/route-timing.d.ts +6 -0
  264. package/dist/route-timing.d.ts.map +1 -0
  265. package/dist/route-timing.js +25 -0
  266. package/dist/route-timing.js.map +1 -0
  267. package/dist/sampling.d.ts +37 -0
  268. package/dist/sampling.d.ts.map +1 -0
  269. package/dist/sampling.js +120 -0
  270. package/dist/sampling.js.map +1 -0
  271. package/dist/spans.d.ts +9 -0
  272. package/dist/spans.d.ts.map +1 -0
  273. package/dist/spans.js +17 -0
  274. package/dist/spans.js.map +1 -0
  275. package/dist/store-types.d.ts +22 -0
  276. package/dist/store-types.d.ts.map +1 -0
  277. package/dist/store-types.js +2 -0
  278. package/dist/store-types.js.map +1 -0
  279. package/dist/store.d.ts +59 -0
  280. package/dist/store.d.ts.map +1 -0
  281. package/dist/store.js +194 -0
  282. package/dist/store.js.map +1 -0
  283. package/dist/tracing.d.ts +20 -0
  284. package/dist/tracing.d.ts.map +1 -0
  285. package/dist/tracing.js +45 -0
  286. package/dist/tracing.js.map +1 -0
  287. package/dist/types.d.ts +125 -0
  288. package/dist/types.d.ts.map +1 -0
  289. package/dist/types.js +2 -0
  290. package/dist/types.js.map +1 -0
  291. package/dist/ui.d.ts +6 -0
  292. package/dist/ui.d.ts.map +1 -0
  293. package/dist/ui.js +62 -0
  294. package/dist/ui.js.map +1 -0
  295. package/dist/wizelens.d.ts +5 -0
  296. package/dist/wizelens.d.ts.map +1 -0
  297. package/dist/wizelens.js +124 -0
  298. package/dist/wizelens.js.map +1 -0
  299. package/package.json +109 -3
@@ -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":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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
@@ -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"}
@@ -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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
  }