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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/dist/adapters/elasticsearch.d.ts +21 -0
  2. package/dist/adapters/elasticsearch.d.ts.map +1 -0
  3. package/dist/adapters/elasticsearch.js +93 -0
  4. package/dist/adapters/elasticsearch.js.map +1 -0
  5. package/dist/adapters/ioredis.d.ts +4 -0
  6. package/dist/adapters/ioredis.d.ts.map +1 -0
  7. package/dist/adapters/ioredis.js +60 -0
  8. package/dist/adapters/ioredis.js.map +1 -0
  9. package/dist/adapters/mongodb-shape.d.ts +16 -0
  10. package/dist/adapters/mongodb-shape.d.ts.map +1 -0
  11. package/dist/adapters/mongodb-shape.js +81 -0
  12. package/dist/adapters/mongodb-shape.js.map +1 -0
  13. package/dist/adapters/mongodb.d.ts +4 -0
  14. package/dist/adapters/mongodb.d.ts.map +1 -0
  15. package/dist/adapters/mongodb.js +95 -0
  16. package/dist/adapters/mongodb.js.map +1 -0
  17. package/dist/adapters/nosql.d.ts +14 -0
  18. package/dist/adapters/nosql.d.ts.map +1 -0
  19. package/dist/adapters/nosql.js +61 -0
  20. package/dist/adapters/nosql.js.map +1 -0
  21. package/dist/adapters/redis-shape.d.ts +31 -0
  22. package/dist/adapters/redis-shape.d.ts.map +1 -0
  23. package/dist/adapters/redis-shape.js +80 -0
  24. package/dist/adapters/redis-shape.js.map +1 -0
  25. package/dist/adapters/redis.d.ts +4 -0
  26. package/dist/adapters/redis.d.ts.map +1 -0
  27. package/dist/adapters/redis.js +93 -0
  28. package/dist/adapters/redis.js.map +1 -0
  29. package/dist/adapters/registry.d.ts +2 -0
  30. package/dist/adapters/registry.d.ts.map +1 -1
  31. package/dist/adapters/registry.js +2 -0
  32. package/dist/adapters/registry.js.map +1 -1
  33. package/dist/api.d.ts +5 -1
  34. package/dist/api.d.ts.map +1 -1
  35. package/dist/api.js +19 -7
  36. package/dist/api.js.map +1 -1
  37. package/dist/auto/config.d.ts +14 -0
  38. package/dist/auto/config.d.ts.map +1 -0
  39. package/dist/auto/config.js +51 -0
  40. package/dist/auto/config.js.map +1 -0
  41. package/dist/auto/esm-loader.d.ts +10 -0
  42. package/dist/auto/esm-loader.d.ts.map +1 -0
  43. package/dist/auto/esm-loader.js +10 -0
  44. package/dist/auto/esm-loader.js.map +1 -0
  45. package/dist/auto/esm-source.d.ts +15 -0
  46. package/dist/auto/esm-source.d.ts.map +1 -0
  47. package/dist/auto/esm-source.js +23 -0
  48. package/dist/auto/esm-source.js.map +1 -0
  49. package/dist/auto/frameworks.d.ts +3 -0
  50. package/dist/auto/frameworks.d.ts.map +1 -0
  51. package/dist/auto/frameworks.js +112 -0
  52. package/dist/auto/frameworks.js.map +1 -0
  53. package/dist/auto/handle.d.ts +7 -0
  54. package/dist/auto/handle.d.ts.map +1 -0
  55. package/dist/auto/handle.js +47 -0
  56. package/dist/auto/handle.js.map +1 -0
  57. package/dist/auto/hono.d.ts +3 -0
  58. package/dist/auto/hono.d.ts.map +1 -0
  59. package/dist/auto/hono.js +43 -0
  60. package/dist/auto/hono.js.map +1 -0
  61. package/dist/auto/http.d.ts +18 -0
  62. package/dist/auto/http.d.ts.map +1 -0
  63. package/dist/auto/http.js +77 -0
  64. package/dist/auto/http.js.map +1 -0
  65. package/dist/auto/install.d.ts +5 -0
  66. package/dist/auto/install.d.ts.map +1 -0
  67. package/dist/auto/install.js +26 -0
  68. package/dist/auto/install.js.map +1 -0
  69. package/dist/auto/libraries.d.ts +3 -0
  70. package/dist/auto/libraries.d.ts.map +1 -0
  71. package/dist/auto/libraries.js +108 -0
  72. package/dist/auto/libraries.js.map +1 -0
  73. package/dist/auto/module-hooks.d.ts +14 -0
  74. package/dist/auto/module-hooks.d.ts.map +1 -0
  75. package/dist/auto/module-hooks.js +90 -0
  76. package/dist/auto/module-hooks.js.map +1 -0
  77. package/dist/auto/nest.d.ts +7 -0
  78. package/dist/auto/nest.d.ts.map +1 -0
  79. package/dist/auto/nest.js +26 -0
  80. package/dist/auto/nest.js.map +1 -0
  81. package/dist/auto/owner.d.ts +19 -0
  82. package/dist/auto/owner.d.ts.map +1 -0
  83. package/dist/auto/owner.js +52 -0
  84. package/dist/auto/owner.js.map +1 -0
  85. package/dist/auto/prisma.d.ts +3 -0
  86. package/dist/auto/prisma.d.ts.map +1 -0
  87. package/dist/auto/prisma.js +55 -0
  88. package/dist/auto/prisma.js.map +1 -0
  89. package/dist/auto/sqlite.d.ts +3 -0
  90. package/dist/auto/sqlite.d.ts.map +1 -0
  91. package/dist/auto/sqlite.js +31 -0
  92. package/dist/auto/sqlite.js.map +1 -0
  93. package/dist/auto/state.d.ts +14 -0
  94. package/dist/auto/state.d.ts.map +1 -0
  95. package/dist/auto/state.js +16 -0
  96. package/dist/auto/state.js.map +1 -0
  97. package/dist/auto.d.ts +2 -0
  98. package/dist/auto.d.ts.map +1 -0
  99. package/dist/auto.js +4 -0
  100. package/dist/auto.js.map +1 -0
  101. package/dist/capture.d.ts +3 -1
  102. package/dist/capture.d.ts.map +1 -1
  103. package/dist/capture.js +1 -1
  104. package/dist/capture.js.map +1 -1
  105. package/dist/client-attributes.d.ts +19 -0
  106. package/dist/client-attributes.d.ts.map +1 -0
  107. package/dist/client-attributes.js +56 -0
  108. package/dist/client-attributes.js.map +1 -0
  109. package/dist/db.js +1 -1
  110. package/dist/db.js.map +1 -1
  111. package/dist/frameworks/hono.d.ts +16 -0
  112. package/dist/frameworks/hono.d.ts.map +1 -1
  113. package/dist/frameworks/hono.js +1 -1
  114. package/dist/frameworks/hono.js.map +1 -1
  115. package/dist/frameworks/koa.d.ts +2 -0
  116. package/dist/frameworks/koa.d.ts.map +1 -1
  117. package/dist/frameworks/koa.js +1 -1
  118. package/dist/frameworks/koa.js.map +1 -1
  119. package/dist/frameworks/nest-errors.d.ts +10 -0
  120. package/dist/frameworks/nest-errors.d.ts.map +1 -0
  121. package/dist/frameworks/nest-errors.js +75 -0
  122. package/dist/frameworks/nest-errors.js.map +1 -0
  123. package/dist/frameworks/nest-route.d.ts +31 -0
  124. package/dist/frameworks/nest-route.d.ts.map +1 -0
  125. package/dist/frameworks/nest-route.js +58 -0
  126. package/dist/frameworks/nest-route.js.map +1 -0
  127. package/dist/frameworks/nest.d.ts +16 -0
  128. package/dist/frameworks/nest.d.ts.map +1 -0
  129. package/dist/frameworks/nest.js +73 -0
  130. package/dist/frameworks/nest.js.map +1 -0
  131. package/dist/frameworks/node-server.d.ts +3 -0
  132. package/dist/frameworks/node-server.d.ts.map +1 -1
  133. package/dist/frameworks/node-server.js +1 -1
  134. package/dist/frameworks/node-server.js.map +1 -1
  135. package/dist/graphql/document.d.ts +13 -0
  136. package/dist/graphql/document.d.ts.map +1 -0
  137. package/dist/graphql/document.js +62 -0
  138. package/dist/graphql/document.js.map +1 -0
  139. package/dist/graphql/index.d.ts +11 -0
  140. package/dist/graphql/index.d.ts.map +1 -0
  141. package/dist/graphql/index.js +83 -0
  142. package/dist/graphql/index.js.map +1 -0
  143. package/dist/graphql/operation.d.ts +37 -0
  144. package/dist/graphql/operation.d.ts.map +1 -0
  145. package/dist/graphql/operation.js +58 -0
  146. package/dist/graphql/operation.js.map +1 -0
  147. package/dist/graphql/resolvers.d.ts +5 -0
  148. package/dist/graphql/resolvers.d.ts.map +1 -0
  149. package/dist/graphql/resolvers.js +79 -0
  150. package/dist/graphql/resolvers.js.map +1 -0
  151. package/dist/graphql/shared.d.ts +14 -0
  152. package/dist/graphql/shared.d.ts.map +1 -0
  153. package/dist/graphql/shared.js +21 -0
  154. package/dist/graphql/shared.js.map +1 -0
  155. package/dist/http-client.d.ts +8 -0
  156. package/dist/http-client.d.ts.map +1 -0
  157. package/dist/http-client.js +132 -0
  158. package/dist/http-client.js.map +1 -0
  159. package/dist/hub-connect.d.ts +2 -0
  160. package/dist/hub-connect.d.ts.map +1 -1
  161. package/dist/hub-connect.js +3 -1
  162. package/dist/hub-connect.js.map +1 -1
  163. package/dist/index.d.ts +12 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +9 -0
  166. package/dist/index.js.map +1 -1
  167. package/dist/info.d.ts +2 -0
  168. package/dist/info.d.ts.map +1 -1
  169. package/dist/info.js +1 -1
  170. package/dist/info.js.map +1 -1
  171. package/dist/kit.d.ts +3 -1
  172. package/dist/kit.d.ts.map +1 -1
  173. package/dist/kit.js +1 -0
  174. package/dist/kit.js.map +1 -1
  175. package/dist/logger.d.ts +4 -4
  176. package/dist/logger.d.ts.map +1 -1
  177. package/dist/logger.js +11 -7
  178. package/dist/logger.js.map +1 -1
  179. package/dist/logs/bunyan.d.ts +1 -1
  180. package/dist/logs/bunyan.d.ts.map +1 -1
  181. package/dist/logs/bunyan.js +2 -3
  182. package/dist/logs/bunyan.js.map +1 -1
  183. package/dist/logs/consola.d.ts +1 -1
  184. package/dist/logs/consola.d.ts.map +1 -1
  185. package/dist/logs/consola.js +1 -1
  186. package/dist/logs/consola.js.map +1 -1
  187. package/dist/logs/console.d.ts +1 -1
  188. package/dist/logs/console.d.ts.map +1 -1
  189. package/dist/logs/console.js +5 -3
  190. package/dist/logs/console.js.map +1 -1
  191. package/dist/logs/otel.d.ts.map +1 -1
  192. package/dist/logs/otel.js +1 -3
  193. package/dist/logs/otel.js.map +1 -1
  194. package/dist/logs/pino.d.ts +1 -1
  195. package/dist/logs/pino.d.ts.map +1 -1
  196. package/dist/logs/pino.js +2 -3
  197. package/dist/logs/pino.js.map +1 -1
  198. package/dist/logs/winston.d.ts +1 -1
  199. package/dist/logs/winston.d.ts.map +1 -1
  200. package/dist/logs/winston.js +2 -3
  201. package/dist/logs/winston.js.map +1 -1
  202. package/dist/loose-logs.d.ts +13 -0
  203. package/dist/loose-logs.d.ts.map +1 -0
  204. package/dist/loose-logs.js +21 -0
  205. package/dist/loose-logs.js.map +1 -0
  206. package/dist/mcp-find.d.ts.map +1 -1
  207. package/dist/mcp-find.js +40 -8
  208. package/dist/mcp-find.js.map +1 -1
  209. package/dist/mcp-memory.d.ts +7 -0
  210. package/dist/mcp-memory.d.ts.map +1 -0
  211. package/dist/mcp-memory.js +10 -0
  212. package/dist/mcp-memory.js.map +1 -0
  213. package/dist/mcp-overview.d.ts +5 -0
  214. package/dist/mcp-overview.d.ts.map +1 -0
  215. package/dist/mcp-overview.js +71 -0
  216. package/dist/mcp-overview.js.map +1 -0
  217. package/dist/mcp-page.d.ts +28 -0
  218. package/dist/mcp-page.d.ts.map +1 -0
  219. package/dist/mcp-page.js +77 -0
  220. package/dist/mcp-page.js.map +1 -0
  221. package/dist/mcp-problems.d.ts +5 -0
  222. package/dist/mcp-problems.d.ts.map +1 -0
  223. package/dist/mcp-problems.js +56 -0
  224. package/dist/mcp-problems.js.map +1 -0
  225. package/dist/mcp-projects.d.ts.map +1 -1
  226. package/dist/mcp-projects.js +7 -2
  227. package/dist/mcp-projects.js.map +1 -1
  228. package/dist/mcp-search.d.ts.map +1 -1
  229. package/dist/mcp-search.js +9 -5
  230. package/dist/mcp-search.js.map +1 -1
  231. package/dist/mcp-shared.d.ts +37 -1
  232. package/dist/mcp-shared.d.ts.map +1 -1
  233. package/dist/mcp-shared.js +3 -0
  234. package/dist/mcp-shared.js.map +1 -1
  235. package/dist/mcp-store.d.ts +2 -2
  236. package/dist/mcp-store.d.ts.map +1 -1
  237. package/dist/mcp-store.js +6 -5
  238. package/dist/mcp-store.js.map +1 -1
  239. package/dist/mcp-tags.d.ts +8 -0
  240. package/dist/mcp-tags.d.ts.map +1 -0
  241. package/dist/mcp-tags.js +22 -0
  242. package/dist/mcp-tags.js.map +1 -0
  243. package/dist/mcp-traffic.d.ts +5 -0
  244. package/dist/mcp-traffic.d.ts.map +1 -0
  245. package/dist/mcp-traffic.js +87 -0
  246. package/dist/mcp-traffic.js.map +1 -0
  247. package/dist/mcp.d.ts +4 -1
  248. package/dist/mcp.d.ts.map +1 -1
  249. package/dist/mcp.js +14 -3
  250. package/dist/mcp.js.map +1 -1
  251. package/dist/messaging/bullmq.d.ts +4 -0
  252. package/dist/messaging/bullmq.d.ts.map +1 -0
  253. package/dist/messaging/bullmq.js +137 -0
  254. package/dist/messaging/bullmq.js.map +1 -0
  255. package/dist/messaging/shared.d.ts +10 -4
  256. package/dist/messaging/shared.d.ts.map +1 -1
  257. package/dist/messaging/shared.js +13 -4
  258. package/dist/messaging/shared.js.map +1 -1
  259. package/dist/messaging/sqs-message.d.ts +35 -0
  260. package/dist/messaging/sqs-message.d.ts.map +1 -0
  261. package/dist/messaging/sqs-message.js +66 -0
  262. package/dist/messaging/sqs-message.js.map +1 -0
  263. package/dist/messaging/sqs.d.ts +4 -0
  264. package/dist/messaging/sqs.d.ts.map +1 -0
  265. package/dist/messaging/sqs.js +104 -0
  266. package/dist/messaging/sqs.js.map +1 -0
  267. package/dist/processor.d.ts +2 -1
  268. package/dist/processor.d.ts.map +1 -1
  269. package/dist/processor.js +8 -3
  270. package/dist/processor.js.map +1 -1
  271. package/dist/request-capture.d.ts.map +1 -1
  272. package/dist/request-capture.js +2 -1
  273. package/dist/request-capture.js.map +1 -1
  274. package/dist/request-naming.d.ts +8 -0
  275. package/dist/request-naming.d.ts.map +1 -0
  276. package/dist/request-naming.js +29 -0
  277. package/dist/request-naming.js.map +1 -0
  278. package/dist/sampling.d.ts.map +1 -1
  279. package/dist/sampling.js +2 -2
  280. package/dist/sampling.js.map +1 -1
  281. package/dist/search-api.d.ts +4 -3
  282. package/dist/search-api.d.ts.map +1 -1
  283. package/dist/search-api.js +8 -7
  284. package/dist/search-api.js.map +1 -1
  285. package/dist/sourcemaps.d.ts +15 -0
  286. package/dist/sourcemaps.d.ts.map +1 -0
  287. package/dist/sourcemaps.js +68 -0
  288. package/dist/sourcemaps.js.map +1 -0
  289. package/dist/spans.d.ts +3 -0
  290. package/dist/spans.d.ts.map +1 -1
  291. package/dist/spans.js +9 -1
  292. package/dist/spans.js.map +1 -1
  293. package/dist/store-entries.d.ts +34 -0
  294. package/dist/store-entries.d.ts.map +1 -0
  295. package/dist/store-entries.js +70 -0
  296. package/dist/store-entries.js.map +1 -0
  297. package/dist/store.d.ts +4 -1
  298. package/dist/store.d.ts.map +1 -1
  299. package/dist/store.js +19 -22
  300. package/dist/store.js.map +1 -1
  301. package/dist/tags-api.d.ts +9 -0
  302. package/dist/tags-api.d.ts.map +1 -0
  303. package/dist/tags-api.js +16 -0
  304. package/dist/tags-api.js.map +1 -0
  305. package/dist/tracing.d.ts +6 -0
  306. package/dist/tracing.d.ts.map +1 -1
  307. package/dist/tracing.js +11 -7
  308. package/dist/tracing.js.map +1 -1
  309. package/dist/types.d.ts +16 -2
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/ui.d.ts.map +1 -1
  312. package/dist/ui.js +3 -2
  313. package/dist/ui.js.map +1 -1
  314. package/dist/wizelens.d.ts +3 -1
  315. package/dist/wizelens.d.ts.map +1 -1
  316. package/dist/wizelens.js +28 -12
  317. package/dist/wizelens.js.map +1 -1
  318. package/package.json +14 -4
