@wizeworks/lens-node 0.3.0-alpha.2 → 0.3.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) 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 +25 -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 +4 -4
  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/client-spans.d.ts +6 -4
  110. package/dist/client-spans.d.ts.map +1 -1
  111. package/dist/client-spans.js +20 -9
  112. package/dist/client-spans.js.map +1 -1
  113. package/dist/db.js +1 -1
  114. package/dist/db.js.map +1 -1
  115. package/dist/frameworks/fastify.d.ts.map +1 -1
  116. package/dist/frameworks/fastify.js +4 -2
  117. package/dist/frameworks/fastify.js.map +1 -1
  118. package/dist/frameworks/hono.d.ts +16 -0
  119. package/dist/frameworks/hono.d.ts.map +1 -1
  120. package/dist/frameworks/hono.js +4 -4
  121. package/dist/frameworks/hono.js.map +1 -1
  122. package/dist/frameworks/koa.d.ts +2 -0
  123. package/dist/frameworks/koa.d.ts.map +1 -1
  124. package/dist/frameworks/koa.js +4 -4
  125. package/dist/frameworks/koa.js.map +1 -1
  126. package/dist/frameworks/nest-errors.d.ts +10 -0
  127. package/dist/frameworks/nest-errors.d.ts.map +1 -0
  128. package/dist/frameworks/nest-errors.js +75 -0
  129. package/dist/frameworks/nest-errors.js.map +1 -0
  130. package/dist/frameworks/nest-route.d.ts +31 -0
  131. package/dist/frameworks/nest-route.d.ts.map +1 -0
  132. package/dist/frameworks/nest-route.js +58 -0
  133. package/dist/frameworks/nest-route.js.map +1 -0
  134. package/dist/frameworks/nest.d.ts +16 -0
  135. package/dist/frameworks/nest.d.ts.map +1 -0
  136. package/dist/frameworks/nest.js +73 -0
  137. package/dist/frameworks/nest.js.map +1 -0
  138. package/dist/frameworks/node-server.d.ts +3 -0
  139. package/dist/frameworks/node-server.d.ts.map +1 -1
  140. package/dist/frameworks/node-server.js +5 -3
  141. package/dist/frameworks/node-server.js.map +1 -1
  142. package/dist/graphql/document.d.ts +13 -0
  143. package/dist/graphql/document.d.ts.map +1 -0
  144. package/dist/graphql/document.js +62 -0
  145. package/dist/graphql/document.js.map +1 -0
  146. package/dist/graphql/index.d.ts +11 -0
  147. package/dist/graphql/index.d.ts.map +1 -0
  148. package/dist/graphql/index.js +83 -0
  149. package/dist/graphql/index.js.map +1 -0
  150. package/dist/graphql/operation.d.ts +37 -0
  151. package/dist/graphql/operation.d.ts.map +1 -0
  152. package/dist/graphql/operation.js +58 -0
  153. package/dist/graphql/operation.js.map +1 -0
  154. package/dist/graphql/resolvers.d.ts +5 -0
  155. package/dist/graphql/resolvers.d.ts.map +1 -0
  156. package/dist/graphql/resolvers.js +79 -0
  157. package/dist/graphql/resolvers.js.map +1 -0
  158. package/dist/graphql/shared.d.ts +14 -0
  159. package/dist/graphql/shared.d.ts.map +1 -0
  160. package/dist/graphql/shared.js +21 -0
  161. package/dist/graphql/shared.js.map +1 -0
  162. package/dist/http-client.d.ts +8 -0
  163. package/dist/http-client.d.ts.map +1 -0
  164. package/dist/http-client.js +132 -0
  165. package/dist/http-client.js.map +1 -0
  166. package/dist/hub-connect.d.ts +2 -0
  167. package/dist/hub-connect.d.ts.map +1 -1
  168. package/dist/hub-connect.js +3 -1
  169. package/dist/hub-connect.js.map +1 -1
  170. package/dist/index.d.ts +12 -0
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +9 -0
  173. package/dist/index.js.map +1 -1
  174. package/dist/info.d.ts +2 -0
  175. package/dist/info.d.ts.map +1 -1
  176. package/dist/info.js +1 -1
  177. package/dist/info.js.map +1 -1
  178. package/dist/kit.d.ts +3 -1
  179. package/dist/kit.d.ts.map +1 -1
  180. package/dist/kit.js +1 -0
  181. package/dist/kit.js.map +1 -1
  182. package/dist/logger.d.ts +4 -4
  183. package/dist/logger.d.ts.map +1 -1
  184. package/dist/logger.js +11 -7
  185. package/dist/logger.js.map +1 -1
  186. package/dist/logs/bunyan.d.ts +1 -1
  187. package/dist/logs/bunyan.d.ts.map +1 -1
  188. package/dist/logs/bunyan.js +2 -3
  189. package/dist/logs/bunyan.js.map +1 -1
  190. package/dist/logs/consola.d.ts +1 -1
  191. package/dist/logs/consola.d.ts.map +1 -1
  192. package/dist/logs/consola.js +1 -1
  193. package/dist/logs/consola.js.map +1 -1
  194. package/dist/logs/console.d.ts +1 -1
  195. package/dist/logs/console.d.ts.map +1 -1
  196. package/dist/logs/console.js +5 -3
  197. package/dist/logs/console.js.map +1 -1
  198. package/dist/logs/otel.d.ts.map +1 -1
  199. package/dist/logs/otel.js +1 -3
  200. package/dist/logs/otel.js.map +1 -1
  201. package/dist/logs/pino.d.ts +1 -1
  202. package/dist/logs/pino.d.ts.map +1 -1
  203. package/dist/logs/pino.js +2 -3
  204. package/dist/logs/pino.js.map +1 -1
  205. package/dist/logs/winston.d.ts +1 -1
  206. package/dist/logs/winston.d.ts.map +1 -1
  207. package/dist/logs/winston.js +2 -3
  208. package/dist/logs/winston.js.map +1 -1
  209. package/dist/loose-logs.d.ts +13 -0
  210. package/dist/loose-logs.d.ts.map +1 -0
  211. package/dist/loose-logs.js +21 -0
  212. package/dist/loose-logs.js.map +1 -0
  213. package/dist/mcp-find.d.ts +2 -2
  214. package/dist/mcp-find.d.ts.map +1 -1
  215. package/dist/mcp-find.js +68 -26
  216. package/dist/mcp-find.js.map +1 -1
  217. package/dist/mcp-memory.d.ts +7 -0
  218. package/dist/mcp-memory.d.ts.map +1 -0
  219. package/dist/mcp-memory.js +10 -0
  220. package/dist/mcp-memory.js.map +1 -0
  221. package/dist/mcp-metrics.d.ts +2 -2
  222. package/dist/mcp-metrics.d.ts.map +1 -1
  223. package/dist/mcp-metrics.js +11 -9
  224. package/dist/mcp-metrics.js.map +1 -1
  225. package/dist/mcp-overview.d.ts +5 -0
  226. package/dist/mcp-overview.d.ts.map +1 -0
  227. package/dist/mcp-overview.js +71 -0
  228. package/dist/mcp-overview.js.map +1 -0
  229. package/dist/mcp-page.d.ts +28 -0
  230. package/dist/mcp-page.d.ts.map +1 -0
  231. package/dist/mcp-page.js +77 -0
  232. package/dist/mcp-page.js.map +1 -0
  233. package/dist/mcp-problems.d.ts +5 -0
  234. package/dist/mcp-problems.d.ts.map +1 -0
  235. package/dist/mcp-problems.js +56 -0
  236. package/dist/mcp-problems.js.map +1 -0
  237. package/dist/mcp-projects.d.ts +11 -0
  238. package/dist/mcp-projects.d.ts.map +1 -0
  239. package/dist/mcp-projects.js +54 -0
  240. package/dist/mcp-projects.js.map +1 -0
  241. package/dist/mcp-search.d.ts +5 -0
  242. package/dist/mcp-search.d.ts.map +1 -0
  243. package/dist/mcp-search.js +53 -0
  244. package/dist/mcp-search.js.map +1 -0
  245. package/dist/mcp-shared.d.ts +83 -4
  246. package/dist/mcp-shared.d.ts.map +1 -1
  247. package/dist/mcp-shared.js +3 -0
  248. package/dist/mcp-shared.js.map +1 -1
  249. package/dist/mcp-store.d.ts +27 -0
  250. package/dist/mcp-store.d.ts.map +1 -0
  251. package/dist/mcp-store.js +56 -0
  252. package/dist/mcp-store.js.map +1 -0
  253. package/dist/mcp-tags.d.ts +8 -0
  254. package/dist/mcp-tags.d.ts.map +1 -0
  255. package/dist/mcp-tags.js +22 -0
  256. package/dist/mcp-tags.js.map +1 -0
  257. package/dist/mcp-traces.d.ts +2 -2
  258. package/dist/mcp-traces.d.ts.map +1 -1
  259. package/dist/mcp-traces.js +37 -25
  260. package/dist/mcp-traces.js.map +1 -1
  261. package/dist/mcp-traffic.d.ts +5 -0
  262. package/dist/mcp-traffic.d.ts.map +1 -0
  263. package/dist/mcp-traffic.js +87 -0
  264. package/dist/mcp-traffic.js.map +1 -0
  265. package/dist/mcp.d.ts +7 -4
  266. package/dist/mcp.d.ts.map +1 -1
  267. package/dist/mcp.js +27 -8
  268. package/dist/mcp.js.map +1 -1
  269. package/dist/messaging/bullmq.d.ts +4 -0
  270. package/dist/messaging/bullmq.d.ts.map +1 -0
  271. package/dist/messaging/bullmq.js +137 -0
  272. package/dist/messaging/bullmq.js.map +1 -0
  273. package/dist/messaging/shared.d.ts +10 -4
  274. package/dist/messaging/shared.d.ts.map +1 -1
  275. package/dist/messaging/shared.js +13 -4
  276. package/dist/messaging/shared.js.map +1 -1
  277. package/dist/messaging/sqs-message.d.ts +35 -0
  278. package/dist/messaging/sqs-message.d.ts.map +1 -0
  279. package/dist/messaging/sqs-message.js +66 -0
  280. package/dist/messaging/sqs-message.js.map +1 -0
  281. package/dist/messaging/sqs.d.ts +4 -0
  282. package/dist/messaging/sqs.d.ts.map +1 -0
  283. package/dist/messaging/sqs.js +104 -0
  284. package/dist/messaging/sqs.js.map +1 -0
  285. package/dist/processor.d.ts +2 -1
  286. package/dist/processor.d.ts.map +1 -1
  287. package/dist/processor.js +8 -3
  288. package/dist/processor.js.map +1 -1
  289. package/dist/request-capture.d.ts +7 -1
  290. package/dist/request-capture.d.ts.map +1 -1
  291. package/dist/request-capture.js +14 -1
  292. package/dist/request-capture.js.map +1 -1
  293. package/dist/request-naming.d.ts +8 -0
  294. package/dist/request-naming.d.ts.map +1 -0
  295. package/dist/request-naming.js +29 -0
  296. package/dist/request-naming.js.map +1 -0
  297. package/dist/sampling.d.ts.map +1 -1
  298. package/dist/sampling.js +2 -2
  299. package/dist/sampling.js.map +1 -1
  300. package/dist/search-api.d.ts +8 -0
  301. package/dist/search-api.d.ts.map +1 -0
  302. package/dist/search-api.js +21 -0
  303. package/dist/search-api.js.map +1 -0
  304. package/dist/sourcemaps.d.ts +15 -0
  305. package/dist/sourcemaps.d.ts.map +1 -0
  306. package/dist/sourcemaps.js +68 -0
  307. package/dist/sourcemaps.js.map +1 -0
  308. package/dist/spans.d.ts +3 -0
  309. package/dist/spans.d.ts.map +1 -1
  310. package/dist/spans.js +9 -1
  311. package/dist/spans.js.map +1 -1
  312. package/dist/store-entries.d.ts +34 -0
  313. package/dist/store-entries.d.ts.map +1 -0
  314. package/dist/store-entries.js +70 -0
  315. package/dist/store-entries.js.map +1 -0
  316. package/dist/store.d.ts +4 -1
  317. package/dist/store.d.ts.map +1 -1
  318. package/dist/store.js +19 -22
  319. package/dist/store.js.map +1 -1
  320. package/dist/tags-api.d.ts +9 -0
  321. package/dist/tags-api.d.ts.map +1 -0
  322. package/dist/tags-api.js +16 -0
  323. package/dist/tags-api.js.map +1 -0
  324. package/dist/tracing.d.ts +6 -0
  325. package/dist/tracing.d.ts.map +1 -1
  326. package/dist/tracing.js +11 -7
  327. package/dist/tracing.js.map +1 -1
  328. package/dist/types.d.ts +16 -2
  329. package/dist/types.d.ts.map +1 -1
  330. package/dist/ui.d.ts.map +1 -1
  331. package/dist/ui.js +3 -2
  332. package/dist/ui.js.map +1 -1
  333. package/dist/wizelens.d.ts +3 -1
  334. package/dist/wizelens.d.ts.map +1 -1
  335. package/dist/wizelens.js +29 -13
  336. package/dist/wizelens.js.map +1 -1
  337. package/package.json +14 -4
