@wizeworks/lens-node 0.3.0-alpha.3 → 0.3.0-alpha.5

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 (330) 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 +118 -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 +74 -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/channels.d.ts +5 -0
  136. package/dist/graphql/channels.d.ts.map +1 -0
  137. package/dist/graphql/channels.js +56 -0
  138. package/dist/graphql/channels.js.map +1 -0
  139. package/dist/graphql/document.d.ts +13 -0
  140. package/dist/graphql/document.d.ts.map +1 -0
  141. package/dist/graphql/document.js +62 -0
  142. package/dist/graphql/document.js.map +1 -0
  143. package/dist/graphql/index.d.ts +13 -0
  144. package/dist/graphql/index.d.ts.map +1 -0
  145. package/dist/graphql/index.js +92 -0
  146. package/dist/graphql/index.js.map +1 -0
  147. package/dist/graphql/operation.d.ts +37 -0
  148. package/dist/graphql/operation.d.ts.map +1 -0
  149. package/dist/graphql/operation.js +58 -0
  150. package/dist/graphql/operation.js.map +1 -0
  151. package/dist/graphql/resolvers.d.ts +5 -0
  152. package/dist/graphql/resolvers.d.ts.map +1 -0
  153. package/dist/graphql/resolvers.js +79 -0
  154. package/dist/graphql/resolvers.js.map +1 -0
  155. package/dist/graphql/shared.d.ts +14 -0
  156. package/dist/graphql/shared.d.ts.map +1 -0
  157. package/dist/graphql/shared.js +21 -0
  158. package/dist/graphql/shared.js.map +1 -0
  159. package/dist/http-client.d.ts +8 -0
  160. package/dist/http-client.d.ts.map +1 -0
  161. package/dist/http-client.js +132 -0
  162. package/dist/http-client.js.map +1 -0
  163. package/dist/hub-connect.d.ts +2 -0
  164. package/dist/hub-connect.d.ts.map +1 -1
  165. package/dist/hub-connect.js +3 -1
  166. package/dist/hub-connect.js.map +1 -1
  167. package/dist/index.d.ts +12 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +9 -0
  170. package/dist/index.js.map +1 -1
  171. package/dist/info.d.ts +2 -0
  172. package/dist/info.d.ts.map +1 -1
  173. package/dist/info.js +1 -1
  174. package/dist/info.js.map +1 -1
  175. package/dist/kit.d.ts +3 -1
  176. package/dist/kit.d.ts.map +1 -1
  177. package/dist/kit.js +1 -0
  178. package/dist/kit.js.map +1 -1
  179. package/dist/logger.d.ts +4 -4
  180. package/dist/logger.d.ts.map +1 -1
  181. package/dist/logger.js +11 -7
  182. package/dist/logger.js.map +1 -1
  183. package/dist/logs/bunyan.d.ts +1 -1
  184. package/dist/logs/bunyan.d.ts.map +1 -1
  185. package/dist/logs/bunyan.js +2 -3
  186. package/dist/logs/bunyan.js.map +1 -1
  187. package/dist/logs/consola.d.ts +1 -1
  188. package/dist/logs/consola.d.ts.map +1 -1
  189. package/dist/logs/consola.js +1 -1
  190. package/dist/logs/consola.js.map +1 -1
  191. package/dist/logs/console.d.ts +1 -1
  192. package/dist/logs/console.d.ts.map +1 -1
  193. package/dist/logs/console.js +5 -3
  194. package/dist/logs/console.js.map +1 -1
  195. package/dist/logs/otel.d.ts.map +1 -1
  196. package/dist/logs/otel.js +1 -3
  197. package/dist/logs/otel.js.map +1 -1
  198. package/dist/logs/pino.d.ts +1 -1
  199. package/dist/logs/pino.d.ts.map +1 -1
  200. package/dist/logs/pino.js +2 -3
  201. package/dist/logs/pino.js.map +1 -1
  202. package/dist/logs/winston.d.ts +1 -1
  203. package/dist/logs/winston.d.ts.map +1 -1
  204. package/dist/logs/winston.js +2 -3
  205. package/dist/logs/winston.js.map +1 -1
  206. package/dist/loose-logs.d.ts +13 -0
  207. package/dist/loose-logs.d.ts.map +1 -0
  208. package/dist/loose-logs.js +21 -0
  209. package/dist/loose-logs.js.map +1 -0
  210. package/dist/mcp-find.d.ts.map +1 -1
  211. package/dist/mcp-find.js +40 -8
  212. package/dist/mcp-find.js.map +1 -1
  213. package/dist/mcp-memory.d.ts +7 -0
  214. package/dist/mcp-memory.d.ts.map +1 -0
  215. package/dist/mcp-memory.js +10 -0
  216. package/dist/mcp-memory.js.map +1 -0
  217. package/dist/mcp-overview.d.ts +5 -0
  218. package/dist/mcp-overview.d.ts.map +1 -0
  219. package/dist/mcp-overview.js +71 -0
  220. package/dist/mcp-overview.js.map +1 -0
  221. package/dist/mcp-page.d.ts +28 -0
  222. package/dist/mcp-page.d.ts.map +1 -0
  223. package/dist/mcp-page.js +77 -0
  224. package/dist/mcp-page.js.map +1 -0
  225. package/dist/mcp-problems.d.ts +5 -0
  226. package/dist/mcp-problems.d.ts.map +1 -0
  227. package/dist/mcp-problems.js +56 -0
  228. package/dist/mcp-problems.js.map +1 -0
  229. package/dist/mcp-projects.d.ts.map +1 -1
  230. package/dist/mcp-projects.js +7 -2
  231. package/dist/mcp-projects.js.map +1 -1
  232. package/dist/mcp-search.d.ts.map +1 -1
  233. package/dist/mcp-search.js +9 -5
  234. package/dist/mcp-search.js.map +1 -1
  235. package/dist/mcp-shared.d.ts +37 -1
  236. package/dist/mcp-shared.d.ts.map +1 -1
  237. package/dist/mcp-shared.js +3 -0
  238. package/dist/mcp-shared.js.map +1 -1
  239. package/dist/mcp-store.d.ts +2 -2
  240. package/dist/mcp-store.d.ts.map +1 -1
  241. package/dist/mcp-store.js +6 -5
  242. package/dist/mcp-store.js.map +1 -1
  243. package/dist/mcp-tags.d.ts +8 -0
  244. package/dist/mcp-tags.d.ts.map +1 -0
  245. package/dist/mcp-tags.js +22 -0
  246. package/dist/mcp-tags.js.map +1 -0
  247. package/dist/mcp-traffic.d.ts +5 -0
  248. package/dist/mcp-traffic.d.ts.map +1 -0
  249. package/dist/mcp-traffic.js +87 -0
  250. package/dist/mcp-traffic.js.map +1 -0
  251. package/dist/mcp.d.ts +4 -1
  252. package/dist/mcp.d.ts.map +1 -1
  253. package/dist/mcp.js +14 -3
  254. package/dist/mcp.js.map +1 -1
  255. package/dist/messaging/bullmq.d.ts +4 -0
  256. package/dist/messaging/bullmq.d.ts.map +1 -0
  257. package/dist/messaging/bullmq.js +137 -0
  258. package/dist/messaging/bullmq.js.map +1 -0
  259. package/dist/messaging/shared.d.ts +10 -4
  260. package/dist/messaging/shared.d.ts.map +1 -1
  261. package/dist/messaging/shared.js +13 -4
  262. package/dist/messaging/shared.js.map +1 -1
  263. package/dist/messaging/sqs-message.d.ts +35 -0
  264. package/dist/messaging/sqs-message.d.ts.map +1 -0
  265. package/dist/messaging/sqs-message.js +66 -0
  266. package/dist/messaging/sqs-message.js.map +1 -0
  267. package/dist/messaging/sqs.d.ts +4 -0
  268. package/dist/messaging/sqs.d.ts.map +1 -0
  269. package/dist/messaging/sqs.js +104 -0
  270. package/dist/messaging/sqs.js.map +1 -0
  271. package/dist/processor.d.ts +2 -1
  272. package/dist/processor.d.ts.map +1 -1
  273. package/dist/processor.js +8 -3
  274. package/dist/processor.js.map +1 -1
  275. package/dist/real/real.d.ts +20 -0
  276. package/dist/real/real.d.ts.map +1 -0
  277. package/dist/real/real.js +42 -0
  278. package/dist/real/real.js.map +1 -0
  279. package/dist/request-capture.d.ts.map +1 -1
  280. package/dist/request-capture.js +2 -1
  281. package/dist/request-capture.js.map +1 -1
  282. package/dist/request-naming.d.ts +8 -0
  283. package/dist/request-naming.d.ts.map +1 -0
  284. package/dist/request-naming.js +29 -0
  285. package/dist/request-naming.js.map +1 -0
  286. package/dist/sampling.d.ts.map +1 -1
  287. package/dist/sampling.js +2 -2
  288. package/dist/sampling.js.map +1 -1
  289. package/dist/search-api.d.ts +4 -3
  290. package/dist/search-api.d.ts.map +1 -1
  291. package/dist/search-api.js +8 -7
  292. package/dist/search-api.js.map +1 -1
  293. package/dist/sourcemaps.d.ts +15 -0
  294. package/dist/sourcemaps.d.ts.map +1 -0
  295. package/dist/sourcemaps.js +68 -0
  296. package/dist/sourcemaps.js.map +1 -0
  297. package/dist/spans.d.ts +3 -0
  298. package/dist/spans.d.ts.map +1 -1
  299. package/dist/spans.js +9 -1
  300. package/dist/spans.js.map +1 -1
  301. package/dist/store-entries.d.ts +34 -0
  302. package/dist/store-entries.d.ts.map +1 -0
  303. package/dist/store-entries.js +70 -0
  304. package/dist/store-entries.js.map +1 -0
  305. package/dist/store.d.ts +4 -1
  306. package/dist/store.d.ts.map +1 -1
  307. package/dist/store.js +19 -22
  308. package/dist/store.js.map +1 -1
  309. package/dist/tags-api.d.ts +9 -0
  310. package/dist/tags-api.d.ts.map +1 -0
  311. package/dist/tags-api.js +16 -0
  312. package/dist/tags-api.js.map +1 -0
  313. package/dist/test/helpers.d.ts +15 -0
  314. package/dist/test/helpers.d.ts.map +1 -0
  315. package/dist/test/helpers.js +56 -0
  316. package/dist/test/helpers.js.map +1 -0
  317. package/dist/tracing.d.ts +10 -1
  318. package/dist/tracing.d.ts.map +1 -1
  319. package/dist/tracing.js +17 -8
  320. package/dist/tracing.js.map +1 -1
  321. package/dist/types.d.ts +16 -2
  322. package/dist/types.d.ts.map +1 -1
  323. package/dist/ui.d.ts.map +1 -1
  324. package/dist/ui.js +3 -2
  325. package/dist/ui.js.map +1 -1
  326. package/dist/wizelens.d.ts +3 -1
  327. package/dist/wizelens.d.ts.map +1 -1
  328. package/dist/wizelens.js +28 -12
  329. package/dist/wizelens.js.map +1 -1
  330. package/package.json +26 -4