@@ -1 +1 @@
1
- {"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYvC,0FAA0F;AAC1F,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAE7F,6FAA6F;AAC7F,SAAS,SAAS,CAAC,CAAkB;IACnC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;AAC9D,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,KAAK,UAAU,sBAAsB,CAAC,QAAiB,EAAE,IAAc;QAC5E,MAAM,CAAC,GAAG,QAA2B,CAAC;QACtC,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/frameworks/hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAYvC,0FAA0F;AAC1F,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AAE7F,6FAA6F;AAC7F,MAAM,UAAU,SAAS,CAAC,CAAkB;IAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC;AAC9D,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,OAAO,KAAK,UAAU,sBAAsB,CAAC,QAAiB,EAAE,IAAc;QAC5E,MAAM,CAAC,GAAG,QAA2B,CAAC;QACtC,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC"}
@@ -7,6 +7,8 @@ interface KoaContextLike {
7
7
  _matchedRoute?: unknown;
8
8
  }
9
9
  type KoaNext = () => Promise<unknown>;
10
+ /** Koa's error handler removes all headers, then sets `err.headers`. Keep the WizeLens headers so the browser can link the failure. */
11
+ export declare function keepHeaders(err: unknown, res: ServerResponse): void;
10
12
  /** Koa middleware: `app.use(wizelensKoa(wizelens))`. Use it first. Reads the route from @koa/router. */