@@ -1 +1 @@
1
- {"version":3,"file":"node-server.d.ts","sourceRoot":"","sources":["../../src/frameworks/node-server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAA6E,MAAM,uBAAuB,CAAC;AAEpI,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAqBnD,4IAA4I;AAC5I,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAcrE"}
1
+ {"version":3,"file":"node-server.d.ts","sourceRoot":"","sources":["../../src/frameworks/node-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,KAAK,WAAW,EAA4F,MAAM,uBAAuB,CAAC;AAEnJ,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAEnD,sGAAsG;AACtG,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG3E;AAgBD,4IAA4I;AAC5I,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAcrE"}
@@ -2,9 +2,9 @@ import { Server as HttpServer } from "node:http";
2
2
  import { Server as HttpsServer } from "node:https";
3
3
  import { context } from "@opentelemetry/api";
4
4
  import { patchMethod } from "../adapters/registry.js";
5
- import { captureRequest, isOwnPath, isPreflight, pathOf, requestSpan, serveOwnPath } from "../request-capture.js";
5
+ import { captureRequest, isOwnPath, isUntraced, pathOf, requestSpan, serveOwnPath, withoutTracing } from "../request-capture.js";
6
6
  /** A string attribute of a live SDK span. The OTel API has no getter, so this reads the SDK field. */
7
- function attributeOf(span, key) {
7
+ export function attributeOf(span, key) {
8
8
  const value = span.attributes?.[key];
9
9
  return typeof value === "string" ? value : undefined;
10
10
  }
@@ -15,8 +15,10 @@ function onRequest(d, ignore, req, res, emit) {
15
15
  void serveOwnPath(d, req, res);
16
16
  return true;
17
17
  }
18
- if (isPreflight(req) || ignore(path) || requestSpan(req))
18
+ if (requestSpan(req))
19
19
  return emit();
20
+ if (isUntraced(req) || ignore(path))
21
+ return withoutTracing(emit);
20
22
  // The framework names the route on this span: Next.js sets http.route on the span around its own.
21
23
  const captured = captureRequest(d, req, res, rawUrl, () => attributeOf(captured.span, "http.route"));
22
24
  return context.with(captured.ctx, emit);
@@ -1 +1 @@
1
- {"version":3,"file":"node-server.js","sourceRoot":"","sources":["../../src/frameworks/node-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,IAAI,UAAU,EAAuB,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAoB,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKpI,sGAAsG;AACtG,SAAS,WAAW,CAAC,IAAc,EAAE,GAAW;IAC9C,MAAM,KAAK,GAAI,IAA4D,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9F,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,CAAc,EAAE,MAAkB,EAAE,GAAoB,EAAE,GAAmB,EAAE,IAAmB;IACnH,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,EAAE,CAAC;IACxE,kGAAkG;IAClG,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACrG,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,4IAA4I;AAC5I,MAAM,UAAU,YAAY,CAAC,CAAc,EAAE,MAAkB;IAC7D,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,WAAW,CACT,KAAK,EACL,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CACP,SAAS,YAAY,CAAgB,GAAG,IAAe;YACrD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAsB,EAAE,GAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAY,CAAC,CAAC;QACtH,CAAC,EACH,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"node-server.js","sourceRoot":"","sources":["../../src/frameworks/node-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,IAAI,UAAU,EAAuB,MAAM,WAAW,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAoB,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKnJ,sGAAsG;AACtG,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,GAAW;IACrD,MAAM,KAAK,GAAI,IAA4D,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9F,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,CAAc,EAAE,MAAkB,EAAE,GAAoB,EAAE,GAAmB,EAAE,IAAmB;IACnH,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACvB,KAAK,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,EAAE,CAAC;IACpC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IACjE,kGAAkG;IAClG,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACrG,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,4IAA4I;AAC5I,MAAM,UAAU,YAAY,CAAC,CAAc,EAAE,MAAkB;IAC7D,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,WAAW,CACT,KAAK,EACL,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CACP,SAAS,YAAY,CAAgB,GAAG,IAAe;YACrD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvD,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAsB,EAAE,GAAqB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAY,CAAC,CAAC;QACtH,CAAC,EACH,aAAa,CACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** The source location graphql-js keeps on a parsed document. */
2
+ export interface LocationLike {
3
+ start: number;
4
+ end: number;
5
+ source?: {
6
+ body?: unknown;
7
+ };
8
+ }
9
+ /** A GraphQL document with every literal value (string, number) replaced by `*` and comments removed. Variables stay as `$name`. */
10
+ export declare function scrubDocument(text: string): string;
11
+ /** The scrubbed source of a parsed document, or undefined when it was parsed without locations. */
12
+ export declare function documentText(loc: LocationLike | undefined): string | undefined;
13
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/graphql/document.ts"],"names":[],"mappings":"AAMA,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC7B;AAsCD,oIAAoI;AACpI,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAI9E"}
@@ -0,0 +1,62 @@
1
+ /** Longest document kept on a span, in characters. */
2
+ const MAX_DOCUMENT = 8192;
3
+ const NAME_START = /[_A-Za-z]/;
4
+ const NAME_PART = /[_0-9A-Za-z]/;
5
+ const NUMBER = /^-?\d+(\.\d+)?([eE][+-]?\d+)?/;
6
+ /** End of the string literal that starts at `i`: a block string ("""), or a quoted string with escapes. */
7
+ function stringEnd(text, i) {
8
+ if (text.startsWith('"""', i)) {
9
+ let j = i + 3;
10
+ while (j < text.length && !text.startsWith('"""', j))
11
+ j += text.startsWith('\\"""', j) ? 4 : 1;
12
+ return Math.min(j + 3, text.length);
13
+ }
14
+ let j = i + 1;
15
+ while (j < text.length && text[j] !== '"' && text[j] !== "\n")
16
+ j += text[j] === "\\" ? 2 : 1;
17
+ return Math.min(j + 1, text.length);
18
+ }
19
+ /** End of the name that starts at `i`. */
20
+ function nameEnd(text, i) {
21
+ let j = i + 1;
22
+ while (j < text.length && NAME_PART.test(text[j]))
23
+ j++;
24
+ return j;
25
+ }
26
+ /** One step of the scrubber: what to write for the token at `i`, and where the next token starts. */
27
+ function step(text, i) {
28
+ const c = text[i];
29
+ if (c === "#") {
30
+ const eol = text.indexOf("\n", i);
31
+ return [" ", eol < 0 ? text.length : eol];
32
+ }
33
+ if (c === '"')
34
+ return ['"*"', stringEnd(text, i)];
35
+ if (NAME_START.test(c)) {
36
+ const end = nameEnd(text, i);
37
+ return [text.slice(i, end), end];
38
+ }
39
+ const number = c === "-" || (c >= "0" && c <= "9") ? NUMBER.exec(text.slice(i, i + 64)) : null;
40
+ if (number)
41
+ return ["*", i + number[0].length];
42
+ return [c, i + 1];
43
+ }
44
+ /** A GraphQL document with every literal value (string, number) replaced by `*` and comments removed. Variables stay as `$name`. */
45
+ export function scrubDocument(text) {
46
+ let out = "";
47
+ for (let i = 0; i < text.length;) {
48
+ const [piece, next] = step(text, i);
49
+ out += piece;
50
+ i = next;
51
+ }
52
+ const flat = out.replace(/\s+/g, " ").trim();
53
+ return flat.length > MAX_DOCUMENT ? `${flat.slice(0, MAX_DOCUMENT)}…` : flat;
54
+ }
55
+ /** The scrubbed source of a parsed document, or undefined when it was parsed without locations. */
56
+ export function documentText(loc) {
57
+ const body = loc?.source?.body;
58
+ if (typeof body !== "string")
59
+ return undefined;
60
+ return scrubDocument(body.slice(loc.start, loc.end));
61
+ }
62
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/graphql/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CaptureDeps } from "../request-capture.js";
2
+ import type { WizeLens } from "../types.js";
3
+ import { type GraphqlOptions, type Method } from "./shared.js";
4
+ export type { GraphqlOptions } from "./shared.js";
5
+ /** Wrap one graphql-js entry point: a span per operation inside a request, named like "query GetOrders". */
6
+ export declare function traceOperation(d: CaptureDeps, options: GraphqlOptions, original: Method): Method;
7
+ /** Trace graphql-js 16+ operations (Apollo, Yoga, Mercurius, Nest): `instrumentGraphql(wizelens, graphql)` before the server is made. False when nothing was patched. */
8
+ export declare function instrumentGraphql(wizelens: WizeLens, graphql: unknown, options?: GraphqlOptions): boolean;
9
+ /** One graphql-js function, traced. For an ES module build, whose bindings cannot be patched from outside. */
10
+ export declare function traceGraphqlFunction(wizelens: WizeLens, fn: unknown, options?: GraphqlOptions): Method | undefined;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAa,KAAK,cAAc,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAExF,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,4GAA4G;AAC5G,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoBhG;AAuBD,yKAAyK;AACzK,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAW7G;AAED,8GAA8G;AAC9G,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,GAAG,SAAS,CAMtH"}
@@ -0,0 +1,83 @@
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 { hookResolvers } from "./resolvers.js";
8
+ import { afterCall, IN_OPERATION } from "./shared.js";
9
+ const require = createRequire(import.meta.url);
10
+ // graphql-js entry points, and the executor GraphQL Yoga uses (@graphql-tools/executor).
11
+ const ENTRY_POINTS = ["execute", "executeSync", "subscribe", "normalizedExecutor"];
12
+ const KIND = "graphql";
13
+ /** Wrap one graphql-js entry point: a span per operation inside a request, named like "query GetOrders". */
14
+ export function traceOperation(d, options, original) {
15
+ return function wizelensGraphql(...args) {
16
+ const call = callOf(args);
17
+ const parent = context.active();
18
+ if (!call || !trace.getSpan(parent) || parent.getValue(IN_OPERATION))
19
+ return original.apply(this, args);
20
+ const op = operationOf(call);
21
+ const attributes = operationAttributes(op, call, options.document !== false);
22
+ const span = d.tracer.startSpan(spanNameOf(op), { kind: SpanKind.INTERNAL, attributes }, parent);
23
+ const server = currentServerSpan();
24
+ if (server)
25
+ addOperation(server, endpointPartOf(op));
26
+ hookResolvers(d.tracer, call.schema, options);
27
+ const ctx = trace.setSpan(parent, span).setValue(IN_OPERATION, true);
28
+ return context.with(ctx, () => afterCall(() => original.apply(this, args), (result, error) => {
29
+ if (error)
30
+ recordOn(span, error);
31
+ else
32
+ recordResultErrors(span, result);
33
+ span.end();
34
+ }));
35
+ };
36
+ }
37
+ const isNamespace = (o) => Object.prototype.toString.call(o) === "[object Module]";
38
+ function writable(o, name) {
39
+ const d = Object.getOwnPropertyDescriptor(o, name);
40
+ return !!d && (d.writable === true || typeof d.set === "function") && !isNamespace(o);
41
+ }
42
+ /** Where `name` can be replaced: the object itself, else the CommonJS file that defines the same function (graphql's index has getters only). */
43
+ function holderOf(target, name) {
44
+ const fn = target[name];
45
+ if (typeof fn !== "function")
46
+ return null;
47
+ if (writable(target, name))
48
+ return target;
49
+ for (const mod of Object.values(require.cache)) {
50
+ const exports = mod?.exports;
51
+ if (exports && typeof exports === "object" && exports !== target && exports[name] === fn && writable(exports, name))
52
+ return exports;
53
+ }
54
+ return null;
55
+ }
56
+ const isWrapped = (fn) => typeof fn === "function" && fn[Symbol.for(`wizeworks.wizelens.${KIND}`)] === true;
57
+ /** Trace graphql-js 16+ operations (Apollo, Yoga, Mercurius, Nest): `instrumentGraphql(wizelens, graphql)` before the server is made. False when nothing was patched. */
58
+ export function instrumentGraphql(wizelens, graphql, options = {}) {
59
+ const d = captureOf(wizelens);
60
+ if (!d || !graphql || typeof graphql !== "object")
61
+ return false;
62
+ let done = false;
63
+ for (const name of ENTRY_POINTS) {
64
+ const holder = holderOf(graphql, name);
65
+ if (!holder)
66
+ continue;
67
+ if (isWrapped(holder[name]))
68
+ done = true;
69
+ else
70
+ done = patchMethod(holder, name, (original) => traceOperation(d, options, original), KIND) || done;
71
+ }
72
+ return done;
73
+ }
74
+ /** One graphql-js function, traced. For an ES module build, whose bindings cannot be patched from outside. */
75
+ export function traceGraphqlFunction(wizelens, fn, options = {}) {
76
+ const d = captureOf(wizelens);
77
+ if (!d || typeof fn !== "function" || isWrapped(fn))
78
+ return undefined;
79
+ const wrapped = traceOperation(d, options, fn);
80
+ Object.defineProperty(wrapped, Symbol.for(`wizeworks.wizelens.${KIND}`), { value: true });
81
+ return wrapped;
82
+ }
83
+ //# 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"}