apitally 0.25.7 → 1.0.0-alpha.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 (549) hide show
  1. package/README.md +191 -184
  2. package/dist/activation.cjs +371 -0
  3. package/dist/activation.cjs.map +1 -0
  4. package/dist/activation.d.cts +41 -0
  5. package/dist/activation.d.ts +41 -0
  6. package/dist/activation.js +357 -0
  7. package/dist/activation.js.map +1 -0
  8. package/dist/adonisjs/configure.cjs +88 -31
  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 +85 -30
  13. package/dist/adonisjs/configure.js.map +1 -1
  14. package/dist/adonisjs/index.cjs +4 -23
  15. package/dist/adonisjs/index.cjs.map +1 -1
  16. package/dist/adonisjs/index.d.cts +3 -15
  17. package/dist/adonisjs/index.d.ts +3 -15
  18. package/dist/adonisjs/index.js +3 -20
  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 +209 -0
  40. package/dist/config.cjs.map +1 -0
  41. package/dist/config.d.cts +42 -0
  42. package/dist/config.d.ts +42 -0
  43. package/dist/config.js +174 -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 +13 -0
  48. package/dist/consumer.d.ts +13 -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 +29 -0
  54. package/dist/context.d.ts +29 -0
  55. package/dist/context.js +40 -0
  56. package/dist/context.js.map +1 -0
  57. package/dist/elysia/index.cjs +12 -13
  58. package/dist/elysia/index.cjs.map +1 -1
  59. package/dist/elysia/index.d.cts +7 -16
  60. package/dist/elysia/index.d.ts +7 -16
  61. package/dist/elysia/index.js +10 -2
  62. package/dist/elysia/index.js.map +1 -1
  63. package/dist/elysia/middleware.cjs +248 -0
  64. package/dist/elysia/middleware.cjs.map +1 -0
  65. package/dist/elysia/middleware.d.cts +13 -0
  66. package/dist/elysia/middleware.d.ts +13 -0
  67. package/dist/elysia/middleware.js +237 -0
  68. package/dist/elysia/middleware.js.map +1 -0
  69. package/dist/{loggers/index.cjs → elysia/routes.cjs} +16 -19
  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 +75 -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 +49 -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 +6 -10
  96. package/dist/express/index.d.ts +6 -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 +9 -0
  102. package/dist/express/install.d.ts +9 -0
  103. package/dist/express/install.js +21 -0
  104. package/dist/express/install.js.map +1 -0
  105. package/dist/express/middleware.cjs +80 -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 +81 -328
  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 +419 -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 +391 -0
  122. package/dist/express/routes.js.map +1 -0
  123. package/dist/fastify/index.cjs +10 -15
  124. package/dist/fastify/index.cjs.map +1 -1
  125. package/dist/fastify/index.d.cts +6 -11
  126. package/dist/fastify/index.d.ts +6 -11
  127. package/dist/fastify/index.js +9 -3
  128. package/dist/fastify/index.js.map +1 -1
  129. package/dist/{common/logging.cjs → fastify/install.cjs} +15 -16
  130. package/dist/fastify/install.cjs.map +1 -0
  131. package/dist/fastify/install.d.cts +9 -0
  132. package/dist/fastify/install.d.ts +9 -0
  133. package/dist/fastify/install.js +15 -0
  134. package/dist/fastify/install.js.map +1 -0
  135. package/dist/fastify/middleware.cjs +118 -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 +97 -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 +7 -10
  150. package/dist/h3/index.d.ts +7 -10
  151. package/dist/h3/index.js +26 -2
  152. package/dist/h3/index.js.map +1 -1
  153. package/dist/h3/middleware.cjs +204 -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 +188 -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 -14
  166. package/dist/hapi/index.cjs.map +1 -1
  167. package/dist/hapi/index.d.cts +7 -10
  168. package/dist/hapi/index.d.ts +7 -10
  169. package/dist/hapi/index.js +14 -3
  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 +7 -0
  174. package/dist/hapi/install.d.ts +7 -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/hapi/routes.cjs +37 -0
  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 +6 -10
  192. package/dist/hono/index.d.ts +6 -10
  193. package/dist/hono/index.js +13 -2
  194. package/dist/hono/index.js.map +1 -1
  195. package/dist/hono/middleware.cjs +211 -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 +216 -125
  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 +28 -1
  210. package/dist/index.d.ts +28 -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 +6 -10
  216. package/dist/koa/index.d.ts +6 -10
  217. package/dist/koa/index.js +13 -2
  218. package/dist/koa/index.js.map +1 -1
  219. package/dist/koa/middleware.cjs +75 -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 +78 -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 +410 -0
  232. package/dist/logCapture.cjs.map +1 -0
  233. package/dist/logCapture.d.cts +16 -0
  234. package/dist/logCapture.d.ts +16 -0
  235. package/dist/logCapture.js +383 -0
  236. package/dist/logCapture.js.map +1 -0
  237. package/dist/logRecordExporter.cjs +83 -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 +59 -0
  242. package/dist/logRecordExporter.js.map +1 -0
  243. package/dist/logRecordProcessor.cjs +120 -0
  244. package/dist/logRecordProcessor.cjs.map +1 -0
  245. package/dist/logRecordProcessor.d.cts +23 -0
  246. package/dist/logRecordProcessor.d.ts +23 -0
  247. package/dist/logRecordProcessor.js +96 -0
  248. package/dist/logRecordProcessor.js.map +1 -0
  249. package/dist/{otel/index.cjs → logRecordTruncation.cjs} +10 -7
  250. package/dist/logRecordTruncation.cjs.map +1 -0
  251. package/dist/logRecordTruncation.d.cts +6 -0
  252. package/dist/logRecordTruncation.d.ts +6 -0
  253. package/dist/logRecordTruncation.js +8 -0
  254. package/dist/logRecordTruncation.js.map +1 -0
  255. package/dist/logger.cjs +62 -0
  256. package/dist/logger.cjs.map +1 -0
  257. package/dist/logger.d.cts +7 -0
  258. package/dist/logger.d.ts +7 -0
  259. package/dist/logger.js +34 -0
  260. package/dist/logger.js.map +1 -0
  261. package/dist/metrics.cjs +171 -0
  262. package/dist/metrics.cjs.map +1 -0
  263. package/dist/metrics.d.cts +24 -0
  264. package/dist/metrics.d.ts +24 -0
  265. package/dist/metrics.js +153 -0
  266. package/dist/metrics.js.map +1 -0
  267. package/dist/nestjs/index.cjs +61 -71
  268. package/dist/nestjs/index.cjs.map +1 -1
  269. package/dist/nestjs/index.d.cts +3 -11
  270. package/dist/nestjs/index.d.ts +3 -11
  271. package/dist/nestjs/index.js +61 -61
  272. package/dist/nestjs/index.js.map +1 -1
  273. package/dist/packageVersion.cjs +67 -0
  274. package/dist/packageVersion.cjs.map +1 -0
  275. package/dist/packageVersion.d.cts +5 -0
  276. package/dist/packageVersion.d.ts +5 -0
  277. package/dist/packageVersion.js +39 -0
  278. package/dist/packageVersion.js.map +1 -0
  279. package/dist/providers.cjs +149 -0
  280. package/dist/providers.cjs.map +1 -0
  281. package/dist/providers.d.cts +15 -0
  282. package/dist/providers.d.ts +15 -0
  283. package/dist/providers.js +136 -0
  284. package/dist/providers.js.map +1 -0
  285. package/dist/redaction.cjs +116 -0
  286. package/dist/redaction.cjs.map +1 -0
  287. package/dist/redaction.d.cts +17 -0
  288. package/dist/redaction.d.ts +17 -0
  289. package/dist/redaction.js +98 -0
  290. package/dist/redaction.js.map +1 -0
  291. package/dist/{common/packageVersions.cjs → requestAttributes.cjs} +21 -19
  292. package/dist/requestAttributes.cjs.map +1 -0
  293. package/dist/requestAttributes.d.cts +8 -0
  294. package/dist/requestAttributes.d.ts +8 -0
  295. package/dist/requestAttributes.js +22 -0
  296. package/dist/requestAttributes.js.map +1 -0
  297. package/dist/requestObservation.cjs +228 -0
  298. package/dist/requestObservation.cjs.map +1 -0
  299. package/dist/requestObservation.d.cts +60 -0
  300. package/dist/requestObservation.d.ts +60 -0
  301. package/dist/requestObservation.js +208 -0
  302. package/dist/requestObservation.js.map +1 -0
  303. package/dist/requestObservationNode.cjs +193 -0
  304. package/dist/requestObservationNode.cjs.map +1 -0
  305. package/dist/requestObservationNode.d.cts +29 -0
  306. package/dist/requestObservationNode.d.ts +29 -0
  307. package/dist/requestObservationNode.js +170 -0
  308. package/dist/requestObservationNode.js.map +1 -0
  309. package/dist/requestObservationWeb.cjs +202 -0
  310. package/dist/requestObservationWeb.cjs.map +1 -0
  311. package/dist/requestObservationWeb.d.cts +32 -0
  312. package/dist/requestObservationWeb.d.ts +32 -0
  313. package/dist/requestObservationWeb.js +182 -0
  314. package/dist/requestObservationWeb.js.map +1 -0
  315. package/dist/sentry.cjs +103 -0
  316. package/dist/sentry.cjs.map +1 -0
  317. package/dist/sentry.d.cts +3 -0
  318. package/dist/sentry.d.ts +3 -0
  319. package/dist/sentry.js +79 -0
  320. package/dist/sentry.js.map +1 -0
  321. package/dist/spanExporter.cjs +218 -0
  322. package/dist/spanExporter.cjs.map +1 -0
  323. package/dist/spanExporter.d.cts +33 -0
  324. package/dist/spanExporter.d.ts +33 -0
  325. package/dist/spanExporter.js +194 -0
  326. package/dist/spanExporter.js.map +1 -0
  327. package/dist/spanProcessor.cjs +523 -0
  328. package/dist/spanProcessor.cjs.map +1 -0
  329. package/dist/spanProcessor.d.cts +67 -0
  330. package/dist/spanProcessor.d.ts +67 -0
  331. package/dist/spanProcessor.js +501 -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 +93 -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 +68 -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/package.json +113 -155
  352. package/dist/common/client.cjs +0 -335
  353. package/dist/common/client.cjs.map +0 -1
  354. package/dist/common/client.d.cts +0 -50
  355. package/dist/common/client.d.ts +0 -50
  356. package/dist/common/client.js +0 -302
  357. package/dist/common/client.js.map +0 -1
  358. package/dist/common/consumerRegistry.cjs +0 -84
  359. package/dist/common/consumerRegistry.cjs.map +0 -1
  360. package/dist/common/consumerRegistry.d.cts +0 -20
  361. package/dist/common/consumerRegistry.d.ts +0 -20
  362. package/dist/common/consumerRegistry.js +0 -61
  363. package/dist/common/consumerRegistry.js.map +0 -1
  364. package/dist/common/headers.cjs +0 -55
  365. package/dist/common/headers.cjs.map +0 -1
  366. package/dist/common/headers.d.cts +0 -6
  367. package/dist/common/headers.d.ts +0 -6
  368. package/dist/common/headers.js +0 -31
  369. package/dist/common/headers.js.map +0 -1
  370. package/dist/common/instance.cjs +0 -158
  371. package/dist/common/instance.cjs.map +0 -1
  372. package/dist/common/instance.d.cts +0 -4
  373. package/dist/common/instance.d.ts +0 -4
  374. package/dist/common/instance.js +0 -134
  375. package/dist/common/instance.js.map +0 -1
  376. package/dist/common/logging.cjs.map +0 -1
  377. package/dist/common/logging.d.cts +0 -11
  378. package/dist/common/logging.d.ts +0 -11
  379. package/dist/common/logging.js +0 -17
  380. package/dist/common/logging.js.map +0 -1
  381. package/dist/common/packageVersions.cjs.map +0 -1
  382. package/dist/common/packageVersions.d.cts +0 -3
  383. package/dist/common/packageVersions.d.ts +0 -3
  384. package/dist/common/packageVersions.js +0 -21
  385. package/dist/common/packageVersions.js.map +0 -1
  386. package/dist/common/paramValidation.cjs.map +0 -1
  387. package/dist/common/paramValidation.d.cts +0 -4
  388. package/dist/common/paramValidation.d.ts +0 -4
  389. package/dist/common/paramValidation.js +0 -17
  390. package/dist/common/paramValidation.js.map +0 -1
  391. package/dist/common/requestCounter.cjs +0 -109
  392. package/dist/common/requestCounter.cjs.map +0 -1
  393. package/dist/common/requestCounter.d.cts +0 -24
  394. package/dist/common/requestCounter.d.ts +0 -24
  395. package/dist/common/requestCounter.js +0 -90
  396. package/dist/common/requestCounter.js.map +0 -1
  397. package/dist/common/requestLogger.cjs +0 -541
  398. package/dist/common/requestLogger.cjs.map +0 -1
  399. package/dist/common/requestLogger.d.cts +0 -85
  400. package/dist/common/requestLogger.d.ts +0 -85
  401. package/dist/common/requestLogger.js +0 -507
  402. package/dist/common/requestLogger.js.map +0 -1
  403. package/dist/common/resources.cjs +0 -49
  404. package/dist/common/resources.cjs.map +0 -1
  405. package/dist/common/resources.d.cts +0 -6
  406. package/dist/common/resources.d.ts +0 -6
  407. package/dist/common/resources.js +0 -26
  408. package/dist/common/resources.js.map +0 -1
  409. package/dist/common/response.cjs +0 -104
  410. package/dist/common/response.cjs.map +0 -1
  411. package/dist/common/response.d.cts +0 -15
  412. package/dist/common/response.d.ts +0 -15
  413. package/dist/common/response.js +0 -80
  414. package/dist/common/response.js.map +0 -1
  415. package/dist/common/sentry.cjs +0 -56
  416. package/dist/common/sentry.cjs.map +0 -1
  417. package/dist/common/sentry.d.cts +0 -6
  418. package/dist/common/sentry.d.ts +0 -6
  419. package/dist/common/sentry.js +0 -23
  420. package/dist/common/sentry.js.map +0 -1
  421. package/dist/common/serverErrorCounter.cjs +0 -121
  422. package/dist/common/serverErrorCounter.cjs.map +0 -1
  423. package/dist/common/serverErrorCounter.d.cts +0 -23
  424. package/dist/common/serverErrorCounter.d.ts +0 -23
  425. package/dist/common/serverErrorCounter.js +0 -97
  426. package/dist/common/serverErrorCounter.js.map +0 -1
  427. package/dist/common/spanCollector.cjs +0 -199
  428. package/dist/common/spanCollector.cjs.map +0 -1
  429. package/dist/common/spanCollector.d.cts +0 -45
  430. package/dist/common/spanCollector.d.ts +0 -45
  431. package/dist/common/spanCollector.js +0 -176
  432. package/dist/common/spanCollector.js.map +0 -1
  433. package/dist/common/tempGzipFile.cjs +0 -125
  434. package/dist/common/tempGzipFile.cjs.map +0 -1
  435. package/dist/common/tempGzipFile.d.cts +0 -19
  436. package/dist/common/tempGzipFile.d.ts +0 -19
  437. package/dist/common/tempGzipFile.js +0 -102
  438. package/dist/common/tempGzipFile.js.map +0 -1
  439. package/dist/common/types.cjs +0 -17
  440. package/dist/common/types.cjs.map +0 -1
  441. package/dist/common/types.d.cts +0 -95
  442. package/dist/common/types.d.ts +0 -95
  443. package/dist/common/types.js +0 -1
  444. package/dist/common/types.js.map +0 -1
  445. package/dist/common/validationErrorCounter.cjs +0 -74
  446. package/dist/common/validationErrorCounter.cjs.map +0 -1
  447. package/dist/common/validationErrorCounter.d.cts +0 -20
  448. package/dist/common/validationErrorCounter.d.ts +0 -20
  449. package/dist/common/validationErrorCounter.js +0 -55
  450. package/dist/common/validationErrorCounter.js.map +0 -1
  451. package/dist/elysia/plugin.cjs +0 -237
  452. package/dist/elysia/plugin.cjs.map +0 -1
  453. package/dist/elysia/plugin.d.cts +0 -70
  454. package/dist/elysia/plugin.d.ts +0 -70
  455. package/dist/elysia/plugin.js +0 -218
  456. package/dist/elysia/plugin.js.map +0 -1
  457. package/dist/elysia/utils.cjs +0 -77
  458. package/dist/elysia/utils.cjs.map +0 -1
  459. package/dist/elysia/utils.d.cts +0 -14
  460. package/dist/elysia/utils.d.ts +0 -14
  461. package/dist/elysia/utils.js +0 -54
  462. package/dist/elysia/utils.js.map +0 -1
  463. package/dist/express/utils.cjs +0 -217
  464. package/dist/express/utils.cjs.map +0 -1
  465. package/dist/express/utils.d.cts +0 -37
  466. package/dist/express/utils.d.ts +0 -37
  467. package/dist/express/utils.js +0 -189
  468. package/dist/express/utils.js.map +0 -1
  469. package/dist/fastify/plugin.cjs +0 -316
  470. package/dist/fastify/plugin.cjs.map +0 -1
  471. package/dist/fastify/plugin.d.cts +0 -34
  472. package/dist/fastify/plugin.d.ts +0 -34
  473. package/dist/fastify/plugin.js +0 -282
  474. package/dist/fastify/plugin.js.map +0 -1
  475. package/dist/h3/plugin.cjs +0 -183
  476. package/dist/h3/plugin.cjs.map +0 -1
  477. package/dist/h3/plugin.d.cts +0 -27
  478. package/dist/h3/plugin.d.ts +0 -27
  479. package/dist/h3/plugin.js +0 -159
  480. package/dist/h3/plugin.js.map +0 -1
  481. package/dist/h3/utils.cjs +0 -77
  482. package/dist/h3/utils.cjs.map +0 -1
  483. package/dist/h3/utils.d.cts +0 -14
  484. package/dist/h3/utils.d.ts +0 -14
  485. package/dist/h3/utils.js +0 -54
  486. package/dist/h3/utils.js.map +0 -1
  487. package/dist/hapi/plugin.cjs +0 -210
  488. package/dist/hapi/plugin.cjs.map +0 -1
  489. package/dist/hapi/plugin.d.cts +0 -40
  490. package/dist/hapi/plugin.d.ts +0 -40
  491. package/dist/hapi/plugin.js +0 -187
  492. package/dist/hapi/plugin.js.map +0 -1
  493. package/dist/hapi/utils.cjs +0 -77
  494. package/dist/hapi/utils.cjs.map +0 -1
  495. package/dist/hapi/utils.d.cts +0 -16
  496. package/dist/hapi/utils.d.ts +0 -16
  497. package/dist/hapi/utils.js +0 -53
  498. package/dist/hapi/utils.js.map +0 -1
  499. package/dist/hono/utils.cjs +0 -113
  500. package/dist/hono/utils.cjs.map +0 -1
  501. package/dist/hono/utils.d.cts +0 -16
  502. package/dist/hono/utils.d.ts +0 -16
  503. package/dist/hono/utils.js +0 -88
  504. package/dist/hono/utils.js.map +0 -1
  505. package/dist/loggers/console.cjs +0 -67
  506. package/dist/loggers/console.cjs.map +0 -1
  507. package/dist/loggers/console.d.cts +0 -11
  508. package/dist/loggers/console.d.ts +0 -11
  509. package/dist/loggers/console.js +0 -44
  510. package/dist/loggers/console.js.map +0 -1
  511. package/dist/loggers/hapi.cjs.map +0 -1
  512. package/dist/loggers/hapi.d.cts +0 -12
  513. package/dist/loggers/hapi.d.ts +0 -12
  514. package/dist/loggers/hapi.js +0 -29
  515. package/dist/loggers/hapi.js.map +0 -1
  516. package/dist/loggers/index.cjs.map +0 -1
  517. package/dist/loggers/index.d.cts +0 -13
  518. package/dist/loggers/index.d.ts +0 -13
  519. package/dist/loggers/index.js +0 -13
  520. package/dist/loggers/index.js.map +0 -1
  521. package/dist/loggers/nestjs.cjs +0 -104
  522. package/dist/loggers/nestjs.cjs.map +0 -1
  523. package/dist/loggers/nestjs.d.cts +0 -11
  524. package/dist/loggers/nestjs.d.ts +0 -11
  525. package/dist/loggers/nestjs.js +0 -71
  526. package/dist/loggers/nestjs.js.map +0 -1
  527. package/dist/loggers/pino.cjs +0 -152
  528. package/dist/loggers/pino.cjs.map +0 -1
  529. package/dist/loggers/pino.d.cts +0 -11
  530. package/dist/loggers/pino.d.ts +0 -11
  531. package/dist/loggers/pino.js +0 -119
  532. package/dist/loggers/pino.js.map +0 -1
  533. package/dist/loggers/utils.cjs +0 -64
  534. package/dist/loggers/utils.cjs.map +0 -1
  535. package/dist/loggers/utils.d.cts +0 -6
  536. package/dist/loggers/utils.d.ts +0 -6
  537. package/dist/loggers/utils.js +0 -40
  538. package/dist/loggers/utils.js.map +0 -1
  539. package/dist/loggers/winston.cjs +0 -101
  540. package/dist/loggers/winston.cjs.map +0 -1
  541. package/dist/loggers/winston.d.cts +0 -11
  542. package/dist/loggers/winston.d.ts +0 -11
  543. package/dist/loggers/winston.js +0 -68
  544. package/dist/loggers/winston.js.map +0 -1
  545. package/dist/otel/index.cjs.map +0 -1
  546. package/dist/otel/index.d.cts +0 -2
  547. package/dist/otel/index.d.ts +0 -2
  548. package/dist/otel/index.js +0 -5
  549. package/dist/otel/index.js.map +0 -1
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var redaction_exports = {};
20
+ __export(redaction_exports, {
21
+ REDACTED: () => REDACTED,
22
+ Redaction: () => Redaction
23
+ });
24
+ module.exports = __toCommonJS(redaction_exports);
25
+ var import_config = require('./config.cjs');
26
+ const REDACTED = "[REDACTED]";
27
+ const URL_HEADER_NAMES = /* @__PURE__ */ new Set(["location", "content-location"]);
28
+ const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
29
+ class Redaction {
30
+ queryParamPatterns;
31
+ headerPatterns;
32
+ bodyFieldPatterns;
33
+ constructor() {
34
+ const config = (0, import_config.getConfig)();
35
+ this.queryParamPatterns = (0, import_config.compilePatterns)(import_config.DEFAULT_MASK_QUERY_PARAMS, config.maskQueryParams);
36
+ this.headerPatterns = (0, import_config.compilePatterns)(import_config.DEFAULT_MASK_HEADERS, config.maskHeaders);
37
+ this.bodyFieldPatterns = (0, import_config.compilePatterns)(import_config.DEFAULT_MASK_BODY_FIELDS, config.maskBodyFields);
38
+ }
39
+ // Redacts matching parameter names in a path with a query, a full URL, or a
40
+ // bare query string when `assumeQuery` is true.
41
+ redactQueryParams(value, assumeQuery = true) {
42
+ const separatorIndex = value.indexOf("?");
43
+ if (separatorIndex === -1 && !assumeQuery) {
44
+ return value;
45
+ }
46
+ const base = separatorIndex === -1 ? "" : value.slice(0, separatorIndex);
47
+ const query = separatorIndex === -1 ? value : value.slice(separatorIndex + 1);
48
+ const redactedParams = new URLSearchParams();
49
+ for (const [name, paramValue] of new URLSearchParams(query)) {
50
+ redactedParams.append(name, this.shouldRedactQueryParam(name) ? REDACTED : paramValue);
51
+ }
52
+ return separatorIndex === -1 ? redactedParams.toString() : `${base}?${redactedParams.toString()}`;
53
+ }
54
+ redactHeaderValue(name, value) {
55
+ if (this.shouldRedactHeader(name)) {
56
+ return Array.isArray(value) ? [REDACTED] : REDACTED;
57
+ }
58
+ if (!URL_HEADER_NAMES.has(name.toLowerCase())) {
59
+ return value;
60
+ }
61
+ if (typeof value === "string") {
62
+ return this.redactQueryParams(value, false);
63
+ }
64
+ if (Array.isArray(value)) {
65
+ return value.map(
66
+ (item) => typeof item === "string" ? this.redactQueryParams(item, false) : item
67
+ );
68
+ }
69
+ return value;
70
+ }
71
+ // Whether a body is JSON is decided by a parse attempt, never by content type.
72
+ redactBody(body) {
73
+ let text;
74
+ try {
75
+ text = utf8Decoder.decode(body);
76
+ } catch {
77
+ return body;
78
+ }
79
+ let data;
80
+ try {
81
+ data = JSON.parse(text);
82
+ } catch {
83
+ return text;
84
+ }
85
+ return JSON.stringify(this.redactBodyFields(data));
86
+ }
87
+ shouldRedactHeader(name) {
88
+ return (0, import_config.matchesAny)(this.headerPatterns, name) || (0, import_config.matchesAny)(this.headerPatterns, name.replaceAll("_", "-"));
89
+ }
90
+ shouldRedactQueryParam(name) {
91
+ return (0, import_config.matchesAny)(this.queryParamPatterns, name);
92
+ }
93
+ shouldRedactBodyField(name) {
94
+ return (0, import_config.matchesAny)(this.bodyFieldPatterns, name);
95
+ }
96
+ redactBodyFields(data) {
97
+ if (Array.isArray(data)) {
98
+ return data.map((item) => this.redactBodyFields(item));
99
+ }
100
+ if (typeof data === "object" && data !== null) {
101
+ return Object.fromEntries(
102
+ Object.entries(data).map(([key, value]) => [
103
+ key,
104
+ typeof value === "string" && this.shouldRedactBodyField(key) ? REDACTED : this.redactBodyFields(value)
105
+ ])
106
+ );
107
+ }
108
+ return data;
109
+ }
110
+ }
111
+ // Annotate the CommonJS export names for ESM import in node:
112
+ 0 && (module.exports = {
113
+ REDACTED,
114
+ Redaction
115
+ });
116
+ //# sourceMappingURL=redaction.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/redaction.ts"],"sourcesContent":["import {\n compilePatterns,\n DEFAULT_MASK_BODY_FIELDS,\n DEFAULT_MASK_HEADERS,\n DEFAULT_MASK_QUERY_PARAMS,\n getConfig,\n matchesAny,\n} from \"./config.js\";\n\nexport const REDACTED = \"[REDACTED]\";\n\n// Location headers can contain secret query values, so redaction targets only\n// their query parameters.\nconst URL_HEADER_NAMES = new Set([\"location\", \"content-location\"]);\n\nconst utf8Decoder = new TextDecoder(\"utf-8\", { fatal: true });\n\ntype JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\n\nexport class Redaction {\n private queryParamPatterns: RegExp[];\n private headerPatterns: RegExp[];\n private bodyFieldPatterns: RegExp[];\n\n constructor() {\n const config = getConfig();\n this.queryParamPatterns = compilePatterns(DEFAULT_MASK_QUERY_PARAMS, config.maskQueryParams);\n this.headerPatterns = compilePatterns(DEFAULT_MASK_HEADERS, config.maskHeaders);\n this.bodyFieldPatterns = compilePatterns(DEFAULT_MASK_BODY_FIELDS, config.maskBodyFields);\n }\n\n // Redacts matching parameter names in a path with a query, a full URL, or a\n // bare query string when `assumeQuery` is true.\n redactQueryParams(value: string, assumeQuery = true): string {\n const separatorIndex = value.indexOf(\"?\");\n if (separatorIndex === -1 && !assumeQuery) {\n return value;\n }\n const base = separatorIndex === -1 ? \"\" : value.slice(0, separatorIndex);\n const query = separatorIndex === -1 ? value : value.slice(separatorIndex + 1);\n const redactedParams = new URLSearchParams();\n for (const [name, paramValue] of new URLSearchParams(query)) {\n redactedParams.append(name, this.shouldRedactQueryParam(name) ? REDACTED : paramValue);\n }\n return separatorIndex === -1\n ? redactedParams.toString()\n : `${base}?${redactedParams.toString()}`;\n }\n\n redactHeaderValue(name: string, value: string | string[]): string | string[];\n redactHeaderValue(name: string, value: unknown): unknown;\n redactHeaderValue(name: string, value: unknown): unknown {\n if (this.shouldRedactHeader(name)) {\n return Array.isArray(value) ? [REDACTED] : REDACTED;\n }\n if (!URL_HEADER_NAMES.has(name.toLowerCase())) {\n return value;\n }\n if (typeof value === \"string\") {\n return this.redactQueryParams(value, false);\n }\n if (Array.isArray(value)) {\n return value.map((item) =>\n typeof item === \"string\" ? this.redactQueryParams(item, false) : item,\n );\n }\n return value;\n }\n\n // Whether a body is JSON is decided by a parse attempt, never by content type.\n redactBody(body: Buffer): string | Buffer {\n let text: string;\n try {\n text = utf8Decoder.decode(body);\n } catch {\n return body;\n }\n let data: JsonValue;\n try {\n data = JSON.parse(text);\n } catch {\n return text;\n }\n return JSON.stringify(this.redactBodyFields(data));\n }\n\n private shouldRedactHeader(name: string): boolean {\n // OpenTelemetry HTTP header attributes normalize hyphens to underscores.\n return (\n matchesAny(this.headerPatterns, name) ||\n matchesAny(this.headerPatterns, name.replaceAll(\"_\", \"-\"))\n );\n }\n\n private shouldRedactQueryParam(name: string): boolean {\n return matchesAny(this.queryParamPatterns, name);\n }\n\n private shouldRedactBodyField(name: string): boolean {\n return matchesAny(this.bodyFieldPatterns, name);\n }\n\n private redactBodyFields(data: JsonValue): JsonValue {\n if (Array.isArray(data)) {\n return data.map((item) => this.redactBodyFields(item));\n }\n if (typeof data === \"object\" && data !== null) {\n return Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n key,\n typeof value === \"string\" && this.shouldRedactBodyField(key)\n ? REDACTED\n : this.redactBodyFields(value),\n ]),\n );\n }\n return data;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,17 @@
1
+ declare const REDACTED = "[REDACTED]";
2
+ declare class Redaction {
3
+ private queryParamPatterns;
4
+ private headerPatterns;
5
+ private bodyFieldPatterns;
6
+ constructor();
7
+ redactQueryParams(value: string, assumeQuery?: boolean): string;
8
+ redactHeaderValue(name: string, value: string | string[]): string | string[];
9
+ redactHeaderValue(name: string, value: unknown): unknown;
10
+ redactBody(body: Buffer): string | Buffer;
11
+ private shouldRedactHeader;
12
+ private shouldRedactQueryParam;
13
+ private shouldRedactBodyField;
14
+ private redactBodyFields;
15
+ }
16
+
17
+ export { REDACTED, Redaction };
@@ -0,0 +1,17 @@
1
+ declare const REDACTED = "[REDACTED]";
2
+ declare class Redaction {
3
+ private queryParamPatterns;
4
+ private headerPatterns;
5
+ private bodyFieldPatterns;
6
+ constructor();
7
+ redactQueryParams(value: string, assumeQuery?: boolean): string;
8
+ redactHeaderValue(name: string, value: string | string[]): string | string[];
9
+ redactHeaderValue(name: string, value: unknown): unknown;
10
+ redactBody(body: Buffer): string | Buffer;
11
+ private shouldRedactHeader;
12
+ private shouldRedactQueryParam;
13
+ private shouldRedactBodyField;
14
+ private redactBodyFields;
15
+ }
16
+
17
+ export { REDACTED, Redaction };
@@ -0,0 +1,98 @@
1
+ import {
2
+ compilePatterns,
3
+ DEFAULT_MASK_BODY_FIELDS,
4
+ DEFAULT_MASK_HEADERS,
5
+ DEFAULT_MASK_QUERY_PARAMS,
6
+ getConfig,
7
+ matchesAny
8
+ } from "./config.js";
9
+ const REDACTED = "[REDACTED]";
10
+ const URL_HEADER_NAMES = /* @__PURE__ */ new Set(["location", "content-location"]);
11
+ const utf8Decoder = new TextDecoder("utf-8", { fatal: true });
12
+ class Redaction {
13
+ queryParamPatterns;
14
+ headerPatterns;
15
+ bodyFieldPatterns;
16
+ constructor() {
17
+ const config = getConfig();
18
+ this.queryParamPatterns = compilePatterns(DEFAULT_MASK_QUERY_PARAMS, config.maskQueryParams);
19
+ this.headerPatterns = compilePatterns(DEFAULT_MASK_HEADERS, config.maskHeaders);
20
+ this.bodyFieldPatterns = compilePatterns(DEFAULT_MASK_BODY_FIELDS, config.maskBodyFields);
21
+ }
22
+ // Redacts matching parameter names in a path with a query, a full URL, or a
23
+ // bare query string when `assumeQuery` is true.
24
+ redactQueryParams(value, assumeQuery = true) {
25
+ const separatorIndex = value.indexOf("?");
26
+ if (separatorIndex === -1 && !assumeQuery) {
27
+ return value;
28
+ }
29
+ const base = separatorIndex === -1 ? "" : value.slice(0, separatorIndex);
30
+ const query = separatorIndex === -1 ? value : value.slice(separatorIndex + 1);
31
+ const redactedParams = new URLSearchParams();
32
+ for (const [name, paramValue] of new URLSearchParams(query)) {
33
+ redactedParams.append(name, this.shouldRedactQueryParam(name) ? REDACTED : paramValue);
34
+ }
35
+ return separatorIndex === -1 ? redactedParams.toString() : `${base}?${redactedParams.toString()}`;
36
+ }
37
+ redactHeaderValue(name, value) {
38
+ if (this.shouldRedactHeader(name)) {
39
+ return Array.isArray(value) ? [REDACTED] : REDACTED;
40
+ }
41
+ if (!URL_HEADER_NAMES.has(name.toLowerCase())) {
42
+ return value;
43
+ }
44
+ if (typeof value === "string") {
45
+ return this.redactQueryParams(value, false);
46
+ }
47
+ if (Array.isArray(value)) {
48
+ return value.map(
49
+ (item) => typeof item === "string" ? this.redactQueryParams(item, false) : item
50
+ );
51
+ }
52
+ return value;
53
+ }
54
+ // Whether a body is JSON is decided by a parse attempt, never by content type.
55
+ redactBody(body) {
56
+ let text;
57
+ try {
58
+ text = utf8Decoder.decode(body);
59
+ } catch {
60
+ return body;
61
+ }
62
+ let data;
63
+ try {
64
+ data = JSON.parse(text);
65
+ } catch {
66
+ return text;
67
+ }
68
+ return JSON.stringify(this.redactBodyFields(data));
69
+ }
70
+ shouldRedactHeader(name) {
71
+ return matchesAny(this.headerPatterns, name) || matchesAny(this.headerPatterns, name.replaceAll("_", "-"));
72
+ }
73
+ shouldRedactQueryParam(name) {
74
+ return matchesAny(this.queryParamPatterns, name);
75
+ }
76
+ shouldRedactBodyField(name) {
77
+ return matchesAny(this.bodyFieldPatterns, name);
78
+ }
79
+ redactBodyFields(data) {
80
+ if (Array.isArray(data)) {
81
+ return data.map((item) => this.redactBodyFields(item));
82
+ }
83
+ if (typeof data === "object" && data !== null) {
84
+ return Object.fromEntries(
85
+ Object.entries(data).map(([key, value]) => [
86
+ key,
87
+ typeof value === "string" && this.shouldRedactBodyField(key) ? REDACTED : this.redactBodyFields(value)
88
+ ])
89
+ );
90
+ }
91
+ return data;
92
+ }
93
+ }
94
+ export {
95
+ REDACTED,
96
+ Redaction
97
+ };
98
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/redaction.ts"],"sourcesContent":["import {\n compilePatterns,\n DEFAULT_MASK_BODY_FIELDS,\n DEFAULT_MASK_HEADERS,\n DEFAULT_MASK_QUERY_PARAMS,\n getConfig,\n matchesAny,\n} from \"./config.js\";\n\nexport const REDACTED = \"[REDACTED]\";\n\n// Location headers can contain secret query values, so redaction targets only\n// their query parameters.\nconst URL_HEADER_NAMES = new Set([\"location\", \"content-location\"]);\n\nconst utf8Decoder = new TextDecoder(\"utf-8\", { fatal: true });\n\ntype JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };\n\nexport class Redaction {\n private queryParamPatterns: RegExp[];\n private headerPatterns: RegExp[];\n private bodyFieldPatterns: RegExp[];\n\n constructor() {\n const config = getConfig();\n this.queryParamPatterns = compilePatterns(DEFAULT_MASK_QUERY_PARAMS, config.maskQueryParams);\n this.headerPatterns = compilePatterns(DEFAULT_MASK_HEADERS, config.maskHeaders);\n this.bodyFieldPatterns = compilePatterns(DEFAULT_MASK_BODY_FIELDS, config.maskBodyFields);\n }\n\n // Redacts matching parameter names in a path with a query, a full URL, or a\n // bare query string when `assumeQuery` is true.\n redactQueryParams(value: string, assumeQuery = true): string {\n const separatorIndex = value.indexOf(\"?\");\n if (separatorIndex === -1 && !assumeQuery) {\n return value;\n }\n const base = separatorIndex === -1 ? \"\" : value.slice(0, separatorIndex);\n const query = separatorIndex === -1 ? value : value.slice(separatorIndex + 1);\n const redactedParams = new URLSearchParams();\n for (const [name, paramValue] of new URLSearchParams(query)) {\n redactedParams.append(name, this.shouldRedactQueryParam(name) ? REDACTED : paramValue);\n }\n return separatorIndex === -1\n ? redactedParams.toString()\n : `${base}?${redactedParams.toString()}`;\n }\n\n redactHeaderValue(name: string, value: string | string[]): string | string[];\n redactHeaderValue(name: string, value: unknown): unknown;\n redactHeaderValue(name: string, value: unknown): unknown {\n if (this.shouldRedactHeader(name)) {\n return Array.isArray(value) ? [REDACTED] : REDACTED;\n }\n if (!URL_HEADER_NAMES.has(name.toLowerCase())) {\n return value;\n }\n if (typeof value === \"string\") {\n return this.redactQueryParams(value, false);\n }\n if (Array.isArray(value)) {\n return value.map((item) =>\n typeof item === \"string\" ? this.redactQueryParams(item, false) : item,\n );\n }\n return value;\n }\n\n // Whether a body is JSON is decided by a parse attempt, never by content type.\n redactBody(body: Buffer): string | Buffer {\n let text: string;\n try {\n text = utf8Decoder.decode(body);\n } catch {\n return body;\n }\n let data: JsonValue;\n try {\n data = JSON.parse(text);\n } catch {\n return text;\n }\n return JSON.stringify(this.redactBodyFields(data));\n }\n\n private shouldRedactHeader(name: string): boolean {\n // OpenTelemetry HTTP header attributes normalize hyphens to underscores.\n return (\n matchesAny(this.headerPatterns, name) ||\n matchesAny(this.headerPatterns, name.replaceAll(\"_\", \"-\"))\n );\n }\n\n private shouldRedactQueryParam(name: string): boolean {\n return matchesAny(this.queryParamPatterns, name);\n }\n\n private shouldRedactBodyField(name: string): boolean {\n return matchesAny(this.bodyFieldPatterns, name);\n }\n\n private redactBodyFields(data: JsonValue): JsonValue {\n if (Array.isArray(data)) {\n return data.map((item) => this.redactBodyFields(item));\n }\n if (typeof data === \"object\" && data !== null) {\n return Object.fromEntries(\n Object.entries(data).map(([key, value]) => [\n key,\n typeof value === \"string\" && this.shouldRedactBodyField(key)\n ? REDACTED\n : this.redactBodyFields(value),\n ]),\n );\n }\n return data;\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 });
@@ -17,29 +16,32 @@ var __copyProps = (to, from, except, desc) => {
17
16
  return to;
18
17
  };
