@contrast/agent-bundle 5.46.0 → 5.48.0

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 (647) hide show
  1. package/README.md +1 -1
  2. package/node_modules/@contrast/agent/README.md +1 -1
  3. package/node_modules/@contrast/agent/package.json +12 -12
  4. package/node_modules/@contrast/agentify/package.json +15 -15
  5. package/node_modules/@contrast/architecture-components/package.json +5 -5
  6. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/common.js +1 -1
  7. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/handlers.js +23 -10
  8. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/index.js +6 -4
  9. package/node_modules/@contrast/assess/lib/configuration-analysis/install/apollo-server.js +92 -0
  10. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/express-session.js +2 -2
  11. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/fastify-cookie.js +2 -2
  12. package/node_modules/@contrast/assess/lib/configuration-analysis/install/graphql-yoga.js +90 -0
  13. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/hapi.js +2 -2
  14. package/node_modules/@contrast/assess/lib/{session-configuration → configuration-analysis}/install/koa.js +3 -3
  15. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/string/substring.js +1 -1
  16. package/node_modules/@contrast/assess/lib/dataflow/sinks/install/fs.js +8 -15
  17. package/node_modules/@contrast/assess/lib/dataflow/sources/handler.js +9 -2
  18. package/node_modules/@contrast/assess/lib/dataflow/sources/index.js +2 -0
  19. package/node_modules/@contrast/assess/lib/dataflow/sources/install/fastify-websocket.js +63 -0
  20. package/node_modules/@contrast/assess/lib/dataflow/sources/install/http.js +42 -38
  21. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/index.js +1 -1
  22. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-bodyparsers.js +76 -48
  23. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-multer.js +1 -1
  24. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-routers.js +2 -2
  25. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/{koa2.js → koa.js} +3 -3
  26. package/node_modules/@contrast/assess/lib/dataflow/sources/install/socket.io.js +80 -0
  27. package/node_modules/@contrast/assess/lib/index.d.ts +4 -3
  28. package/node_modules/@contrast/assess/lib/index.js +1 -1
  29. package/node_modules/@contrast/assess/lib/policy.js +2 -2
  30. package/node_modules/@contrast/assess/package.json +12 -12
  31. package/node_modules/@contrast/common/lib/constants.d.ts +12 -4
  32. package/node_modules/@contrast/common/lib/constants.js +16 -7
  33. package/node_modules/@contrast/common/lib/types.d.ts +5 -1
  34. package/node_modules/@contrast/common/package.json +1 -1
  35. package/node_modules/@contrast/config/lib/common.js +1 -0
  36. package/node_modules/@contrast/config/lib/options.js +7 -1
  37. package/node_modules/@contrast/config/package.json +3 -3
  38. package/node_modules/@contrast/core/package.json +5 -5
  39. package/node_modules/@contrast/deadzones/package.json +5 -5
  40. package/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +1 -10
  41. package/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +1 -1
  42. package/node_modules/@contrast/dep-hooks/lib/index.d.ts +1 -1
  43. package/node_modules/@contrast/dep-hooks/lib/index.js +1 -1
  44. package/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +3 -2
  45. package/node_modules/@contrast/dep-hooks/lib/package-finder.js +14 -4
  46. package/node_modules/@contrast/dep-hooks/package.json +4 -4
  47. package/node_modules/@contrast/esm-hooks/README.md +2 -2
  48. package/node_modules/@contrast/esm-hooks/package.json +6 -6
  49. package/node_modules/@contrast/instrumentation/package.json +5 -5
  50. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +166 -224
  51. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/index.js +2 -11
  52. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/utils.js +2 -0
  53. package/node_modules/@contrast/library-analysis/lib/install/library-usage/index.js +3 -1
  54. package/node_modules/@contrast/library-analysis/lib/util.js +0 -2
  55. package/node_modules/@contrast/library-analysis/package.json +4 -4
  56. package/node_modules/@contrast/logger/package.json +4 -4
  57. package/node_modules/@contrast/metrics/package.json +6 -6
  58. package/node_modules/@contrast/patcher/package.json +2 -2
  59. package/node_modules/@contrast/protect/lib/error-handlers/index.js +1 -1
  60. package/node_modules/@contrast/protect/lib/error-handlers/install/{koa2.js → koa.js} +4 -4
  61. package/node_modules/@contrast/protect/lib/index.d.ts +1 -1
  62. package/node_modules/@contrast/protect/lib/input-analysis/index.js +2 -3
  63. package/node_modules/@contrast/protect/lib/input-analysis/install/koa-bodyparsers.js +92 -0
  64. package/node_modules/@contrast/protect/lib/input-analysis/install/{koa2.js → koa.js} +5 -5
  65. package/node_modules/@contrast/protect/lib/input-tracing/install/fs.js +0 -8
  66. package/node_modules/@contrast/protect/package.json +11 -11
  67. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +6 -10
  68. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/routes-observed.js +4 -0
  69. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.d.ts +1 -1
  70. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +1 -1
  71. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.d.ts +1 -1
  72. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +22 -9
  73. package/node_modules/@contrast/reporter/lib/reporters/file.js +1 -1
  74. package/node_modules/@contrast/reporter/package.json +6 -6
  75. package/node_modules/@contrast/rewriter/package.json +5 -5
  76. package/node_modules/@contrast/route-coverage/lib/index.d.ts +2 -2
  77. package/node_modules/@contrast/route-coverage/lib/index.js +12 -2
  78. package/node_modules/@contrast/route-coverage/lib/install/express.js +535 -0
  79. package/node_modules/@contrast/route-coverage/lib/install/fastify/fastify-express.js +71 -0
  80. package/node_modules/@contrast/route-coverage/lib/install/fastify/fastify-middie.js +67 -0
  81. package/node_modules/@contrast/route-coverage/lib/install/{fastify.js → fastify/fastify.js} +32 -22
  82. package/node_modules/@contrast/route-coverage/lib/install/{express → fastify}/index.js +6 -5
  83. package/node_modules/@contrast/route-coverage/lib/install/graphql.js +6 -1
  84. package/node_modules/@contrast/route-coverage/lib/install/koa.js +39 -45
  85. package/node_modules/@contrast/route-coverage/lib/install/socket.io.js +127 -0
  86. package/node_modules/@contrast/route-coverage/lib/utils/route-info.js +26 -1
  87. package/node_modules/@contrast/route-coverage/package.json +8 -8
  88. package/node_modules/@contrast/scopes/package.json +5 -5
  89. package/node_modules/@contrast/sec-obs/package.json +9 -9
  90. package/node_modules/@contrast/sources/lib/index.js +65 -22
  91. package/node_modules/@contrast/sources/lib/index.test.js +78 -33
  92. package/node_modules/@contrast/sources/lib/source-info.js +1 -10
  93. package/node_modules/@contrast/sources/package.json +3 -3
  94. package/node_modules/@contrast/telemetry/package.json +5 -5
  95. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +697 -30
  96. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +697 -30
  97. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
  98. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts +6 -0
  99. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js +6 -0
  100. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map +1 -1
  101. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +877 -49
  102. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +877 -49
  103. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
  104. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +13 -4
  105. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +13 -4
  106. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
  107. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
  108. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
  109. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
  110. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +697 -30
  111. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +697 -30
  112. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
  113. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts +6 -0
  114. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js +6 -0
  115. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map +1 -1
  116. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +877 -49
  117. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +877 -49
  118. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
  119. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +13 -4
  120. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +13 -4
  121. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
  122. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
  123. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
  124. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
  125. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +697 -30
  126. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +729 -61
  127. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
  128. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts +6 -0
  129. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js +7 -1
  130. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map +1 -1
  131. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +877 -49
  132. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +886 -56
  133. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
  134. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +13 -4
  135. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +13 -4
  136. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
  137. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
  138. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
  139. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
  140. package/node_modules/@opentelemetry/semantic-conventions/package.json +3 -5
  141. package/node_modules/{pino → @pinojs/redact}/.github/dependabot.yml +1 -1
  142. package/node_modules/@pinojs/redact/.github/workflows/ci.yml +48 -0
  143. package/node_modules/@pinojs/redact/.github/workflows/publish-release.yml +43 -0
  144. package/node_modules/{pino/node_modules/sonic-boom → @pinojs/redact}/LICENSE +1 -1
  145. package/node_modules/@pinojs/redact/README.md +350 -0
  146. package/node_modules/@pinojs/redact/benchmarks/basic.js +184 -0
  147. package/node_modules/@pinojs/redact/eslint.config.js +1 -0
  148. package/node_modules/@pinojs/redact/index.d.ts +52 -0
  149. package/node_modules/@pinojs/redact/index.js +529 -0
  150. package/node_modules/@pinojs/redact/index.test-d.ts +22 -0
  151. package/node_modules/@pinojs/redact/package.json +37 -0
  152. package/node_modules/@pinojs/redact/scripts/sync-version.mjs +20 -0
  153. package/node_modules/@pinojs/redact/test/actual-redact-comparison.test.js +211 -0
  154. package/node_modules/@pinojs/redact/test/index.test.js +824 -0
  155. package/node_modules/@pinojs/redact/test/integration.test.js +390 -0
  156. package/node_modules/@pinojs/redact/test/multiple-wildcards.test.js +227 -0
  157. package/node_modules/@pinojs/redact/test/prototype-pollution.test.js +223 -0
  158. package/node_modules/@pinojs/redact/test/selective-clone.test.js +115 -0
  159. package/node_modules/@pinojs/redact/tsconfig.json +19 -0
  160. package/node_modules/@types/node/README.md +1 -1
  161. package/node_modules/@types/node/assert.d.ts +37 -2
  162. package/node_modules/@types/node/buffer.buffer.d.ts +9 -0
  163. package/node_modules/@types/node/buffer.d.ts +8 -4
  164. package/node_modules/@types/node/child_process.d.ts +65 -42
  165. package/node_modules/@types/node/cluster.d.ts +4 -5
  166. package/node_modules/@types/node/console.d.ts +3 -2
  167. package/node_modules/@types/node/crypto.d.ts +1079 -338
  168. package/node_modules/@types/node/dgram.d.ts +9 -8
  169. package/node_modules/@types/node/diagnostics_channel.d.ts +0 -2
  170. package/node_modules/@types/node/dns.d.ts +1 -1
  171. package/node_modules/@types/node/events.d.ts +1 -1
  172. package/node_modules/@types/node/fs/promises.d.ts +39 -21
  173. package/node_modules/@types/node/fs.d.ts +104 -87
  174. package/node_modules/@types/node/globals.d.ts +2 -0
  175. package/node_modules/@types/node/globals.typedarray.d.ts +19 -0
  176. package/node_modules/@types/node/http.d.ts +66 -27
  177. package/node_modules/@types/node/http2.d.ts +178 -52
  178. package/node_modules/@types/node/https.d.ts +91 -62
  179. package/node_modules/@types/node/index.d.ts +2 -0
  180. package/node_modules/@types/node/inspector.d.ts +24 -0
  181. package/node_modules/@types/node/inspector.generated.d.ts +181 -0
  182. package/node_modules/@types/node/net.d.ts +12 -11
  183. package/node_modules/@types/node/os.d.ts +14 -3
  184. package/node_modules/@types/node/package.json +3 -3
  185. package/node_modules/@types/node/perf_hooks.d.ts +6 -8
  186. package/node_modules/@types/node/process.d.ts +19 -23
  187. package/node_modules/@types/node/readline/promises.d.ts +1 -1
  188. package/node_modules/@types/node/sea.d.ts +9 -0
  189. package/node_modules/@types/node/sqlite.d.ts +226 -10
  190. package/node_modules/@types/node/stream/consumers.d.ts +2 -2
  191. package/node_modules/@types/node/stream/web.d.ts +6 -55
  192. package/node_modules/@types/node/stream.d.ts +38 -23
  193. package/node_modules/@types/node/string_decoder.d.ts +2 -2
  194. package/node_modules/@types/node/test.d.ts +29 -3
  195. package/node_modules/@types/node/tls.d.ts +90 -66
  196. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +10 -2
  197. package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +16 -0
  198. package/node_modules/@types/node/ts5.6/index.d.ts +2 -0
  199. package/node_modules/@types/node/ts5.7/index.d.ts +2 -0
  200. package/node_modules/@types/node/url.d.ts +34 -10
  201. package/node_modules/@types/node/util.d.ts +12 -3
  202. package/node_modules/@types/node/v8.d.ts +38 -5
  203. package/node_modules/@types/node/vm.d.ts +169 -88
  204. package/node_modules/@types/node/wasi.d.ts +1 -1
  205. package/node_modules/@types/node/web-globals/crypto.d.ts +32 -0
  206. package/node_modules/@types/node/web-globals/streams.d.ts +22 -0
  207. package/node_modules/@types/node/worker_threads.d.ts +76 -1
  208. package/node_modules/@types/node/zlib.d.ts +25 -24
  209. package/node_modules/axios/CHANGELOG.md +410 -346
  210. package/node_modules/axios/README.md +79 -51
  211. package/node_modules/axios/dist/axios.js +121 -46
  212. package/node_modules/axios/dist/axios.js.map +1 -1
  213. package/node_modules/axios/dist/axios.min.js +2 -2
  214. package/node_modules/axios/dist/axios.min.js.map +1 -1
  215. package/node_modules/axios/dist/browser/axios.cjs +126 -57
  216. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  217. package/node_modules/axios/dist/esm/axios.js +126 -57
  218. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  219. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  220. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  221. package/node_modules/axios/dist/node/axios.cjs +351 -97
  222. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  223. package/node_modules/axios/index.d.cts +4 -0
  224. package/node_modules/axios/index.d.ts +4 -0
  225. package/node_modules/axios/lib/adapters/adapters.js +85 -40
  226. package/node_modules/axios/lib/adapters/fetch.js +1 -1
  227. package/node_modules/axios/lib/adapters/http.js +224 -42
  228. package/node_modules/axios/lib/core/InterceptorManager.js +1 -1
  229. package/node_modules/axios/lib/core/mergeConfig.js +4 -4
  230. package/node_modules/axios/lib/env/data.js +1 -1
  231. package/node_modules/axios/lib/helpers/HttpStatusCode.js +6 -0
  232. package/node_modules/axios/lib/helpers/bind.js +7 -0
  233. package/node_modules/axios/lib/helpers/cookies.js +24 -13
  234. package/node_modules/axios/package.json +9 -4
  235. package/node_modules/detect-libc/lib/filesystem.js +1 -1
  236. package/node_modules/detect-libc/package.json +3 -1
  237. package/node_modules/form-data/CHANGELOG.md +60 -2
  238. package/node_modules/form-data/README.md +4 -4
  239. package/node_modules/form-data/lib/form_data.js +2 -2
  240. package/node_modules/form-data/package.json +4 -4
  241. package/node_modules/ipaddr.js/README.md +1 -0
  242. package/node_modules/ipaddr.js/ipaddr.min.js +1 -1
  243. package/node_modules/ipaddr.js/lib/ipaddr.js +11 -0
  244. package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +1 -0
  245. package/node_modules/ipaddr.js/package.json +2 -3
  246. package/node_modules/nan/.github/workflows/ci.yml +3 -1
  247. package/node_modules/nan/CHANGELOG.md +4 -1
  248. package/node_modules/nan/README.md +2 -2
  249. package/node_modules/nan/nan.h +25 -15
  250. package/node_modules/nan/nan_maybe_43_inl.h +5 -1
  251. package/node_modules/nan/package.json +2 -2
  252. package/node_modules/node-abi/abi_registry.json +19 -2
  253. package/node_modules/node-abi/package.json +3 -6
  254. package/node_modules/pino/CONTRIBUTING.md +4 -0
  255. package/node_modules/pino/LICENSE +1 -1
  256. package/node_modules/pino/README.md +20 -3
  257. package/node_modules/pino/benchmarks/basic.bench.js +1 -1
  258. package/node_modules/pino/benchmarks/child-child.bench.js +1 -1
  259. package/node_modules/pino/benchmarks/child-creation.bench.js +1 -1
  260. package/node_modules/pino/benchmarks/child.bench.js +1 -1
  261. package/node_modules/pino/benchmarks/deep-object.bench.js +1 -1
  262. package/node_modules/pino/benchmarks/internal/just-pino-heavy.bench.js +1 -1
  263. package/node_modules/pino/benchmarks/internal/just-pino.bench.js +1 -1
  264. package/node_modules/pino/benchmarks/internal/redact.bench.js +1 -1
  265. package/node_modules/pino/benchmarks/long-string.bench.js +1 -1
  266. package/node_modules/pino/benchmarks/multi-arg.bench.js +1 -1
  267. package/node_modules/pino/benchmarks/multistream.js +1 -1
  268. package/node_modules/pino/benchmarks/object.bench.js +1 -1
  269. package/node_modules/pino/benchmarks/utils/generate-benchmark-doc.js +2 -2
  270. package/node_modules/pino/benchmarks/utils/runbench.js +3 -3
  271. package/node_modules/pino/benchmarks/utils/wrap-log-level.js +2 -2
  272. package/node_modules/pino/browser.js +76 -36
  273. package/node_modules/pino/build/sync-version.js +18 -3
  274. package/node_modules/pino/docs/api.md +155 -13
  275. package/node_modules/pino/docs/browser.md +16 -1
  276. package/node_modules/pino/docs/bundling.md +5 -3
  277. package/node_modules/pino/docs/diagnostics.md +16 -0
  278. package/node_modules/pino/docs/ecosystem.md +15 -12
  279. package/node_modules/pino/docs/help.md +29 -3
  280. package/node_modules/pino/docs/lts.md +5 -4
  281. package/node_modules/pino/docs/transports.md +442 -271
  282. package/node_modules/pino/docs/web.md +59 -9
  283. package/node_modules/pino/eslint.config.js +19 -0
  284. package/node_modules/pino/examples/transport.js +2 -2
  285. package/node_modules/pino/file.js +1 -1
  286. package/node_modules/pino/lib/meta.js +1 -1
  287. package/node_modules/pino/lib/multistream.js +17 -2
  288. package/node_modules/pino/lib/proto.js +35 -11
  289. package/node_modules/pino/lib/redaction.js +9 -13
  290. package/node_modules/pino/lib/time.js +29 -1
  291. package/node_modules/pino/lib/tools.js +37 -8
  292. package/node_modules/pino/lib/transport-stream.js +10 -4
  293. package/node_modules/pino/lib/transport.js +23 -9
  294. package/node_modules/pino/lib/worker.js +164 -24
  295. package/node_modules/pino/package.json +28 -27
  296. package/node_modules/pino/pino.d.ts +244 -203
  297. package/node_modules/pino/pino.js +7 -3
  298. package/node_modules/pino/test/basic.test.js +181 -169
  299. package/node_modules/pino/test/broken-pipe.test.js +18 -16
  300. package/node_modules/pino/test/browser-child.test.js +26 -0
  301. package/node_modules/pino/test/browser-is-level-enabled.test.js +101 -0
  302. package/node_modules/pino/test/browser-serializers.test.js +0 -2
  303. package/node_modules/pino/test/browser-transmit.test.js +68 -0
  304. package/node_modules/pino/test/browser.test.js +98 -13
  305. package/node_modules/pino/test/complex-objects.test.js +8 -6
  306. package/node_modules/pino/test/crlf.test.js +7 -5
  307. package/node_modules/pino/test/custom-levels.test.js +80 -66
  308. package/node_modules/pino/test/diagnostics.test.js +107 -0
  309. package/node_modules/pino/test/error-key.test.js +37 -0
  310. package/node_modules/pino/test/error.test.js +48 -43
  311. package/node_modules/pino/test/escaping.test.js +8 -6
  312. package/node_modules/pino/test/esm/esm.mjs +5 -3
  313. package/node_modules/pino/test/esm/index.test.js +14 -27
  314. package/node_modules/pino/test/esm/named-exports.mjs +9 -8
  315. package/node_modules/pino/test/exit.test.js +18 -16
  316. package/node_modules/pino/test/fixtures/broken-pipe/basic.js +1 -1
  317. package/node_modules/pino/test/fixtures/broken-pipe/destination.js +1 -1
  318. package/node_modules/pino/test/fixtures/broken-pipe/syncfalse.js +1 -1
  319. package/node_modules/pino/test/fixtures/console-transport.js +1 -1
  320. package/node_modules/pino/test/fixtures/crashing-transport.js +13 -0
  321. package/node_modules/pino/test/fixtures/default-exit.js +1 -1
  322. package/node_modules/pino/test/fixtures/destination-exit.js +1 -1
  323. package/node_modules/pino/test/fixtures/noop-transport.js +1 -1
  324. package/node_modules/pino/test/fixtures/pretty/null-prototype.js +1 -1
  325. package/node_modules/pino/test/fixtures/stdout-hack-protection.js +1 -1
  326. package/node_modules/pino/test/fixtures/syncfalse-child.js +1 -1
  327. package/node_modules/pino/test/fixtures/syncfalse-exit.js +1 -1
  328. package/node_modules/pino/test/fixtures/syncfalse-flush-exit.js +1 -1
  329. package/node_modules/pino/test/fixtures/syncfalse.js +1 -1
  330. package/node_modules/pino/test/fixtures/syntax-error-esm.mjs +2 -0
  331. package/node_modules/pino/test/fixtures/to-file-transport-with-transform.js +3 -3
  332. package/node_modules/pino/test/fixtures/to-file-transport.js +2 -2
  333. package/node_modules/pino/test/fixtures/to-file-transport.mjs +2 -2
  334. package/node_modules/pino/test/fixtures/transport/index.js +2 -2
  335. package/node_modules/pino/test/fixtures/transport-main.js +1 -1
  336. package/node_modules/pino/test/fixtures/transport-transform.js +1 -1
  337. package/node_modules/pino/test/fixtures/transport-uses-pino-config.js +1 -1
  338. package/node_modules/pino/test/fixtures/transport-worker-data.js +1 -1
  339. package/node_modules/pino/test/fixtures/transport-worker.js +2 -2
  340. package/node_modules/pino/test/fixtures/ts/to-file-transport-with-transform.ts +3 -3
  341. package/node_modules/pino/test/fixtures/ts/to-file-transport.ts +2 -2
  342. package/node_modules/pino/test/fixtures/ts/transpile.cjs +1 -1
  343. package/node_modules/pino/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +1 -1
  344. package/node_modules/pino/test/fixtures/ts/transport-main.ts +1 -1
  345. package/node_modules/pino/test/fixtures/ts/transport-worker.ts +1 -1
  346. package/node_modules/pino/test/formatters.test.js +46 -37
  347. package/node_modules/pino/test/helper.d.ts +1 -1
  348. package/node_modules/pino/test/helper.js +37 -10
  349. package/node_modules/pino/test/hooks.test.js +45 -28
  350. package/node_modules/pino/test/http.test.js +39 -67
  351. package/node_modules/pino/test/internals/version.test.js +11 -9
  352. package/node_modules/pino/test/is-level-enabled.test.js +66 -72
  353. package/node_modules/pino/test/levels.test.js +245 -141
  354. package/node_modules/pino/test/metadata.test.js +45 -31
  355. package/node_modules/pino/test/mixin-merge-strategy.test.js +9 -7
  356. package/node_modules/pino/test/mixin.test.js +63 -40
  357. package/node_modules/pino/test/multistream.test.js +174 -118
  358. package/node_modules/pino/test/redact.test.js +172 -126
  359. package/node_modules/pino/test/serializers.test.js +61 -57
  360. package/node_modules/pino/test/stdout-protection.test.js +14 -12
  361. package/node_modules/pino/test/syncfalse.test.js +29 -34
  362. package/node_modules/pino/test/timestamp-nano.test.js +37 -0
  363. package/node_modules/pino/test/timestamp.test.js +37 -34
  364. package/node_modules/pino/test/transport/big.test.js +11 -12
  365. package/node_modules/pino/test/transport/bundlers-support.test.js +15 -43
  366. package/node_modules/pino/test/transport/caller.test.js +9 -8
  367. package/node_modules/pino/test/transport/core.test.js +175 -145
  368. package/node_modules/pino/test/transport/core.transpiled.test.ts +17 -19
  369. package/node_modules/pino/test/transport/crash.test.js +36 -0
  370. package/node_modules/pino/test/transport/module-link.test.js +21 -19
  371. package/node_modules/pino/test/transport/pipeline.test.js +109 -8
  372. package/node_modules/pino/test/transport/repl.test.js +4 -3
  373. package/node_modules/pino/test/transport/{syncfalse.test.js → sync-false.test.js} +14 -12
  374. package/node_modules/pino/test/transport/sync-true.test.js +57 -0
  375. package/node_modules/pino/test/transport/targets.test.js +25 -5
  376. package/node_modules/pino/test/transport/uses-pino-config.test.js +16 -17
  377. package/node_modules/pino/test/transport-stream.test.js +40 -0
  378. package/node_modules/pino/test/types/{pino-import.test-d.ts → pino-import.test-d.cts} +4 -3
  379. package/node_modules/pino/test/types/pino-multistream.test-d.ts +1 -1
  380. package/node_modules/pino/test/types/pino-top-export.test-d.ts +1 -0
  381. package/node_modules/pino/test/types/pino-transport.test-d.ts +1 -1
  382. package/node_modules/pino/test/types/pino-type-only.test-d.ts +24 -6
  383. package/node_modules/pino/test/types/pino.test-d.ts +161 -6
  384. package/node_modules/pino/test/types/pino.ts +31 -19
  385. package/node_modules/pino/tsconfig.json +1 -1
  386. package/node_modules/pino-abstract-transport/.github/workflows/ci.yml +2 -4
  387. package/node_modules/pino-abstract-transport/index.js +1 -1
  388. package/node_modules/pino-abstract-transport/package.json +2 -3
  389. package/node_modules/pino-abstract-transport/test/base.test.js +1 -1
  390. package/node_modules/pino-abstract-transport/test/worker.test.js +7 -14
  391. package/node_modules/pino-std-serializers/.github/workflows/ci.yml +5 -5
  392. package/node_modules/pino-std-serializers/Readme.md +1 -0
  393. package/node_modules/pino-std-serializers/package.json +9 -8
  394. package/node_modules/pino-std-serializers/test/err-with-cause.test.js +72 -88
  395. package/node_modules/pino-std-serializers/test/err.test.js +76 -91
  396. package/node_modules/pino-std-serializers/test/req.test.js +142 -98
  397. package/node_modules/pino-std-serializers/test/res.test.js +42 -31
  398. package/node_modules/process-warning/.github/dependabot.yml +1 -1
  399. package/node_modules/process-warning/.github/workflows/ci.yml +1 -2
  400. package/node_modules/process-warning/README.md +4 -4
  401. package/node_modules/process-warning/eslint.config.js +6 -0
  402. package/node_modules/process-warning/package.json +39 -8
  403. package/node_modules/process-warning/test/emit-interpolated-string.test.js +11 -6
  404. package/node_modules/process-warning/test/emit-once-only.test.js +11 -6
  405. package/node_modules/process-warning/test/emit-reset.test.js +10 -6
  406. package/node_modules/process-warning/test/emit-set.test.js +10 -5
  407. package/node_modules/process-warning/test/emit-unlimited.test.js +12 -7
  408. package/node_modules/process-warning/test/index.test.js +20 -20
  409. package/node_modules/process-warning/test/issue-88.test.js +8 -3
  410. package/node_modules/process-warning/test/jest.test.js +17 -15
  411. package/node_modules/process-warning/test/no-warnings.test.js +9 -9
  412. package/node_modules/process-warning/test/promise.js +10 -0
  413. package/node_modules/process-warning/types/index.d.ts +5 -5
  414. package/node_modules/semver/classes/range.js +1 -0
  415. package/node_modules/semver/classes/semver.js +19 -5
  416. package/node_modules/semver/internal/identifiers.js +4 -0
  417. package/node_modules/semver/package.json +3 -3
  418. package/node_modules/thread-stream/.github/workflows/ci.yml +4 -8
  419. package/node_modules/thread-stream/index.d.ts +4 -5
  420. package/node_modules/thread-stream/lib/worker.js +5 -2
  421. package/node_modules/thread-stream/package.json +6 -4
  422. package/node_modules/thread-stream/test/base.test.js +12 -0
  423. package/node_modules/thread-stream/test/never-drain.test.js +3 -1
  424. package/node_modules/thread-stream/test/pkg/pkg.test.js +2 -0
  425. package/node_modules/thread-stream/test/syntax-error.mjs +2 -0
  426. package/node_modules/thread-stream/tsconfig.json +8 -0
  427. package/node_modules/undici-types/agent.d.ts +1 -0
  428. package/node_modules/undici-types/diagnostics-channel.d.ts +0 -1
  429. package/node_modules/undici-types/errors.d.ts +5 -15
  430. package/node_modules/undici-types/eventsource.d.ts +6 -1
  431. package/node_modules/undici-types/index.d.ts +4 -1
  432. package/node_modules/undici-types/interceptors.d.ts +5 -0
  433. package/node_modules/undici-types/package.json +1 -1
  434. package/node_modules/undici-types/snapshot-agent.d.ts +5 -3
  435. package/node_modules/undici-types/webidl.d.ts +82 -21
  436. package/node_modules/yaml/browser/dist/compose/compose-collection.js +1 -1
  437. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +1 -1
  438. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +2 -2
  439. package/node_modules/yaml/browser/dist/errors.js +1 -1
  440. package/node_modules/yaml/browser/dist/nodes/Alias.js +1 -1
  441. package/node_modules/yaml/browser/dist/parse/parser.js +2 -2
  442. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +1 -1
  443. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +1 -1
  444. package/node_modules/yaml/dist/compose/compose-collection.js +1 -1
  445. package/node_modules/yaml/dist/compose/resolve-block-seq.js +1 -1
  446. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +2 -2
  447. package/node_modules/yaml/dist/errors.js +1 -1
  448. package/node_modules/yaml/dist/nodes/Alias.js +1 -1
  449. package/node_modules/yaml/dist/parse/parser.js +2 -2
  450. package/node_modules/yaml/dist/stringify/stringifyNumber.js +1 -1
  451. package/node_modules/yaml/dist/stringify/stringifyPair.js +1 -1
  452. package/node_modules/yaml/package.json +4 -4
  453. package/package.json +3 -3
  454. package/node_modules/@contrast/protect/lib/input-analysis/install/koa-body5.js +0 -63
  455. package/node_modules/@contrast/protect/lib/input-analysis/install/koa-bodyparser4.js +0 -64
  456. package/node_modules/@contrast/route-coverage/lib/install/express/express4.js +0 -157
  457. package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +0 -538
  458. package/node_modules/abort-controller/LICENSE +0 -21
  459. package/node_modules/abort-controller/README.md +0 -98
  460. package/node_modules/abort-controller/browser.js +0 -13
  461. package/node_modules/abort-controller/browser.mjs +0 -11
  462. package/node_modules/abort-controller/dist/abort-controller.d.ts +0 -43
  463. package/node_modules/abort-controller/dist/abort-controller.js +0 -127
  464. package/node_modules/abort-controller/dist/abort-controller.js.map +0 -1
  465. package/node_modules/abort-controller/dist/abort-controller.mjs +0 -118
  466. package/node_modules/abort-controller/dist/abort-controller.mjs.map +0 -1
  467. package/node_modules/abort-controller/dist/abort-controller.umd.js +0 -5
  468. package/node_modules/abort-controller/dist/abort-controller.umd.js.map +0 -1
  469. package/node_modules/abort-controller/package.json +0 -97
  470. package/node_modules/abort-controller/polyfill.js +0 -21
  471. package/node_modules/abort-controller/polyfill.mjs +0 -19
  472. package/node_modules/base64-js/LICENSE +0 -21
  473. package/node_modules/base64-js/README.md +0 -34
  474. package/node_modules/base64-js/base64js.min.js +0 -1
  475. package/node_modules/base64-js/index.d.ts +0 -3
  476. package/node_modules/base64-js/index.js +0 -150
  477. package/node_modules/base64-js/package.json +0 -47
  478. package/node_modules/buffer/AUTHORS.md +0 -73
  479. package/node_modules/buffer/LICENSE +0 -21
  480. package/node_modules/buffer/README.md +0 -410
  481. package/node_modules/buffer/index.d.ts +0 -194
  482. package/node_modules/buffer/index.js +0 -2106
  483. package/node_modules/buffer/package.json +0 -93
  484. package/node_modules/event-target-shim/LICENSE +0 -22
  485. package/node_modules/event-target-shim/README.md +0 -293
  486. package/node_modules/event-target-shim/dist/event-target-shim.js +0 -871
  487. package/node_modules/event-target-shim/dist/event-target-shim.js.map +0 -1
  488. package/node_modules/event-target-shim/dist/event-target-shim.mjs +0 -862
  489. package/node_modules/event-target-shim/dist/event-target-shim.mjs.map +0 -1
  490. package/node_modules/event-target-shim/dist/event-target-shim.umd.js +0 -6
  491. package/node_modules/event-target-shim/dist/event-target-shim.umd.js.map +0 -1
  492. package/node_modules/event-target-shim/index.d.ts +0 -399
  493. package/node_modules/event-target-shim/package.json +0 -82
  494. package/node_modules/events/.airtap.yml +0 -15
  495. package/node_modules/events/.github/FUNDING.yml +0 -12
  496. package/node_modules/events/.travis.yml +0 -18
  497. package/node_modules/events/History.md +0 -118
  498. package/node_modules/events/LICENSE +0 -22
  499. package/node_modules/events/Readme.md +0 -50
  500. package/node_modules/events/events.js +0 -497
  501. package/node_modules/events/package.json +0 -37
  502. package/node_modules/events/security.md +0 -10
  503. package/node_modules/events/tests/add-listeners.js +0 -111
  504. package/node_modules/events/tests/check-listener-leaks.js +0 -101
  505. package/node_modules/events/tests/common.js +0 -104
  506. package/node_modules/events/tests/errors.js +0 -13
  507. package/node_modules/events/tests/events-list.js +0 -28
  508. package/node_modules/events/tests/events-once.js +0 -234
  509. package/node_modules/events/tests/index.js +0 -64
  510. package/node_modules/events/tests/legacy-compat.js +0 -16
  511. package/node_modules/events/tests/listener-count.js +0 -37
  512. package/node_modules/events/tests/listeners-side-effects.js +0 -56
  513. package/node_modules/events/tests/listeners.js +0 -168
  514. package/node_modules/events/tests/max-listeners.js +0 -47
  515. package/node_modules/events/tests/method-names.js +0 -35
  516. package/node_modules/events/tests/modify-in-emit.js +0 -90
  517. package/node_modules/events/tests/num-args.js +0 -60
  518. package/node_modules/events/tests/once.js +0 -83
  519. package/node_modules/events/tests/prepend.js +0 -31
  520. package/node_modules/events/tests/remove-all-listeners.js +0 -133
  521. package/node_modules/events/tests/remove-listeners.js +0 -212
  522. package/node_modules/events/tests/set-max-listeners-side-effects.js +0 -31
  523. package/node_modules/events/tests/special-event-names.js +0 -45
  524. package/node_modules/events/tests/subclass.js +0 -66
  525. package/node_modules/events/tests/symbols.js +0 -25
  526. package/node_modules/fast-redact/.github/workflows/ci.yml +0 -37
  527. package/node_modules/fast-redact/LICENSE +0 -21
  528. package/node_modules/fast-redact/benchmark/index.js +0 -223
  529. package/node_modules/fast-redact/example/default-usage.js +0 -14
  530. package/node_modules/fast-redact/example/intermediate-wildcard-array.js +0 -11
  531. package/node_modules/fast-redact/example/multi-wildcard-array-depth.js +0 -11
  532. package/node_modules/fast-redact/example/multi-wildcard-array-end.js +0 -11
  533. package/node_modules/fast-redact/example/multi-wildcard-array.js +0 -11
  534. package/node_modules/fast-redact/example/serialize-false.js +0 -11
  535. package/node_modules/fast-redact/example/serialize-function.js +0 -4
  536. package/node_modules/fast-redact/example/top-wildcard-object.js +0 -9
  537. package/node_modules/fast-redact/index.js +0 -56
  538. package/node_modules/fast-redact/lib/modifiers.js +0 -291
  539. package/node_modules/fast-redact/lib/parse.js +0 -44
  540. package/node_modules/fast-redact/lib/redactor.js +0 -108
  541. package/node_modules/fast-redact/lib/restorer.js +0 -92
  542. package/node_modules/fast-redact/lib/rx.js +0 -16
  543. package/node_modules/fast-redact/lib/state.js +0 -20
  544. package/node_modules/fast-redact/lib/validator.js +0 -33
  545. package/node_modules/fast-redact/package.json +0 -50
  546. package/node_modules/fast-redact/readme.md +0 -282
  547. package/node_modules/fast-redact/test/index.js +0 -1502
  548. package/node_modules/ieee754/LICENSE +0 -11
  549. package/node_modules/ieee754/README.md +0 -51
  550. package/node_modules/ieee754/index.d.ts +0 -10
  551. package/node_modules/ieee754/index.js +0 -85
  552. package/node_modules/ieee754/package.json +0 -52
  553. package/node_modules/pino/.eslintignore +0 -2
  554. package/node_modules/pino/.eslintrc +0 -8
  555. package/node_modules/pino/.github/workflows/bench.yml +0 -61
  556. package/node_modules/pino/.github/workflows/ci.yml +0 -86
  557. package/node_modules/pino/.github/workflows/lock-threads.yml +0 -30
  558. package/node_modules/pino/.github/workflows/package-manager-ci.yml +0 -99
  559. package/node_modules/pino/.github/workflows/target-main.yml +0 -23
  560. package/node_modules/pino/.taprc.yaml +0 -8
  561. package/node_modules/pino/docsify/sidebar.md +0 -26
  562. package/node_modules/pino/favicon-16x16.png +0 -0
  563. package/node_modules/pino/favicon-32x32.png +0 -0
  564. package/node_modules/pino/lib/worker-pipeline.js +0 -38
  565. package/node_modules/pino/node_modules/sonic-boom/.eslintignore +0 -2
  566. package/node_modules/pino/node_modules/sonic-boom/.husky/pre-commit +0 -4
  567. package/node_modules/pino/node_modules/sonic-boom/.taprc.yaml +0 -11
  568. package/node_modules/pino/node_modules/sonic-boom/README.md +0 -151
  569. package/node_modules/pino/node_modules/sonic-boom/bench.js +0 -98
  570. package/node_modules/pino/node_modules/sonic-boom/check.js +0 -18
  571. package/node_modules/pino/node_modules/sonic-boom/example.js +0 -8
  572. package/node_modules/pino/node_modules/sonic-boom/fixtures/firehose.js +0 -22
  573. package/node_modules/pino/node_modules/sonic-boom/index.js +0 -690
  574. package/node_modules/pino/node_modules/sonic-boom/package.json +0 -50
  575. package/node_modules/pino/node_modules/sonic-boom/test/destroy.test.js +0 -49
  576. package/node_modules/pino/node_modules/sonic-boom/test/end.test.js +0 -98
  577. package/node_modules/pino/node_modules/sonic-boom/test/flush-sync.test.js +0 -140
  578. package/node_modules/pino/node_modules/sonic-boom/test/flush.test.js +0 -419
  579. package/node_modules/pino/node_modules/sonic-boom/test/fsync.test.js +0 -63
  580. package/node_modules/pino/node_modules/sonic-boom/test/helper.js +0 -42
  581. package/node_modules/pino/node_modules/sonic-boom/test/minlength.test.js +0 -35
  582. package/node_modules/pino/node_modules/sonic-boom/test/mode.test.js +0 -116
  583. package/node_modules/pino/node_modules/sonic-boom/test/reopen.test.js +0 -239
  584. package/node_modules/pino/node_modules/sonic-boom/test/retry.test.js +0 -414
  585. package/node_modules/pino/node_modules/sonic-boom/test/sync.test.js +0 -261
  586. package/node_modules/pino/node_modules/sonic-boom/test/write.test.js +0 -465
  587. package/node_modules/pino/node_modules/sonic-boom/types/index.d.ts +0 -62
  588. package/node_modules/pino/node_modules/sonic-boom/types/tests/test.ts +0 -4
  589. package/node_modules/pino/pino-banner.png +0 -0
  590. package/node_modules/pino/pino-logo-hire.png +0 -0
  591. package/node_modules/pino/pino-tree.png +0 -0
  592. package/node_modules/pino/pretty-demo.png +0 -0
  593. package/node_modules/pino/test/errorKey.test.js +0 -34
  594. package/node_modules/pino/test/transport/core.test.ts +0 -236
  595. package/node_modules/pino-std-serializers/.taprc +0 -2
  596. package/node_modules/process/.eslintrc +0 -21
  597. package/node_modules/process/LICENSE +0 -22
  598. package/node_modules/process/README.md +0 -26
  599. package/node_modules/process/browser.js +0 -184
  600. package/node_modules/process/index.js +0 -2
  601. package/node_modules/process/package.json +0 -27
  602. package/node_modules/process/test.js +0 -199
  603. package/node_modules/process-warning/.taprc +0 -2
  604. package/node_modules/readable-stream/LICENSE +0 -47
  605. package/node_modules/readable-stream/README.md +0 -116
  606. package/node_modules/readable-stream/lib/_stream_duplex.js +0 -4
  607. package/node_modules/readable-stream/lib/_stream_passthrough.js +0 -4
  608. package/node_modules/readable-stream/lib/_stream_readable.js +0 -4
  609. package/node_modules/readable-stream/lib/_stream_transform.js +0 -4
  610. package/node_modules/readable-stream/lib/_stream_writable.js +0 -4
  611. package/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js +0 -52
  612. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -157
  613. package/node_modules/readable-stream/lib/internal/streams/compose.js +0 -194
  614. package/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -290
  615. package/node_modules/readable-stream/lib/internal/streams/duplex.js +0 -143
  616. package/node_modules/readable-stream/lib/internal/streams/duplexify.js +0 -378
  617. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -286
  618. package/node_modules/readable-stream/lib/internal/streams/from.js +0 -98
  619. package/node_modules/readable-stream/lib/internal/streams/lazy_transform.js +0 -51
  620. package/node_modules/readable-stream/lib/internal/streams/legacy.js +0 -89
  621. package/node_modules/readable-stream/lib/internal/streams/operators.js +0 -457
  622. package/node_modules/readable-stream/lib/internal/streams/passthrough.js +0 -39
  623. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -471
  624. package/node_modules/readable-stream/lib/internal/streams/readable.js +0 -1290
  625. package/node_modules/readable-stream/lib/internal/streams/state.js +0 -39
  626. package/node_modules/readable-stream/lib/internal/streams/transform.js +0 -180
  627. package/node_modules/readable-stream/lib/internal/streams/utils.js +0 -327
  628. package/node_modules/readable-stream/lib/internal/streams/writable.js +0 -819
  629. package/node_modules/readable-stream/lib/internal/validators.js +0 -530
  630. package/node_modules/readable-stream/lib/ours/browser.js +0 -35
  631. package/node_modules/readable-stream/lib/ours/errors.js +0 -343
  632. package/node_modules/readable-stream/lib/ours/index.js +0 -65
  633. package/node_modules/readable-stream/lib/ours/primordials.js +0 -124
  634. package/node_modules/readable-stream/lib/ours/util/inspect.js +0 -55
  635. package/node_modules/readable-stream/lib/ours/util.js +0 -148
  636. package/node_modules/readable-stream/lib/stream/promises.js +0 -43
  637. package/node_modules/readable-stream/lib/stream.js +0 -143
  638. package/node_modules/readable-stream/package.json +0 -88
  639. package/node_modules/safe-buffer/LICENSE +0 -21
  640. package/node_modules/safe-buffer/README.md +0 -584
  641. package/node_modules/safe-buffer/index.d.ts +0 -187
  642. package/node_modules/safe-buffer/index.js +0 -65
  643. package/node_modules/safe-buffer/package.json +0 -51
  644. package/node_modules/string_decoder/LICENSE +0 -48
  645. package/node_modules/string_decoder/README.md +0 -47
  646. package/node_modules/string_decoder/lib/string_decoder.js +0 -296
  647. package/node_modules/string_decoder/package.json +0 -34
