apitally 0.25.8 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +228 -178
  2. package/dist/activation.cjs +393 -0
  3. package/dist/activation.cjs.map +1 -0
  4. package/dist/activation.d.cts +42 -0
  5. package/dist/activation.d.ts +42 -0
  6. package/dist/activation.js +383 -0
  7. package/dist/activation.js.map +1 -0
  8. package/dist/adonisjs/configure.cjs +86 -30
  9. package/dist/adonisjs/configure.cjs.map +1 -1
  10. package/dist/adonisjs/configure.d.cts +0 -4
  11. package/dist/adonisjs/configure.d.ts +0 -4
  12. package/dist/adonisjs/configure.js +83 -29
  13. package/dist/adonisjs/configure.js.map +1 -1
  14. package/dist/adonisjs/index.cjs +38 -21
  15. package/dist/adonisjs/index.cjs.map +1 -1
  16. package/dist/adonisjs/index.d.cts +5 -14
  17. package/dist/adonisjs/index.d.ts +5 -14
  18. package/dist/adonisjs/index.js +39 -18
  19. package/dist/adonisjs/index.js.map +1 -1
  20. package/dist/adonisjs/middleware.cjs +43 -109
  21. package/dist/adonisjs/middleware.cjs.map +1 -1
  22. package/dist/adonisjs/middleware.d.cts +1 -16
  23. package/dist/adonisjs/middleware.d.ts +1 -16
  24. package/dist/adonisjs/middleware.js +43 -110
  25. package/dist/adonisjs/middleware.js.map +1 -1
  26. package/dist/adonisjs/provider.cjs +19 -87
  27. package/dist/adonisjs/provider.cjs.map +1 -1
  28. package/dist/adonisjs/provider.d.cts +0 -22
  29. package/dist/adonisjs/provider.d.ts +0 -22
  30. package/dist/adonisjs/provider.js +19 -88
  31. package/dist/adonisjs/provider.js.map +1 -1
  32. package/dist/adonisjs/stubs/config/apitally.stub +11 -15
  33. package/dist/bodyCapture.cjs +128 -0
  34. package/dist/bodyCapture.cjs.map +1 -0
  35. package/dist/bodyCapture.d.cts +31 -0
  36. package/dist/bodyCapture.d.ts +31 -0
  37. package/dist/bodyCapture.js +101 -0
  38. package/dist/bodyCapture.js.map +1 -0
  39. package/dist/config.cjs +227 -0
  40. package/dist/config.cjs.map +1 -0
  41. package/dist/config.d.cts +45 -0
  42. package/dist/config.d.ts +45 -0
  43. package/dist/config.js +192 -0
  44. package/dist/config.js.map +1 -0
  45. package/dist/consumer.cjs +98 -0
  46. package/dist/consumer.cjs.map +1 -0
  47. package/dist/consumer.d.cts +15 -0
  48. package/dist/consumer.d.ts +15 -0
  49. package/dist/consumer.js +78 -0
  50. package/dist/consumer.js.map +1 -0
  51. package/dist/context.cjs +68 -0
  52. package/dist/context.cjs.map +1 -0
  53. package/dist/context.d.cts +33 -0
  54. package/dist/context.d.ts +33 -0
  55. package/dist/context.js +40 -0
  56. package/dist/context.js.map +1 -0
  57. package/dist/elysia/index.cjs +12 -3
  58. package/dist/elysia/index.cjs.map +1 -1
  59. package/dist/elysia/index.d.cts +8 -16
  60. package/dist/elysia/index.d.ts +8 -16
  61. package/dist/elysia/index.js +10 -2
  62. package/dist/elysia/index.js.map +1 -1
  63. package/dist/elysia/middleware.cjs +261 -0
  64. package/dist/elysia/middleware.cjs.map +1 -0
  65. package/dist/elysia/middleware.d.cts +14 -0
  66. package/dist/elysia/middleware.d.ts +14 -0
  67. package/dist/elysia/middleware.js +250 -0
  68. package/dist/elysia/middleware.js.map +1 -0
  69. package/dist/{otel/index.cjs → elysia/routes.cjs} +16 -7
  70. package/dist/elysia/routes.cjs.map +1 -0
  71. package/dist/elysia/routes.d.cts +7 -0
  72. package/dist/elysia/routes.d.ts +7 -0
  73. package/dist/elysia/routes.js +14 -0
  74. package/dist/elysia/routes.js.map +1 -0
  75. package/dist/exceptions.cjs +81 -0
  76. package/dist/exceptions.cjs.map +1 -0
  77. package/dist/exceptions.d.cts +7 -0
  78. package/dist/exceptions.d.ts +7 -0
  79. package/dist/exceptions.js +55 -0
  80. package/dist/exceptions.js.map +1 -0
  81. package/dist/exportSerialization.cjs +56 -0
  82. package/dist/exportSerialization.cjs.map +1 -0
  83. package/dist/exportSerialization.d.cts +7 -0
  84. package/dist/exportSerialization.d.ts +7 -0
  85. package/dist/exportSerialization.js +32 -0
  86. package/dist/exportSerialization.js.map +1 -0
  87. package/dist/exportWorker.cjs +305 -0
  88. package/dist/exportWorker.cjs.map +1 -0
  89. package/dist/exportWorker.d.cts +46 -0
  90. package/dist/exportWorker.d.ts +46 -0
  91. package/dist/exportWorker.js +279 -0
  92. package/dist/exportWorker.js.map +1 -0
  93. package/dist/express/index.cjs +9 -4
  94. package/dist/express/index.cjs.map +1 -1
  95. package/dist/express/index.d.cts +7 -10
  96. package/dist/express/index.d.ts +7 -10
  97. package/dist/express/index.js +8 -2
  98. package/dist/express/index.js.map +1 -1
  99. package/dist/express/install.cjs +45 -0
  100. package/dist/express/install.cjs.map +1 -0
  101. package/dist/express/install.d.cts +10 -0
  102. package/dist/express/install.d.ts +10 -0
  103. package/dist/express/install.js +21 -0
  104. package/dist/express/install.js.map +1 -0
  105. package/dist/express/middleware.cjs +87 -331
  106. package/dist/express/middleware.cjs.map +1 -1
  107. package/dist/express/middleware.d.cts +3 -21
  108. package/dist/express/middleware.d.ts +3 -21
  109. package/dist/express/middleware.js +91 -327
  110. package/dist/express/middleware.js.map +1 -1
  111. package/dist/express/register.cjs +20 -0
  112. package/dist/express/register.cjs.map +1 -0
  113. package/dist/express/register.d.cts +2 -0
  114. package/dist/express/register.d.ts +2 -0
  115. package/dist/express/register.js +19 -0
  116. package/dist/express/register.js.map +1 -0
  117. package/dist/express/routes.cjs +429 -0
  118. package/dist/express/routes.cjs.map +1 -0
  119. package/dist/express/routes.d.cts +14 -0
  120. package/dist/express/routes.d.ts +14 -0
  121. package/dist/express/routes.js +401 -0
  122. package/dist/express/routes.js.map +1 -0
  123. package/dist/fastify/index.cjs +10 -5
  124. package/dist/fastify/index.cjs.map +1 -1
  125. package/dist/fastify/index.d.cts +7 -11
  126. package/dist/fastify/index.d.ts +7 -11
  127. package/dist/fastify/index.js +9 -3
  128. package/dist/fastify/index.js.map +1 -1
  129. package/dist/{loggers/index.cjs → fastify/install.cjs} +17 -19
  130. package/dist/fastify/install.cjs.map +1 -0
  131. package/dist/fastify/install.d.cts +10 -0
  132. package/dist/fastify/install.d.ts +10 -0
  133. package/dist/fastify/install.js +15 -0
  134. package/dist/fastify/install.js.map +1 -0
  135. package/dist/fastify/middleware.cjs +135 -0
  136. package/dist/fastify/middleware.cjs.map +1 -0
  137. package/dist/fastify/middleware.d.cts +7 -0
  138. package/dist/fastify/middleware.d.ts +7 -0
  139. package/dist/fastify/middleware.js +114 -0
  140. package/dist/fastify/middleware.js.map +1 -0
  141. package/dist/{common/paramValidation.cjs → fastify/routes.cjs} +15 -17
  142. package/dist/fastify/routes.cjs.map +1 -0
  143. package/dist/fastify/routes.d.cts +8 -0
  144. package/dist/fastify/routes.d.ts +8 -0
  145. package/dist/fastify/routes.js +14 -0
  146. package/dist/fastify/routes.js.map +1 -0
  147. package/dist/h3/index.cjs +28 -4
  148. package/dist/h3/index.cjs.map +1 -1
  149. package/dist/h3/index.d.cts +8 -10
  150. package/dist/h3/index.d.ts +8 -10
  151. package/dist/h3/index.js +26 -2
  152. package/dist/h3/index.js.map +1 -1
  153. package/dist/h3/middleware.cjs +210 -0
  154. package/dist/h3/middleware.cjs.map +1 -0
  155. package/dist/h3/middleware.d.cts +5 -0
  156. package/dist/h3/middleware.d.ts +5 -0
  157. package/dist/h3/middleware.js +194 -0
  158. package/dist/h3/middleware.js.map +1 -0
  159. package/dist/h3/routes.cjs +66 -0
  160. package/dist/h3/routes.cjs.map +1 -0
  161. package/dist/h3/routes.d.cts +8 -0
  162. package/dist/h3/routes.d.ts +8 -0
  163. package/dist/h3/routes.js +41 -0
  164. package/dist/h3/routes.js.map +1 -0
  165. package/dist/hapi/index.cjs +15 -4
  166. package/dist/hapi/index.cjs.map +1 -1
  167. package/dist/hapi/index.d.cts +8 -10
  168. package/dist/hapi/index.d.ts +8 -10
  169. package/dist/hapi/index.js +13 -2
  170. package/dist/hapi/index.js.map +1 -1
  171. package/dist/{loggers/hapi.cjs → hapi/install.cjs} +20 -26
  172. package/dist/hapi/install.cjs.map +1 -0
  173. package/dist/hapi/install.d.cts +8 -0
  174. package/dist/hapi/install.d.ts +8 -0
  175. package/dist/hapi/install.js +22 -0
  176. package/dist/hapi/install.js.map +1 -0
  177. package/dist/hapi/middleware.cjs +158 -0
  178. package/dist/hapi/middleware.cjs.map +1 -0
  179. package/dist/hapi/middleware.d.cts +5 -0
  180. package/dist/hapi/middleware.d.ts +5 -0
  181. package/dist/hapi/middleware.js +137 -0
  182. package/dist/hapi/middleware.js.map +1 -0
  183. package/dist/{common/logging.cjs → hapi/routes.cjs} +14 -17
  184. package/dist/hapi/routes.cjs.map +1 -0
  185. package/dist/hapi/routes.d.cts +8 -0
  186. package/dist/hapi/routes.d.ts +8 -0
  187. package/dist/hapi/routes.js +12 -0
  188. package/dist/hapi/routes.js.map +1 -0
  189. package/dist/hono/index.cjs +13 -3
  190. package/dist/hono/index.cjs.map +1 -1
  191. package/dist/hono/index.d.cts +7 -10
  192. package/dist/hono/index.d.ts +7 -10
  193. package/dist/hono/index.js +13 -2
  194. package/dist/hono/index.js.map +1 -1
  195. package/dist/hono/middleware.cjs +219 -127
  196. package/dist/hono/middleware.cjs.map +1 -1
  197. package/dist/hono/middleware.d.cts +3 -18
  198. package/dist/hono/middleware.d.ts +3 -18
  199. package/dist/hono/middleware.js +229 -126
  200. package/dist/hono/middleware.js.map +1 -1
  201. package/dist/hono/routes.cjs +74 -0
  202. package/dist/hono/routes.cjs.map +1 -0
  203. package/dist/hono/routes.d.cts +8 -0
  204. package/dist/hono/routes.d.ts +8 -0
  205. package/dist/hono/routes.js +49 -0
  206. package/dist/hono/routes.js.map +1 -0
  207. package/dist/index.cjs +108 -0
  208. package/dist/index.cjs.map +1 -1
  209. package/dist/index.d.cts +29 -1
  210. package/dist/index.d.ts +29 -1
  211. package/dist/index.js +77 -0
  212. package/dist/index.js.map +1 -1
  213. package/dist/koa/index.cjs +13 -3
  214. package/dist/koa/index.cjs.map +1 -1
  215. package/dist/koa/index.d.cts +7 -10
  216. package/dist/koa/index.d.ts +7 -10
  217. package/dist/koa/index.js +13 -2
  218. package/dist/koa/index.js.map +1 -1
  219. package/dist/koa/middleware.cjs +85 -184
  220. package/dist/koa/middleware.cjs.map +1 -1
  221. package/dist/koa/middleware.d.cts +3 -13
  222. package/dist/koa/middleware.d.ts +3 -13
  223. package/dist/koa/middleware.js +88 -183
  224. package/dist/koa/middleware.js.map +1 -1
  225. package/dist/koa/routes.cjs +71 -0
  226. package/dist/koa/routes.cjs.map +1 -0
  227. package/dist/koa/routes.d.cts +8 -0
  228. package/dist/koa/routes.d.ts +8 -0
  229. package/dist/koa/routes.js +46 -0
  230. package/dist/koa/routes.js.map +1 -0
  231. package/dist/logCapture.cjs +417 -0
  232. package/dist/logCapture.cjs.map +1 -0
  233. package/dist/logCapture.d.cts +18 -0
  234. package/dist/logCapture.d.ts +18 -0
  235. package/dist/logCapture.js +390 -0
  236. package/dist/logCapture.js.map +1 -0
  237. package/dist/logRecordExporter.cjs +51 -0
  238. package/dist/logRecordExporter.cjs.map +1 -0
  239. package/dist/logRecordExporter.d.cts +14 -0
  240. package/dist/logRecordExporter.d.ts +14 -0
  241. package/dist/logRecordExporter.js +27 -0
  242. package/dist/logRecordExporter.js.map +1 -0
  243. package/dist/logRecordProcessor.cjs +137 -0
  244. package/dist/logRecordProcessor.cjs.map +1 -0
  245. package/dist/logRecordProcessor.d.cts +27 -0
  246. package/dist/logRecordProcessor.d.ts +27 -0
  247. package/dist/logRecordProcessor.js +113 -0
  248. package/dist/logRecordProcessor.js.map +1 -0
  249. package/dist/logger.cjs +62 -0
  250. package/dist/logger.cjs.map +1 -0
  251. package/dist/logger.d.cts +7 -0
  252. package/dist/logger.d.ts +7 -0
  253. package/dist/logger.js +34 -0
  254. package/dist/logger.js.map +1 -0
  255. package/dist/metrics.cjs +171 -0
  256. package/dist/metrics.cjs.map +1 -0
  257. package/dist/metrics.d.cts +26 -0
  258. package/dist/metrics.d.ts +26 -0
  259. package/dist/metrics.js +153 -0
  260. package/dist/metrics.js.map +1 -0
  261. package/dist/nestjs/index.cjs +81 -71
  262. package/dist/nestjs/index.cjs.map +1 -1
  263. package/dist/nestjs/index.d.cts +4 -11
  264. package/dist/nestjs/index.d.ts +4 -11
  265. package/dist/nestjs/index.js +81 -61
  266. package/dist/nestjs/index.js.map +1 -1
  267. package/dist/packageVersion.cjs +67 -0
  268. package/dist/packageVersion.cjs.map +1 -0
  269. package/dist/packageVersion.d.cts +5 -0
  270. package/dist/packageVersion.d.ts +5 -0
  271. package/dist/packageVersion.js +39 -0
  272. package/dist/packageVersion.js.map +1 -0
  273. package/dist/providers.cjs +149 -0
  274. package/dist/providers.cjs.map +1 -0
  275. package/dist/providers.d.cts +15 -0
  276. package/dist/providers.d.ts +15 -0
  277. package/dist/providers.js +136 -0
  278. package/dist/providers.js.map +1 -0
  279. package/dist/redaction.cjs +116 -0
  280. package/dist/redaction.cjs.map +1 -0
  281. package/dist/redaction.d.cts +17 -0
  282. package/dist/redaction.d.ts +17 -0
  283. package/dist/redaction.js +98 -0
  284. package/dist/redaction.js.map +1 -0
  285. package/dist/{common/packageVersions.cjs → requestAttributes.cjs} +21 -19
  286. package/dist/requestAttributes.cjs.map +1 -0
  287. package/dist/requestAttributes.d.cts +10 -0
  288. package/dist/requestAttributes.d.ts +10 -0
  289. package/dist/requestAttributes.js +22 -0
  290. package/dist/requestAttributes.js.map +1 -0
  291. package/dist/requestObservation.cjs +246 -0
  292. package/dist/requestObservation.cjs.map +1 -0
  293. package/dist/requestObservation.d.cts +62 -0
  294. package/dist/requestObservation.d.ts +62 -0
  295. package/dist/requestObservation.js +226 -0
  296. package/dist/requestObservation.js.map +1 -0
  297. package/dist/requestObservationNode.cjs +193 -0
  298. package/dist/requestObservationNode.cjs.map +1 -0
  299. package/dist/requestObservationNode.d.cts +31 -0
  300. package/dist/requestObservationNode.d.ts +31 -0
  301. package/dist/requestObservationNode.js +170 -0
  302. package/dist/requestObservationNode.js.map +1 -0
  303. package/dist/requestObservationWeb.cjs +202 -0
  304. package/dist/requestObservationWeb.cjs.map +1 -0
  305. package/dist/requestObservationWeb.d.cts +34 -0
  306. package/dist/requestObservationWeb.d.ts +34 -0
  307. package/dist/requestObservationWeb.js +182 -0
  308. package/dist/requestObservationWeb.js.map +1 -0
  309. package/dist/sentry.cjs +103 -0
  310. package/dist/sentry.cjs.map +1 -0
  311. package/dist/sentry.d.cts +3 -0
  312. package/dist/sentry.d.ts +3 -0
  313. package/dist/sentry.js +79 -0
  314. package/dist/sentry.js.map +1 -0
  315. package/dist/serverErrors.cjs +118 -0
  316. package/dist/serverErrors.cjs.map +1 -0
  317. package/dist/serverErrors.d.cts +8 -0
  318. package/dist/serverErrors.d.ts +8 -0
  319. package/dist/serverErrors.js +91 -0
  320. package/dist/serverErrors.js.map +1 -0
  321. package/dist/spanExporter.cjs +217 -0
  322. package/dist/spanExporter.cjs.map +1 -0
  323. package/dist/spanExporter.d.cts +34 -0
  324. package/dist/spanExporter.d.ts +34 -0
  325. package/dist/spanExporter.js +193 -0
  326. package/dist/spanExporter.js.map +1 -0
  327. package/dist/spanProcessor.cjs +535 -0
  328. package/dist/spanProcessor.cjs.map +1 -0
  329. package/dist/spanProcessor.d.cts +70 -0
  330. package/dist/spanProcessor.d.ts +70 -0
  331. package/dist/spanProcessor.js +513 -0
  332. package/dist/spanProcessor.js.map +1 -0
  333. package/dist/spool.cjs +314 -0
  334. package/dist/spool.cjs.map +1 -0
  335. package/dist/spool.d.cts +49 -0
  336. package/dist/spool.d.ts +49 -0
  337. package/dist/spool.js +297 -0
  338. package/dist/spool.js.map +1 -0
  339. package/dist/startup.cjs +98 -0
  340. package/dist/startup.cjs.map +1 -0
  341. package/dist/startup.d.cts +15 -0
  342. package/dist/startup.d.ts +15 -0
  343. package/dist/startup.js +73 -0
  344. package/dist/startup.js.map +1 -0
  345. package/dist/tracing.cjs +116 -0
  346. package/dist/tracing.cjs.map +1 -0
  347. package/dist/tracing.d.cts +5 -0
  348. package/dist/tracing.d.ts +5 -0
  349. package/dist/tracing.js +96 -0
  350. package/dist/tracing.js.map +1 -0
  351. package/dist/validationErrors.cjs +229 -0
  352. package/dist/validationErrors.cjs.map +1 -0
  353. package/dist/validationErrors.d.cts +21 -0
  354. package/dist/validationErrors.d.ts +21 -0
  355. package/dist/validationErrors.js +195 -0
  356. package/dist/validationErrors.js.map +1 -0
  357. package/package.json +113 -154
  358. package/dist/common/client.cjs +0 -335
  359. package/dist/common/client.cjs.map +0 -1
  360. package/dist/common/client.d.cts +0 -50
  361. package/dist/common/client.d.ts +0 -50
  362. package/dist/common/client.js +0 -302
  363. package/dist/common/client.js.map +0 -1
  364. package/dist/common/consumerRegistry.cjs +0 -86
  365. package/dist/common/consumerRegistry.cjs.map +0 -1
  366. package/dist/common/consumerRegistry.d.cts +0 -20
  367. package/dist/common/consumerRegistry.d.ts +0 -20
  368. package/dist/common/consumerRegistry.js +0 -62
  369. package/dist/common/consumerRegistry.js.map +0 -1
  370. package/dist/common/headers.cjs +0 -55
  371. package/dist/common/headers.cjs.map +0 -1
  372. package/dist/common/headers.d.cts +0 -6
  373. package/dist/common/headers.d.ts +0 -6
  374. package/dist/common/headers.js +0 -31
  375. package/dist/common/headers.js.map +0 -1
  376. package/dist/common/instance.cjs +0 -158
  377. package/dist/common/instance.cjs.map +0 -1
  378. package/dist/common/instance.d.cts +0 -4
  379. package/dist/common/instance.d.ts +0 -4
  380. package/dist/common/instance.js +0 -134
  381. package/dist/common/instance.js.map +0 -1
  382. package/dist/common/logging.cjs.map +0 -1
  383. package/dist/common/logging.d.cts +0 -11
  384. package/dist/common/logging.d.ts +0 -11
  385. package/dist/common/logging.js +0 -17
  386. package/dist/common/logging.js.map +0 -1
  387. package/dist/common/packageVersions.cjs.map +0 -1
  388. package/dist/common/packageVersions.d.cts +0 -3
  389. package/dist/common/packageVersions.d.ts +0 -3
  390. package/dist/common/packageVersions.js +0 -21
  391. package/dist/common/packageVersions.js.map +0 -1
  392. package/dist/common/paramValidation.cjs.map +0 -1
  393. package/dist/common/paramValidation.d.cts +0 -4
  394. package/dist/common/paramValidation.d.ts +0 -4
  395. package/dist/common/paramValidation.js +0 -17
  396. package/dist/common/paramValidation.js.map +0 -1
  397. package/dist/common/requestCounter.cjs +0 -114
  398. package/dist/common/requestCounter.cjs.map +0 -1
  399. package/dist/common/requestCounter.d.cts +0 -24
  400. package/dist/common/requestCounter.d.ts +0 -24
  401. package/dist/common/requestCounter.js +0 -91
  402. package/dist/common/requestCounter.js.map +0 -1
  403. package/dist/common/requestLogger.cjs +0 -543
  404. package/dist/common/requestLogger.cjs.map +0 -1
  405. package/dist/common/requestLogger.d.cts +0 -85
  406. package/dist/common/requestLogger.d.ts +0 -85
  407. package/dist/common/requestLogger.js +0 -508
  408. package/dist/common/requestLogger.js.map +0 -1
  409. package/dist/common/resources.cjs +0 -49
  410. package/dist/common/resources.cjs.map +0 -1
  411. package/dist/common/resources.d.cts +0 -6
  412. package/dist/common/resources.d.ts +0 -6
  413. package/dist/common/resources.js +0 -26
  414. package/dist/common/resources.js.map +0 -1
  415. package/dist/common/response.cjs +0 -104
  416. package/dist/common/response.cjs.map +0 -1
  417. package/dist/common/response.d.cts +0 -15
  418. package/dist/common/response.d.ts +0 -15
  419. package/dist/common/response.js +0 -80
  420. package/dist/common/response.js.map +0 -1
  421. package/dist/common/sentry.cjs +0 -56
  422. package/dist/common/sentry.cjs.map +0 -1
  423. package/dist/common/sentry.d.cts +0 -6
  424. package/dist/common/sentry.d.ts +0 -6
  425. package/dist/common/sentry.js +0 -23
  426. package/dist/common/sentry.js.map +0 -1
  427. package/dist/common/serverErrorCounter.cjs +0 -123
  428. package/dist/common/serverErrorCounter.cjs.map +0 -1
  429. package/dist/common/serverErrorCounter.d.cts +0 -23
  430. package/dist/common/serverErrorCounter.d.ts +0 -23
  431. package/dist/common/serverErrorCounter.js +0 -98
  432. package/dist/common/serverErrorCounter.js.map +0 -1
  433. package/dist/common/spanCollector.cjs +0 -201
  434. package/dist/common/spanCollector.cjs.map +0 -1
  435. package/dist/common/spanCollector.d.cts +0 -45
  436. package/dist/common/spanCollector.d.ts +0 -45
  437. package/dist/common/spanCollector.js +0 -177
  438. package/dist/common/spanCollector.js.map +0 -1
  439. package/dist/common/tempGzipFile.cjs +0 -127
  440. package/dist/common/tempGzipFile.cjs.map +0 -1
  441. package/dist/common/tempGzipFile.d.cts +0 -19
  442. package/dist/common/tempGzipFile.d.ts +0 -19
  443. package/dist/common/tempGzipFile.js +0 -103
  444. package/dist/common/tempGzipFile.js.map +0 -1
  445. package/dist/common/types.cjs +0 -17
  446. package/dist/common/types.cjs.map +0 -1
  447. package/dist/common/types.d.cts +0 -95
  448. package/dist/common/types.d.ts +0 -95
  449. package/dist/common/types.js +0 -1
  450. package/dist/common/types.js.map +0 -1
  451. package/dist/common/validationErrorCounter.cjs +0 -79
  452. package/dist/common/validationErrorCounter.cjs.map +0 -1
  453. package/dist/common/validationErrorCounter.d.cts +0 -20
  454. package/dist/common/validationErrorCounter.d.ts +0 -20
  455. package/dist/common/validationErrorCounter.js +0 -56
  456. package/dist/common/validationErrorCounter.js.map +0 -1
  457. package/dist/elysia/plugin.cjs +0 -242
  458. package/dist/elysia/plugin.cjs.map +0 -1
  459. package/dist/elysia/plugin.d.cts +0 -70
  460. package/dist/elysia/plugin.d.ts +0 -70
  461. package/dist/elysia/plugin.js +0 -219
  462. package/dist/elysia/plugin.js.map +0 -1
  463. package/dist/elysia/utils.cjs +0 -77
  464. package/dist/elysia/utils.cjs.map +0 -1
  465. package/dist/elysia/utils.d.cts +0 -14
  466. package/dist/elysia/utils.d.ts +0 -14
  467. package/dist/elysia/utils.js +0 -54
  468. package/dist/elysia/utils.js.map +0 -1
  469. package/dist/express/utils.cjs +0 -217
  470. package/dist/express/utils.cjs.map +0 -1
  471. package/dist/express/utils.d.cts +0 -37
  472. package/dist/express/utils.d.ts +0 -37
  473. package/dist/express/utils.js +0 -189
  474. package/dist/express/utils.js.map +0 -1
  475. package/dist/fastify/plugin.cjs +0 -319
  476. package/dist/fastify/plugin.cjs.map +0 -1
  477. package/dist/fastify/plugin.d.cts +0 -34
  478. package/dist/fastify/plugin.d.ts +0 -34
  479. package/dist/fastify/plugin.js +0 -284
  480. package/dist/fastify/plugin.js.map +0 -1
  481. package/dist/h3/plugin.cjs +0 -183
  482. package/dist/h3/plugin.cjs.map +0 -1
  483. package/dist/h3/plugin.d.cts +0 -27
  484. package/dist/h3/plugin.d.ts +0 -27
  485. package/dist/h3/plugin.js +0 -159
  486. package/dist/h3/plugin.js.map +0 -1
  487. package/dist/h3/utils.cjs +0 -77
  488. package/dist/h3/utils.cjs.map +0 -1
  489. package/dist/h3/utils.d.cts +0 -14
  490. package/dist/h3/utils.d.ts +0 -14
  491. package/dist/h3/utils.js +0 -54
  492. package/dist/h3/utils.js.map +0 -1
  493. package/dist/hapi/plugin.cjs +0 -212
  494. package/dist/hapi/plugin.cjs.map +0 -1
  495. package/dist/hapi/plugin.d.cts +0 -40
  496. package/dist/hapi/plugin.d.ts +0 -40
  497. package/dist/hapi/plugin.js +0 -188
  498. package/dist/hapi/plugin.js.map +0 -1
  499. package/dist/hapi/utils.cjs +0 -77
  500. package/dist/hapi/utils.cjs.map +0 -1
  501. package/dist/hapi/utils.d.cts +0 -16
  502. package/dist/hapi/utils.d.ts +0 -16
  503. package/dist/hapi/utils.js +0 -53
  504. package/dist/hapi/utils.js.map +0 -1
  505. package/dist/hono/utils.cjs +0 -113
  506. package/dist/hono/utils.cjs.map +0 -1
  507. package/dist/hono/utils.d.cts +0 -16
  508. package/dist/hono/utils.d.ts +0 -16
  509. package/dist/hono/utils.js +0 -88
  510. package/dist/hono/utils.js.map +0 -1
  511. package/dist/loggers/console.cjs +0 -67
  512. package/dist/loggers/console.cjs.map +0 -1
  513. package/dist/loggers/console.d.cts +0 -11
  514. package/dist/loggers/console.d.ts +0 -11
  515. package/dist/loggers/console.js +0 -44
  516. package/dist/loggers/console.js.map +0 -1
  517. package/dist/loggers/hapi.cjs.map +0 -1
  518. package/dist/loggers/hapi.d.cts +0 -12
  519. package/dist/loggers/hapi.d.ts +0 -12
  520. package/dist/loggers/hapi.js +0 -29
  521. package/dist/loggers/hapi.js.map +0 -1
  522. package/dist/loggers/index.cjs.map +0 -1
  523. package/dist/loggers/index.d.cts +0 -13
  524. package/dist/loggers/index.d.ts +0 -13
  525. package/dist/loggers/index.js +0 -13
  526. package/dist/loggers/index.js.map +0 -1
  527. package/dist/loggers/nestjs.cjs +0 -104
  528. package/dist/loggers/nestjs.cjs.map +0 -1
  529. package/dist/loggers/nestjs.d.cts +0 -11
  530. package/dist/loggers/nestjs.d.ts +0 -11
  531. package/dist/loggers/nestjs.js +0 -71
  532. package/dist/loggers/nestjs.js.map +0 -1
  533. package/dist/loggers/pino.cjs +0 -152
  534. package/dist/loggers/pino.cjs.map +0 -1
  535. package/dist/loggers/pino.d.cts +0 -11
  536. package/dist/loggers/pino.d.ts +0 -11
  537. package/dist/loggers/pino.js +0 -119
  538. package/dist/loggers/pino.js.map +0 -1
  539. package/dist/loggers/utils.cjs +0 -64
  540. package/dist/loggers/utils.cjs.map +0 -1
  541. package/dist/loggers/utils.d.cts +0 -6
  542. package/dist/loggers/utils.d.ts +0 -6
  543. package/dist/loggers/utils.js +0 -40
  544. package/dist/loggers/utils.js.map +0 -1
  545. package/dist/loggers/winston.cjs +0 -101
  546. package/dist/loggers/winston.cjs.map +0 -1
  547. package/dist/loggers/winston.d.cts +0 -11
  548. package/dist/loggers/winston.d.ts +0 -11
  549. package/dist/loggers/winston.js +0 -68
  550. package/dist/loggers/winston.js.map +0 -1
  551. package/dist/otel/index.cjs.map +0 -1
  552. package/dist/otel/index.d.cts +0 -2
  553. package/dist/otel/index.d.ts +0 -2
  554. package/dist/otel/index.js +0 -5
  555. package/dist/otel/index.js.map +0 -1
