@wizeworks/lens-node 0.3.0-alpha.3 → 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.
Files changed (318) hide show
  1. package/dist/adapters/elasticsearch.d.ts +21 -0
  2. package/dist/adapters/elasticsearch.d.ts.map +1 -0
  3. package/dist/adapters/elasticsearch.js +93 -0
  4. package/dist/adapters/elasticsearch.js.map +1 -0
  5. package/dist/adapters/ioredis.d.ts +4 -0
  6. package/dist/adapters/ioredis.d.ts.map +1 -0
  7. package/dist/adapters/ioredis.js +60 -0
  8. package/dist/adapters/ioredis.js.map +1 -0
  9. package/dist/adapters/mongodb-shape.d.ts +16 -0
  10. package/dist/adapters/mongodb-shape.d.ts.map +1 -0
  11. package/dist/adapters/mongodb-shape.js +81 -0
  12. package/dist/adapters/mongodb-shape.js.map +1 -0
  13. package/dist/adapters/mongodb.d.ts +4 -0
  14. package/dist/adapters/mongodb.d.ts.map +1 -0
  15. package/dist/adapters/mongodb.js +95 -0
  16. package/dist/adapters/mongodb.js.map +1 -0
  17. package/dist/adapters/nosql.d.ts +14 -0
  18. package/dist/adapters/nosql.d.ts.map +1 -0
  19. package/dist/adapters/nosql.js +61 -0
  20. package/dist/adapters/nosql.js.map +1 -0
  21. package/dist/adapters/redis-shape.d.ts +31 -0
  22. package/dist/adapters/redis-shape.d.ts.map +1 -0
  23. package/dist/adapters/redis-shape.js +80 -0
  24. package/dist/adapters/redis-shape.js.map +1 -0
  25. package/dist/adapters/redis.d.ts +4 -0
  26. package/dist/adapters/redis.d.ts.map +1 -0
  27. package/dist/adapters/redis.js +93 -0
  28. package/dist/adapters/redis.js.map +1 -0
  29. package/dist/adapters/registry.d.ts +2 -0
  30. package/dist/adapters/registry.d.ts.map +1 -1
  31. package/dist/adapters/registry.js +2 -0
  32. package/dist/adapters/registry.js.map +1 -1
  33. package/dist/api.d.ts +5 -1
  34. package/dist/api.d.ts.map +1 -1
  35. package/dist/api.js +19 -7
  36. package/dist/api.js.map +1 -1
  37. package/dist/auto/config.d.ts +14 -0
  38. package/dist/auto/config.d.ts.map +1 -0
  39. package/dist/auto/config.js +51 -0
  40. package/dist/auto/config.js.map +1 -0
  41. package/dist/auto/esm-loader.d.ts +10 -0
  42. package/dist/auto/esm-loader.d.ts.map +1 -0
  43. package/dist/auto/esm-loader.js +10 -0
  44. package/dist/auto/esm-loader.js.map +1 -0
  45. package/dist/auto/esm-source.d.ts +15 -0
  46. package/dist/auto/esm-source.d.ts.map +1 -0
  47. package/dist/auto/esm-source.js +23 -0
  48. package/dist/auto/esm-source.js.map +1 -0
  49. package/dist/auto/frameworks.d.ts +3 -0
  50. package/dist/auto/frameworks.d.ts.map +1 -0
  51. package/dist/auto/frameworks.js +112 -0
  52. package/dist/auto/frameworks.js.map +1 -0
  53. package/dist/auto/handle.d.ts +7 -0
  54. package/dist/auto/handle.d.ts.map +1 -0
  55. package/dist/auto/handle.js +47 -0
  56. package/dist/auto/handle.js.map +1 -0
  57. package/dist/auto/hono.d.ts +3 -0
  58. package/dist/auto/hono.d.ts.map +1 -0
  59. package/dist/auto/hono.js +43 -0
  60. package/dist/auto/hono.js.map +1 -0
  61. package/dist/auto/http.d.ts +18 -0
  62. package/dist/auto/http.d.ts.map +1 -0
  63. package/dist/auto/http.js +77 -0
  64. package/dist/auto/http.js.map +1 -0
  65. package/dist/auto/install.d.ts +5 -0
  66. package/dist/auto/install.d.ts.map +1 -0
  67. package/dist/auto/install.js +26 -0
  68. package/dist/auto/install.js.map +1 -0
  69. package/dist/auto/libraries.d.ts +3 -0
  70. package/dist/auto/libraries.d.ts.map +1 -0
  71. package/dist/auto/libraries.js +108 -0
  72. package/dist/auto/libraries.js.map +1 -0
  73. package/dist/auto/module-hooks.d.ts +14 -0
  74. package/dist/auto/module-hooks.d.ts.map +1 -0
  75. package/dist/auto/module-hooks.js +90 -0
  76. package/dist/auto/module-hooks.js.map +1 -0
  77. package/dist/auto/nest.d.ts +7 -0
  78. package/dist/auto/nest.d.ts.map +1 -0
  79. package/dist/auto/nest.js +26 -0
  80. package/dist/auto/nest.js.map +1 -0
  81. package/dist/auto/owner.d.ts +19 -0
  82. package/dist/auto/owner.d.ts.map +1 -0
  83. package/dist/auto/owner.js +52 -0
  84. package/dist/auto/owner.js.map +1 -0
  85. package/dist/auto/prisma.d.ts +3 -0
  86. package/dist/auto/prisma.d.ts.map +1 -0
  87. package/dist/auto/prisma.js +55 -0
  88. package/dist/auto/prisma.js.map +1 -0
  89. package/dist/auto/sqlite.d.ts +3 -0
  90. package/dist/auto/sqlite.d.ts.map +1 -0
  91. package/dist/auto/sqlite.js +31 -0
  92. package/dist/auto/sqlite.js.map +1 -0
  93. package/dist/auto/state.d.ts +14 -0
  94. package/dist/auto/state.d.ts.map +1 -0
  95. package/dist/auto/state.js +16 -0
  96. package/dist/auto/state.js.map +1 -0
  97. package/dist/auto.d.ts +2 -0
  98. package/dist/auto.d.ts.map +1 -0
  99. package/dist/auto.js +4 -0
  100. package/dist/auto.js.map +1 -0
  101. package/dist/capture.d.ts +3 -1
  102. package/dist/capture.d.ts.map +1 -1
  103. package/dist/capture.js +1 -1
  104. package/dist/capture.js.map +1 -1
  105. package/dist/client-attributes.d.ts +19 -0
  106. package/dist/client-attributes.d.ts.map +1 -0
  107. package/dist/client-attributes.js +56 -0
  108. package/dist/client-attributes.js.map +1 -0
  109. package/dist/db.js +1 -1
  110. package/dist/db.js.map +1 -1
  111. package/dist/frameworks/hono.d.ts +16 -0
  112. package/dist/frameworks/hono.d.ts.map +1 -1
  113. package/dist/frameworks/hono.js +1 -1
  114. package/dist/frameworks/hono.js.map +1 -1
  115. package/dist/frameworks/koa.d.ts +2 -0
  116. package/dist/frameworks/koa.d.ts.map +1 -1
  117. package/dist/frameworks/koa.js +1 -1
  118. package/dist/frameworks/koa.js.map +1 -1
  119. package/dist/frameworks/nest-errors.d.ts +10 -0
  120. package/dist/frameworks/nest-errors.d.ts.map +1 -0
  121. package/dist/frameworks/nest-errors.js +75 -0
  122. package/dist/frameworks/nest-errors.js.map +1 -0
  123. package/dist/frameworks/nest-route.d.ts +31 -0
  124. package/dist/frameworks/nest-route.d.ts.map +1 -0
  125. package/dist/frameworks/nest-route.js +58 -0
  126. package/dist/frameworks/nest-route.js.map +1 -0
  127. package/dist/frameworks/nest.d.ts +16 -0
  128. package/dist/frameworks/nest.d.ts.map +1 -0
  129. package/dist/frameworks/nest.js +73 -0
  130. package/dist/frameworks/nest.js.map +1 -0
  131. package/dist/frameworks/node-server.d.ts +3 -0
  132. package/dist/frameworks/node-server.d.ts.map +1 -1
  133. package/dist/frameworks/node-server.js +1 -1
  134. package/dist/frameworks/node-server.js.map +1 -1
  135. package/dist/graphql/document.d.ts +13 -0
  136. package/dist/graphql/document.d.ts.map +1 -0
  137. package/dist/graphql/document.js +62 -0
  138. package/dist/graphql/document.js.map +1 -0
  139. package/dist/graphql/index.d.ts +11 -0
  140. package/dist/graphql/index.d.ts.map +1 -0
  141. package/dist/graphql/index.js +83 -0
  142. package/dist/graphql/index.js.map +1 -0
  143. package/dist/graphql/operation.d.ts +37 -0
  144. package/dist/graphql/operation.d.ts.map +1 -0
  145. package/dist/graphql/operation.js +58 -0
  146. package/dist/graphql/operation.js.map +1 -0
  147. package/dist/graphql/resolvers.d.ts +5 -0
  148. package/dist/graphql/resolvers.d.ts.map +1 -0
  149. package/dist/graphql/resolvers.js +79 -0
  150. package/dist/graphql/resolvers.js.map +1 -0
  151. package/dist/graphql/shared.d.ts +14 -0
  152. package/dist/graphql/shared.d.ts.map +1 -0
  153. package/dist/graphql/shared.js +21 -0
  154. package/dist/graphql/shared.js.map +1 -0
  155. package/dist/http-client.d.ts +8 -0
  156. package/dist/http-client.d.ts.map +1 -0
  157. package/dist/http-client.js +132 -0
  158. package/dist/http-client.js.map +1 -0
  159. package/dist/hub-connect.d.ts +2 -0
  160. package/dist/hub-connect.d.ts.map +1 -1
  161. package/dist/hub-connect.js +3 -1
  162. package/dist/hub-connect.js.map +1 -1
  163. package/dist/index.d.ts +12 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +9 -0
  166. package/dist/index.js.map +1 -1
  167. package/dist/info.d.ts +2 -0
  168. package/dist/info.d.ts.map +1 -1
  169. package/dist/info.js +1 -1
  170. package/dist/info.js.map +1 -1
  171. package/dist/kit.d.ts +3 -1
  172. package/dist/kit.d.ts.map +1 -1
  173. package/dist/kit.js +1 -0
  174. package/dist/kit.js.map +1 -1
  175. package/dist/logger.d.ts +4 -4
  176. package/dist/logger.d.ts.map +1 -1
  177. package/dist/logger.js +11 -7
  178. package/dist/logger.js.map +1 -1
  179. package/dist/logs/bunyan.d.ts +1 -1
  180. package/dist/logs/bunyan.d.ts.map +1 -1
  181. package/dist/logs/bunyan.js +2 -3
  182. package/dist/logs/bunyan.js.map +1 -1
  183. package/dist/logs/consola.d.ts +1 -1
  184. package/dist/logs/consola.d.ts.map +1 -1
  185. package/dist/logs/consola.js +1 -1
  186. package/dist/logs/consola.js.map +1 -1
  187. package/dist/logs/console.d.ts +1 -1
  188. package/dist/logs/console.d.ts.map +1 -1
  189. package/dist/logs/console.js +5 -3
  190. package/dist/logs/console.js.map +1 -1
  191. package/dist/logs/otel.d.ts.map +1 -1
  192. package/dist/logs/otel.js +1 -3
  193. package/dist/logs/otel.js.map +1 -1
  194. package/dist/logs/pino.d.ts +1 -1
  195. package/dist/logs/pino.d.ts.map +1 -1
  196. package/dist/logs/pino.js +2 -3
  197. package/dist/logs/pino.js.map +1 -1
  198. package/dist/logs/winston.d.ts +1 -1
  199. package/dist/logs/winston.d.ts.map +1 -1
  200. package/dist/logs/winston.js +2 -3
  201. package/dist/logs/winston.js.map +1 -1
  202. package/dist/loose-logs.d.ts +13 -0
  203. package/dist/loose-logs.d.ts.map +1 -0
  204. package/dist/loose-logs.js +21 -0
  205. package/dist/loose-logs.js.map +1 -0
  206. package/dist/mcp-find.d.ts.map +1 -1
  207. package/dist/mcp-find.js +40 -8
  208. package/dist/mcp-find.js.map +1 -1
  209. package/dist/mcp-memory.d.ts +7 -0
  210. package/dist/mcp-memory.d.ts.map +1 -0
  211. package/dist/mcp-memory.js +10 -0
  212. package/dist/mcp-memory.js.map +1 -0
  213. package/dist/mcp-overview.d.ts +5 -0
  214. package/dist/mcp-overview.d.ts.map +1 -0
  215. package/dist/mcp-overview.js +71 -0
  216. package/dist/mcp-overview.js.map +1 -0
  217. package/dist/mcp-page.d.ts +28 -0
  218. package/dist/mcp-page.d.ts.map +1 -0
  219. package/dist/mcp-page.js +77 -0
  220. package/dist/mcp-page.js.map +1 -0
  221. package/dist/mcp-problems.d.ts +5 -0
  222. package/dist/mcp-problems.d.ts.map +1 -0
  223. package/dist/mcp-problems.js +56 -0
  224. package/dist/mcp-problems.js.map +1 -0
  225. package/dist/mcp-projects.d.ts.map +1 -1
  226. package/dist/mcp-projects.js +7 -2
  227. package/dist/mcp-projects.js.map +1 -1
  228. package/dist/mcp-search.d.ts.map +1 -1
  229. package/dist/mcp-search.js +9 -5
  230. package/dist/mcp-search.js.map +1 -1
  231. package/dist/mcp-shared.d.ts +37 -1
  232. package/dist/mcp-shared.d.ts.map +1 -1
  233. package/dist/mcp-shared.js +3 -0
  234. package/dist/mcp-shared.js.map +1 -1
  235. package/dist/mcp-store.d.ts +2 -2
  236. package/dist/mcp-store.d.ts.map +1 -1
  237. package/dist/mcp-store.js +6 -5
  238. package/dist/mcp-store.js.map +1 -1
  239. package/dist/mcp-tags.d.ts +8 -0
  240. package/dist/mcp-tags.d.ts.map +1 -0
  241. package/dist/mcp-tags.js +22 -0
  242. package/dist/mcp-tags.js.map +1 -0
  243. package/dist/mcp-traffic.d.ts +5 -0
  244. package/dist/mcp-traffic.d.ts.map +1 -0
  245. package/dist/mcp-traffic.js +87 -0
  246. package/dist/mcp-traffic.js.map +1 -0
  247. package/dist/mcp.d.ts +4 -1
  248. package/dist/mcp.d.ts.map +1 -1
  249. package/dist/mcp.js +14 -3
  250. package/dist/mcp.js.map +1 -1
  251. package/dist/messaging/bullmq.d.ts +4 -0
  252. package/dist/messaging/bullmq.d.ts.map +1 -0
  253. package/dist/messaging/bullmq.js +137 -0
  254. package/dist/messaging/bullmq.js.map +1 -0
  255. package/dist/messaging/shared.d.ts +10 -4
  256. package/dist/messaging/shared.d.ts.map +1 -1
  257. package/dist/messaging/shared.js +13 -4
  258. package/dist/messaging/shared.js.map +1 -1
  259. package/dist/messaging/sqs-message.d.ts +35 -0
  260. package/dist/messaging/sqs-message.d.ts.map +1 -0
  261. package/dist/messaging/sqs-message.js +66 -0
  262. package/dist/messaging/sqs-message.js.map +1 -0
  263. package/dist/messaging/sqs.d.ts +4 -0
  264. package/dist/messaging/sqs.d.ts.map +1 -0
  265. package/dist/messaging/sqs.js +104 -0
  266. package/dist/messaging/sqs.js.map +1 -0
  267. package/dist/processor.d.ts +2 -1
  268. package/dist/processor.d.ts.map +1 -1
  269. package/dist/processor.js +8 -3
  270. package/dist/processor.js.map +1 -1
  271. package/dist/request-capture.d.ts.map +1 -1
  272. package/dist/request-capture.js +2 -1
  273. package/dist/request-capture.js.map +1 -1
  274. package/dist/request-naming.d.ts +8 -0
  275. package/dist/request-naming.d.ts.map +1 -0
  276. package/dist/request-naming.js +29 -0
  277. package/dist/request-naming.js.map +1 -0
  278. package/dist/sampling.d.ts.map +1 -1
  279. package/dist/sampling.js +2 -2
  280. package/dist/sampling.js.map +1 -1
  281. package/dist/search-api.d.ts +4 -3
  282. package/dist/search-api.d.ts.map +1 -1
  283. package/dist/search-api.js +8 -7
  284. package/dist/search-api.js.map +1 -1
  285. package/dist/sourcemaps.d.ts +15 -0
  286. package/dist/sourcemaps.d.ts.map +1 -0
  287. package/dist/sourcemaps.js +68 -0
  288. package/dist/sourcemaps.js.map +1 -0
  289. package/dist/spans.d.ts +3 -0
  290. package/dist/spans.d.ts.map +1 -1
  291. package/dist/spans.js +9 -1
  292. package/dist/spans.js.map +1 -1
  293. package/dist/store-entries.d.ts +34 -0
  294. package/dist/store-entries.d.ts.map +1 -0
  295. package/dist/store-entries.js +70 -0
  296. package/dist/store-entries.js.map +1 -0
  297. package/dist/store.d.ts +4 -1
  298. package/dist/store.d.ts.map +1 -1
  299. package/dist/store.js +19 -22
  300. package/dist/store.js.map +1 -1
  301. package/dist/tags-api.d.ts +9 -0
  302. package/dist/tags-api.d.ts.map +1 -0
  303. package/dist/tags-api.js +16 -0
  304. package/dist/tags-api.js.map +1 -0
  305. package/dist/tracing.d.ts +6 -0
  306. package/dist/tracing.d.ts.map +1 -1
  307. package/dist/tracing.js +11 -7
  308. package/dist/tracing.js.map +1 -1
  309. package/dist/types.d.ts +16 -2
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/ui.d.ts.map +1 -1
  312. package/dist/ui.js +3 -2
  313. package/dist/ui.js.map +1 -1
  314. package/dist/wizelens.d.ts +3 -1
  315. package/dist/wizelens.d.ts.map +1 -1
  316. package/dist/wizelens.js +28 -12
  317. package/dist/wizelens.js.map +1 -1
  318. package/package.json +14 -4