@@ -0,0 +1,92 @@
1
+ import { createRequire } from "node:module";
2
+ import { context, SpanKind, trace } from "@opentelemetry/api";
3
+ import { captureOf, patchMethod } from "../adapters/registry.js";
4
+ import { addOperation } from "../request-naming.js";
5
+ import { currentServerSpan, recordOn } from "../spans.js";
6
+ import { callOf, endpointPartOf, operationAttributes, operationOf, recordResultErrors, spanNameOf } from "./operation.js";
7
+ import { subscribeGraphqlChannels } from "./channels.js";
8
+ import { hookResolvers } from "./resolvers.js";
9
+ import { afterCall, IN_OPERATION } from "./shared.js";
10
+ const require = createRequire(import.meta.url);
11
+ // graphql-js entry points, and the executor GraphQL Yoga uses (@graphql-tools/executor).
12
+ const ENTRY_POINTS = ["execute", "executeSync", "subscribe", "normalizedExecutor"];
13
+ const KIND = "graphql";
14
+ /** Wrap one graphql-js entry point: a span per operation inside a request, named like "query GetOrders". */
15
+ export function traceOperation(d, options, original) {
16
+ return function wizelensGraphql(...args) {
17
+ const call = callOf(args);
18
+ const parent = context.active();
19
+ if (!call || !trace.getSpan(parent) || parent.getValue(IN_OPERATION))
20
+ return original.apply(this, args);
21
+ const op = operationOf(call);
22
+ const attributes = operationAttributes(op, call, options.document !== false);
23
+ const span = d.tracer.startSpan(spanNameOf(op), { kind: SpanKind.INTERNAL, attributes }, parent);
24
+ const server = currentServerSpan();
25
+ if (server)
26
+ addOperation(server, endpointPartOf(op));
27
+ hookResolvers(d.tracer, call.schema, options);
28
+ const ctx = trace.setSpan(parent, span).setValue(IN_OPERATION, true);
29
+ return context.with(ctx, () => afterCall(() => original.apply(this, args), (result, error) => {
30
+ if (error)
31
+ recordOn(span, error);
32
+ else
33
+ recordResultErrors(span, result);
34
+ span.end();
35
+ }));
36
+ };
37
+ }
38
+ const isNamespace = (o) => Object.prototype.toString.call(o) === "[object Module]";
39
+ function writable(o, name) {
40
+ const d = Object.getOwnPropertyDescriptor(o, name);
41
+ return !!d && (d.writable === true || typeof d.set === "function") && !isNamespace(o);
42
+ }
43
+ /** Where `name` can be replaced: the object itself, else the CommonJS file that defines the same function (graphql's index has getters only). */
44
+ function holderOf(target, name) {
45
+ const fn = target[name];
46
+ if (typeof fn !== "function")
47
+ return null;
48
+ if (writable(target, name))
49
+ return target;
50
+ for (const mod of Object.values(require.cache)) {
51
+ const exports = mod?.exports;
52
+ if (exports && typeof exports === "object" && exports !== target && exports[name] === fn && writable(exports, name))
53
+ return exports;
54
+ }
55
+ return null;
56
+ }
57
+ /** graphql 17 and later publish "graphql:execute". */
58
+ const isChannelVersion = (graphql) => Number(String(graphql.version ?? "").split(".")[0]) >= 17;
59
+ const isWrapped = (fn) => typeof fn === "function" && fn[Symbol.for(`wizeworks.wizelens.${KIND}`)] === true;
60
+ /** Trace graphql-js 16+ operations (Apollo, Yoga, Mercurius, Nest): `instrumentGraphql(wizelens, graphql)` before the server is made. False when nothing was patched. */
61
+ export function instrumentGraphql(wizelens, graphql, options = {}) {
62
+ const d = captureOf(wizelens);
63
+ if (!d || !graphql || typeof graphql !== "object")
64
+ return false;
65
+ // graphql 17 and later announce operations on tracing channels; the patch below then finds nothing to do, or is skipped inside.
66
+ let done = isChannelVersion(graphql) && subscribeGraphqlChannels(d, options);
67
+ for (const name of ENTRY_POINTS) {
68
+ const holder = holderOf(graphql, name);
69
+ if (!holder)
70
+ continue;
71
+ if (isWrapped(holder[name]))
72
+ done = true;
73
+ else
74
+ done = patchMethod(holder, name, (original) => traceOperation(d, options, original), KIND) || done;
75
+ }
76
+ return done;
77
+ }
78
+ /** Trace graphql 17+ through its tracing channels only: for the auto install, before graphql loads. False when tracing is off. */
79
+ export function traceGraphqlChannels(wizelens, options = {}) {
80
+ const d = captureOf(wizelens);
81
+ return !!d && subscribeGraphqlChannels(d, options);
82
+ }
83
+ /** One graphql-js function, traced. For an ES module build, whose bindings cannot be patched from outside. */
84
+ export function traceGraphqlFunction(wizelens, fn, options = {}) {
85
+ const d = captureOf(wizelens);
86
+ if (!d || typeof fn !== "function" || isWrapped(fn))
87
+ return undefined;
88
+ const wrapped = traceOperation(d, options, fn);
89
+ Object.defineProperty(wrapped, Symbol.for(`wizeworks.wizelens.${KIND}`), { value: true });
90
+ return wrapped;
91
+ }
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type Attributes, type Span as OtelSpan } from "@opentelemetry/api";
2
+ import { type LocationLike } from "./document.js";
3
+ interface DefinitionLike {
4
+ kind: string;
5
+ operation?: string;
6
+ name?: {
7
+ value?: string;
8
+ };
9
+ }
10
+ export interface DocumentLike {
11
+ definitions?: readonly DefinitionLike[];
12
+ loc?: LocationLike;
13
+ }
14
+ export interface ExecutionArgsLike {
15
+ schema?: unknown;
16
+ document?: DocumentLike;
17
+ operationName?: string | null;
18
+ }
19
+ /** The operation one execute call runs. */
20
+ export interface Operation {
21
+ type: string;
22
+ name: string | undefined;
23
+ }
24
+ /** The call of `execute(args)`, or of graphql 15's `execute(schema, document, rootValue, contextValue, variables, operationName)`. */
25
+ export declare function callOf(args: readonly unknown[]): ExecutionArgsLike | null;
26
+ /** The operation a document runs: the one named `operationName`, or its only operation. */
27
+ export declare function operationOf(call: ExecutionArgsLike): Operation;
28
+ /** "query GetOrders", or "query" for an anonymous operation. */
29
+ export declare const spanNameOf: (op: Operation) => string;
30
+ /** The name an operation adds to its request's endpoint: its name, else "anonymous query". */
31
+ export declare const endpointPartOf: (op: Operation) => string;
32
+ /** Span attributes of one operation. The document keeps its shape; literal values are replaced, variables never stored. */
33
+ export declare function operationAttributes(op: Operation, call: ExecutionArgsLike, withDocument: boolean): Attributes;
34
+ /** Record the `errors` of an execution result (GraphQL answers errors, it does not throw them). */
35
+ export declare function recordResultErrors(span: OtelSpan, result: unknown): void;
36
+ export {};
37
+ //# sourceMappingURL=operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/graphql/operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGhE,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AACD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AASD,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAID,sIAAsI;AACtI,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAMzE;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAI9D;AAED,gEAAgE;AAChE,eAAO,MAAM,UAAU,OAAQ,SAAS,KAAG,MAAuD,CAAC;AAEnG,8FAA8F;AAC9F,eAAO,MAAM,cAAc,OAAQ,SAAS,KAAG,MAA2C,CAAC;AAE3F,2HAA2H;AAC3H,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,GAAG,UAAU,CAM7G;AAcD,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAOxE"}
@@ -0,0 +1,58 @@
1
+ import { SpanStatusCode } from "@opentelemetry/api";
2
+ import { documentText } from "./document.js";
3
+ const MAX_ERRORS = 10;
4
+ /** The call of `execute(args)`, or of graphql 15's `execute(schema, document, rootValue, contextValue, variables, operationName)`. */
5
+ export function callOf(args) {
6
+ const first = args[0];
7
+ if (args.length === 1 && first && typeof first === "object" && first.document)
8
+ return first;
9
+ const document = args[1];
10
+ if (!document?.definitions)
11
+ return null;
12
+ return { schema: args[0], document, operationName: args[5] };
13
+ }
14
+ /** The operation a document runs: the one named `operationName`, or its only operation. */
15
+ export function operationOf(call) {
16
+ const ops = (call.document?.definitions ?? []).filter((d) => d.kind === "OperationDefinition");
17
+ const wanted = call.operationName ? ops.find((d) => d.name?.value === call.operationName) : ops.length === 1 ? ops[0] : undefined;
18
+ return { type: wanted?.operation ?? "query", name: wanted?.name?.value ?? call.operationName ?? undefined };
19
+ }
20
+ /** "query GetOrders", or "query" for an anonymous operation. */
21
+ export const spanNameOf = (op) => (op.name ? `${op.type} ${op.name}` : op.type);
22
+ /** The name an operation adds to its request's endpoint: its name, else "anonymous query". */
23
+ export const endpointPartOf = (op) => op.name ?? `anonymous ${op.type}`;
24
+ /** Span attributes of one operation. The document keeps its shape; literal values are replaced, variables never stored. */
25
+ export function operationAttributes(op, call, withDocument) {
26
+ const attributes = { "graphql.operation.type": op.type };
27
+ if (op.name)
28
+ attributes["graphql.operation.name"] = op.name;
29
+ const text = withDocument ? documentText(call.document?.loc) : undefined;
30
+ if (text)
31
+ attributes["graphql.document"] = text;
32
+ return attributes;
33
+ }
34
+ function recordGraphqlError(span, error) {
35
+ const cause = error.originalError instanceof Error ? error.originalError : undefined;
36
+ const attributes = {
37
+ "exception.type": cause?.name ?? error.name ?? "GraphQLError",
38
+ "exception.message": error.message ?? String(error),
39
+ };
40
+ const stack = cause?.stack ?? error.stack;
41
+ if (stack)
42
+ attributes["exception.stacktrace"] = stack;
43
+ if (error.path?.length)
44
+ attributes["graphql.error.path"] = error.path.join(".");
45
+ span.addEvent("exception", attributes);
46
+ }
47
+ /** Record the `errors` of an execution result (GraphQL answers errors, it does not throw them). */
48
+ export function recordResultErrors(span, result) {
49
+ const errors = result?.errors;
50
+ if (!Array.isArray(errors) || errors.length === 0)
51
+ return;
52
+ for (const error of errors.slice(0, MAX_ERRORS))
53
+ recordGraphqlError(span, (error ?? {}));
54
+ span.setAttribute("graphql.error.count", errors.length);
55
+ const first = errors[0];
56
+ span.setStatus({ code: SpanStatusCode.ERROR, message: first?.message ?? "GraphQL error" });
57
+ }
58
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/graphql/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type Tracer } from "@opentelemetry/api";
2
+ import { type GraphqlOptions } from "./shared.js";
3
+ /** Wrap the resolvers of a schema once, by the options. Built-in introspection types are skipped. */
4
+ export declare function hookResolvers(tracer: Tracer, schema: unknown, options: GraphqlOptions): void;
5
+ //# sourceMappingURL=resolvers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../src/graphql/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5F,OAAO,EAAa,KAAK,cAAc,EAA6B,MAAM,aAAa,CAAC;AAmFxF,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAQ5F"}
@@ -0,0 +1,79 @@
1
+ import { context, SpanKind, trace } from "@opentelemetry/api";
2
+ import { preciseNow } from "../precise.js";
3
+ import { recordOn } from "../spans.js";
4
+ import { afterCall, IN_OPERATION } from "./shared.js";
5
+ const hooked = new WeakSet();
6
+ const WRAPPED = Symbol.for("wizeworks.wizelens.graphql.resolver");
7
+ /** "orders.0.items" from graphql-js's linked path. */
8
+ function pathText(path) {
9
+ const keys = [];
10
+ for (let p = path; p; p = p.prev)
11
+ keys.unshift(p.key);
12
+ return keys.join(".");
13
+ }
14
+ function resolverAttributes(field, typeName, fieldType, info) {
15
+ const attributes = { "graphql.field.name": field, "graphql.parent.type": typeName };
16
+ if (fieldType !== undefined)
17
+ attributes["graphql.field.type"] = String(fieldType);
18
+ const path = pathText(info?.path);
19
+ if (path)
20
+ attributes["graphql.field.path"] = path;
21
+ return attributes;
22
+ }
23
+ /** A resolver that runs inside its own span. For the "all" mode. */
24
+ function spanAround(tracer, name, attrs, original) {
25
+ return function (...args) {
26
+ if (!context.active().getValue(IN_OPERATION))
27
+ return original.apply(this, args);
28
+ const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, attributes: attrs(args[3]) });
29
+ return context.with(trace.setSpan(context.active(), span), () => afterCall(() => original.apply(this, args), (_result, error) => {
30
+ if (error)
31
+ recordOn(span, error);
32
+ span.end();
33
+ }));
34
+ };
35
+ }
36
+ /** A resolver timed in place: only a slow one gets a span, written after it finished. For the "slow" mode. */
37
+ function spanWhenSlow(tracer, name, attrs, original, slowMs) {
38
+ return function (...args) {
39
+ const ctx = context.active();
40
+ if (!ctx.getValue(IN_OPERATION))
41
+ return original.apply(this, args);
42
+ const startedMs = preciseNow();
43
+ return afterCall(() => original.apply(this, args), (_result, error) => {
44
+ const endMs = preciseNow();
45
+ // A fast failure is already in the operation's errors.
46
+ if (endMs - startedMs < slowMs)
47
+ return;
48
+ const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, startTime: startedMs, attributes: attrs(args[3]) }, ctx);
49
+ if (error)
50
+ recordOn(span, error);
51
+ span.end(endMs);
52
+ });
53
+ };
54
+ }
55
+ function wrapField(tracer, typeName, field, options) {
56
+ const original = field.resolve;
57
+ if (typeof original !== "function" || original[WRAPPED])
58
+ return;
59
+ const fieldName = field.name ?? "field";
60
+ const attrs = (info) => resolverAttributes(fieldName, typeName, field.type, info);
61
+ const name = `${typeName}.${fieldName}`;
62
+ const wrapped = options.resolvers === "all" ? spanAround(tracer, name, attrs, original) : spanWhenSlow(tracer, name, attrs, original, options.slowResolverMs ?? 50);
63
+ Object.defineProperty(wrapped, WRAPPED, { value: true });
64
+ field.resolve = wrapped;
65
+ }
66
+ /** Wrap the resolvers of a schema once, by the options. Built-in introspection types are skipped. */
67
+ export function hookResolvers(tracer, schema, options) {
68
+ const s = schema;
69
+ if (options.resolvers === "none" || !s || typeof s.getTypeMap !== "function" || hooked.has(s))
70
+ return;
71
+ hooked.add(s);
72
+ for (const [typeName, type] of Object.entries(s.getTypeMap())) {
73
+ if (typeName.startsWith("__") || typeof type?.getFields !== "function")
74
+ continue;
75
+ for (const field of Object.values(type.getFields()))
76
+ wrapField(tracer, typeName, field, options);
77
+ }
78
+ }
79
+ //# sourceMappingURL=resolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../src/graphql/resolvers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface GraphqlOptions {
2
+ /** Resolver spans: "slow" (default) for resolvers at or over `slowResolverMs`, "all" for every resolver with its own `resolve`, "none" for none. */
3
+ resolvers?: "slow" | "all" | "none";
4
+ /** A resolver at least this slow (ms) gets a span in "slow" mode. Default 50. */
5
+ slowResolverMs?: number;
6
+ /** Keep the operation's document, with literal values replaced, as `graphql.document`. Default true. */
7
+ document?: boolean;
8
+ }
9
+ /** Set inside a traced operation: only its resolvers are traced. */
10
+ export declare const IN_OPERATION: symbol;
11
+ export type Method = (this: unknown, ...args: unknown[]) => unknown;
12
+ /** Call `fn` and run `done` when it settles, sync or async, with its result or error. Returns what `fn` returns. */
13
+ export declare function afterCall<T>(fn: () => T, done: (result: unknown, error: unknown) => void): T;
14
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/graphql/shared.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,oJAAoJ;IACpJ,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,oEAAoE;AACpE,eAAO,MAAM,YAAY,QAA2D,CAAC;AAErF,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEpE,oHAAoH;AACpH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,CAAC,CAW5F"}
@@ -0,0 +1,21 @@
1
+ import { createContextKey } from "@opentelemetry/api";
2
+ import { isThenable } from "../db.js";
3
+ /** Set inside a traced operation: only its resolvers are traced. */
4
+ export const IN_OPERATION = createContextKey("wizeworks.wizelens.graphql.operation");
5
+ /** Call `fn` and run `done` when it settles, sync or async, with its result or error. Returns what `fn` returns. */
6
+ export function afterCall(fn, done) {
7
+ let out;
8
+ try {
9
+ out = fn();
10
+ }
11
+ catch (err) {
12
+ done(undefined, err ?? new Error("GraphQL call failed"));
13
+ throw err;
14
+ }
15
+ if (isThenable(out))
16
+ out.then((value) => done(value, undefined), (err) => done(undefined, err ?? new Error("rejected")));
17
+ else
18
+ done(out, undefined);
19
+ return out;
20
+ }
21
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/graphql/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAWtC,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;AAIrF,oHAAoH;AACpH,MAAM,UAAU,SAAS,CAAI,EAAW,EAAE,IAA+C;IACvF,IAAI,GAAM,CAAC;IACX,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;QAC7H,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ClientRequest } from "node:http";
2
+ import { type Tracer } from "@opentelemetry/api";
3
+ import { type OnRemote } from "./client-attributes.js";
4
+ /** The URL a request goes to, without user name or password. A proxied request carries its full URL as the path. */
5
+ export declare function urlOf(req: ClientRequest): URL | undefined;
6
+ /** Trace outgoing node:http and node:https calls made inside a request, as fetch calls are. Returns the stop function. */
7
+ export declare function instrumentHttp(tracer: Tracer, onRemote: OnRemote): () => void;
8
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,WAAW,CAAC;AAChE,OAAO,EAAkG,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjJ,OAAO,EAAkE,KAAK,QAAQ,EAAmC,MAAM,wBAAwB,CAAC;AA4BxJ,oHAAoH;AACpH,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,GAAG,SAAS,CAWzD;AA0DD,0HAA0H;AAC1H,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CA2B7E"}
@@ -0,0 +1,132 @@
1
+ import { subscribe, unsubscribe } from "node:diagnostics_channel";
2
+ import { context, isSpanContextValid, propagation, SpanKind, trace } from "@opentelemetry/api";
3
+ import { isTracingSuppressed } from "@opentelemetry/core";
4
+ import { HEADER_ENDPOINT, HEADER_HOP } from "@wizeworks/lens-core";
5
+ import { clientMethod, clientRequestAttributes, clientSpanName, isAbort, setClientError, setClientStatus } from "./client-attributes.js";
6
+ // Node publishes these for every ClientRequest: http.request, http.get, https.*, and new ClientRequest through any Agent.
7
+ const CREATED = "http.client.request.created";
8
+ const START = "http.client.request.start";
9
+ const RESPONSE = "http.client.response.finish";
10
+ const ERROR = "http.client.request.error";
11
+ const ABSOLUTE = /^https?:\/\//i;
12
+ /** The port in a Host header, when it names the host the request connects to. */
13
+ function portIn(header, host) {
14
+ if (typeof header !== "string")
15
+ return undefined;
16
+ try {
17
+ const url = new URL(`http://${header}`);
18
+ return url.hostname.replace(/^\[|\]$/g, "").toLowerCase() === host.toLowerCase() ? url.port : undefined;
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ /** The URL a request goes to, without user name or password. A proxied request carries its full URL as the path. */
25
+ export function urlOf(req) {
26
+ try {
27
+ const host = req.host.includes(":") && !req.host.startsWith("[") ? `[${req.host}]` : req.host;
28
+ const port = portIn(req.getHeader("host"), req.host);
29
+ const url = ABSOLUTE.test(req.path) ? new URL(req.path) : new URL(req.path, `${req.protocol}//${host}${port ? `:${port}` : ""}`);
30
+ url.username = "";
31
+ url.password = "";
32
+ return url;
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ /** Calls inside a request only, never with tracing off (WizeLens's own calls), never federation hops. */
39
+ function shouldTrace(ctx, req) {
40
+ const parent = trace.getSpanContext(ctx);
41
+ if (isTracingSuppressed(ctx) || !parent || !isSpanContextValid(parent))
42
+ return false;
43
+ return req.method !== "CONNECT" && req.getHeader(HEADER_HOP) === undefined;
44
+ }
45
+ /** Write traceparent while the headers can still change. Array headers are already written, so they go without it. */
46
+ function inject(req, ctx) {
47
+ if (req.headersSent)
48
+ return;
49
+ try {
50
+ propagation.inject(ctx, req, { set: (carrier, key, value) => carrier.setHeader(key, value) });
51
+ }
52
+ catch {
53
+ // The headers were sent in between: trace without propagation.
54
+ }
55
+ }
56
+ function startCall(tracer, req, propagate) {
57
+ const ctx = context.active();
58
+ const url = shouldTrace(ctx, req) ? urlOf(req) : undefined;
59
+ if (!url)
60
+ return null;
61
+ const agent = req.getHeader("user-agent");
62
+ const attributes = clientRequestAttributes(req.method, url, typeof agent === "string" ? agent : undefined);
63
+ const span = tracer.startSpan(clientSpanName(clientMethod(req.method)), { kind: SpanKind.CLIENT, attributes }, ctx);
64
+ if (propagate)
65
+ inject(req, trace.setSpan(ctx, span));
66
+ return { span, failed: false };
67
+ }
68
+ function setPeer(span, req, version) {
69
+ const socket = req.socket;
70
+ if (socket?.remoteAddress)
71
+ span.setAttribute("network.peer.address", socket.remoteAddress);
72
+ if (socket?.remotePort)
73
+ span.setAttribute("network.peer.port", socket.remotePort);
74
+ span.setAttribute("network.protocol.version", version || "1.1");
75
+ }
76
+ function onResponse(call, req, res, onRemote) {
77
+ setPeer(call.span, req, res.httpVersion);
78
+ setClientStatus(call.span, res.statusCode ?? 0);
79
+ const endpoint = res.headers[HEADER_ENDPOINT.toLowerCase()];
80
+ if (typeof endpoint === "string" && endpoint)
81
+ onRemote(call.span.spanContext().traceId, endpoint);
82
+ }
83
+ function onError(call, req, error) {
84
+ if (call.failed || isAbort(error))
85
+ return;
86
+ call.failed = true;
87
+ setPeer(call.span, req);
88
+ setClientError(call.span, error);
89
+ }
90
+ /** The request closed: after the whole body, an error, or an abort. A body cut off by the server is an error. */
91
+ function finish(call, req) {
92
+ const cut = req.res?.errored;
93
+ if (cut && !req.aborted)
94
+ onError(call, req, cut);
95
+ call.span.end();
96
+ }
97
+ /** Trace outgoing node:http and node:https calls made inside a request, as fetch calls are. Returns the stop function. */
98
+ export function instrumentHttp(tracer, onRemote) {
99
+ const calls = new WeakMap();
100
+ const begin = (propagate) => ({ request }) => {
101
+ if (calls.has(request))
102
+ return;
103
+ const call = startCall(tracer, request, propagate);
104
+ calls.set(request, call);
105
+ if (call)
106
+ request.once("close", () => finish(call, request));
107
+ };
108
+ const handlers = {
109
+ [CREATED]: begin(true),
110
+ // Only when Node has no created channel: the headers are written by now, so no traceparent.
111
+ [START]: begin(false),
112
+ [RESPONSE]: (m) => {
113
+ const { request, response } = m;
114
+ const call = calls.get(request);
115
+ if (call && response)
116
+ onResponse(call, request, response, onRemote);
117
+ },
118
+ [ERROR]: (m) => {
119
+ const { request, error } = m;
120
+ const call = calls.get(request);
121
+ if (call)
122
+ onError(call, request, error);
123
+ },
124
+ };
125
+ for (const [name, fn] of Object.entries(handlers))
126
+ subscribe(name, fn);
127
+ return () => {
128
+ for (const [name, fn] of Object.entries(handlers))
129
+ unsubscribe(name, fn);
130
+ };
131
+ }
132
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ import { HubExporter } from "./hub-export.js";
3
3
  import type { MetricStore } from "./metrics/store.js";
4
4
  import type { TraceStore } from "./store.js";
5
5
  import type { WizeLensOptions } from "./types.js";
6
+ /** The app's version: the option, else WIZELENS_RELEASE, else OTEL_SERVICE_VERSION, else npm_package_version (set by npm scripts). */
7
+ export declare const releaseOf: (o: WizeLensOptions) => string | undefined;
6
8
  /** The hub URL from options, or from WIZELENS_HUB. Null when no hub is set. */
7
9
  export declare const hubUrlOf: (o: WizeLensOptions) => string | null;
8
10
  /** Start sending to the hub, when one is set. Null endpoints mean send-only: the hub gets no address to read from. */
@@ -1 +1 @@
1
- {"version":3,"file":"hub-connect.d.ts","sourceRoot":"","sources":["../src/hub-connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2D,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,MAAO,eAAe,KAAG,MAAM,GAAG,IAAsD,CAAC;AAE9G,sHAAsH;AACtH,wBAAgB,UAAU,CACxB,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,WAAW,EACvB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EACzC,OAAO,GAAE,WAAW,GAAG,IAAW,GACjC,WAAW,GAAG,SAAS,CAazB"}
1
+ {"version":3,"file":"hub-connect.d.ts","sourceRoot":"","sources":["../src/hub-connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2D,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,sIAAsI;AACtI,eAAO,MAAM,SAAS,MAAO,eAAe,KAAG,MAAM,GAAG,SAAiK,CAAC;AAE1N,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,MAAO,eAAe,KAAG,MAAM,GAAG,IAAsD,CAAC;AAE9G,sHAAsH;AACtH,wBAAgB,UAAU,CACxB,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,WAAW,EACvB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EACzC,OAAO,GAAE,WAAW,GAAG,IAAW,GACjC,WAAW,GAAG,SAAS,CAazB"}
@@ -1,5 +1,7 @@
1
1
  import { HUB_ENV, HUB_TOKEN_ENV, normalizeHubUrl } from "@wizeworks/lens-core";
2
2
  import { HubExporter } from "./hub-export.js";
3
+ /** The app's version: the option, else WIZELENS_RELEASE, else OTEL_SERVICE_VERSION, else npm_package_version (set by npm scripts). */
4
+ export const releaseOf = (o) => (o.release || process.env.WIZELENS_RELEASE || process.env.OTEL_SERVICE_VERSION || process.env.npm_package_version)?.trim().slice(0, 50) || undefined;
3
5
  /** The hub URL from options, or from WIZELENS_HUB. Null when no hub is set. */
4
6
  export const hubUrlOf = (o) => normalizeHubUrl(o.hub ?? process.env[HUB_ENV]);
5
7
  /** Start sending to the hub, when one is set. Null endpoints mean send-only: the hub gets no address to read from. */
@@ -10,7 +12,7 @@ export function connectHub(o, store, info, selfEndpoints, metrics = null) {
10
12
  const sender = () => {
11
13
  const i = info();
12
14
  const endpoint = selfEndpoints ? (o.publicEndpoint ?? selfEndpoints.values().next().value) : undefined;
13
- return { service: i.service, project: i.project, version: i.version, runtime: i.runtime, environment: i.environment, host: i.host, endpoint, startedMs: i.startedMs };
15
+ return { service: i.service, project: i.project, version: i.version, release: releaseOf(o), runtime: i.runtime, environment: i.environment, host: i.host, endpoint, startedMs: i.startedMs };
14
16
  };
15
17
  const exporter = new HubExporter({ url, token: o.hubToken ?? process.env[HUB_TOKEN_ENV], sender, warn: (m) => console.warn(m) });
16
18
  exporter.attach(store);
@@ -1 +1 @@
1
- {"version":3,"file":"hub-connect.js","sourceRoot":"","sources":["../src/hub-connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAkB,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAkB,EAAiB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9G,sHAAsH;AACtH,MAAM,UAAU,UAAU,CACxB,CAAkB,EAClB,KAAiB,EACjB,IAAuB,EACvB,aAAyC,EACzC,OAAO,GAAuB,IAAI;IAElC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAc,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IACxK,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,OAAO;QAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"hub-connect.js","sourceRoot":"","sources":["../src/hub-connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAkB,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,sIAAsI;AACtI,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAkB,EAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AAE1N,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAkB,EAAiB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9G,sHAAsH;AACtH,MAAM,UAAU,UAAU,CACxB,CAAkB,EAClB,KAAiB,EACjB,IAAuB,EACvB,aAAyC,EACzC,OAAO,GAAuB,IAAI;IAElC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,GAAc,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/L,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,OAAO;QAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { createWizeLens } from "./wizelens.js";
2
2
  export type { DbCallInfo, LogFn, WizeLens, WizeLensLogger, WizeLensOptions } from "./wizelens.js";
3
3
  export type { SamplingOptions } from "./sampling.js";
4
+ export type { SourceMapOptions } from "./sourcemaps.js";
4
5
  export { instrumentPg } from "./adapters/pg.js";
5
6
  export { instrumentMysql2 } from "./adapters/mysql2.js";
6
7
  export { instrumentBetterSqlite3, instrumentNodeSqlite } from "./adapters/sqlite.js";
@@ -8,10 +9,18 @@ export { prismaExtension } from "./adapters/prisma.js";
8
9
  export type { PrismaOptions } from "./adapters/prisma.js";
9
10
  export { instrumentTypeOrm } from "./adapters/typeorm.js";
10
11
  export { instrumentDrizzle } from "./adapters/drizzle.js";
12
+ export { instrumentIoRedis } from "./adapters/ioredis.js";
13
+ export { instrumentRedis } from "./adapters/redis.js";
14
+ export { instrumentMongoDb } from "./adapters/mongodb.js";
15
+ export { instrumentElasticsearch } from "./adapters/elasticsearch.js";
11
16
  export { wizelensFastify } from "./frameworks/fastify.js";
12
17
  export { wizelensKoa } from "./frameworks/koa.js";
13
18
  export { wizelensHono } from "./frameworks/hono.js";
14
19
  export { instrumentGrpc } from "./grpc/index.js";
20
+ export { instrumentNest, WizeLensNestInterceptor } from "./frameworks/nest.js";
21
+ export type { NestOptions } from "./frameworks/nest.js";
22
+ export { instrumentGraphql } from "./graphql/index.js";
23
+ export type { GraphqlOptions } from "./graphql/index.js";
15
24
  export { instrumentPino } from "./logs/pino.js";
16
25
  export { instrumentWinston } from "./logs/winston.js";
17
26
  export { instrumentBunyan } from "./logs/bunyan.js";
@@ -25,6 +34,9 @@ export type { MetricStoreOptions } from "./metrics/store.js";
25
34
  export { instrumentAmqplib } from "./messaging/amqplib.js";
26
35
  export { instrumentKafkaJs } from "./messaging/kafkajs.js";
27
36
  export { instrumentServiceBus } from "./messaging/servicebus.js";
37
+ export { instrumentBullMq } from "./messaging/bullmq.js";
38
+ export { instrumentSqs } from "./messaging/sqs.js";
39
+ export { processSqsMessage } from "./messaging/sqs-message.js";
28
40
  export type { DrizzleDriver } from "./adapters/drizzle.js";
29
41
  export { TraceStore } from "./store.js";
30
42
  export type { StoredTrace, TraceChanges, TraceStoreOptions } from "./store.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClG,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnF,mBAAmB,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}