11
13
  export declare function wizelensKoa(wizelens: WizeLens): (ctx: KoaContextLike, next: KoaNext) => Promise<void>;
12
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,UAAU,cAAc;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAYtC,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,SACK,cAAc,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F"}
1
+ {"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,UAAU,cAAc;IACtB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAItC,uIAAuI;AACvI,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAKnE;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,SACK,cAAc,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F"}
@@ -6,7 +6,7 @@ import { watchRoute } from "../route-timing.js";
6
6
  import { recordOn } from "../spans.js";
7
7
  const KEEP = [HEADER_TRACE, HEADER_ENDPOINT, "Access-Control-Expose-Headers"];
8
8
  /** Koa's error handler removes all headers, then sets `err.headers`. Keep the WizeLens headers so the browser can link the failure. */
9
- function keepHeaders(err, res) {
9
+ export function keepHeaders(err, res) {
10
10
  if (!err || typeof err !== "object")
11
11
  return;
12
12
  const e = err;
@@ -1 +1 @@
1
- {"version":3,"file":"koa.js","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,+BAA+B,CAAC,CAAC;AAE9E,uIAAuI;AACvI,SAAS,WAAW,CAAC,GAAY,EAAE,GAAmB;IACpD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAC5C,MAAM,CAAC,GAAG,GAA4C,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,KAAK,UAAU,qBAAqB,CAAC,GAAmB,EAAE,IAAa;QAC5E,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAClC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7F,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"koa.js","sourceRoot":"","sources":["../../src/frameworks/koa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAavC,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,eAAe,EAAE,+BAA+B,CAAC,CAAC;AAE9E,uIAAuI;AACvI,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,GAAmB;IAC3D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IAC5C,MAAM,CAAC,GAAG,GAA4C,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,KAAK,UAAU,qBAAqB,CAAC,GAAmB,EAAE,IAAa;QAC5E,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAClC,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5F,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7F,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpB,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ /** The Node request behind what Nest hands out: the Express request itself, or the Fastify request's `raw`. */
3
+ export declare function rawRequest(req: unknown): IncomingMessage | undefined;
4
+ /** Record a Nest exception on its request's span, once, however many hooks see it. */
5
+ export declare function recordNestError(req: IncomingMessage | undefined, err: unknown): void;
6
+ /** The handler's stream with `onError` called before an error goes on to Nest's exception filters. */
7
+ export declare function tapErrors(source: unknown, onError: (err: unknown) => void): unknown;
8
+ /** Hook Nest's RouterExceptionFilters so every exception its filters answer (guards, pipes, handlers, middleware) is recorded. Run before `app.init()`. */
9
+ export declare function hookExceptionFilters(filters: object): boolean;
10
+ //# sourceMappingURL=nest-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-errors.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAuBjD,+GAA+G;AAC/G,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAIpE;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAKpF;AAoBD,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAanF;AAeD,2JAA2J;AAC3J,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU7D"}
@@ -0,0 +1,75 @@
1
+ import { patchMethod } from "../adapters/registry.js";
2
+ import { requestSpan } from "../request-capture.js";
3
+ import { recordOn } from "../spans.js";
4
+ const recorded = new WeakMap();
5
+ /** The Node request behind what Nest hands out: the Express request itself, or the Fastify request's `raw`. */
6
+ export function rawRequest(req) {
7
+ const r = req;
8
+ if (r?.raw && typeof r.raw === "object" && "headers" in r.raw)
9
+ return r.raw;
10
+ return r && typeof r === "object" && r.headers ? r : undefined;
11
+ }
12
+ /** Record a Nest exception on its request's span, once, however many hooks see it. */
13
+ export function recordNestError(req, err) {
14
+ const span = req ? requestSpan(req) : undefined;
15
+ if (!span || err === undefined || recorded.get(span) === err)
16
+ return;
17
+ recorded.set(span, err);
18
+ recordOn(span, err);
19
+ }
20
+ /** The HTTP status of a Nest HttpException, if it is one. */
21
+ function statusOf(err) {
22
+ const getStatus = err?.getStatus;
23
+ return typeof getStatus === "function" ? Number(getStatus.call(err)) : undefined;
24
+ }
25
+ /** An rxjs-compatible stream from a subscribe function: one of the source's own class, else an interop observable. */
26
+ function streamLike(source, subscribe) {
27
+ const Ctor = source.constructor;
28
+ if (typeof Ctor === "function" && Ctor !== Object)
29
+ return new Ctor(subscribe);
30
+ const out = { subscribe };
31
+ const self = () => out;
32
+ out["@@observable"] = self;
33
+ const symbol = Symbol.observable;
34
+ if (symbol)
35
+ out[symbol] = self;
36
+ return out;
37
+ }
38
+ /** The handler's stream with `onError` called before an error goes on to Nest's exception filters. */
39
+ export function tapErrors(source, onError) {
40
+ const s = source;
41
+ if (!s || typeof s.subscribe !== "function")
42
+ return source;
43
+ return streamLike(s, (subscriber) => s.subscribe({
44
+ next: (value) => subscriber.next?.(value),
45
+ error: (err) => {
46
+ onError(err);
47
+ subscriber.error?.(err);
48
+ },
49
+ complete: () => subscriber.complete?.(),
50
+ }));
51
+ }
52
+ /** Wrap one exception handler: every exception it is given is recorded, except the 404 of a path no route matched. */
53
+ function hookHandler(handler, appLevel) {
54
+ if (!handler || typeof handler !== "object")
55
+ return;
56
+ patchMethod(handler, "next", (next) => function (exception, host) {
57
+ if (!(appLevel && statusOf(exception) === 404)) {
58
+ const req = host?.getArgByIndex?.(0);
59
+ recordNestError(rawRequest(req), exception);
60
+ }
61
+ return next.call(this, exception, host);
62
+ }, "nest-filter");
63
+ }
64
+ /** Hook Nest's RouterExceptionFilters so every exception its filters answer (guards, pipes, handlers, middleware) is recorded. Run before `app.init()`. */
65
+ export function hookExceptionFilters(filters) {
66
+ return patchMethod(filters, "create", (original) => function (...args) {
67
+ const handler = original.apply(this, args);
68
+ const owner = args[0];
69
+ // The not-found and error handlers of the app are made for a plain `{}`, not a controller.
70
+ const appLevel = !!owner && Object.getPrototypeOf(owner) === Object.prototype;
71
+ hookHandler(handler, appLevel);
72
+ return handler;
73
+ }, "nest-filters");
74
+ }
75
+ //# sourceMappingURL=nest-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-errors.js","sourceRoot":"","sources":["../../src/frameworks/nest-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ type Target = object;
2
+ /** The parts of a Nest ExecutionContext the add-on reads. */
3
+ export interface NestContextLike {
4
+ getClass(): Target & {
5
+ name?: string;
6
+ };
7
+ getHandler(): Target & {
8
+ name?: string;
9
+ };
10
+ }
11
+ /** The parts of a Nest app the add-on reads: its global prefix and versioning. Both are private config, read when present. */
12
+ export interface NestConfigHolder {
13
+ config?: {
14
+ getGlobalPrefix?: () => string | undefined;
15
+ getVersioning?: () => {
16
+ type?: number;
17
+ prefix?: string | false;
18
+ defaultVersion?: unknown;
19
+ } | undefined;
20
+ };
21
+ }
22
+ /** Join route parts into "/a/b/:id", with no empty, double, or trailing slashes. */
23
+ export declare const joinRoute: (...parts: string[]) => string;
24
+ /** True when a route template ("/orders/:id", "/files/*path", "/a{/:b}") matches a path. */
25
+ export declare function routeMatches(template: string, path: string): boolean;
26
+ /** The version this handler declares, else its controller's, as a list. A neutral version (a symbol) is no version. */
27
+ export declare function versionsOf(ctx: NestContextLike, fallback?: unknown): string[];
28
+ /** The route template of a Nest handler from its metadata, picked by the path it answered. Undefined when there is no metadata. */
29
+ export declare function nestRoute(ctx: NestContextLike, app: NestConfigHolder | undefined, path: string): string | undefined;
30
+ export {};
31
+ //# sourceMappingURL=nest-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-route.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest-route.ts"],"names":[],"mappings":"AAKA,KAAK,MAAM,GAAG,MAAM,CAAC;AAErB,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,UAAU,IAAI,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,8HAA8H;AAC9H,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;QAC3C,aAAa,CAAC,EAAE,MAAM;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,SAAS,CAAC;KACxG,CAAC;CACH;AAYD,oFAAoF;AACpF,eAAO,MAAM,SAAS,aAAc,MAAM,EAAE,KAAG,MAA4E,CAAC;AAE5H,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpE;AAED,uHAAuH;AACvH,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAG7E;AAsBD,mIAAmI;AACnI,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,gBAAgB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAInH"}
@@ -0,0 +1,58 @@
1
+ // Nest's metadata keys (@nestjs/common constants) and its URI versioning type, so the add-on has no dependency on Nest.
2
+ const PATH_METADATA = "path";
3
+ const VERSION_METADATA = "__version__";
4
+ const VERSIONING_URI = 0;
5
+ const metadata = (key, target) => Reflect.getMetadata?.(key, target);
6
+ const listOf = (value) => {
7
+ const list = Array.isArray(value) ? value : [value];
8
+ return list.filter((v) => typeof v === "string");
9
+ };
10
+ const orRoot = (list) => (list.length > 0 ? list : [""]);
11
+ /** Join route parts into "/a/b/:id", with no empty, double, or trailing slashes. */
12
+ export const joinRoute = (...parts) => `/${parts.flatMap((p) => p.split("/")).filter(Boolean).join("/")}`;
13
+ /** True when a route template ("/orders/:id", "/files/*path", "/a{/:b}") matches a path. */
14
+ export function routeMatches(template, path) {
15
+ const pattern = template
16
+ .replace(/[.+?^$()|[\]\\]/g, "\\$&")
17
+ .replace(/\{/g, "(?:")
18
+ .replace(/\}/g, ")?")
19
+ .replace(/:\w+/g, "[^/]+")
20
+ .replace(/\*\w*/g, ".*");
21
+ return new RegExp(`^${pattern}/?$`).test(path);
22
+ }
23
+ /** The version this handler declares, else its controller's, as a list. A neutral version (a symbol) is no version. */
24
+ export function versionsOf(ctx, fallback) {
25
+ const declared = metadata(VERSION_METADATA, ctx.getHandler()) ?? metadata(VERSION_METADATA, ctx.getClass()) ?? fallback;
26
+ return listOf(declared);
27
+ }
28
+ /** The URI version segments ("v1") a route can start with, or [""] when URI versioning is off. */
29
+ function uriVersions(ctx, app) {
30
+ const versioning = app?.config?.getVersioning?.();
31
+ if (!versioning || versioning.type !== VERSIONING_URI)
32
+ return [""];
33
+ const prefix = versioning.prefix === false ? "" : (versioning.prefix ?? "v");
34
+ return orRoot(versionsOf(ctx, versioning.defaultVersion).map((v) => `${prefix}${v}`));
35
+ }
36
+ /** Every route Nest could have registered this handler under: global prefix (or excluded), version, controller path, handler path. */
37
+ function candidates(ctx, app) {
38
+ const prefix = app?.config?.getGlobalPrefix?.() ?? "";
39
+ const prefixes = prefix ? [prefix, ""] : [""];
40
+ const versions = uriVersions(ctx, app);
41
+ const controllers = orRoot(listOf(metadata(PATH_METADATA, ctx.getClass())));
42
+ const handlers = orRoot(listOf(metadata(PATH_METADATA, ctx.getHandler())));
43
+ const out = [];
44
+ for (const p of prefixes)
45
+ for (const v of versions)
46
+ for (const c of controllers)
47
+ for (const h of handlers)
48
+ out.push(joinRoute(p, v, c, h));
49
+ return out;
50
+ }
51
+ /** The route template of a Nest handler from its metadata, picked by the path it answered. Undefined when there is no metadata. */
52
+ export function nestRoute(ctx, app, path) {
53
+ if (metadata(PATH_METADATA, ctx.getHandler()) === undefined)
54
+ return undefined;
55
+ const all = candidates(ctx, app);
56
+ return all.find((route) => routeMatches(route, path)) ?? all[0];
57
+ }
58
+ //# sourceMappingURL=nest-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-route.js","sourceRoot":"","sources":["../../src/frameworks/nest-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { WizeLens } from "../types.js";
2
+ export interface NestOptions {
3
+ /** Add the request capture for the app's platform (Express middleware or the Fastify plugin). False when you added it yourself. Default true. */
4
+ capture?: boolean;
5
+ }
6
+ /** A NestJS interceptor that names the request by its controller and handler and records what they throw: `app.useGlobalInterceptors(new WizeLensNestInterceptor(app))`. */
7
+ export declare class WizeLensNestInterceptor {
8
+ private readonly app;
9
+ constructor(app?: unknown);
10
+ intercept(context: unknown, next: unknown): unknown;
11
+ }
12
+ /** Add the global interceptor and the exception filter hook to a Nest app, once. */
13
+ export declare function addNestHooks(app: unknown): boolean;
14
+ /** Trace a NestJS app on Express or Fastify: call `instrumentNest(wizelens, app)` right after `NestFactory.create`, before `app.listen()`. */
15
+ export declare function instrumentNest(wizelens: WizeLens, app: unknown, options?: NestOptions): boolean;
16
+ //# sourceMappingURL=nest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest.d.ts","sourceRoot":"","sources":["../../src/frameworks/nest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqBjD,MAAM,WAAW,WAAW;IAC1B,iJAAiJ;IACjJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,4KAA4K;AAC5K,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAE9C,YAAY,GAAG,CAAC,EAAE,OAAO,EAExB;IAED,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAQlD;CACF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASlD;AASD,8IAA8I;AAC9I,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAMnG"}
@@ -0,0 +1,73 @@
1
+ import { captureOf } from "../adapters/registry.js";
2
+ import { pathOf, requestSpan } from "../request-capture.js";
3
+ import { setFallbackRoute } from "../request-naming.js";
4
+ import { wizelensFastify } from "./fastify.js";
5
+ import { hookExceptionFilters, rawRequest, recordNestError, tapErrors } from "./nest-errors.js";
6
+ import { nestRoute, versionsOf } from "./nest-route.js";
7
+ const INSTALLED = Symbol.for("wizeworks.wizelens.nest");
8
+ /** Controller, handler, version, and the metadata route of the handler that answers this request. */
9
+ function describeHandler(span, ctx, app, path) {
10
+ const controller = ctx.getClass().name;
11
+ const handler = ctx.getHandler().name;
12
+ if (controller)
13
+ span.setAttribute("nest.controller", controller);
14
+ if (handler)
15
+ span.setAttribute("nest.handler", handler);
16
+ const version = versionsOf(ctx, app?.config?.getVersioning?.()?.defaultVersion)[0];
17
+ if (version)
18
+ span.setAttribute("nest.version", version);
19
+ const route = nestRoute(ctx, app, path);
20
+ if (route)
21
+ setFallbackRoute(span, route);
22
+ }
23
+ /** A NestJS interceptor that names the request by its controller and handler and records what they throw: `app.useGlobalInterceptors(new WizeLensNestInterceptor(app))`. */
24
+ export class WizeLensNestInterceptor {
25
+ app;
26
+ constructor(app) {
27
+ this.app = app;
28
+ }
29
+ intercept(context, next) {
30
+ const ctx = context;
31
+ const handler = next;
32
+ const req = ctx.getType?.() === "http" ? rawRequest(ctx.switchToHttp?.().getRequest?.()) : undefined;
33
+ const span = req ? requestSpan(req) : undefined;
34
+ if (!req || !span)
35
+ return handler.handle();
36
+ describeHandler(span, ctx, this.app, pathOf(req.originalUrl ?? req.url ?? "/"));
37
+ return tapErrors(handler.handle(), (err) => recordNestError(req, err));
38
+ }
39
+ }
40
+ /** Add the global interceptor and the exception filter hook to a Nest app, once. */
41
+ export function addNestHooks(app) {
42
+ const a = app;
43
+ if (!a || typeof a.useGlobalInterceptors !== "function")
44
+ return false;
45
+ if (a[INSTALLED])
46
+ return true;
47
+ a[INSTALLED] = true;
48
+ a.useGlobalInterceptors(new WizeLensNestInterceptor(a));
49
+ const filters = a.routesResolver?.routerExceptionsFilter;
50
+ if (filters)
51
+ hookExceptionFilters(Object.getPrototypeOf(filters));
52
+ return true;
53
+ }
54
+ /** Capture requests the way the app's platform needs: the Express middleware, or the Fastify plugin. */
55
+ function addCapture(wizelens, app) {
56
+ const platform = app.getHttpAdapter?.()?.getType?.();
57
+ if (platform === "express")
58
+ app.use?.(wizelens.middleware);
59
+ else if (platform === "fastify")
60
+ void app.register?.(wizelensFastify(wizelens));
61
+ }
62
+ /** Trace a NestJS app on Express or Fastify: call `instrumentNest(wizelens, app)` right after `NestFactory.create`, before `app.listen()`. */
63
+ export function instrumentNest(wizelens, app, options = {}) {
64
+ const a = app;
65
+ if (!captureOf(wizelens) || !a || typeof a.useGlobalInterceptors !== "function")
66
+ return false;
67
+ if (a[INSTALLED])
68
+ return true;
69
+ if (options.capture !== false)
70
+ addCapture(wizelens, a);
71
+ return addNestHooks(a);
72
+ }
73
+ //# sourceMappingURL=nest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest.js","sourceRoot":"","sources":["../../src/frameworks/nest.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
+ import { type Span as OtelSpan } from "@opentelemetry/api";
1
2
  import { type CaptureDeps } from "../request-capture.js";
2
3
  /** True for a path that is not traced, for example a static file. */
3
4
  export type IgnorePath = (path: string) => boolean;
5
+ /** A string attribute of a live SDK span. The OTel API has no getter, so this reads the SDK field. */
6
+ export declare function attributeOf(span: OtelSpan, key: string): string | undefined;
4
7
  /** Trace each request of every node:http and node:https server in this process. For frameworks with no middleware hook, such as Next.js. */
5
8
  export declare function traceServers(d: CaptureDeps, ignore: IgnorePath): void;
6
9
  //# sourceMappingURL=node-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-server.d.ts","sourceRoot":"","sources":["../../src/frameworks/node-server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAA4F,MAAM,uBAAuB,CAAC;AAEnJ,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAsBnD,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"}
@@ -4,7 +4,7 @@ import { context } from "@opentelemetry/api";
4
4
  import { patchMethod } from "../adapters/registry.js";
5
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
  }
@@ -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,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKnJ,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;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"}
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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"}