@@ -15,7 +15,11 @@
15
15
  // @ts-check
16
16
  'use strict';
17
17
 
18
- const { callChildComponentMethodsSync, Event } = require('@contrast/common');
18
+ const {
19
+ callChildComponentMethodsSync,
20
+ Event,
21
+ RouteType,
22
+ } = require('@contrast/common');
19
23
 
20
24
  /**
21
25
  * @param {import('.').Core & {
@@ -37,10 +41,13 @@ module.exports = function init(core) {
37
41
  const routeIdentifier = (method, signature) => `${method}.${signature}`;
38
42
 
39
43
  const routeCoverage = core.routeCoverage = {
44
+ DISCOVERY_QUEUE_EMPTY_MS: 10_000,
40
45
  discover(info) {
41
46
  const id = routeIdentifier(info.method, info.signature);
42
47
  if (routeInfo.get(id)) return;
43
48
 
49
+ if (!info.type) info.type = RouteType.HTTP;
50
+
44
51
  logger.trace({ info }, 'Discovered new route:');
45
52
  routeInfo.set(id, info);
46
53
  },
@@ -62,7 +69,7 @@ module.exports = function init(core) {
62
69
  if (routeQueue.size === 1) {
63
70
  setTimeout(() => {
64
71
  this.discoveryFinished();
65
- }, 10_000);
72
+ }, this.DISCOVERY_QUEUE_EMPTY_MS);
66
73
  }
67
74
  },
68
75
 
@@ -100,9 +107,11 @@ module.exports = function init(core) {
100
107
 
101
108
  recentlyObserved.add(route.signature);
102
109
  logger.trace({ info }, 'Observed route:');
110
+
103
111
  // these events need source correlation
104
112
  messages.emit(Event.ROUTE_COVERAGE_OBSERVATION, {
105
113
  ...route,
114
+ type: info.type ?? route.type ?? RouteType.HTTP,
106
115
  sourceInfo: store?.sourceInfo,
107
116
  });
108
117
  },
@@ -119,6 +128,7 @@ module.exports = function init(core) {
119
128
  require('./install/hapi')(core);
120
129
  require('./install/koa')(core);
121
130
  require('./install/restify')(core);
131
+ core.initComponentSync(require('./install/socket.io'));
122
132
 
123
133
  messages.on(Event.SERVER_LISTENING, () => {
124
134
  // we wait to report in timers event loop phase, this way we can
@@ -0,0 +1,535 @@
1
+ /*
2
+ * Copyright: 2025 Contrast Security, Inc
3
+ * Contact: support@contrastsecurity.com
4
+ * License: Commercial
5
+
6
+ * NOTICE: This Software and the patented inventions embodied within may only be
7
+ * used as part of Contrast Security’s commercial offerings. Even though it is
8
+ * made available through public repositories, use of this Software is subject to
9
+ * the applicable End User Licensing Agreement found at
10
+ * https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed
11
+ * between Contrast Security and the End User. The Software may not be reverse
12
+ * engineered, modified, repackaged, sold, redistributed or otherwise used in a
13
+ * way not consistent with the End User License Agreement.
14
+ */
15
+ 'use strict';
16
+
17
+ const { AsyncLocalStorage } = require('node:async_hooks');
18
+ const { EventEmitter } = require('events');
19
+ const process = require('process');
20
+ const {
21
+ get,
22
+ set,
23
+ isString,
24
+ Event,
25
+ RouteType,
26
+ primordials: {
27
+ ArrayPrototypeJoin,
28
+ StringPrototypeSubstring,
29
+ StringPrototypeToLowerCase,
30
+ }
31
+ } = require('@contrast/common');
32
+ const Core = require('@contrast/core/lib/ioc/core');
33
+ const { formatHandler } = require('../utils/route-info');
34
+
35
+ const METHODS = [
36
+ 'all',
37
+ 'get',
38
+ 'post',
39
+ 'put',
40
+ 'delete',
41
+ 'patch',
42
+ 'options',
43
+ 'head',
44
+ ];
45
+ const componentName = 'routeCoverage.express';
46
+ const patchType = 'route-coverage-express';
47
+ const kMetaKey = Symbol('cs_meta');
48
+
49
+ module.exports = Core.makeComponent({
50
+ name: componentName,
51
+ factory: (core) => new ExpressInstrumentation(core),
52
+ });
53
+
54
+ class ExpressInstrumentation {
55
+ constructor(core) {
56
+ set(core, componentName, this);
57
+ Object.defineProperty(this, 'core', { value: core });
58
+ this.listenFlag = false;
59
+ this.isDiscoveryQueued = false;
60
+ this.events = new EventEmitter();
61
+ this.methodScope = new AsyncLocalStorage();
62
+ this.handleScope = new AsyncLocalStorage();
63
+ }
64
+
65
+ install() {
66
+ const { depHooks } = this.core;
67
+ depHooks.resolve({ name: 'express', version: '>=4 <6' }, (express, meta) => {
68
+ this.patchApplication(express.application);
69
+ this.patchRouter(express.Router, meta);
70
+ return this.patchExpress(express, meta);
71
+ });
72
+ depHooks.resolve({ name: 'express', version: '4', file: 'lib/router/layer.js' }, (Layer, meta) => this.patchLayer(Layer, meta));
73
+ depHooks.resolve({ name: 'router', version: '2' }, (Router, meta) => this.patchRouter(Router, meta));
74
+ depHooks.resolve({ name: 'router', file: 'lib/layer.js', version: '2' }, (Layer, meta) => this.patchLayer(Layer, meta));
75
+ }
76
+
77
+ patchExpress(express, pkgMeta) {
78
+ const self = this;
79
+ const { core } = self;
80
+
81
+ return core.patcher.patch(express, {
82
+ name: 'express.application',
83
+ patchType: `${patchType}-discovery`,
84
+ post(data) {
85
+ const app = data.result;
86
+ // force instantiation of router in express 4
87
+ app.lazyrouter?.();
88
+
89
+ core.messages.on(Event.SERVER_LISTENING, () => {
90
+ let router;
91
+
92
+ self.listenFlag = true;
93
+
94
+ try {
95
+ router = app._router || app.router;
96
+ } catch (err) {
97
+ /* some versions of express will error if you access deprecated router path */
98
+ }
99
+
100
+ if (!router?.stack?.[0]) {
101
+ core.logger.debug('no routes detected in express router stack: %s@%s', pkgMeta.name, pkgMeta.version);
102
+ return;
103
+ }
104
+
105
+ self.handleDiscovery(router);
106
+ self.events.on('deferred-discovery', () => {
107
+ // rerun discovery if other instrumentation detects post-listen route registration
108
+ self.handleDiscovery(router);
109
+ });
110
+ });
111
+
112
+ return app;
113
+ }
114
+ });
115
+ }
116
+
117
+ patchApplication(application) {
118
+ const self = this;
119
+ const { core, handleScope, methodScope } = self;
120
+
121
+ [...METHODS, 'use', 'route'].forEach((method) => {
122
+ // then setup app and router to run in method scopes
123
+ core.patcher.patch(application, method, {
124
+ name: `express.application.${method}`,
125
+ patchType: `${patchType}-discovery`,
126
+ around(next, data) {
127
+ if (methodScope.getStore()) return next();
128
+ return methodScope.run({ method, args: data.args, type: 'app' }, next);
129
+ }
130
+ });
131
+ });
132
+
133
+ core.patcher.patch(application, 'handle', {
134
+ name: 'express.application.handle',
135
+ patchType: `${patchType}-discovery`,
136
+ around(next, data) {
137
+ // wrap request handling in "handle scope". the scope's store data
138
+ // helps for building observation templates as routing occurs
139
+ const store = { templateSegments: [] };
140
+ return handleScope.run(store, next);
141
+ }
142
+ });
143
+ }
144
+
145
+ patchRouter(Router, pkgMeta) {
146
+ const self = this;
147
+ const { core, methodScope } = this;
148
+ // express 4 uses setPrototypeOf
149
+ const patchTarget = (pkgMeta?.name == 'express' && pkgMeta?.version[0] == '4') ?
150
+ Router.prototype?.constructor :
151
+ Router.prototype;
152
+
153
+ if (!patchTarget) {
154
+ const descriptor = pkgMeta?.version ? `express ${pkgMeta.version}` : 'router package';
155
+ core.logger.error(`no router patch target for ${descriptor}`);
156
+ return Router;
157
+ }
158
+
159
+ // wrap router and app methods in "method scope" to capture info to help build signatures.
160
+ // express has a number of APIs that work at different levels of abstraction, and we need to patch
161
+ // all of them. the scopes let us know what top-level APIs are being called by application code.
162
+ [...METHODS, 'use', 'route'].forEach((method) => {
163
+ core.patcher.patch(patchTarget, method, {
164
+ name: `express.Router.prototype.${method}`,
165
+ patchType: `${patchType}-discovery`,
166
+ around(next, data) {
167
+ if (method == 'use') data._stackLength = data.obj.stack?.length;
168
+
169
+ const ret = methodScope.getStore() ?
170
+ next() :
171
+ methodScope.run({ method, args: data.args, type: 'router' }, next);
172
+
173
+ if (method == 'use' && data.obj.stack.length > data._stackLength) {
174
+ for (let i = data._stackLength; i < data.obj.stack.length; i++) {
175
+ const layer = data.obj.stack[i];
176
+ const methodStore = methodScope.getStore();
177
+
178
+ const meta = {
179
+ template: ExpressInstrumentation.normalizeTemplate(data.args[0]),
180
+ method: 'use',
181
+ type: methodStore?.type || 'router',
182
+ };
183
+
184
+ if (layer) {
185
+ self.attachDiscoveryMeta(layer, meta);
186
+ }
187
+ }
188
+ }
189
+
190
+ return ret;
191
+ }
192
+ });
193
+ });
194
+
195
+ // app[method] and router[method] end up calling this
196
+ // Append metadata to the created Route object at layer.route.
197
+ // we also patch the returned Route's methods for building signatures
198
+ core.patcher.patch(patchTarget, 'route', {
199
+ name: 'express.Route',
200
+ patchType: `${patchType}-discovery`,
201
+ post(data) {
202
+ const { result } = data;
203
+ const methodStore = methodScope.getStore();
204
+ const meta = {
205
+ template: ExpressInstrumentation.normalizeTemplate(data.args[0]),
206
+ method: methodStore?.method,
207
+ type: methodStore?.type || 'route',
208
+ };
209
+
210
+ self.attachDiscoveryMeta(result, meta);
211
+
212
+ // patch route instance methods we do that here when we have
213
+ // todo move to prototype to help w/ memory
214
+ METHODS.forEach((method) => {
215
+ if (result[method]) {
216
+ core.patcher.patch(result, method, {
217
+ name: `express.Router.prototype.route${method}`,
218
+ patchType: `${patchType}-discovery`,
219
+ pre(data) {
220
+ data._stackIdx = data.obj.stack?.length;
221
+ },
222
+ post(data) {
223
+ if (data.obj.stack?.length > data._stackIdx) {
224
+ for (let i = data._stackIdx; i < data.obj.stack.length; i++) {
225
+ const layer = data.obj.stack[i];
226
+ const methodStore = methodScope.getStore();
227
+ const meta = {
228
+ type: methodStore?.type || 'route',
229
+ method: methodStore?.method == 'all' ? 'all' : method,
230
+ };
231
+
232
+ self.attachDiscoveryMeta(layer, meta);
233
+ }
234
+ }
235
+ },
236
+ });
237
+ }
238
+ });
239
+
240
+ return result;
241
+ },
242
+ });
243
+
244
+ return Router;
245
+ }
246
+
247
+ patchLayer(Layer, pkgMeta) {
248
+ const self = this;
249
+ const { core, handleScope, methodScope } = self;
250
+
251
+ // when Layer.match gets called, matchers functions run underneath. the API doesn't present a really clean
252
+ // way to instrument, so we're using scopes. we reference the scope's store in the instrumented matcher
253
+ // functions so we can correlate a matcher that succeeds to its corresponding route template segment.
254
+ core.patcher.patch(Layer.prototype, 'match', {
255
+ name: 'Layer.prototype.match',
256
+ patchType: `${patchType}-observation`,
257
+ pre(data) {
258
+ data._store = handleScope.getStore();
259
+ if (!data._store) return;
260
+ data[kMetaKey] = data.obj[kMetaKey] || data.obj.route?.[kMetaKey];
261
+ },
262
+ post(data) {
263
+ const { result } = data;
264
+ if (!result || !data._store || !data[kMetaKey]?.template) return;
265
+ // if the layer matches, we know to push corresponding path to store's template segments.
266
+ // we pop this value from the array in hook to all `next` callbacks below.
267
+ data._store.templateSegments.push(data[kMetaKey].template);
268
+ }
269
+ });
270
+
271
+ // patch the `next` callback of every Layer's request handler.
272
+ // we pop the value from the stack of route template segments being managed.
273
+ const handleRequest = pkgMeta.name == 'express' && pkgMeta.version[0] == '4' ? 'handle_request' : 'handleRequest';
274
+ core.patcher.patch(Layer.prototype, handleRequest, {
275
+ name: `Layer.prototype.${handleRequest}`,
276
+ patchType: `${patchType}-observation`,
277
+ pre(data) {
278
+ const next = data.args[2];
279
+ const meta = data.obj[kMetaKey] || data.obj.route?.[kMetaKey];
280
+
281
+ if (meta.template) {
282
+ const store = handleScope.getStore();
283
+ // this runs often and there's no need to use patcher here. monkey patch directly to optimize
284
+ data.args[2] = function (...args) {
285
+ if (store) store.templateSegments.pop();
286
+ const ret = next(...args);
287
+ return ret;
288
+ };
289
+ }
290
+ }
291
+ });
292
+
293
+ // instrument the Layer constructor. this will allow us to patch
294
+ // created matchers to help us build observation template from metadata.
295
+ // if matcher was successful we store index of it in handle scope.
296
+ return core.patcher.patch(Layer, {
297
+ name: 'router.Layer',
298
+ patchType: `${patchType}-observation`,
299
+ pre(data) {
300
+ data._methodScope = methodScope.getStore();
301
+ },
302
+ post(data) {
303
+ const instance = data.result;
304
+
305
+ // patch handle to report observation when called. it checks handle
306
+ // scope to get current request's template to match with discovery info
307
+ core.patcher.patch(instance, 'handle', {
308
+ name: 'router.Layer.handle',
309
+ patchType: `${patchType}-observation`,
310
+ pre(data) {
311
+ if (instance[kMetaKey]?.observables) {
312
+ const store = handleScope.getStore();
313
+ if (store) {
314
+ const method = StringPrototypeToLowerCase.call(data.args[0].method || '');
315
+ const template = ArrayPrototypeJoin.call(store.templateSegments, '') || '/';
316
+
317
+ if (instance[kMetaKey]?.observables?.[template]) {
318
+ self.observe({
319
+ url: data.args[0].originalUrl,
320
+ normalizedUrl: template,
321
+ method,
322
+ signature: instance[kMetaKey].observables[template],
323
+ type: instance[kMetaKey].routeType,
324
+ });
325
+ } else {
326
+ // one example that will trigger this logging is recursive routers
327
+ // this will at least log that something like this has been encountered
328
+ core.logger.error({
329
+ method,
330
+ template,
331
+ observables: instance[kMetaKey]?.observables,
332
+ }, 'unable to map route template to signature');
333
+ }
334
+ }
335
+ }
336
+ },
337
+ });
338
+ },
339
+ });
340
+ }
341
+
342
+ discover(info) {
343
+ const { method, observables, routeType } = info;
344
+ if (!method || !observables) return;
345
+
346
+ for (const [normalizedUrl, signature] of Object.entries(observables)) {
347
+ this.core.routeCoverage.discover({
348
+ url: normalizedUrl,
349
+ normalizedUrl,
350
+ method,
351
+ signature,
352
+ type: routeType,
353
+ framework: 'express',
354
+ });
355
+ }
356
+ }
357
+
358
+ observe(info) {
359
+ this.core.routeCoverage.observe({ framework: 'express', ...info });
360
+ }
361
+
362
+ /**
363
+ * Traverse the application's router "stack" and generate route discovery events
364
+ * using layer/route metadata that was appended by methods like router.post().
365
+ * @param {object} stack express application's router stack
366
+ */
367
+ handleDiscovery(router) {
368
+ const self = this;
369
+ // traverse fn executes this callback when visiting Layer instances
370
+ this.traverse(router, (path, key, value, target, state) => {
371
+ if (value.stack?.length > 0 || value.route) return;
372
+
373
+ // get metadata for this Layer
374
+ // metadata is on Layers within stacks and on Routes instances.
375
+ const metas = [];
376
+ for (let i = 0; i < path.length; i++) {
377
+ const seg = path[i];
378
+ if (Number.isFinite((Number(seg))) || seg == 'route') {
379
+ const metaPath = ArrayPrototypeJoin.call(path.slice(0, i + 1), '.');
380
+ const layerOrRoute = get(router, metaPath);
381
+ if (layerOrRoute?.[kMetaKey]) {
382
+ metas.push(layerOrRoute[kMetaKey]);
383
+ }
384
+ }
385
+ }
386
+
387
+ // mounted routers aren't discoverable since they themselves don't
388
+ // represent routes, they dispatch to sub routers/route handlers.
389
+ if (value.name != 'router' && value.handle?.name != 'router') {
390
+ let routeType;
391
+ if (value[kMetaKey]?.method == 'use') {
392
+ // if the handler is registered via `use` method, there are no
393
+ // associated HTTP methods. this use case is considered middleware.
394
+ if (!this.core.config.getEffectiveValue('assess.report_middleware_routes')) return;
395
+ routeType = RouteType.MIDDLEWARE;
396
+ } else {
397
+ routeType = RouteType.HTTP;
398
+ }
399
+ // `value` is a terminal Layer with observable signatures.
400
+ // emit discovery after appending metadata.
401
+ if (value[kMetaKey]) {
402
+ const observables = this.generateObservables(metas, value.handle);
403
+ if (observables) {
404
+ value[kMetaKey].routeType = routeType;
405
+ if (!value[kMetaKey].observables) {
406
+ value[kMetaKey].observables = observables;
407
+ } else {
408
+ Object.assign(value[kMetaKey].observables, observables);
409
+ }
410
+ }
411
+ self.discover(value[kMetaKey]);
412
+ }
413
+ }
414
+ });
415
+ }
416
+
417
+ /**
418
+ * Traverses the top-level app's routing stack and executes the provided callback when
419
+ * visiting nodes. The callback is invoked only to visit Layer instances, objects and
420
+ * functions, since these are the only 2 types that could have our metadata attached.
421
+ */
422
+ traverse(target, cb, path = [], data = new Map()) {
423
+ loopKeys: for (const key in target) {
424
+ path.push(key);
425
+
426
+ // only visit Layer instances
427
+ const maybeLayer = target[key];
428
+ if (
429
+ maybeLayer?.constructor?.name == 'Layer' &&
430
+ !maybeLayer?.stack?.length
431
+ ) {
432
+ let _data = data.get(maybeLayer);
433
+
434
+ if (!_data) {
435
+ _data = { paths: [] };
436
+ data.set(maybeLayer, _data);
437
+ }
438
+
439
+ // you can mount a router on itself
440
+ // prevent infinitely recursing into self-mounted routers
441
+ for (const visitedPath of _data.paths) {
442
+ // these conditions indicate recursive nesting at particular path
443
+ if (
444
+ path.length > visitedPath.length &&
445
+ visitedPath.every((el, i) => path[i] == el)
446
+ ) {
447
+ path.pop();
448
+ continue loopKeys;
449
+ }
450
+ }
451
+
452
+ _data.paths.push([...path]); // copy because path argument mutates
453
+
454
+ const halt = cb(path, key, maybeLayer, target) === false;
455
+ if (halt) return;
456
+ }
457
+
458
+ // might be able to fine-tune this a bit more
459
+ if (typeof maybeLayer == 'object' || typeof maybeLayer == 'function') {
460
+ this.traverse(maybeLayer, cb, path, data);
461
+ }
462
+
463
+ path.pop();
464
+ }
465
+ }
466
+
467
+ generateObservables(metas, handler) {
468
+ const { core } = this;
469
+ handler = core.patcher.unwrap(handler);
470
+
471
+ let type = '';
472
+ let method = '';
473
+ const templates = [];
474
+
475
+ // loop backwards
476
+ for (let i = metas.length - 1; i >= 0; i--) {
477
+ const meta = metas[i];
478
+ // use the most recent `type` and `method` used when building routes, so don't overwrite if set
479
+ if (!type && meta.type) type = meta.type;
480
+ if (!method && meta.method) method = meta.method;
481
+ templates.unshift(meta.template ?? '');
482
+ }
483
+ let template = ArrayPrototypeJoin.call(templates, '');
484
+ if (template == '') template = '/';
485
+ const signature = `${type}.${method}(${template}, ${formatHandler(handler)})`;
486
+
487
+ // this gets merged into meta.observables if same route handler is mounted at multiple paths
488
+ return {
489
+ [template]: signature,
490
+ };
491
+ }
492
+
493
+ attachDiscoveryMeta(target, meta) {
494
+ // if this is called after the server was listening we need to re-traverse
495
+ if (this.listenFlag && !this.isDiscoveryQueued) {
496
+ this.isDiscoveryQueued = true;
497
+ process.nextTick(() => {
498
+ this.isDiscoveryQueued = false;
499
+ this.events.emit('deferred-discovery');
500
+ });
501
+ }
502
+
503
+ Object.defineProperty(target, kMetaKey, {
504
+ enumerable: false,
505
+ value: meta,
506
+ });
507
+ }
508
+
509
+ static normalizeTemplate(paths) {
510
+ if (typeof paths == 'function') return '';
511
+ if (isString(paths)) return ExpressInstrumentation.normalizePathSegment(paths);
512
+ if (paths instanceof RegExp) return ExpressInstrumentation.normalizePathSegment(paths);
513
+
514
+ if (Array.isArray(paths)) {
515
+ const ret = [];
516
+ paths = paths.flat(Infinity).filter((v) => typeof v !== 'function');
517
+ if (paths.length) ret.push(...paths.map((v) => ExpressInstrumentation.normalizePathSegment(v) || '/'));
518
+ else ret.push('');
519
+ return ret.length > 1 ? `[${ArrayPrototypeJoin.call(ret, ', ')}]` : ret[0];
520
+ }
521
+ }
522
+
523
+ static normalizePathSegment(value) {
524
+ if (!value || value == '/') {
525
+ // app.[method](handler) and app.[method]('/', handler) are the same so default to empty string
526
+ return '';
527
+ }
528
+ if (value instanceof RegExp) {
529
+ const rxString = value.toString();
530
+ // todo: figure out best way to represent regexp in route template
531
+ return `/[${StringPrototypeSubstring.call(rxString, 1, rxString.length - 1)}]`;
532
+ }
533
+ return value;
534
+ }
535
+ }
@@ -0,0 +1,71 @@
1
+ /*
2
+ * Copyright: 2025 Contrast Security, Inc
3
+ * Contact: support@contrastsecurity.com
4
+ * License: Commercial
5
+
6
+ * NOTICE: This Software and the patented inventions embodied within may only be
7
+ * used as part of Contrast Security’s commercial offerings. Even though it is
8
+ * made available through public repositories, use of this Software is subject to
9
+ * the applicable End User Licensing Agreement found at
10
+ * https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed
11
+ * between Contrast Security and the End User. The Software may not be reverse
12
+ * engineered, modified, repackaged, sold, redistributed or otherwise used in a
13
+ * way not consistent with the End User License Agreement.
14
+ */
15
+ 'use strict';
16
+
17
+ const { RouteType } = require('@contrast/common');
18
+ const { patchType, formatHandler } = require('./../../utils/route-info');
19
+ const isArray = (arr) => Array.isArray(arr);
20
+ module.exports = function init(core) {
21
+ const { patcher, depHooks, routeCoverage, scopes } = core;
22
+
23
+ return core.routeCoverage.fastifyExpress = {
24
+ install() {
25
+ const name = 'fastifyExpress';
26
+ depHooks.resolve({ name: '@fastify/express', version: '*' }, (_xport) => patcher.patch(_xport, {
27
+ name,
28
+ patchType,
29
+ post(data) {
30
+ const store = { lock: true, name };
31
+ patcher.patch(data.args[0], 'use', {
32
+ name: 'use',
33
+ patchType,
34
+ around(next, data) {
35
+ const [url, fn] = data.args;
36
+ if (!url || !fn || !core.config.getEffectiveValue('assess.report_middleware_routes')) return next();
37
+
38
+ const middleware = isArray(fn) ? fn : [fn];
39
+ const formattedPath = isArray(url) ? `[${url.join(', ')}]` : url;
40
+ const patchedMiddleware = middleware.map((f) => {
41
+ const formattedHandler = formatHandler(f);
42
+ const signature = `fastify.use(${formattedPath}, ${formattedHandler})`;
43
+
44
+ const routeInfo = {
45
+ signature,
46
+ url: formattedPath,
47
+ method: 'use',
48
+ normalizedUrl: formattedPath,
49
+ type: RouteType.MIDDLEWARE,
50
+ framework: 'fastify'
51
+ };
52
+ routeCoverage.discover(routeInfo);
53
+
54
+ return patcher.patch(f, {
55
+ name: 'middleware',
56
+ patchType,
57
+ post() {
58
+ routeCoverage.observe(routeInfo);
59
+ }
60
+ });
61
+ });
62
+ data.args[1] = patchedMiddleware;
63
+
64
+ return !scopes.instrumentation.isLocked() ? scopes.instrumentation.run(store, next) : next();
65
+ }
66
+ });
67
+ }
68
+ }));
69
+ }
70
+ };
71
+ };