19
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var packageVersions_exports = {};
21
- __export(packageVersions_exports, {
22
- getPackageVersion: () => getPackageVersion
19
+ var requestAttributes_exports = {};
20
+ __export(requestAttributes_exports, {
21
+ setRequestAttribute: () => setRequestAttribute,
22
+ writeRequestAttribute: () => writeRequestAttribute
23
23
  });
24
- module.exports = __toCommonJS(packageVersions_exports);
25
- const import_meta = {};
26
- var import_node_module = require("node:module");
27
- function getPackageVersion(name) {
28
- const packageJsonPath = `${name}/package.json`;
24
+ module.exports = __toCommonJS(requestAttributes_exports);
25
+ var import_context = require('./context.cjs');
26
+ var import_logger = require('./logger.cjs');
27
+ function setRequestAttribute(key, value) {
29
28
  try {
30
- return require(packageJsonPath).version || null;
29
+ writeRequestAttribute((0, import_context.getServerSpan)(), (0, import_context.getRequestRecord)(), key, value);
31
30
  } catch (error) {
32
- try {
33
- const _require = (0, import_node_module.createRequire)(import_meta.url);
34
- return _require(packageJsonPath).version || null;
35
- } catch (error2) {
36
- return null;
37
- }
31
+ (0, import_logger.logDebug)(`Error setting request attribute: ${String(error)}`);
32
+ }
33
+ }
34
+ function writeRequestAttribute(span, record, key, value) {
35
+ if (span?.isRecording()) {
36
+ span.setAttribute(key, value);
37
+ }
38
+ if (record) {
39
+ record.attributes[key] = value;
38
40
  }
39
41
  }
40
- __name(getPackageVersion, "getPackageVersion");
41
42
  // Annotate the CommonJS export names for ESM import in node:
42
43
  0 && (module.exports = {
43
- getPackageVersion
44
+ setRequestAttribute,
45
+ writeRequestAttribute
44
46
  });
45
- //# sourceMappingURL=packageVersions.cjs.map
47
+ //# sourceMappingURL=requestAttributes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/requestAttributes.ts"],"sourcesContent":["import type { AttributeValue, Span } from \"@opentelemetry/api\";\nimport { getRequestRecord, getServerSpan, type RequestRecord } from \"./context.js\";\nimport { logDebug } from \"./logger.js\";\n\nexport function setRequestAttribute(key: string, value: AttributeValue): void {\n try {\n writeRequestAttribute(getServerSpan(), getRequestRecord(), key, value);\n } catch (error) {\n logDebug(`Error setting request attribute: ${String(error)}`);\n }\n}\n\n// Mirroring attributes into the request record preserves values learned after\n// the live span stops recording.\nexport function writeRequestAttribute(\n span: Span | undefined,\n record: RequestRecord | undefined,\n key: string,\n value: AttributeValue,\n): void {\n if (span?.isRecording()) {\n span.setAttribute(key, value);\n }\n if (record) {\n record.attributes[key] = value;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAoE;AACpE,oBAAyB;AAElB,SAAS,oBAAoB,KAAa,OAA6B;AAC5E,MAAI;AACF,8BAAsB,8BAAc,OAAG,iCAAiB,GAAG,KAAK,KAAK;AAAA,EACvE,SAAS,OAAO;AACd,gCAAS,oCAAoC,OAAO,KAAK,CAAC,EAAE;AAAA,EAC9D;AACF;AAIO,SAAS,sBACd,MACA,QACA,KACA,OACM;AACN,MAAI,MAAM,YAAY,GAAG;AACvB,SAAK,aAAa,KAAK,KAAK;AAAA,EAC9B;AACA,MAAI,QAAQ;AACV,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AACF;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { AttributeValue, Span } from '@opentelemetry/api';
2
+ import { RequestRecord } from './context.cjs';
3
+ import '@opentelemetry/core';
4
+
5
+ declare function setRequestAttribute(key: string, value: AttributeValue): void;
6
+ declare function writeRequestAttribute(span: Span | undefined, record: RequestRecord | undefined, key: string, value: AttributeValue): void;
7
+
8
+ export { setRequestAttribute, writeRequestAttribute };
@@ -0,0 +1,8 @@
1
+ import { AttributeValue, Span } from '@opentelemetry/api';
2
+ import { RequestRecord } from './context.js';
3
+ import '@opentelemetry/core';
4
+
5
+ declare function setRequestAttribute(key: string, value: AttributeValue): void;
6
+ declare function writeRequestAttribute(span: Span | undefined, record: RequestRecord | undefined, key: string, value: AttributeValue): void;
7
+
8
+ export { setRequestAttribute, writeRequestAttribute };
@@ -0,0 +1,22 @@
1
+ import { getRequestRecord, getServerSpan } from "./context.js";
2
+ import { logDebug } from "./logger.js";
3
+ function setRequestAttribute(key, value) {
4
+ try {
5
+ writeRequestAttribute(getServerSpan(), getRequestRecord(), key, value);
6
+ } catch (error) {
7
+ logDebug(`Error setting request attribute: ${String(error)}`);
8
+ }
9
+ }
10
+ function writeRequestAttribute(span, record, key, value) {
11
+ if (span?.isRecording()) {
12
+ span.setAttribute(key, value);
13
+ }
14
+ if (record) {
15
+ record.attributes[key] = value;
16
+ }
17
+ }
18
+ export {
19
+ setRequestAttribute,
20
+ writeRequestAttribute
21
+ };
22
+ //# sourceMappingURL=requestAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/requestAttributes.ts"],"sourcesContent":["import type { AttributeValue, Span } from \"@opentelemetry/api\";\nimport { getRequestRecord, getServerSpan, type RequestRecord } from \"./context.js\";\nimport { logDebug } from \"./logger.js\";\n\nexport function setRequestAttribute(key: string, value: AttributeValue): void {\n try {\n writeRequestAttribute(getServerSpan(), getRequestRecord(), key, value);\n } catch (error) {\n logDebug(`Error setting request attribute: ${String(error)}`);\n }\n}\n\n// Mirroring attributes into the request record preserves values learned after\n// the live span stops recording.\nexport function writeRequestAttribute(\n span: Span | undefined,\n record: RequestRecord | undefined,\n key: string,\n value: AttributeValue,\n): void {\n if (span?.isRecording()) {\n span.setAttribute(key, value);\n }\n if (record) {\n record.attributes[key] = value;\n }\n}\n"],"mappings":"AACA,SAAS,kBAAkB,qBAAyC;AACpE,SAAS,gBAAgB;AAElB,SAAS,oBAAoB,KAAa,OAA6B;AAC5E,MAAI;AACF,0BAAsB,cAAc,GAAG,iBAAiB,GAAG,KAAK,KAAK;AAAA,EACvE,SAAS,OAAO;AACd,aAAS,oCAAoC,OAAO,KAAK,CAAC,EAAE;AAAA,EAC9D;AACF;AAIO,SAAS,sBACd,MACA,QACA,KACA,OACM;AACN,MAAI,MAAM,YAAY,GAAG;AACvB,SAAK,aAAa,KAAK,KAAK;AAAA,EAC9B;AACA,MAAI,QAAQ;AACV,WAAO,WAAW,GAAG,IAAI;AAAA,EAC3B;AACF;","names":[]}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var requestObservation_exports = {};
20
+ __export(requestObservation_exports, {
21
+ finalizeRequestObservation: () => finalizeRequestObservation,
22
+ finalizeRequestObservationWithError: () => finalizeRequestObservationWithError,
23
+ resolveHttpRequestStartAttributes: () => resolveHttpRequestStartAttributes,
24
+ startRequestObservation: () => startRequestObservation
25
+ });
26
+ module.exports = __toCommonJS(requestObservation_exports);
27
+ var import_api = require("@opentelemetry/api");
28
+ var import_core = require("@opentelemetry/core");
29
+ var import_config = require('./config.cjs');
30
+ var import_context = require('./context.cjs');
31
+ var import_exceptions = require('./exceptions.cjs');
32
+ var import_logger = require('./logger.cjs');
33
+ var import_requestAttributes = require('./requestAttributes.cjs');
34
+ var import_spanProcessor = require('./spanProcessor.cjs');
35
+ function resolveHttpRequestStartAttributes(input) {
36
+ const attributes = { "http.request.method": input.method };
37
+ const optionalAttributes = [
38
+ ["url.path", input.path],
39
+ ["url.query", input.query],
40
+ ["url.scheme", input.scheme],
41
+ ["url.full", input.fullUrl],
42
+ ["server.address", input.serverAddress],
43
+ ["client.address", input.clientAddress],
44
+ ["user_agent.original", input.userAgent],
45
+ ["http.request.body.size", input.requestBodySize]
46
+ ];
47
+ for (const [name, value] of optionalAttributes) {
48
+ if (value !== void 0) {
49
+ attributes[name] = value;
50
+ }
51
+ }
52
+ return attributes;
53
+ }
54
+ function startRequestObservation(options) {
55
+ const {
56
+ activeContext,
57
+ extractedContext,
58
+ tracerName,
59
+ method,
60
+ startAttributes,
61
+ requestBodyCapture
62
+ } = options;
63
+ const requestRecord = { attributes: {} };
64
+ const spanHandle = {};
65
+ const consumerHolder = (0, import_context.getConsumerHolder)(activeContext) ?? {};
66
+ Object.assign(requestRecord.attributes, startAttributes);
67
+ const activeSpan = import_api.trace.getSpan(activeContext);
68
+ const resolveUnavailableSpanDropReason = () => (0, import_spanProcessor.getActiveSpanPipeline)()?.resolveRequestDropReasonBeforeSampling(startAttributes) ?? "sampled-out";
69
+ let requestContext;
70
+ if (activeSpan?.isRecording() && activeSpan.kind === import_api.SpanKind.SERVER) {
71
+ spanHandle.span = activeSpan;
72
+ requestRecord.serverSpanId = activeSpan.spanContext().spanId;
73
+ if ((0, import_spanProcessor.getActiveSpanPipeline)()?.isRequestInFlight(requestRecord.serverSpanId) !== true) {
74
+ requestRecord.dropReason = resolveUnavailableSpanDropReason();
75
+ }
76
+ requestContext = (0, import_context.withRequestHolders)(activeContext, spanHandle, requestRecord, consumerHolder);
77
+ } else if (activeSpan && !activeSpan.isRecording()) {
78
+ requestRecord.dropReason = resolveUnavailableSpanDropReason();
79
+ if (requestRecord.dropReason === "sampled-out") {
80
+ warnAboutNonRecordingServerSpan();
81
+ }
82
+ requestContext = (0, import_context.withRequestHolders)(activeContext, spanHandle, requestRecord, consumerHolder);
83
+ } else {
84
+ requestContext = (0, import_context.withRequestHolders)(
85
+ extractedContext,
86
+ spanHandle,
87
+ requestRecord,
88
+ consumerHolder
89
+ );
90
+ const ownSpan = import_api.trace.getTracer(tracerName).startSpan(method, { kind: import_api.SpanKind.SERVER, attributes: startAttributes }, requestContext);
91
+ if (!ownSpan.isRecording()) {
92
+ requestRecord.dropReason = resolveUnavailableSpanDropReason();
93
+ if (requestRecord.dropReason === "sampled-out") {
94
+ warnAboutNonRecordingServerSpan();
95
+ }
96
+ } else {
97
+ spanHandle.span = ownSpan;
98
+ spanHandle.ownSpan = ownSpan;
99
+ if ((0, import_spanProcessor.isApitallySpanProcessorDeclared)() && requestRecord.serverSpanId === void 0) {
100
+ requestRecord.dropReason = resolveUnavailableSpanDropReason();
101
+ if (requestRecord.dropReason === "sampled-out") {
102
+ warnAboutUnattachedSpanProcessor();
103
+ }
104
+ }
105
+ }
106
+ requestContext = import_api.trace.setSpan(requestContext, ownSpan);
107
+ }
108
+ let rpcMetadata = (0, import_core.getRPCMetadata)(requestContext);
109
+ if (!rpcMetadata && spanHandle.span) {
110
+ rpcMetadata = { type: import_core.RPCType.HTTP, span: spanHandle.span };
111
+ requestContext = (0, import_core.setRPCMetadata)(requestContext, rpcMetadata);
112
+ }
113
+ (0, import_context.attachRequestRecordToRpcMetadata)(rpcMetadata, requestRecord);
114
+ if (requestRecord.dropReason !== void 0) {
115
+ requestBodyCapture.stopBuffering();
116
+ }
117
+ return { requestRecord, requestContext, spanHandle, rpcMetadata };
118
+ }
119
+ function finalizeRequestObservation(options) {
120
+ const { observation, statusCode, route } = options;
121
+ const { requestRecord, spanHandle, rpcMetadata, method } = observation;
122
+ requestRecord.durationSeconds = (options.completedAtMillis - observation.startTimeMillis) / 1e3;
123
+ const { span, ownSpan } = spanHandle;
124
+ if (options.clientAddress !== void 0) {
125
+ (0, import_requestAttributes.writeRequestAttribute)(span, requestRecord, "client.address", options.clientAddress);
126
+ }
127
+ (0, import_requestAttributes.writeRequestAttribute)(span, requestRecord, "http.response.status_code", statusCode);
128
+ const requestBodySize = options.capturedRequestBody?.size;
129
+ if (requestBodySize !== void 0) {
130
+ (0, import_requestAttributes.writeRequestAttribute)(span, requestRecord, "http.request.body.size", requestBodySize);
131
+ }
132
+ const responseBodySize = options.capturedResponseBody?.size;
133
+ if (responseBodySize !== void 0) {
134
+ (0, import_requestAttributes.writeRequestAttribute)(span, requestRecord, "http.response.body.size", responseBodySize);
135
+ }
136
+ if (route !== void 0) {
137
+ (0, import_requestAttributes.writeRequestAttribute)(span, requestRecord, "http.route", route);
138
+ if (rpcMetadata) {
139
+ rpcMetadata.route = route;
140
+ }
141
+ if (ownSpan?.isRecording()) {
142
+ ownSpan.updateName(`${method} ${route}`);
143
+ }
144
+ } else {
145
+ requestRecord.attributes["http.route"] = "";
146
+ }
147
+ if (ownSpan && statusCode >= 500) {
148
+ ownSpan.setStatus({ code: import_api.SpanStatusCode.ERROR });
149
+ }
150
+ if (requestRecord.serverSpanId !== void 0 && requestRecord.dropReason === void 0) {
151
+ const config = (0, import_config.getConfig)();
152
+ const stash = {};
153
+ if (config.captureRequestHeaders) {
154
+ stash.requestHeaders = normalizeHeaders(options.requestHeaders);
155
+ }
156
+ if (config.captureResponseHeaders) {
157
+ stash.responseHeaders = normalizeHeaders(options.responseHeaders);
158
+ }
159
+ const requestBody = options.capturedRequestBody?.body;
160
+ if (requestBody) {
161
+ stash.requestBody = requestBody;
162
+ }
163
+ const responseBody = options.capturedResponseBody?.body;
164
+ if (responseBody) {
165
+ stash.responseBody = responseBody;
166
+ }
167
+ if (Object.keys(stash).length > 0) {
168
+ (0, import_spanProcessor.getActiveSpanPipeline)()?.updateStash(requestRecord.serverSpanId, stash);
169
+ }
170
+ }
171
+ ownSpan?.end(options.completedAtMillis);
172
+ (0, import_spanProcessor.getActiveSpanPipeline)()?.handleTransportCompletion(requestRecord);
173
+ }
174
+ function finalizeRequestObservationWithError(options) {
175
+ const { requestRecord, spanHandle, error, durationSeconds } = options;
176
+ requestRecord.durationSeconds = durationSeconds;
177
+ if (spanHandle.span?.isRecording()) {
178
+ spanHandle.span.recordException((0, import_exceptions.coerceToException)(error));
179
+ }
180
+ if (spanHandle.ownSpan) {
181
+ spanHandle.ownSpan.setStatus({ code: import_api.SpanStatusCode.ERROR });
182
+ spanHandle.ownSpan.end();
183
+ }
184
+ (0, import_spanProcessor.getActiveSpanPipeline)()?.handleTransportCompletion(requestRecord);
185
+ }
186
+ function normalizeHeaders(headers) {
187
+ const normalized = {};
188
+ if (isWebHeaders(headers)) {
189
+ for (const [name, value] of headers) {
190
+ const existing = normalized[name];
191
+ if (existing === void 0) {
192
+ normalized[name] = value;
193
+ } else if (Array.isArray(existing)) {
194
+ existing.push(value);
195
+ } else {
196
+ normalized[name] = [existing, value];
197
+ }
198
+ }
199
+ return normalized;
200
+ }
201
+ for (const [name, value] of Object.entries(headers)) {
202
+ if (value !== void 0) {
203
+ normalized[name.toLowerCase()] = Array.isArray(value) ? value : String(value);
204
+ }
205
+ }
206
+ return normalized;
207
+ }
208
+ function isWebHeaders(headers) {
209
+ return typeof headers[Symbol.iterator] === "function";
210
+ }
211
+ function warnAboutNonRecordingServerSpan() {
212
+ (0, import_logger.logWarning)(
213
+ "The OpenTelemetry sampler did not sample the SERVER span of a request. Only sampled requests are exported to Apitally as traces and request logs. Request metrics include all requests."
214
+ );
215
+ }
216
+ function warnAboutUnattachedSpanProcessor() {
217
+ (0, import_logger.logWarning)(
218
+ "The recording OpenTelemetry SERVER span created for a request did not reach ApitallySpanProcessor. Traces and request logs are unavailable while request metrics continue. To resolve this, add the ApitallySpanProcessor instance to your tracer provider's spanProcessors constructor option or the NodeSDK spanProcessors option."
219
+ );
220
+ }
221
+ // Annotate the CommonJS export names for ESM import in node:
222
+ 0 && (module.exports = {
223
+ finalizeRequestObservation,
224
+ finalizeRequestObservationWithError,
225
+ resolveHttpRequestStartAttributes,
226
+ startRequestObservation
227
+ });
228
+ //# sourceMappingURL=requestObservation.cjs.map