@@ -1,54 +1,108 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
1
  import { fileURLToPath } from "node:url";
4
- import { isValidClientId, isValidEnv } from "../common/paramValidation.js";
2
+ import { DEFAULT_ENV, isValidWriteToken } from "../config.js";
5
3
  const STUBS_ROOT = fileURLToPath(new URL("./stubs/", import.meta.url));
4
+ const ENV_FORMAT = /^[a-z0-9-]{1,32}$/;
6
5
  async function configure(command) {
7
- const clientId = await command.prompt.ask("Apitally client ID", {
8
- result(value) {
9
- return value.trim().toLowerCase();
10
- },
11
- validate(value) {
12
- return isValidClientId(value);
13
- }
6
+ const writeToken = await command.prompt.ask("Apitally write token", {
7
+ result: (value) => value.trim(),
8
+ validate: (value) => isValidWriteToken(value.trim())
14
9
  });
15
- const env = await command.prompt.ask("Environment name", {
16
- default: "dev",
17
- result(value) {
18
- return value.trim().toLowerCase().replaceAll("_", "-").replaceAll(" ", "-");
19
- },
20
- validate(value) {
21
- return isValidEnv(value);
22
- }
10
+ const env = await command.prompt.ask("Environment", {
11
+ default: DEFAULT_ENV,
12
+ result: normalizeEnv,
13
+ validate: (value) => ENV_FORMAT.test(normalizeEnv(value))
14
+ });
15
+ const captureRequestHeaders = await command.prompt.confirm("Capture request headers?", {
16
+ default: false
17
+ });
18
+ const captureRequestBody = await command.prompt.confirm("Capture request bodies?", {
19
+ default: false
23
20
  });
24
- const enableRequestLogging = await command.prompt.confirm("Enable request logging?", {
21
+ const captureResponseBody = await command.prompt.confirm("Capture response bodies?", {
25
22
  default: false
26
23
  });
27
24
  const codemods = await command.createCodemods();
28
25
  await codemods.makeUsingStub(STUBS_ROOT, "config/apitally.stub", {
29
- enableRequestLogging
26
+ captureRequestHeaders,
27
+ captureRequestBody,
28
+ captureResponseBody
30
29
  });
31
- await codemods.registerMiddleware("router", [
32
- {
33
- path: "apitally/adonisjs/middleware"
34
- }
35
- ]);
36
30
  await codemods.updateRcFile((rcFile) => {
37
31
  rcFile.addProvider("apitally/adonisjs/provider");
38
32
  });
33
+ await codemods.registerMiddleware("server", [{ path: "apitally/adonisjs/middleware" }]);
39
34
  await codemods.defineEnvVariables({
40
- APITALLY_CLIENT_ID: clientId,
35
+ APITALLY_WRITE_TOKEN: writeToken,
41
36
  APITALLY_ENV: env
42
37
  });
43
38
  await codemods.defineEnvValidations({
44
- leadingComment: "Variables for configuring the apitally package",
45
39
  variables: {
46
- APITALLY_CLIENT_ID: "Env.schema.string()",
40
+ APITALLY_WRITE_TOKEN: "Env.schema.string.optional()",
47
41
  APITALLY_ENV: "Env.schema.string.optional()"
48
42
  }
49
43
  });
44
+ await updateExceptionHandler(codemods, command);
45
+ }
46
+ function normalizeEnv(value) {
47
+ return value.trim().toLowerCase().replace(/[ _]/g, "-");
48
+ }
49
+ async function updateExceptionHandler(codemods, command) {
50
+ const project = await codemods.getTsMorphProject();
51
+ const handlerPath = command.app.makePath("app/exceptions/handler.ts");
52
+ const sourceFile = project?.getSourceFile(handlerPath) ?? project?.addSourceFileAtPathIfExists(handlerPath);
53
+ const handlerClass = sourceFile?.getClasses().find((candidate) => candidate.isDefaultExport());
54
+ const method = handlerClass?.getMethod("handle");
55
+ if (method) {
56
+ const alreadyConfigured = method.getDescendants().some((node) => {
57
+ if (node.getKindName() !== "CallExpression") {
58
+ return false;
59
+ }
60
+ const call = node;
61
+ return call.getExpression().getText() === "captureException" && call.getArguments().length === 2;
62
+ });
63
+ if (alreadyConfigured) {
64
+ return;
65
+ }
66
+ const parameters = method.getParameters();
67
+ const statements = method.getStatements();
68
+ const statement = statements[0];
69
+ if (method.isAsync() && parameters.length >= 2 && statements.length === 1 && statement?.getKindName() === "ReturnStatement") {
70
+ const returnExpression = statement.getExpression();
71
+ const errorName = parameters[0].getName();
72
+ const contextName = parameters[1].getName();
73
+ if (returnExpression?.getKindName() === "CallExpression" && returnExpression.getExpression().getText() === "super.handle" && returnExpression.getArguments().map((argument) => argument.getText()).join(",") === `${errorName},${contextName}`) {
74
+ const importDeclaration = sourceFile?.getImportDeclaration(
75
+ (candidate) => candidate.getModuleSpecifierValue() === "apitally/adonisjs"
76
+ );
77
+ if (importDeclaration) {
78
+ if (!importDeclaration.getNamedImports().some(
79
+ (namedImport) => namedImport.getName() === "captureException"
80
+ )) {
81
+ importDeclaration.addNamedImport("captureException");
82
+ }
83
+ } else {
84
+ sourceFile?.addImportDeclaration({
85
+ moduleSpecifier: "apitally/adonisjs",
86
+ namedImports: ["captureException"]
87
+ });
88
+ }
89
+ method.setBodyText(
90
+ `const result = await super.handle(${errorName}, ${contextName})
91
+ captureException(${errorName}, ${contextName})
92
+ return result`
93
+ );
94
+ await sourceFile?.save();
95
+ return;
96
+ }
97
+ }
98
+ }
99
+ command.logger.warning(
100
+ 'Could not update "app/exceptions/handler.ts" automatically. Add the following import and method:'
101
+ );
102
+ command.logger.info(
103
+ 'import { captureException } from "apitally/adonisjs"\n\nasync handle(error: unknown, ctx: HttpContext) {\n const result = await super.handle(error, ctx)\n captureException(error, ctx)\n return result\n}'
104
+ );
50
105
  }
51
- __name(configure, "configure");
52
106
  export {
53
107
  configure
54
108
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/configure.ts"],"sourcesContent":["/**\n * Allows users to add Apitally to their AdonisJS application using the built-in Ace command.\n */\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { isValidClientId, isValidEnv } from \"../common/paramValidation.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\n\nexport async function configure(command: Configure) {\n const clientId = await command.prompt.ask(\"Apitally client ID\", {\n result(value) {\n return value.trim().toLowerCase();\n },\n validate(value) {\n return isValidClientId(value);\n },\n });\n const env = await command.prompt.ask(\"Environment name\", {\n default: \"dev\",\n result(value) {\n return value\n .trim()\n .toLowerCase()\n .replaceAll(\"_\", \"-\")\n .replaceAll(\" \", \"-\");\n },\n validate(value) {\n return isValidEnv(value);\n },\n });\n const enableRequestLogging = await command.prompt.confirm(\n \"Enable request logging?\",\n {\n default: false,\n },\n );\n\n const codemods = await command.createCodemods();\n\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {\n enableRequestLogging,\n });\n\n await codemods.registerMiddleware(\"router\", [\n {\n path: \"apitally/adonisjs/middleware\",\n },\n ]);\n\n await codemods.updateRcFile((rcFile: any) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n\n await codemods.defineEnvVariables({\n APITALLY_CLIENT_ID: clientId,\n APITALLY_ENV: env,\n });\n\n await codemods.defineEnvValidations({\n leadingComment: \"Variables for configuring the apitally package\",\n variables: {\n APITALLY_CLIENT_ID: \"Env.schema.string()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n}\n"],"mappings":";;AAKA,SAASA,qBAAqB;AAE9B,SAASC,iBAAiBC,kBAAkB;AAE5C,MAAMC,aAAaH,cAAc,IAAII,IAAI,YAAY,YAAYC,GAAG,CAAA;AAEpE,eAAsBC,UAAUC,SAAkB;AAChD,QAAMC,WAAW,MAAMD,QAAQE,OAAOC,IAAI,sBAAsB;IAC9DC,OAAOC,OAAK;AACV,aAAOA,MAAMC,KAAI,EAAGC,YAAW;IACjC;IACAC,SAASH,OAAK;AACZ,aAAOX,gBAAgBW,KAAAA;IACzB;EACF,CAAA;AACA,QAAMI,MAAM,MAAMT,QAAQE,OAAOC,IAAI,oBAAoB;IACvDO,SAAS;IACTN,OAAOC,OAAK;AACV,aAAOA,MACJC,KAAI,EACJC,YAAW,EACXI,WAAW,KAAK,GAAA,EAChBA,WAAW,KAAK,GAAA;IACrB;IACAH,SAASH,OAAK;AACZ,aAAOV,WAAWU,KAAAA;IACpB;EACF,CAAA;AACA,QAAMO,uBAAuB,MAAMZ,QAAQE,OAAOW,QAChD,2BACA;IACEH,SAAS;EACX,CAAA;AAGF,QAAMI,WAAW,MAAMd,QAAQe,eAAc;AAE7C,QAAMD,SAASE,cAAcpB,YAAY,wBAAwB;IAC/DgB;EACF,CAAA;AAEA,QAAME,SAASG,mBAAmB,UAAU;IAC1C;MACEC,MAAM;IACR;GACD;AAED,QAAMJ,SAASK,aAAa,CAACC,WAAAA;AAC3BA,WAAOC,YAAY,4BAAA;EACrB,CAAA;AAEA,QAAMP,SAASQ,mBAAmB;IAChCC,oBAAoBtB;IACpBuB,cAAcf;EAChB,CAAA;AAEA,QAAMK,SAASW,qBAAqB;IAClCC,gBAAgB;IAChBC,WAAW;MACTJ,oBAAoB;MACpBC,cAAc;IAChB;EACF,CAAA;AACF;AAzDsBzB;","names":["fileURLToPath","isValidClientId","isValidEnv","STUBS_ROOT","URL","url","configure","command","clientId","prompt","ask","result","value","trim","toLowerCase","validate","env","default","replaceAll","enableRequestLogging","confirm","codemods","createCodemods","makeUsingStub","registerMiddleware","path","updateRcFile","rcFile","addProvider","defineEnvVariables","APITALLY_CLIENT_ID","APITALLY_ENV","defineEnvValidations","leadingComment","variables"]}
1
+ {"version":3,"sources":["../../src/adonisjs/configure.ts"],"sourcesContent":["import { fileURLToPath } from \"node:url\";\n\nimport type Configure from \"@adonisjs/core/commands/configure\";\n\nimport { DEFAULT_ENV, isValidWriteToken } from \"../config.js\";\n\nconst STUBS_ROOT = fileURLToPath(new URL(\"./stubs/\", import.meta.url));\nconst ENV_FORMAT = /^[a-z0-9-]{1,32}$/;\n\nexport async function configure(command: Configure): Promise<void> {\n const writeToken = await command.prompt.ask(\"Apitally write token\", {\n result: (value) => value.trim(),\n validate: (value) => isValidWriteToken(value.trim()),\n });\n const env = await command.prompt.ask(\"Environment\", {\n default: DEFAULT_ENV,\n result: normalizeEnv,\n validate: (value) => ENV_FORMAT.test(normalizeEnv(value)),\n });\n const captureRequestHeaders = await command.prompt.confirm(\"Capture request headers?\", {\n default: false,\n });\n const captureRequestBody = await command.prompt.confirm(\"Capture request bodies?\", {\n default: false,\n });\n const captureResponseBody = await command.prompt.confirm(\"Capture response bodies?\", {\n default: false,\n });\n\n const codemods = await command.createCodemods();\n await codemods.makeUsingStub(STUBS_ROOT, \"config/apitally.stub\", {\n captureRequestHeaders,\n captureRequestBody,\n captureResponseBody,\n });\n await codemods.updateRcFile((rcFile) => {\n rcFile.addProvider(\"apitally/adonisjs/provider\");\n });\n await codemods.registerMiddleware(\"server\", [{ path: \"apitally/adonisjs/middleware\" }]);\n await codemods.defineEnvVariables({\n APITALLY_WRITE_TOKEN: writeToken,\n APITALLY_ENV: env,\n });\n await codemods.defineEnvValidations({\n variables: {\n APITALLY_WRITE_TOKEN: \"Env.schema.string.optional()\",\n APITALLY_ENV: \"Env.schema.string.optional()\",\n },\n });\n await updateExceptionHandler(codemods, command);\n}\n\nfunction normalizeEnv(value: string): string {\n return value.trim().toLowerCase().replace(/[ _]/g, \"-\");\n}\n\nasync function updateExceptionHandler(\n codemods: Awaited<ReturnType<Configure[\"createCodemods\"]>>,\n command: Configure,\n): Promise<void> {\n const project = await codemods.getTsMorphProject();\n const handlerPath = command.app.makePath(\"app/exceptions/handler.ts\");\n const sourceFile =\n project?.getSourceFile(handlerPath) ?? project?.addSourceFileAtPathIfExists(handlerPath);\n const handlerClass = sourceFile\n ?.getClasses()\n .find((candidate: { isDefaultExport: () => boolean }) => candidate.isDefaultExport());\n const method = handlerClass?.getMethod(\"handle\");\n if (method) {\n const alreadyConfigured = method\n .getDescendants()\n .some((node: { getKindName: () => string }) => {\n if (node.getKindName() !== \"CallExpression\") {\n return false;\n }\n const call = node as typeof node & {\n getArguments: () => unknown[];\n getExpression: () => { getText: () => string };\n };\n return (\n call.getExpression().getText() === \"captureException\" && call.getArguments().length === 2\n );\n });\n if (alreadyConfigured) {\n return;\n }\n\n const parameters = method.getParameters();\n const statements = method.getStatements();\n const statement = statements[0];\n if (\n method.isAsync() &&\n parameters.length >= 2 &&\n statements.length === 1 &&\n statement?.getKindName() === \"ReturnStatement\"\n ) {\n const returnExpression = (\n statement as typeof statement & {\n getExpression: () =>\n | {\n getArguments: () => Array<{ getText: () => string }>;\n getExpression: () => { getText: () => string };\n getKindName: () => string;\n }\n | undefined;\n }\n ).getExpression();\n const errorName = parameters[0].getName();\n const contextName = parameters[1].getName();\n if (\n returnExpression?.getKindName() === \"CallExpression\" &&\n returnExpression.getExpression().getText() === \"super.handle\" &&\n returnExpression\n .getArguments()\n .map((argument: { getText: () => string }) => argument.getText())\n .join(\",\") === `${errorName},${contextName}`\n ) {\n const importDeclaration = sourceFile?.getImportDeclaration(\n (candidate: { getModuleSpecifierValue: () => string }) =>\n candidate.getModuleSpecifierValue() === \"apitally/adonisjs\",\n );\n if (importDeclaration) {\n if (\n !importDeclaration\n .getNamedImports()\n .some(\n (namedImport: { getName: () => string }) =>\n namedImport.getName() === \"captureException\",\n )\n ) {\n importDeclaration.addNamedImport(\"captureException\");\n }\n } else {\n sourceFile?.addImportDeclaration({\n moduleSpecifier: \"apitally/adonisjs\",\n namedImports: [\"captureException\"],\n });\n }\n method.setBodyText(\n `const result = await super.handle(${errorName}, ${contextName})\\n` +\n `captureException(${errorName}, ${contextName})\\n` +\n `return result`,\n );\n await sourceFile?.save();\n return;\n }\n }\n }\n\n command.logger.warning(\n 'Could not update \"app/exceptions/handler.ts\" automatically. Add the following import and method:',\n );\n command.logger.info(\n 'import { captureException } from \"apitally/adonisjs\"\\n\\n' +\n \"async handle(error: unknown, ctx: HttpContext) {\\n\" +\n \" const result = await super.handle(error, ctx)\\n\" +\n \" captureException(error, ctx)\\n\" +\n \" return result\\n\" +\n \"}\",\n );\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -19,32 +18,50 @@ var __copyProps = (to, from, except, desc) => {
19
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
19
  var adonisjs_exports = {};
21
20
  __export(adonisjs_exports, {
22
- captureError: () => captureError,
23
- configure: () => import_configure.configure,
24
- defineConfig: () => defineConfig,
25
- setConsumer: () => setConsumer
21
+ captureException: () => captureException,
22
+ defineConfig: () => defineConfig
26
23
  });
27
24
  module.exports = __toCommonJS(adonisjs_exports);
28
- var import_configure = require('./configure.cjs');
29
- function defineConfig(config) {
30
- return config;
25
+ var import_context = require('../context.cjs');
26
+ var import_exceptions = require('../exceptions.cjs');
27
+ var import_logger = require('../logger.cjs');
28
+ var import_validationErrors = require('../validationErrors.cjs');
29
+ function defineConfig(options) {
30
+ return options;
31
31
  }
32
- __name(defineConfig, "defineConfig");
33
- function captureError(error, ctx) {
34
- if (error instanceof Error) {
35
- ctx.apitallyError = error;
32
+ function captureException(error, context) {
33
+ try {
34
+ const statusCode = context.response.getStatus();
35
+ if (statusCode >= 500) {
36
+ (0, import_exceptions.captureException)(error);
37
+ return;
38
+ }
39
+ if (!(0, import_validationErrors.isValidationResponseStatus)(statusCode) || !(0, import_validationErrors.isRecord)(error) || error.code !== "E_VALIDATION_ERROR" || !Array.isArray(error.messages)) {
40
+ return;
41
+ }
42
+ const requestRecord = (0, import_context.getRequestRecord)();
43
+ if (!requestRecord) {
44
+ return;
45
+ }
46
+ const validationErrors = [];
47
+ for (const message of error.messages) {
48
+ if ((0, import_validationErrors.isRecord)(message) && typeof message.field === "string" && typeof message.message === "string") {
49
+ validationErrors.push({
50
+ source: "",
51
+ field: message.field,
52
+ message: message.message,
53
+ type: typeof message.rule === "string" ? message.rule : ""
54
+ });
55
+ }
56
+ }
57
+ requestRecord.validationErrors = validationErrors;
58
+ } catch (captureError) {
59
+ (0, import_logger.logDebug)(`Error capturing an AdonisJS exception: ${String(captureError)}`);
36
60
  }
37
61
  }
38
- __name(captureError, "captureError");
39
- function setConsumer(ctx, consumer) {
40
- ctx.apitallyConsumer = consumer || void 0;
41
- }
42
- __name(setConsumer, "setConsumer");
43
62
  // Annotate the CommonJS export names for ESM import in node:
44
63
  0 && (module.exports = {
45
- captureError,
46
- configure,
47
- defineConfig,
48
- setConsumer
64
+ captureException,
65
+ defineConfig
49
66
  });
50
67
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/index.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAIA;;;;;;;;AAAA,uBAA0B;AAEnB,SAASA,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
1
+ {"version":3,"sources":["../../src/adonisjs/index.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\nimport type { ApitallyOptions } from \"../config.js\";\nimport { getRequestRecord } from \"../context.js\";\nimport { captureException as captureCurrentException } from \"../exceptions.js\";\nimport { logDebug } from \"../logger.js\";\nimport {\n isRecord,\n isValidationResponseStatus,\n type ValidationErrorDetail,\n} from \"../validationErrors.js\";\n\nexport type { ApitallyOptions } from \"../config.js\";\n\nexport function defineConfig(options: ApitallyOptions): ApitallyOptions {\n return options;\n}\n\nexport function captureException(error: unknown, context: HttpContext): void {\n try {\n const statusCode = context.response.getStatus();\n if (statusCode >= 500) {\n captureCurrentException(error);\n return;\n }\n if (\n !isValidationResponseStatus(statusCode) ||\n !isRecord(error) ||\n error.code !== \"E_VALIDATION_ERROR\" ||\n !Array.isArray(error.messages)\n ) {\n return;\n }\n const requestRecord = getRequestRecord();\n if (!requestRecord) {\n return;\n }\n const validationErrors: ValidationErrorDetail[] = [];\n for (const message of error.messages) {\n if (\n isRecord(message) &&\n typeof message.field === \"string\" &&\n typeof message.message === \"string\"\n ) {\n validationErrors.push({\n source: \"\",\n field: message.field,\n message: message.message,\n type: typeof message.rule === \"string\" ? message.rule : \"\",\n });\n }\n }\n requestRecord.validationErrors = validationErrors;\n } catch (captureError) {\n logDebug(`Error capturing an AdonisJS exception: ${String(captureError)}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAAiC;AACjC,wBAA4D;AAC5D,oBAAyB;AACzB,8BAIO;AAIA,SAAS,aAAa,SAA2C;AACtE,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAgB,SAA4B;AAC3E,MAAI;AACF,UAAM,aAAa,QAAQ,SAAS,UAAU;AAC9C,QAAI,cAAc,KAAK;AACrB,4BAAAA,kBAAwB,KAAK;AAC7B;AAAA,IACF;AACA,QACE,KAAC,oDAA2B,UAAU,KACtC,KAAC,kCAAS,KAAK,KACf,MAAM,SAAS,wBACf,CAAC,MAAM,QAAQ,MAAM,QAAQ,GAC7B;AACA;AAAA,IACF;AACA,UAAM,oBAAgB,iCAAiB;AACvC,QAAI,CAAC,eAAe;AAClB;AAAA,IACF;AACA,UAAM,mBAA4C,CAAC;AACnD,eAAW,WAAW,MAAM,UAAU;AACpC,cACE,kCAAS,OAAO,KAChB,OAAO,QAAQ,UAAU,YACzB,OAAO,QAAQ,YAAY,UAC3B;AACA,yBAAiB,KAAK;AAAA,UACpB,QAAQ;AAAA,UACR,OAAO,QAAQ;AAAA,UACf,SAAS,QAAQ;AAAA,UACjB,MAAM,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,QAC1D,CAAC;AAAA,MACH;AAAA,IACF;AACA,kBAAc,mBAAmB;AAAA,EACnC,SAAS,cAAc;AACrB,gCAAS,0CAA0C,OAAO,YAAY,CAAC,EAAE;AAAA,EAC3E;AACF;","names":["captureCurrentException"]}
@@ -1,18 +1,9 @@
1
1
  import { HttpContext } from '@adonisjs/core/http';
2
- import { ApitallyConfig, ApitallyConsumer } from '../common/types.cjs';
3
- export { configure } from './configure.cjs';
4
- import '../common/logging.cjs';
5
- import 'winston';
6
- import '../common/requestLogger.cjs';
7
- import 'node:buffer';
8
- import 'node:http';
9
- import '../common/spanCollector.cjs';
2
+ import { ApitallyOptions } from '../config.cjs';
3
+ import '@opentelemetry/sdk-logs';
10
4
  import '@opentelemetry/sdk-trace-base';
11
- import '../common/tempGzipFile.cjs';
12
- import '@adonisjs/core/commands/configure';
13
5
 
14
- declare function defineConfig(config: ApitallyConfig): ApitallyConfig;
15
- declare function captureError(error: unknown, ctx: HttpContext): void;
16
- declare function setConsumer(ctx: HttpContext, consumer: ApitallyConsumer | string | null | undefined): void;
6
+ declare function defineConfig(options: ApitallyOptions): ApitallyOptions;
7
+ declare function captureException(error: unknown, context: HttpContext): void;
17
8
 
18
- export { ApitallyConfig, ApitallyConsumer, captureError, defineConfig, setConsumer };
9
+ export { ApitallyOptions, captureException, defineConfig };
@@ -1,18 +1,9 @@
1
1
  import { HttpContext } from '@adonisjs/core/http';
2
- import { ApitallyConfig, ApitallyConsumer } from '../common/types.js';
3
- export { configure } from './configure.js';
4
- import '../common/logging.js';
5
- import 'winston';
6
- import '../common/requestLogger.js';
7
- import 'node:buffer';
8
- import 'node:http';
9
- import '../common/spanCollector.js';
2
+ import { ApitallyOptions } from '../config.js';
3
+ import '@opentelemetry/sdk-logs';
10
4
  import '@opentelemetry/sdk-trace-base';
11
- import '../common/tempGzipFile.js';
12
- import '@adonisjs/core/commands/configure';
13
5
 
14
- declare function defineConfig(config: ApitallyConfig): ApitallyConfig;
15
- declare function captureError(error: unknown, ctx: HttpContext): void;
16
- declare function setConsumer(ctx: HttpContext, consumer: ApitallyConsumer | string | null | undefined): void;
6
+ declare function defineConfig(options: ApitallyOptions): ApitallyOptions;
7
+ declare function captureException(error: unknown, context: HttpContext): void;
17
8
 
18
- export { ApitallyConfig, ApitallyConsumer, captureError, defineConfig, setConsumer };
9
+ export { ApitallyOptions, captureException, defineConfig };
@@ -1,24 +1,45 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { configure } from "./configure.js";
4
- function defineConfig(config) {
5
- return config;
1
+ import { getRequestRecord } from "../context.js";
2
+ import { captureException as captureCurrentException } from "../exceptions.js";
3
+ import { logDebug } from "../logger.js";
4
+ import {
5
+ isRecord,
6
+ isValidationResponseStatus
7
+ } from "../validationErrors.js";
8
+ function defineConfig(options) {
9
+ return options;
6
10
  }
7
- __name(defineConfig, "defineConfig");
8
- function captureError(error, ctx) {
9
- if (error instanceof Error) {
10
- ctx.apitallyError = error;
11
+ function captureException(error, context) {
12
+ try {
13
+ const statusCode = context.response.getStatus();
14
+ if (statusCode >= 500) {
15
+ captureCurrentException(error);
16
+ return;
17
+ }
18
+ if (!isValidationResponseStatus(statusCode) || !isRecord(error) || error.code !== "E_VALIDATION_ERROR" || !Array.isArray(error.messages)) {
19
+ return;
20
+ }
21
+ const requestRecord = getRequestRecord();
22
+ if (!requestRecord) {
23
+ return;
24
+ }
25
+ const validationErrors = [];
26
+ for (const message of error.messages) {
27
+ if (isRecord(message) && typeof message.field === "string" && typeof message.message === "string") {
28
+ validationErrors.push({
29
+ source: "",
30
+ field: message.field,
31
+ message: message.message,
32
+ type: typeof message.rule === "string" ? message.rule : ""
33
+ });
34
+ }
35
+ }
36
+ requestRecord.validationErrors = validationErrors;
37
+ } catch (captureError) {
38
+ logDebug(`Error capturing an AdonisJS exception: ${String(captureError)}`);
11
39
  }
12
40
  }
13
- __name(captureError, "captureError");
14
- function setConsumer(ctx, consumer) {
15
- ctx.apitallyConsumer = consumer || void 0;
16
- }
17
- __name(setConsumer, "setConsumer");
18
41
  export {
19
- captureError,
20
- configure,
21
- defineConfig,
22
- setConsumer
42
+ captureException,
43
+ defineConfig
23
44
  };
24
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/index.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\n\nimport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport type { ApitallyConfig, ApitallyConsumer } from \"../common/types.js\";\nexport { configure } from \"./configure.js\";\n\nexport function defineConfig(config: ApitallyConfig) {\n return config;\n}\n\nexport function captureError(error: unknown, ctx: HttpContext) {\n if (error instanceof Error) {\n ctx.apitallyError = error;\n }\n}\n\nexport function setConsumer(\n ctx: HttpContext,\n consumer: ApitallyConsumer | string | null | undefined,\n) {\n ctx.apitallyConsumer = consumer || undefined;\n}\n"],"mappings":";;AAIA,SAASA,iBAAiB;AAEnB,SAASC,aAAaC,QAAsB;AACjD,SAAOA;AACT;AAFgBD;AAIT,SAASE,aAAaC,OAAgBC,KAAgB;AAC3D,MAAID,iBAAiBE,OAAO;AAC1BD,QAAIE,gBAAgBH;EACtB;AACF;AAJgBD;AAMT,SAASK,YACdH,KACAI,UAAsD;AAEtDJ,MAAIK,mBAAmBD,YAAYE;AACrC;AALgBH;","names":["configure","defineConfig","config","captureError","error","ctx","Error","apitallyError","setConsumer","consumer","apitallyConsumer","undefined"]}
1
+ {"version":3,"sources":["../../src/adonisjs/index.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\nimport type { ApitallyOptions } from \"../config.js\";\nimport { getRequestRecord } from \"../context.js\";\nimport { captureException as captureCurrentException } from \"../exceptions.js\";\nimport { logDebug } from \"../logger.js\";\nimport {\n isRecord,\n isValidationResponseStatus,\n type ValidationErrorDetail,\n} from \"../validationErrors.js\";\n\nexport type { ApitallyOptions } from \"../config.js\";\n\nexport function defineConfig(options: ApitallyOptions): ApitallyOptions {\n return options;\n}\n\nexport function captureException(error: unknown, context: HttpContext): void {\n try {\n const statusCode = context.response.getStatus();\n if (statusCode >= 500) {\n captureCurrentException(error);\n return;\n }\n if (\n !isValidationResponseStatus(statusCode) ||\n !isRecord(error) ||\n error.code !== \"E_VALIDATION_ERROR\" ||\n !Array.isArray(error.messages)\n ) {\n return;\n }\n const requestRecord = getRequestRecord();\n if (!requestRecord) {\n return;\n }\n const validationErrors: ValidationErrorDetail[] = [];\n for (const message of error.messages) {\n if (\n isRecord(message) &&\n typeof message.field === \"string\" &&\n typeof message.message === \"string\"\n ) {\n validationErrors.push({\n source: \"\",\n field: message.field,\n message: message.message,\n type: typeof message.rule === \"string\" ? message.rule : \"\",\n });\n }\n }\n requestRecord.validationErrors = validationErrors;\n } catch (captureError) {\n logDebug(`Error capturing an AdonisJS exception: ${String(captureError)}`);\n }\n}\n"],"mappings":"AAEA,SAAS,wBAAwB;AACjC,SAAS,oBAAoB,+BAA+B;AAC5D,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAIA,SAAS,aAAa,SAA2C;AACtE,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAgB,SAA4B;AAC3E,MAAI;AACF,UAAM,aAAa,QAAQ,SAAS,UAAU;AAC9C,QAAI,cAAc,KAAK;AACrB,8BAAwB,KAAK;AAC7B;AAAA,IACF;AACA,QACE,CAAC,2BAA2B,UAAU,KACtC,CAAC,SAAS,KAAK,KACf,MAAM,SAAS,wBACf,CAAC,MAAM,QAAQ,MAAM,QAAQ,GAC7B;AACA;AAAA,IACF;AACA,UAAM,gBAAgB,iBAAiB;AACvC,QAAI,CAAC,eAAe;AAClB;AAAA,IACF;AACA,UAAM,mBAA4C,CAAC;AACnD,eAAW,WAAW,MAAM,UAAU;AACpC,UACE,SAAS,OAAO,KAChB,OAAO,QAAQ,UAAU,YACzB,OAAO,QAAQ,YAAY,UAC3B;AACA,yBAAiB,KAAK;AAAA,UACpB,QAAQ;AAAA,UACR,OAAO,QAAQ;AAAA,UACf,SAAS,QAAQ;AAAA,UACjB,MAAM,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,QAC1D,CAAC;AAAA,MACH;AAAA,IACF;AACA,kBAAc,mBAAmB;AAAA,EACnC,SAAS,cAAc;AACrB,aAAS,0CAA0C,OAAO,YAAY,CAAC,EAAE;AAAA,EAC3E;AACF;","names":[]}
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
6
  var __export = (target, all) => {
8
7
  for (var name in all)
9
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -22,115 +21,50 @@ __export(middleware_exports, {
22
21
  default: () => ApitallyMiddleware
23
22
  });
24
23
  module.exports = __toCommonJS(middleware_exports);
25
- var import_node_perf_hooks = require("node:perf_hooks");
26
- var import_consumerRegistry = require('../common/consumerRegistry.cjs');
27
- var import_headers = require('../common/headers.cjs');
28
- var import_requestLogger = require('../common/requestLogger.cjs');
29
- const _ApitallyMiddleware = class _ApitallyMiddleware {
24
+ var import_api = require("@opentelemetry/api");
25
+ var import_activation = require('../activation.cjs');
26
+ var import_config = require('../config.cjs');
27
+ var import_logger = require('../logger.cjs');
28
+ var import_requestObservation = require('../requestObservation.cjs');
29
+ var import_requestObservationNode = require('../requestObservationNode.cjs');
30
+ const TRACER_NAME = "apitally.adonisjs";
31
+ class ApitallyMiddleware {
30
32
  async handle(ctx, next) {
31
- const client = await ctx.containerResolver.make("apitallyClient");
32
- const logsContext = await ctx.containerResolver.make("apitallyLogsContext");
33
- if (!client.isEnabled() || ctx.request.method().toUpperCase() === "OPTIONS") {
34
- await next();
35
- return;
33
+ if (!(0, import_activation.isActivated)()) {
34
+ return next();
36
35
  }
37
- return logsContext.run([], async () => {
38
- var _a, _b;
39
- const path = (_a = ctx.route) == null ? void 0 : _a.pattern;
40
- const timestamp = Date.now() / 1e3;
41
- const startTime = import_node_perf_hooks.performance.now();
42
- const spanHandle = client.spanCollector.startSpan();
43
- await spanHandle.runInContext(next);
44
- const responseTime = import_node_perf_hooks.performance.now() - startTime;
45
- spanHandle.setName(`${ctx.request.method()} ${path}`);
46
- const spans = spanHandle.end();
47
- const traceId = spanHandle.traceId;
48
- const requestSize = (0, import_headers.parseContentLength)(ctx.request.header("content-length"));
49
- const requestContentType = (_b = ctx.request.header("content-type")) == null ? void 0 : _b.toString();
50
- let responseStatus = ctx.response.getStatus();
51
- let responseHeaders = ctx.response.getHeaders();
52
- let responseSize;
53
- let responseContentType;
54
- const consumer = ctx.apitallyConsumer ? (0, import_consumerRegistry.consumerFromStringOrObject)(ctx.apitallyConsumer) : null;
55
- client.consumerRegistry.addOrUpdateConsumer(consumer);
56
- const onWriteHead = /* @__PURE__ */ __name((statusCode, headers) => {
57
- var _a2;
58
- responseStatus = statusCode;
59
- responseHeaders = headers;
60
- responseSize = (0, import_headers.parseContentLength)(headers["content-length"]);
61
- responseContentType = (_a2 = headers["content-type"]) == null ? void 0 : _a2.toString();
62
- if (path) {
63
- client.requestCounter.addRequest({
64
- consumer: consumer == null ? void 0 : consumer.identifier,
65
- method: ctx.request.method(),
66
- path,
67
- statusCode: responseStatus,
68
- responseTime,
69
- requestSize,
70
- responseSize
71
- });
72
- if (responseStatus === 422 && ctx.apitallyError && "code" in ctx.apitallyError && "messages" in ctx.apitallyError && ctx.apitallyError.code === "E_VALIDATION_ERROR" && Array.isArray(ctx.apitallyError.messages)) {
73
- ctx.apitallyError.messages.forEach((message) => {
74
- client.validationErrorCounter.addValidationError({
75
- consumer: consumer == null ? void 0 : consumer.identifier,
76
- method: ctx.request.method(),
77
- path,
78
- loc: message.field,
79
- msg: message.message,
80
- type: message.rule
81
- });
82
- });
83
- }
84
- if (responseStatus === 500 && ctx.apitallyError) {
85
- client.serverErrorCounter.addServerError({
86
- consumer: consumer == null ? void 0 : consumer.identifier,
87
- method: ctx.request.method(),
88
- path,
89
- type: ctx.apitallyError.name,
90
- msg: ctx.apitallyError.message,
91
- traceback: ctx.apitallyError.stack || ""
92
- });
93
- }
94
- }
95
- }, "onWriteHead");
96
- const originalWriteHead = ctx.response.response.writeHead;
97
- ctx.response.response.writeHead = (...args) => {
98
- originalWriteHead.apply(ctx.response.response, args);
99
- onWriteHead(args[0], typeof args[1] === "string" ? args[2] : args[1]);
100
- return ctx.response.response;
101
- };
102
- if (client.requestLogger.enabled) {
103
- const logs = logsContext.getStore();
104
- const onEnd = /* @__PURE__ */ __name((chunk) => {
105
- const requestBody = client.requestLogger.config.logRequestBody && client.requestLogger.isSupportedContentType(requestContentType) ? ctx.request.raw() : void 0;
106
- const responseBody = client.requestLogger.config.logResponseBody && client.requestLogger.isSupportedContentType(responseContentType) ? chunk : void 0;
107
- client.requestLogger.logRequest({
108
- timestamp,
109
- method: ctx.request.method(),
110
- path,
111
- url: ctx.request.completeUrl(true),
112
- headers: (0, import_requestLogger.convertHeaders)(ctx.request.headers()),
113
- size: requestSize,
114
- consumer: consumer == null ? void 0 : consumer.identifier,
115
- body: requestBody ? Buffer.from(requestBody) : void 0
116
- }, {
117
- statusCode: responseStatus,
118
- responseTime: responseTime / 1e3,
119
- headers: (0, import_requestLogger.convertHeaders)(responseHeaders),
120
- size: responseSize,
121
- body: responseBody ? Buffer.from(responseBody) : void 0
122
- }, ctx.apitallyError, logs, spans, traceId);
123
- }, "onEnd");
124
- const originalEnd = ctx.response.response.end;
125
- ctx.response.response.end = (...args) => {
126
- originalEnd.apply(ctx.response.response, args);
127
- onEnd(typeof args[0] !== "function" ? args[0] : void 0);
128
- return ctx.response.response;
129
- };
130
- }
131
- });
36
+ let requestContext;
37
+ try {
38
+ const request = ctx.request.request;
39
+ const response = ctx.response.response;
40
+ const started = (0, import_requestObservationNode.startNodeRequestObservation)({ request, tracerName: TRACER_NAME });
41
+ requestContext = started.requestContext;
42
+ import_api.context.bind(requestContext, request);
43
+ import_api.context.bind(requestContext, response);
44
+ (0, import_requestObservationNode.captureNodeResponse)(
45
+ response,
46
+ (0, import_config.getConfig)().captureResponseBody && started.observation.requestRecord.dropReason === void 0,
47
+ started.observation.requestBodyCapture,
48
+ (name) => ctx.response.getHeader(name)
49
+ ).then((completion) => {
50
+ (0, import_requestObservation.finalizeRequestObservation)({
51
+ observation: started.observation,
52
+ completedAtMillis: completion.completedAtMillis,
53
+ statusCode: response.statusCode,
54
+ route: ctx.route?.pattern,
55
+ clientAddress: ctx.request.ip(),
56
+ requestHeaders: request.headers,
57
+ responseHeaders: ctx.response.getHeaders(),
58
+ capturedRequestBody: completion.requestBody,
59
+ capturedResponseBody: completion
60
+ });
61
+ }).catch((error) => {
62
+ (0, import_logger.logWarning)(`Error in the Apitally middleware: ${String(error)}`);
63
+ });
64
+ } catch (error) {
65
+ (0, import_logger.logWarning)(`Error in the Apitally middleware: ${String(error)}`);
66
+ }
67
+ return requestContext ? import_api.context.with(requestContext, next) : next();
132
68
  }
133
- };
134
- __name(_ApitallyMiddleware, "ApitallyMiddleware");
135
- let ApitallyMiddleware = _ApitallyMiddleware;
69
+ }
136
70
  //# sourceMappingURL=middleware.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adonisjs/middleware.ts"],"sourcesContent":["import { HttpContext } from \"@adonisjs/core/http\";\nimport { NextFn } from \"@adonisjs/core/types/http\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { OutgoingHttpHeaders } from \"node:http\";\nimport { performance } from \"node:perf_hooks\";\n\nimport type { ApitallyClient } from \"../common/client.js\";\nimport { consumerFromStringOrObject } from \"../common/consumerRegistry.js\";\nimport { parseContentLength } from \"../common/headers.js\";\nimport type { LogRecord } from \"../common/requestLogger.js\";\nimport { convertHeaders } from \"../common/requestLogger.js\";\nimport type { ApitallyConsumer } from \"../common/types.js\";\n\ndeclare module \"@adonisjs/core/http\" {\n interface HttpContext {\n apitallyConsumer?: ApitallyConsumer | string;\n apitallyError?: Error;\n }\n}\n\nexport default class ApitallyMiddleware {\n async handle(ctx: HttpContext, next: NextFn) {\n const client: ApitallyClient =\n await ctx.containerResolver.make(\"apitallyClient\");\n const logsContext: AsyncLocalStorage<LogRecord[]> =\n await ctx.containerResolver.make(\"apitallyLogsContext\");\n\n if (\n !client.isEnabled() ||\n ctx.request.method().toUpperCase() === \"OPTIONS\"\n ) {\n await next();\n return;\n }\n\n return logsContext.run([], async () => {\n const path = ctx.route?.pattern;\n const timestamp = Date.now() / 1000;\n const startTime = performance.now();\n\n const spanHandle = client.spanCollector.startSpan();\n await spanHandle.runInContext(next);\n\n const responseTime = performance.now() - startTime;\n spanHandle.setName(`${ctx.request.method()} ${path}`);\n const spans = spanHandle.end();\n const traceId = spanHandle.traceId;\n\n const requestSize = parseContentLength(\n ctx.request.header(\"content-length\"),\n );\n const requestContentType = ctx.request.header(\"content-type\")?.toString();\n let responseStatus = ctx.response.getStatus();\n let responseHeaders = ctx.response.getHeaders();\n let responseSize: number | undefined;\n let responseContentType: string | undefined;\n\n const consumer = ctx.apitallyConsumer\n ? consumerFromStringOrObject(ctx.apitallyConsumer)\n : null;\n client.consumerRegistry.addOrUpdateConsumer(consumer);\n\n const onWriteHead = (\n statusCode: number,\n headers: OutgoingHttpHeaders,\n ) => {\n responseStatus = statusCode;\n responseHeaders = headers;\n responseSize = parseContentLength(headers[\"content-length\"]);\n responseContentType = headers[\"content-type\"]?.toString();\n\n if (path) {\n client.requestCounter.addRequest({\n consumer: consumer?.identifier,\n method: ctx.request.method(),\n path,\n statusCode: responseStatus,\n responseTime,\n requestSize,\n responseSize,\n });\n\n if (\n responseStatus === 422 &&\n ctx.apitallyError &&\n \"code\" in ctx.apitallyError &&\n \"messages\" in ctx.apitallyError &&\n ctx.apitallyError.code === \"E_VALIDATION_ERROR\" &&\n Array.isArray(ctx.apitallyError.messages)\n ) {\n ctx.apitallyError.messages.forEach((message) => {\n client.validationErrorCounter.addValidationError({\n consumer: consumer?.identifier,\n method: ctx.request.method(),\n path,\n loc: message.field,\n msg: message.message,\n type: message.rule,\n });\n });\n }\n\n if (responseStatus === 500 && ctx.apitallyError) {\n client.serverErrorCounter.addServerError({\n consumer: consumer?.identifier,\n method: ctx.request.method(),\n path,\n type: ctx.apitallyError.name,\n msg: ctx.apitallyError.message,\n traceback: ctx.apitallyError.stack || \"\",\n });\n }\n }\n };\n\n // Capture the final status code and response headers just before they are sent\n const originalWriteHead = ctx.response.response.writeHead;\n ctx.response.response.writeHead = (...args: any) => {\n originalWriteHead.apply(ctx.response.response, args);\n onWriteHead(args[0], typeof args[1] === \"string\" ? args[2] : args[1]);\n return ctx.response.response;\n };\n\n if (client.requestLogger.enabled) {\n const logs = logsContext.getStore();\n\n const onEnd = (chunk: any) => {\n const requestBody =\n client.requestLogger.config.logRequestBody &&\n client.requestLogger.isSupportedContentType(requestContentType)\n ? ctx.request.raw()\n : undefined;\n const responseBody =\n client.requestLogger.config.logResponseBody &&\n client.requestLogger.isSupportedContentType(responseContentType)\n ? chunk\n : undefined;\n\n client.requestLogger.logRequest(\n {\n timestamp,\n method: ctx.request.method(),\n path,\n url: ctx.request.completeUrl(true),\n headers: convertHeaders(ctx.request.headers()),\n size: requestSize,\n consumer: consumer?.identifier,\n body: requestBody ? Buffer.from(requestBody) : undefined,\n },\n {\n statusCode: responseStatus,\n responseTime: responseTime / 1000,\n headers: convertHeaders(responseHeaders),\n size: responseSize,\n body: responseBody ? Buffer.from(responseBody) : undefined,\n },\n ctx.apitallyError,\n logs,\n spans,\n traceId,\n );\n };\n\n // Capture the final response body just before it is sent\n const originalEnd = ctx.response.response.end;\n ctx.response.response.end = (...args: any) => {\n originalEnd.apply(ctx.response.response, args);\n onEnd(typeof args[0] !== \"function\" ? args[0] : undefined);\n return ctx.response.response;\n };\n }\n });\n }\n}\n"],"mappings":"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","names":["ApitallyMiddleware","handle","ctx","next","client","containerResolver","make","logsContext","isEnabled","request","method","toUpperCase","run","path","route","pattern","timestamp","Date","now","startTime","performance","spanHandle","spanCollector","startSpan","runInContext","responseTime","setName","spans","end","traceId","requestSize","parseContentLength","header","requestContentType","toString","responseStatus","response","getStatus","responseHeaders","getHeaders","responseSize","responseContentType","consumer","apitallyConsumer","consumerFromStringOrObject","consumerRegistry","addOrUpdateConsumer","onWriteHead","statusCode","headers","_a","requestCounter","addRequest","identifier","apitallyError","code","Array","isArray","messages","forEach","message","validationErrorCounter","addValidationError","loc","field","msg","type","rule","serverErrorCounter","addServerError","name","traceback","stack","originalWriteHead","writeHead","args","apply","requestLogger","enabled","logs","getStore","onEnd","chunk","requestBody","config","logRequestBody","isSupportedContentType","raw","undefined","responseBody","logResponseBody","logRequest","url","completeUrl","convertHeaders","size","body","Buffer","from","originalEnd"]}
1
+ {"version":3,"sources":["../../src/adonisjs/middleware.ts"],"sourcesContent":["import type { HttpContext } from \"@adonisjs/core/http\";\nimport type { NextFn } from \"@adonisjs/core/types/http\";\nimport { type Context, context } from \"@opentelemetry/api\";\n\nimport { isActivated } from \"../activation.js\";\nimport { getConfig } from \"../config.js\";\nimport { logWarning } from \"../logger.js\";\nimport { finalizeRequestObservation } from \"../requestObservation.js\";\nimport { captureNodeResponse, startNodeRequestObservation } from \"../requestObservationNode.js\";\n\nconst TRACER_NAME = \"apitally.adonisjs\";\n\nexport default class ApitallyMiddleware {\n async handle(ctx: HttpContext, next: NextFn): Promise<unknown> {\n if (!isActivated()) {\n return next();\n }\n\n let requestContext: Context | undefined;\n try {\n const request = ctx.request.request;\n const response = ctx.response.response;\n const started = startNodeRequestObservation({ request, tracerName: TRACER_NAME });\n requestContext = started.requestContext;\n context.bind(requestContext, request);\n context.bind(requestContext, response);\n captureNodeResponse(\n response,\n getConfig().captureResponseBody &&\n started.observation.requestRecord.dropReason === undefined,\n started.observation.requestBodyCapture,\n (name) => ctx.response.getHeader(name),\n )\n .then((completion) => {\n finalizeRequestObservation({\n observation: started.observation,\n completedAtMillis: completion.completedAtMillis,\n statusCode: response.statusCode,\n route: ctx.route?.pattern,\n clientAddress: ctx.request.ip(),\n requestHeaders: request.headers,\n responseHeaders: ctx.response.getHeaders(),\n capturedRequestBody: completion.requestBody,\n capturedResponseBody: completion,\n });\n })\n .catch((error: unknown) => {\n logWarning(`Error in the Apitally middleware: ${String(error)}`);\n });\n } catch (error) {\n logWarning(`Error in the Apitally middleware: ${String(error)}`);\n }\n\n return requestContext ? context.with(requestContext, next) : next();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAAsC;AAEtC,wBAA4B;AAC5B,oBAA0B;AAC1B,oBAA2B;AAC3B,gCAA2C;AAC3C,oCAAiE;AAEjE,MAAM,cAAc;AAEpB,MAAO,mBAAiC;AAAA,EACtC,MAAM,OAAO,KAAkB,MAAgC;AAC7D,QAAI,KAAC,+BAAY,GAAG;AAClB,aAAO,KAAK;AAAA,IACd;AAEA,QAAI;AACJ,QAAI;AACF,YAAM,UAAU,IAAI,QAAQ;AAC5B,YAAM,WAAW,IAAI,SAAS;AAC9B,YAAM,cAAU,2DAA4B,EAAE,SAAS,YAAY,YAAY,CAAC;AAChF,uBAAiB,QAAQ;AACzB,yBAAQ,KAAK,gBAAgB,OAAO;AACpC,yBAAQ,KAAK,gBAAgB,QAAQ;AACrC;AAAA,QACE;AAAA,YACA,yBAAU,EAAE,uBACV,QAAQ,YAAY,cAAc,eAAe;AAAA,QACnD,QAAQ,YAAY;AAAA,QACpB,CAAC,SAAS,IAAI,SAAS,UAAU,IAAI;AAAA,MACvC,EACG,KAAK,CAAC,eAAe;AACpB,kEAA2B;AAAA,UACzB,aAAa,QAAQ;AAAA,UACrB,mBAAmB,WAAW;AAAA,UAC9B,YAAY,SAAS;AAAA,UACrB,OAAO,IAAI,OAAO;AAAA,UAClB,eAAe,IAAI,QAAQ,GAAG;AAAA,UAC9B,gBAAgB,QAAQ;AAAA,UACxB,iBAAiB,IAAI,SAAS,WAAW;AAAA,UACzC,qBAAqB,WAAW;AAAA,UAChC,sBAAsB;AAAA,QACxB,CAAC;AAAA,MACH,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,sCAAW,qCAAqC,OAAO,KAAK,CAAC,EAAE;AAAA,MACjE,CAAC;AAAA,IACL,SAAS,OAAO;AACd,oCAAW,qCAAqC,OAAO,KAAK,CAAC,EAAE;AAAA,IACjE;AAEA,WAAO,iBAAiB,mBAAQ,KAAK,gBAAgB,IAAI,IAAI,KAAK;AAAA,EACpE;AACF;","names":[]}