@@ -0,0 +1,70 @@
1
+ import { isLooseTraceId, newLooseTraceId, LOOSE_WINDOW_MS } from "@wizeworks/lens-core";
2
+ const newEntry = (traceId, startMs) => ({ traceId, spans: new Map(), logs: [], remotes: new Set(), sessions: new Set(), startMs });
3
+ /** Traces and loose batches (lines outside a request), each with its own cap, so neither pushes the other out. Oldest first. */
4
+ export class EntryMap {
5
+ maxTraces;
6
+ maxLoose;
7
+ #traces = new Map();
8
+ #loose = new Map();
9
+ constructor(maxTraces, maxLoose) {
10
+ this.maxTraces = maxTraces;
11
+ this.maxLoose = maxLoose;
12
+ }
13
+ /** Request traces only, as the dashboard counts them. */
14
+ get size() {
15
+ return this.#traces.size;
16
+ }
17
+ #mapOf(traceId) {
18
+ return isLooseTraceId(traceId) ? this.#loose : this.#traces;
19
+ }
20
+ get(traceId) {
21
+ return this.#mapOf(traceId).get(traceId);
22
+ }
23
+ /** The entry, made when missing; the oldest of its kind goes when its kind is over its cap. */
24
+ touch(traceId, startMs) {
25
+ const map = this.#mapOf(traceId);
26
+ let entry = map.get(traceId);
27
+ if (!entry) {
28
+ map.set(traceId, (entry = newEntry(traceId, startMs)));
29
+ const cap = map === this.#loose ? this.maxLoose : this.maxTraces;
30
+ while (map.size > cap)
31
+ map.delete(map.keys().next().value);
32
+ }
33
+ else if (startMs < entry.startMs)
34
+ entry.startMs = startMs;
35
+ return entry;
36
+ }
37
+ delete(traceId) {
38
+ this.#mapOf(traceId).delete(traceId);
39
+ }
40
+ /** Every entry: traces, then loose batches. */
41
+ *values() {
42
+ yield* this.#traces.values();
43
+ yield* this.#loose.values();
44
+ }
45
+ clear() {
46
+ this.#traces.clear();
47
+ this.#loose.clear();
48
+ }
49
+ }
50
+ /** Picks the loose trace id for the next line outside a request: a new batch per 5-minute window, or when the batch is full. */
51
+ export class LooseBatcher {
52
+ maxLines;
53
+ #id = "";
54
+ #window = -1;
55
+ #count = 0;
56
+ constructor(maxLines) {
57
+ this.maxLines = maxLines;
58
+ }
59
+ idFor(timeMs) {
60
+ const window = Math.floor(timeMs / LOOSE_WINDOW_MS);
61
+ if (!this.#id || window !== this.#window || this.#count >= this.maxLines) {
62
+ this.#id = newLooseTraceId();
63
+ this.#window = window;
64
+ this.#count = 0;
65
+ }
66
+ this.#count++;
67
+ return this.#id;
68
+ }
69
+ }
70
+ //# sourceMappingURL=store-entries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-entries.js","sourceRoot":"","sources":["../src/store-entries.ts"],"names":[],"mappings":"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"}
package/dist/store.d.ts CHANGED
@@ -43,6 +43,8 @@ export declare class TraceStore {
43
43
  /** `root`: the span starts this service's part of the trace. Sampling decides when a root ends. */
44
44
  addSpan(span: Span, root?: boolean): void;
45
45
  addLog(traceId: string, log: LogRecord): void;
46
+ /** A line written outside a request: into the current loose batch, never sampled with traces. Returns its trace id. */
47
+ addLooseLog(log: LogRecord): string;
46
48
  addRemote(traceId: string, endpoint: string): void;
47
49
  /** Load traces from disk, oldest first. Does not mark them dirty. */
48
50
  load(traces: Iterable<StoredTrace>): void;
@@ -51,8 +53,9 @@ export declare class TraceStore {
51
53
  /** Drop traces older than maxAgeMs. Returns how many were dropped. */
52
54
  pruneByAge(): number;
53
55
  get(traceId: string): Trace | undefined;
54
- /** All traces, newest first. With `session`, only traces that have a browser span from that tab. */
56
+ /** All traces and loose batches (lines outside a request), newest first. With `session`, only traces that have a browser span from that tab. */
55
57
  all(session?: string): Trace[];
58
+ /** Trace summaries, newest first; loose batches are not traces, so they are left out. */
56
59
  list(limit?: number, session?: string): TraceSummary[];
57
60
  clear(): void;
58
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAChK,OAAO,KAAK,EAAQ,YAAY,EAAW,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYlE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ1D,wFAAwF;AACxF,qBAAa,UAAU;;IAWrB,YAAY,OAAO,GAAE,iBAAsB,EAO1C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,YAAY,GAAG,IAAI,CAElC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAkBD,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAGvD;IAgBD,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,UAA6B,GAAG,IAAI,CAE3D;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAE5C;IAED,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEjD;IAyCD,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAWxC;IAED,4CAA4C;IAC5C,YAAY,IAAI,YAAY,EAAE,CAe7B;IAED,sEAAsE;IACtE,UAAU,IAAI,MAAM,CAWnB;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAGtC;IAED,oGAAoG;IACpG,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAS7B;IAED,IAAI,CAAC,KAAK,SAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjD;IAED,KAAK,IAAI,IAAI,CAGZ;CACF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAChL,OAAO,KAAK,EAAQ,YAAY,EAAW,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIlE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ1D,wFAAwF;AACxF,qBAAa,UAAU;;IAYrB,YAAY,OAAO,GAAE,iBAAsB,EAS1C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,qCAAqC;IACrC,IAAI,QAAQ,IAAI,YAAY,GAAG,IAAI,CAElC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAMD,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAGvD;IAgBD,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,UAA6B,GAAG,IAAI,CAE3D;IAED,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAE5C;IAED,uHAAuH;IACvH,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlC;IAED,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEjD;IAyCD,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAWxC;IAED,4CAA4C;IAC5C,YAAY,IAAI,YAAY,EAAE,CAe7B;IAED,sEAAsE;IACtE,UAAU,IAAI,MAAM,CAWnB;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAGtC;IAED,gJAAgJ;IAChJ,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAS7B;IAED,yFAAyF;IACzF,IAAI,CAAC,KAAK,SAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjD;IAED,KAAK,IAAI,IAAI,CAGZ;CACF"}
package/dist/store.js CHANGED
@@ -1,7 +1,9 @@
1
- import { ATTR_BROWSER_SESSION, buildTrace, toSummary } from "@wizeworks/lens-core";
1
+ import { ATTR_BROWSER_SESSION, buildTrace, isLooseTraceId, toSummary } from "@wizeworks/lens-core";
2
+ import { EntryMap, LooseBatcher } from "./store-entries.js";
2
3
  /** In-memory ring buffer of traces, keyed by trace id. This is always the read path. */
3
4
  export class TraceStore {
4
- #entries = new Map();
5
+ #entries;
6
+ #loose;
5
7
  #dirty = new Map();
6
8
  #maxTraces;
7
9
  #maxAgeMs;
@@ -17,6 +19,8 @@ export class TraceStore {
17
19
  this.#maxLogs = options.maxLogsPerTrace ?? 1000;
18
20
  this.#now = options.now ?? Date.now;
19
21
  this.#sampler = options.sampler;
22
+ this.#entries = new EntryMap(this.#maxTraces, Math.max(10, Math.floor(this.#maxTraces / 4)));
23
+ this.#loose = new LooseBatcher(this.#maxLogs);
20
24
  }
21
25
  get size() {
22
26
  return this.#entries.size;
@@ -32,21 +36,7 @@ export class TraceStore {
32
36
  return this.#maxAgeMs;
33
37
  }
34
38
  #entry(traceId, startMs) {
35
- let entry = this.#entries.get(traceId);
36
- if (!entry) {
37
- entry = { traceId, spans: new Map(), logs: [], remotes: new Set(), sessions: new Set(), startMs };
38
- this.#entries.set(traceId, entry);
39
- while (this.#entries.size > this.#maxTraces) {
40
- const oldest = this.#entries.keys().next().value;
41
- if (oldest === undefined)
42
- break;
43
- this.#entries.delete(oldest);
44
- }
45
- }
46
- else if (startMs < entry.startMs) {
47
- entry.startMs = startMs;
48
- }
49
- return entry;
39
+ return this.#entries.touch(traceId, startMs);
50
40
  }
51
41
  /** Hear every new span, log, and remote. Returns the unsubscribe function. */
52
42
  subscribe(listener) {
@@ -73,6 +63,12 @@ export class TraceStore {
73
63
  addLog(traceId, log) {
74
64
  this.#gate(traceId, this.#sampler?.log(traceId, log), () => this.#putLog(traceId, log));
75
65
  }
66
+ /** A line written outside a request: into the current loose batch, never sampled with traces. Returns its trace id. */
67
+ addLooseLog(log) {
68
+ const traceId = this.#loose.idFor(log.timeMs);
69
+ this.#putLog(traceId, log);
70
+ return traceId;
71
+ }
76
72
  addRemote(traceId, endpoint) {
77
73
  this.#gate(traceId, this.#sampler?.remote(traceId, endpoint), () => this.#putRemote(traceId, endpoint));
78
74
  }
@@ -157,10 +153,10 @@ export class TraceStore {
157
153
  pruneByAge() {
158
154
  const cutoff = this.#now() - this.#maxAgeMs;
159
155
  let dropped = 0;
160
- for (const [id, entry] of this.#entries) {
156
+ for (const entry of [...this.#entries.values()]) {
161
157
  if (entry.startMs < cutoff) {
162
- this.#entries.delete(id);
163
- this.#dirty.delete(id);
158
+ this.#entries.delete(entry.traceId);
159
+ this.#dirty.delete(entry.traceId);
164
160
  dropped++;
165
161
  }
166
162
  }
@@ -170,7 +166,7 @@ export class TraceStore {
170
166
  const entry = this.#entries.get(traceId);
171
167
  return entry ? buildTrace(entry.traceId, [...entry.spans.values()], entry.logs, entry.remotes) : undefined;
172
168
  }
173
- /** All traces, newest first. With `session`, only traces that have a browser span from that tab. */
169
+ /** All traces and loose batches (lines outside a request), newest first. With `session`, only traces that have a browser span from that tab. */
174
170
  all(session) {
175
171
  this.pruneByAge();
176
172
  const traces = [];
@@ -183,8 +179,9 @@ export class TraceStore {
183
179
  }
184
180
  return traces.sort((a, b) => b.startMs - a.startMs);
185
181
  }
182
+ /** Trace summaries, newest first; loose batches are not traces, so they are left out. */
186
183
  list(limit = 50, session) {
187
- return this.all(session).slice(0, Math.max(0, limit)).map(toSummary);
184
+ return this.all(session).filter((t) => !isLooseTraceId(t.traceId)).slice(0, Math.max(0, limit)).map(toSummary);
188
185
  }
189
186
  clear() {
190
187
  this.#entries.clear();
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAA+E,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA2ChK,wFAAwF;AACxF,MAAM,OAAO,UAAU;IACZ,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IACpC,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,IAAI,CAAe;IACnB,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IAChD,QAAQ,CAA2B;IAE5C,YAAY,OAAO,GAAsB,EAAE;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,qCAAqC;IACrC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,OAAe;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;YAClG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBACjD,IAAI,MAAM,KAAK,SAAS;oBAAE,MAAM;gBAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8EAA8E;IAC9E,SAAS,CAAC,QAAiC;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,CAAa;QACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,mGAAmG;IACnG,OAAO,CAAC,IAAU,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI;QACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,GAAc;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,QAAgB;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,OAAe,EAAE,OAA4B,EAAE,GAAe;QAClE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QACjD,IAAI,OAAO,EAAE,IAAI;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,QAAQ,CAAC,OAAe,EAAE,IAAU;QAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QAChF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACtD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;YAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,GAAc;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,QAAgB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACxC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,MAA6B;QAChC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;gBACnD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;oBAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1E,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,YAAY;QACV,MAAM,GAAG,GAAmB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK;gBAAE,SAAS,CAAC,iDAAiD;YACvE,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1F,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sEAAsE;IACtE,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,CAAC;IAED,oGAAoG;IACpG,GAAG,CAAC,OAAgB;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAChE,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YACpE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAgB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ServerResponse } from "node:http";
2
+ import { type TagRule } from "@wizeworks/lens-core";
3
+ import type { TraceStore } from "./store.js";
4
+ import type { Req } from "./types.js";
5
+ /** `GET api/tags`. Rules live in code here, so the dashboard shows them without edit controls. */
6
+ export declare function sendTags(tags: readonly TagRule[], res: ServerResponse): void;
7
+ /** `POST api/tags/match` with `{ kind, items }`: each enabled rule runs as a search over these traces in memory. */
8
+ export declare function sendTagMatch(store: TraceStore, tags: readonly TagRule[], req: Req, res: ServerResponse, env?: string): Promise<void>;
9
+ //# sourceMappingURL=tags-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags-api.d.ts","sourceRoot":"","sources":["../src/tags-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAsE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAExH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAItC,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAE5E;AAED,oHAAoH;AACpH,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1I"}
@@ -0,0 +1,16 @@
1
+ import { activeTags, matchTags, searchMemory, TAG_LIMITS, tagMatchRequestOf } from "@wizeworks/lens-core";
2
+ import { readJson, sendJson } from "./http-util.js";
3
+ // The in-app tags API (docs/TAGS-PLAN.md): the rules from the `tags` option, read-only, and which of them match a page of rows.
4
+ /** `GET api/tags`. Rules live in code here, so the dashboard shows them without edit controls. */
5
+ export function sendTags(tags, res) {
6
+ sendJson(res, 200, { tags, editable: false, max: TAG_LIMITS.rules });
7
+ }
8
+ /** `POST api/tags/match` with `{ kind, items }`: each enabled rule runs as a search over these traces in memory. */
9
+ export async function sendTagMatch(store, tags, req, res, env) {
10
+ const r = tagMatchRequestOf(await readJson(req).catch(() => null));
11
+ if (!r.ok)
12
+ return sendJson(res, 400, r);
13
+ const traces = store.all();
14
+ sendJson(res, 200, { matches: await matchTags((q) => searchMemory(traces, q), r.kind, r.items, activeTags(tags), env) });
15
+ }
16
+ //# sourceMappingURL=tags-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags-api.js","sourceRoot":"","sources":["../src/tags-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAgB,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIpD,gIAAgI;AAEhI,kGAAkG;AAClG,MAAM,UAAU,QAAQ,CAAC,IAAwB,EAAE,GAAmB;IACpE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,oHAAoH;AACpH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAiB,EAAE,IAAwB,EAAE,GAAQ,EAAE,GAAmB,EAAE,GAAY;IACzH,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3H,CAAC"}
package/dist/tracing.d.ts CHANGED
@@ -6,14 +6,20 @@ export interface Tracing {
6
6
  provider: BasicTracerProvider;
7
7
  tracer: Tracer;
8
8
  undici: UndiciInstrumentation | undefined;
9
+ /** Stops the node:http client tracing, when it is on. */
10
+ stopHttp: (() => void) | undefined;
9
11
  }
10
12
  /** Install one ALS context manager and the W3C propagator. Apps that set their own keep them. */
11
13
  export declare function installGlobals(): void;
12
14
  export interface TracingOptions {
13
15
  service: string;
14
16
  version: string;
17
+ /** The app's version (`service.version`). */
18
+ release?: string;
15
19
  redactKeys: readonly string[];
16
20
  fetch: boolean;
21
+ /** Trace node:http and node:https client calls (axios, got, and the rest). */
22
+ http: boolean;
17
23
  }
18
24
  /** One tracer provider per WizeLens instance. Every finished span goes into the store. */
19
25
  export declare function createTracing(store: TraceStore, o: TracingOptions, selfEndpoints: ReadonlySet<string>): Tracing;
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAmB,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAKrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC3C;AAID,iGAAiG;AACjG,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAgBD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAS/G"}
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAmB,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAOrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC1C,yDAAyD;IACzD,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACpC;AAID,iGAAiG;AACjG,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAgBD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAW/G"}
package/dist/tracing.js CHANGED
@@ -5,6 +5,8 @@ import { UndiciInstrumentation } from "@opentelemetry/instrumentation-undici";
5
5
  import { resourceFromAttributes } from "@opentelemetry/resources";
6
6
  import { AlwaysOnSampler, BasicTracerProvider } from "@opentelemetry/sdk-trace-base";
7
7
  import { HEADER_ENDPOINT, HEADER_HOP } from "@wizeworks/lens-core";
8
+ import { remoteNoter } from "./client-attributes.js";
9
+ import { instrumentHttp } from "./http-client.js";
8
10
  import { hasRequestHeader, responseHeader } from "./http-util.js";
9
11
  import { preciseProvider, preciseTracer } from "./precise.js";
10
12
  import { StoreSpanProcessor } from "./processor.js";
@@ -17,15 +19,15 @@ export function installGlobals() {
17
19
  context.setGlobalContextManager(new AsyncLocalStorageContextManager().enable());
18
20
  propagation.setGlobalPropagator(new W3CTraceContextPropagator());
19
21
  }
20
- function instrumentFetch(provider, store, selfEndpoints) {
22
+ function instrumentFetch(provider, onRemote) {
21
23
  const undici = new UndiciInstrumentation({
22
24
  requireParentforSpans: true,
23
25
  // Federation calls carry X-WizeLens-Hop. Do not trace WizeLens talking to itself.
24
26
  ignoreRequestHook: (request) => hasRequestHeader(request.headers, HEADER_HOP),
25
27
  responseHook: (span, { response }) => {
26
28
  const endpoint = responseHeader(response.headers, HEADER_ENDPOINT);
27
- if (endpoint && !selfEndpoints.has(endpoint))
28
- store.addRemote(span.spanContext().traceId, endpoint);
29
+ if (endpoint)
30
+ onRemote(span.spanContext().traceId, endpoint);
29
31
  },
30
32
  });
31
33
  undici.setTracerProvider(preciseProvider(provider));
@@ -34,12 +36,14 @@ function instrumentFetch(provider, store, selfEndpoints) {
34
36
  /** One tracer provider per WizeLens instance. Every finished span goes into the store. */
35
37
  export function createTracing(store, o, selfEndpoints) {
36
38
  const provider = new BasicTracerProvider({
37
- resource: resourceFromAttributes({ "service.name": o.service }),
39
+ resource: resourceFromAttributes({ "service.name": o.service, ...(o.release ? { "service.version": o.release } : {}) }),
38
40
  sampler: new AlwaysOnSampler(),
39
- spanProcessors: [new StoreSpanProcessor(store, o.service, o.redactKeys)],
41
+ spanProcessors: [new StoreSpanProcessor(store, o.service, o.redactKeys, o.release)],
40
42
  });
41
43
  const tracer = preciseTracer(provider.getTracer("@wizeworks/lens-node", o.version));
42
- const undici = o.fetch ? instrumentFetch(provider, store, selfEndpoints) : undefined;
43
- return { provider, tracer, undici };
44
+ const onRemote = remoteNoter(store, selfEndpoints);
45
+ const undici = o.fetch ? instrumentFetch(provider, onRemote) : undefined;
46
+ const stopHttp = o.http ? instrumentHttp(tracer, onRemote) : undefined;
47
+ return { provider, tracer, undici, stopHttp };
44
48
  }
45
49
  //# sourceMappingURL=tracing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASpD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,iGAAiG;AACjG,MAAM,UAAU,cAAc;IAC5B,IAAI,gBAAgB;QAAE,OAAO;IAC7B,gBAAgB,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,uBAAuB,CAAC,IAAI,+BAA+B,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,WAAW,CAAC,mBAAmB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,eAAe,CAAC,QAA6B,EAAE,KAAiB,EAAE,aAAkC;IAC3G,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,qBAAqB,EAAE,IAAI;QAC3B,kFAAkF;QAClF,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;QAC7E,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YACnE,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtG,CAAC;KACF,CAAC,CAAC;IACH,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,CAAiB,EAAE,aAAkC;IACpG,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC;QACvC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,eAAe,EAAE;QAC9B,cAAc,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;KACzE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import type { IncomingMessage, ServerResponse } from "node:http";
2
2
  import type { Tracer } from "@opentelemetry/api";
3
- import type { Trace } from "@wizeworks/lens-core";
3
+ import type { TagOptions, Trace } from "@wizeworks/lens-core";
4
+ import type { LogOptions } from "./loose-logs.js";
4
5
  import type { SamplingOptions } from "./sampling.js";
6
+ import type { SourceMapOptions } from "./sourcemaps.js";
5
7
  import type { TraceStore } from "./store.js";
6
8
  export interface WizeLensOptions {
7
9
  /** Service name shown in the dashboard, e.g. "orders-api". */
@@ -30,9 +32,11 @@ export interface WizeLensOptions {
30
32
  uiDir?: string;
31
33
  /** Capture outgoing fetch / undici calls. Default true. */
32
34
  instrumentFetch?: boolean;
35
+ /** Capture outgoing `node:http` / `node:https` calls, so axios, got, node-fetch v2, and the AWS SDK are traced too. Default true. */
36
+ instrumentHttp?: boolean;
33
37
  /** Database adapters also trace queries that run outside a request (startup, jobs). Default false. */
34
38
  traceQueriesOutsideRequests?: boolean;
35
- /** Copy `console.log`, `warn`, `error`, `info`, `debug`, and `trace` calls made during a request into its trace. Default true. */
39
+ /** Copy `console.log`, `warn`, `error`, `info`, `debug`, and `trace` calls into WizeLens (into their request trace, or outside one as loose lines). Default true. */
36
40
  captureConsole?: boolean;
37
41
  /** Keep runtime metrics (CPU, memory, heap, event loop, GC) and app metrics from `wizelensMetricExporter`. Default true. */
38
42
  captureMetrics?: boolean;
@@ -52,12 +56,20 @@ export interface WizeLensOptions {
52
56
  nPlusOneThreshold?: number;
53
57
  /** The project this service belongs to, so a shared hub can group it. Default: the WIZELENS_PROJECT variable. */
54
58
  project?: string;
59
+ /** The app's version, kept on every span as `service.version` for release markers, version compares, and Problems. Default: WIZELENS_RELEASE, else OTEL_SERVICE_VERSION, else npm_package_version. */
60
+ release?: string;
55
61
  /** Also send everything to this local hub, for example "http://localhost:5960". Default: the WIZELENS_HUB variable. */
56
62
  hub?: string;
57
63
  /** Access token for the hub. Default: the WIZELENS_HUB_TOKEN variable. */
58
64
  hubToken?: string;
59
65
  /** Keep only part of the traces, for busy services. Default: all, or the WIZELENS_SAMPLE_RATE variable. */
60
66
  sampling?: SamplingOptions;
67
+ /** Where browser stacks find their source maps: build folders and dev servers on this machine (default). False turns it off. */
68
+ sourceMaps?: SourceMapOptions | false;
69
+ /** Lines written outside a request (startup, jobs, timers): on or off, the lowest level, and a sample rate. Default: on, "info" and up, all. */
70
+ logs?: LogOptions;
71
+ /** Tag rules: `{ rules: [{ name: "checkout", query: "route:/checkout*", color: "green" }], disableBuiltIns: ["bot"] }`. A bad rule throws at startup. */
72
+ tags?: TagOptions;
61
73
  }
62
74
  export interface DbCallInfo {
63
75
  /** OTel `db.system.name`, e.g. "sqlite", "postgresql", "mysql". */
@@ -76,6 +88,8 @@ export interface DbCallInfo {
76
88
  outermost?: boolean;
77
89
  /** Skip the span when no request (or other span) is active. Set by the database adapters. */
78
90
  requireParent?: boolean;
91
+ /** More span attributes, for example `server.address`, `db.operation.batch.size`, or `wizelens.db.fingerprint`. */
92
+ attributes?: Record<string, string | number>;
79
93
  }
80
94
  export type LogFn = (message: string, attributes?: Record<string, unknown>) => void;
81
95
  export interface WizeLensLogger {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts.map CHANGED
@@ -1 +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"}
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,CAyBvG"}
package/dist/ui.js CHANGED
@@ -48,10 +48,11 @@ export async function serveUi(uiDir, relPath, res) {
48
48
  file = join(uiDir, "index.html");
49
49
  try {
50
50
  const body = await readFile(file);
51
- const isIndex = file.endsWith("index.html");
51
+ // The page and its build id must always be fresh; the hashed files never change.
52
+ const fresh = file.endsWith("index.html") || file.endsWith("version.json");
52
53
  res.writeHead(200, {
53
54
  "Content-Type": TYPES[extname(file)] ?? "application/octet-stream",
54
- "Cache-Control": isIndex ? "no-cache" : "public, max-age=31536000, immutable",
55
+ "Cache-Control": fresh ? "no-cache" : "public, max-age=31536000, immutable",
55
56
  });
56
57
  res.end(body);
57
58
  }
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { WizeLens, WizeLensOptions } from "./types.js";
2
2
  export type { DbCallInfo, LogFn, WizeLens, WizeLensLogger, WizeLensOptions } from "./types.js";
3
- /** Create the WizeLens add-on for one Node service. */
3
+ /** Create the WizeLens add-on for one Node service. When the auto install also runs, this instance wins. */
4
4
  export declare function createWizeLens(options: WizeLensOptions): WizeLens;
5
+ /** Build an instance without telling the auto install. The auto install builds its own with this. */
6
+ export declare function buildWizeLens(options: WizeLensOptions): WizeLens;
5
7
  //# sourceMappingURL=wizelens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizelens.d.ts","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"AAsBA,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;AAmE/F,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAsCjE"}
1
+ {"version":3,"file":"wizelens.d.ts","sourceRoot":"","sources":["../src/wizelens.ts"],"names":[],"mappings":"AA0BA,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;AAwE/F,4GAA4G;AAC5G,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAIjE;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAuChE"}
package/dist/wizelens.js CHANGED
@@ -1,22 +1,26 @@
1
1
  import { join } from "node:path";
2
2
  import { W3CTraceContextPropagator } from "@opentelemetry/core";
3
- import { DEFAULT_BASE_PATH, DEFAULT_REDACT_KEYS } from "@wizeworks/lens-core";
3
+ import { DEFAULT_BASE_PATH, DEFAULT_REDACT_KEYS, tagsFromOptions } from "@wizeworks/lens-core";
4
4
  import { createHandler } from "./api.js";
5
5
  import { createMiddleware } from "./capture.js";
6
- import { addCleanup, registerParts, runCleanups } from "./adapters/registry.js";
6
+ import { addCleanup, partsOf, registerParts, runCleanups } from "./adapters/registry.js";
7
+ import { noteCodeInstall } from "./auto/state.js";
7
8
  import { createDbSpans, createTraceDb } from "./db.js";
8
9
  import { disabledWizeLens } from "./disabled.js";
9
10
  import { createGetTrace } from "./federation.js";
10
- import { connectHub } from "./hub-connect.js";
11
+ import { connectHub, releaseOf } from "./hub-connect.js";
11
12
  import { samplingInfo, TraceSampler } from "./sampling.js";
12
13
  import { buildInfo, DEFAULT_N_PLUS_ONE, DEFAULT_SLOW_QUERY_MS, VERSION } from "./info.js";
13
14
  import { createLogSink, createLogWriter, makeLogger } from "./logger.js";
15
+ import { looseLogsOf } from "./loose-logs.js";
14
16
  import { captureConsole } from "./logs/console.js";
17
+ import { memoryPages } from "./mcp-memory.js";
15
18
  import { createMetricParts, mcpMetrics } from "./metrics/setup.js";
16
19
  import { SqlitePersister } from "./persist.js";
17
20
  import { createErrorMiddleware, recordException, setUser, tag } from "./request-api.js";
18
21
  import { TraceStore } from "./store.js";
19
22
  import { isEnabled, servesDashboard } from "./mode.js";
23
+ import { localMapLoader } from "./sourcemaps.js";
20
24
  import { createTracing, installGlobals } from "./tracing.js";
21
25
  import { resolveUiDir } from "./ui.js";
22
26
  function normalizeBasePath(basePath) {
@@ -34,22 +38,25 @@ function openPersister(store, options, dashboard) {
34
38
  persister.start();
35
39
  return persister;
36
40
  }
37
- function mcpSource(options, store, getTrace, metrics) {
41
+ function mcpSource(options, store, getTrace, metrics, tags) {
42
+ const thresholds = { slowQueryMs: options.slowQueryMs ?? DEFAULT_SLOW_QUERY_MS, nPlusOneThreshold: options.nPlusOneThreshold ?? DEFAULT_N_PLUS_ONE };
38
43
  return {
39
44
  service: options.serviceName,
40
45
  version: VERSION,
41
- slowQueryMs: options.slowQueryMs ?? DEFAULT_SLOW_QUERY_MS,
42
- nPlusOneThreshold: options.nPlusOneThreshold ?? DEFAULT_N_PLUS_ONE,
46
+ ...thresholds,
43
47
  all: () => store.all(),
48
+ page: memoryPages(() => store.all(), thresholds),
44
49
  get: getTrace,
45
50
  audit: options.audit ?? ((line) => console.info(line)),
46
51
  env: process.env.NODE_ENV || "development",
52
+ tags: () => tags,
47
53
  ...mcpMetrics(metrics),
48
54
  };
49
55
  }
50
56
  function buildParts(options, basePath) {
51
57
  installGlobals();
52
58
  const service = options.serviceName;
59
+ const tags = tagsFromOptions(options.tags);
53
60
  const redactKeys = options.redactKeys ?? DEFAULT_REDACT_KEYS;
54
61
  const sampling = samplingInfo(options.sampling);
55
62
  const sampler = sampling ? new TraceSampler(sampling) : undefined;
@@ -58,19 +65,21 @@ function buildParts(options, basePath) {
58
65
  const persister = openPersister(store, options, dashboard);
59
66
  const selfEndpoints = new Set(options.publicEndpoint ? [options.publicEndpoint] : []);
60
67
  const fetch = options.instrumentFetch ?? true;
61
- const tracing = createTracing(store, { service, version: VERSION, redactKeys, fetch }, selfEndpoints);
62
- const logs = createLogSink(store, service, redactKeys);
68
+ const http = options.instrumentHttp ?? true;
69
+ const tracing = createTracing(store, { service, version: VERSION, release: releaseOf(options), redactKeys, fetch, http }, selfEndpoints);
70
+ const logs = createLogSink(store, service, redactKeys, looseLogsOf(options.logs));
63
71
  const write = createLogWriter(logs, !!options.logToConsole);
64
72
  const getTrace = createGetTrace(store, selfEndpoints);
65
73
  const startedMs = Date.now();
66
74
  const sqlite = () => !!persister?.active;
67
75
  const metrics = createMetricParts(options, redactKeys);
68
- const info = () => buildInfo({ options, store, redactKeys, startedMs, sqlite, metrics: !!metrics });
69
- const mcp = mcpSource(options, store, getTrace, metrics?.store ?? null);
76
+ const sourceMaps = localMapLoader(options.sourceMaps);
77
+ const info = () => buildInfo({ options, store, redactKeys, startedMs, sqlite, metrics: !!metrics, sourceMaps: !!sourceMaps });
78
+ const mcp = mcpSource(options, store, getTrace, metrics?.store ?? null, tags);
70
79
  const uiDir = resolveUiDir(options.uiDir);
71
80
  const hub = connectHub(options, store, info, dashboard ? selfEndpoints : null, metrics?.store ?? null);
72
81
  const enableMcp = dashboard && !!options.enableMcp;
73
- const handler = createHandler({ basePath, store, redactKeys, uiDir, enableMcp, mcp, info, getTrace, metrics: metrics?.store ?? null, selfEndpoints, dashboard });
82
+ const handler = createHandler({ basePath, store, redactKeys, uiDir, enableMcp, mcp, info, getTrace, metrics: metrics?.store ?? null, selfEndpoints, dashboard, sourceMaps, tags });
74
83
  const capture = {
75
84
  tracer: tracing.tracer,
76
85
  basePath,
@@ -82,8 +91,14 @@ function buildParts(options, basePath) {
82
91
  };
83
92
  return { hub, service, redactKeys, store, persister, tracing, logs, write, getTrace, handler, capture, metrics, middleware: createMiddleware(capture) };
84
93
  }
85
- /** Create the WizeLens add-on for one Node service. */
94
+ /** Create the WizeLens add-on for one Node service. When the auto install also runs, this instance wins. */
86
95
  export function createWizeLens(options) {
96
+ const wizelens = buildWizeLens(options);
97
+ noteCodeInstall(wizelens, partsOf(wizelens));
98
+ return wizelens;
99
+ }
100
+ /** Build an instance without telling the auto install. The auto install builds its own with this. */
101
+ export function buildWizeLens(options) {
87
102
  const basePath = normalizeBasePath(options.basePath);
88
103
  if (!isEnabled(options))
89
104
  return disabledWizeLens(options, basePath);
@@ -111,6 +126,7 @@ export function createWizeLens(options) {
111
126
  runCleanups(wizelens);
112
127
  await p.hub?.stop();
113
128
  p.tracing.undici?.disable();
129
+ p.tracing.stopHttp?.();
114
130
  await p.tracing.provider.shutdown();
115
131
  p.persister?.close();
116
132
  },