@contrast/agent-bundle 5.39.1 → 5.41.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 (279) hide show
  1. package/node_modules/@contrast/agent/lib/start-agent.js +50 -40
  2. package/node_modules/@contrast/agent/package.json +11 -11
  3. package/node_modules/@contrast/agent-swc-plugin/index.js +9 -3
  4. package/node_modules/@contrast/agent-swc-plugin/methods.js +15 -1
  5. package/node_modules/@contrast/agent-swc-plugin/package.json +5 -8
  6. package/node_modules/@contrast/agent-swc-plugin/rewriter.wasm +0 -0
  7. package/node_modules/@contrast/agentify/lib/index.js +2 -2
  8. package/node_modules/@contrast/agentify/package.json +15 -14
  9. package/node_modules/@contrast/architecture-components/package.json +5 -5
  10. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/string/replace.js +6 -3
  11. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/util-format.js +44 -21
  12. package/node_modules/@contrast/assess/lib/dataflow/sources/index.js +1 -1
  13. package/node_modules/@contrast/assess/lib/dataflow/sources/install/{body-parser1.js → body-parser.js} +2 -2
  14. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-bodyparsers.js +3 -1
  15. package/node_modules/@contrast/assess/lib/dataflow/sources/install/qs6.js +5 -5
  16. package/node_modules/@contrast/assess/lib/dataflow/sources/install/querystring.js +2 -1
  17. package/node_modules/@contrast/assess/lib/index.d.ts +0 -1
  18. package/node_modules/@contrast/assess/lib/make-source-context.js +7 -37
  19. package/node_modules/@contrast/assess/lib/sampler/common.js +7 -11
  20. package/node_modules/@contrast/assess/package.json +12 -11
  21. package/node_modules/@contrast/common/lib/constants.d.ts +6 -0
  22. package/node_modules/@contrast/common/lib/constants.js +8 -1
  23. package/node_modules/@contrast/common/lib/types.d.ts +7 -1
  24. package/node_modules/@contrast/common/package.json +1 -1
  25. package/node_modules/@contrast/config/lib/common.js +1 -1
  26. package/node_modules/@contrast/config/lib/config.js +49 -27
  27. package/node_modules/@contrast/config/lib/index.d.ts +3 -2
  28. package/node_modules/@contrast/config/lib/options.js +4 -4
  29. package/node_modules/@contrast/config/package.json +4 -3
  30. package/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +15 -15
  31. package/node_modules/@contrast/core/package.json +6 -6
  32. package/node_modules/@contrast/deadzones/package.json +5 -5
  33. package/node_modules/@contrast/dep-hooks/package.json +3 -3
  34. package/node_modules/@contrast/esm-hooks/package.json +6 -6
  35. package/node_modules/@contrast/instrumentation/lib/index.js +0 -1
  36. package/node_modules/@contrast/instrumentation/package.json +5 -5
  37. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +300 -152
  38. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/index.js +9 -2
  39. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/utils.js +54 -43
  40. package/node_modules/@contrast/library-analysis/package.json +4 -4
  41. package/node_modules/@contrast/logger/lib/serializers.js +2 -2
  42. package/node_modules/@contrast/logger/package.json +3 -3
  43. package/node_modules/@contrast/metrics/package.json +6 -6
  44. package/node_modules/@contrast/patcher/package.json +2 -2
  45. package/node_modules/@contrast/protect/lib/get-source-context.js +3 -1
  46. package/node_modules/@contrast/protect/lib/index.js +6 -1
  47. package/node_modules/@contrast/protect/lib/input-analysis/handlers.js +7 -9
  48. package/node_modules/@contrast/protect/lib/input-analysis/index.js +1 -1
  49. package/node_modules/@contrast/protect/lib/input-analysis/install/{body-parser1.js → body-parser.js} +1 -1
  50. package/node_modules/@contrast/protect/lib/input-analysis/install/http.js +18 -19
  51. package/node_modules/@contrast/protect/lib/input-analysis/install/qs6.js +18 -17
  52. package/node_modules/@contrast/protect/lib/input-analysis/install/universal-cookie4.js +2 -3
  53. package/node_modules/@contrast/protect/lib/make-source-context.js +22 -66
  54. package/node_modules/@contrast/protect/lib/semantic-analysis/handlers.js +73 -72
  55. package/node_modules/@contrast/protect/package.json +11 -11
  56. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/index.js +7 -7
  57. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.d.ts +3 -3
  58. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +24 -21
  59. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/routes-observed.js +2 -1
  60. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +1 -1
  61. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.d.ts +1 -2
  62. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +8 -2
  63. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.d.ts +2 -2
  64. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.js +22 -20
  65. package/node_modules/@contrast/reporter/package.json +7 -7
  66. package/node_modules/@contrast/rewriter/lib/index.js +2 -2
  67. package/node_modules/@contrast/rewriter/package.json +6 -6
  68. package/node_modules/@contrast/route-coverage/lib/index.d.ts +2 -0
  69. package/node_modules/@contrast/route-coverage/lib/index.js +15 -17
  70. package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +489 -202
  71. package/node_modules/@contrast/route-coverage/package.json +9 -9
  72. package/node_modules/@contrast/scopes/package.json +5 -5
  73. package/node_modules/@contrast/sec-obs/lib/traces/http.js +2 -2
  74. package/node_modules/@contrast/sec-obs/lib/traces/http.test.js +17 -0
  75. package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.js +2 -2
  76. package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.test.js +17 -0
  77. package/node_modules/@contrast/sec-obs/package.json +9 -9
  78. package/node_modules/@contrast/sources/lib/index.js +109 -0
  79. package/node_modules/@contrast/sources/lib/index.test.js +120 -0
  80. package/node_modules/@contrast/{route-coverage/lib/normalized-url-mapper.js → sources/lib/normalized-uri-mapper.js} +10 -3
  81. package/node_modules/@contrast/sources/lib/normalized-uri-mapper.test.js +59 -0
  82. package/node_modules/@contrast/{sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/constants.js → sources/lib/req-data.js} +0 -6
  83. package/node_modules/@contrast/sources/lib/source-info.js +183 -0
  84. package/node_modules/@contrast/sources/lib/source-info.test.js +68 -0
  85. package/node_modules/@contrast/sources/package.json +16 -0
  86. package/node_modules/@contrast/telemetry/package.json +6 -6
  87. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +2831 -77
  88. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +2831 -77
  89. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
  90. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +415 -98
  91. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +415 -98
  92. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
  93. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +106 -0
  94. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +106 -0
  95. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
  96. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
  97. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
  98. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
  99. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +2831 -77
  100. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +2831 -77
  101. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
  102. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +415 -98
  103. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +415 -98
  104. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
  105. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +106 -0
  106. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +106 -0
  107. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
  108. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
  109. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
  110. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
  111. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +2831 -77
  112. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +2858 -103
  113. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
  114. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +415 -98
  115. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +420 -102
  116. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
  117. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +106 -0
  118. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +106 -0
  119. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
  120. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
  121. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
  122. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
  123. package/node_modules/@opentelemetry/semantic-conventions/package.json +3 -3
  124. package/node_modules/@types/node/README.md +2 -2
  125. package/node_modules/@types/node/buffer.d.ts +5 -0
  126. package/node_modules/@types/node/dns/promises.d.ts +11 -10
  127. package/node_modules/@types/node/dns.d.ts +18 -19
  128. package/node_modules/@types/node/fs.d.ts +13 -1
  129. package/node_modules/@types/node/http.d.ts +4 -19
  130. package/node_modules/@types/node/inspector.d.ts +53 -0
  131. package/node_modules/@types/node/package.json +2 -82
  132. package/node_modules/@types/node/stream/web.d.ts +4 -0
  133. package/node_modules/axios/CHANGELOG.md +17 -0
  134. package/node_modules/axios/README.md +1 -4
  135. package/node_modules/axios/dist/axios.js +39 -5
  136. package/node_modules/axios/dist/axios.js.map +1 -1
  137. package/node_modules/axios/dist/axios.min.js +2 -2
  138. package/node_modules/axios/dist/axios.min.js.map +1 -1
  139. package/node_modules/axios/dist/browser/axios.cjs +46 -9
  140. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  141. package/node_modules/axios/dist/esm/axios.js +46 -9
  142. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  143. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  144. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  145. package/node_modules/axios/dist/node/axios.cjs +46 -9
  146. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  147. package/node_modules/axios/index.d.cts +13 -2
  148. package/node_modules/axios/lib/core/Axios.js +2 -2
  149. package/node_modules/axios/lib/core/mergeConfig.js +1 -1
  150. package/node_modules/axios/lib/env/data.js +1 -1
  151. package/node_modules/axios/lib/helpers/throttle.js +1 -1
  152. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +4 -3
  153. package/node_modules/axios/lib/utils.js +36 -0
  154. package/node_modules/axios/package.json +5 -5
  155. package/node_modules/deepmerge/.editorconfig +7 -0
  156. package/node_modules/deepmerge/.eslintcache +1 -0
  157. package/node_modules/deepmerge/changelog.md +167 -0
  158. package/node_modules/deepmerge/dist/cjs.js +133 -0
  159. package/node_modules/deepmerge/dist/umd.js +139 -0
  160. package/node_modules/deepmerge/index.d.ts +20 -0
  161. package/node_modules/deepmerge/index.js +106 -0
  162. package/node_modules/{path-to-regexp/LICENSE → deepmerge/license.txt} +1 -1
  163. package/node_modules/deepmerge/package.json +42 -0
  164. package/node_modules/deepmerge/readme.md +264 -0
  165. package/node_modules/deepmerge/rollup.config.js +22 -0
  166. package/node_modules/follow-redirects/package.json +1 -1
  167. package/node_modules/form-data/CHANGELOG.md +601 -0
  168. package/node_modules/form-data/{Readme.md → README.md} +4 -4
  169. package/node_modules/form-data/lib/form_data.js +2 -6
  170. package/node_modules/form-data/package.json +22 -6
  171. package/node_modules/nan/.github/workflows/ci.yml +8 -10
  172. package/node_modules/nan/.pre-commit-config.yaml +8 -0
  173. package/node_modules/nan/CHANGELOG.md +5 -1
  174. package/node_modules/nan/README.md +4 -4
  175. package/node_modules/nan/nan.h +16 -12
  176. package/node_modules/nan/nan_callbacks.h +13 -0
  177. package/node_modules/nan/nan_callbacks_12_inl.h +16 -2
  178. package/node_modules/nan/nan_callbacks_pre_12_inl.h +6 -2
  179. package/node_modules/nan/nan_maybe_43_inl.h +1 -1
  180. package/node_modules/nan/nan_maybe_pre_43_inl.h +1 -1
  181. package/node_modules/nan/nan_scriptorigin.h +11 -9
  182. package/node_modules/nan/nan_typedarray_contents.h +1 -1
  183. package/node_modules/nan/package.json +2 -2
  184. package/package.json +5 -3
  185. package/node_modules/@contrast/agentify/lib/sources.js +0 -94
  186. package/node_modules/@contrast/route-coverage/lib/install/http.js +0 -44
  187. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/LICENSE +0 -12
  188. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.d.ts +0 -385
  189. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.js +0 -270
  190. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.d.ts +0 -40
  191. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.js +0 -228
  192. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.d.ts +0 -65
  193. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.js +0 -66
  194. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.d.ts +0 -383
  195. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.js +0 -30
  196. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/package.json +0 -23
  197. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/LICENSE +0 -12
  198. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/README.md +0 -44
  199. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/common.js +0 -131
  200. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/config.js +0 -290
  201. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.d.ts +0 -328
  202. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.js +0 -29
  203. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/options.js +0 -836
  204. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/validators.js +0 -23
  205. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/package.json +0 -27
  206. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/LICENSE +0 -12
  207. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/README.md +0 -98
  208. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/agent-info.js +0 -36
  209. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/app-info.js +0 -233
  210. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/build-id.js +0 -51
  211. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/capture-stacktrace.js +0 -256
  212. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/contrast-methods.js +0 -155
  213. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/index.d.ts +0 -52
  214. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/ioc/core.js +0 -95
  215. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/is-agent-path.js +0 -37
  216. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/messages.js +0 -28
  217. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/index.js +0 -63
  218. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +0 -111
  219. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/server-settings-listener.js +0 -44
  220. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/cloud-provider-metadata.js +0 -146
  221. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/index.js +0 -225
  222. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/linux-os-info.js +0 -137
  223. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/utils.js +0 -35
  224. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/package.json +0 -33
  225. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/LICENSE +0 -12
  226. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/README.md +0 -94
  227. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.d.ts +0 -121
  228. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +0 -206
  229. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.d.ts +0 -72
  230. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +0 -88
  231. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.d.ts +0 -46
  232. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.js +0 -106
  233. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.d.ts +0 -28
  234. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.js +0 -66
  235. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.d.ts +0 -115
  236. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.js +0 -208
  237. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +0 -43
  238. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.js +0 -79
  239. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/package.json +0 -29
  240. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/LICENSE +0 -12
  241. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/README.md +0 -270
  242. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.d.ts +0 -16
  243. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.js +0 -132
  244. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.d.ts +0 -33
  245. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.js +0 -75
  246. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.d.ts +0 -15
  247. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.js +0 -34
  248. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/package.json +0 -28
  249. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/LICENSE +0 -12
  250. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/README.md +0 -51
  251. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.d.ts +0 -101
  252. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.js +0 -544
  253. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/package.json +0 -25
  254. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/LICENSE +0 -12
  255. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/README.md +0 -6
  256. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/cache.js +0 -318
  257. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/index.js +0 -216
  258. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/rewrite-is-deadzoned.js +0 -143
  259. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/package.json +0 -30
  260. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/LICENSE +0 -12
  261. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/constants.js +0 -26
  262. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.d.ts +0 -46
  263. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.js +0 -70
  264. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/bluebird.js +0 -128
  265. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/index.js +0 -34
  266. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb-core.js +0 -83
  267. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb3.js +0 -89
  268. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb4.js +0 -80
  269. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb6.js +0 -46
  270. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mysql.js +0 -151
  271. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/redis.js +0 -79
  272. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/utils.js +0 -35
  273. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/package.json +0 -28
  274. package/node_modules/form-data/README.md.bak +0 -355
  275. package/node_modules/path-to-regexp/Readme.md +0 -216
  276. package/node_modules/path-to-regexp/dist/index.d.ts +0 -136
  277. package/node_modules/path-to-regexp/dist/index.js +0 -403
  278. package/node_modules/path-to-regexp/dist/index.js.map +0 -1
  279. package/node_modules/path-to-regexp/package.json +0 -62
@@ -19,7 +19,6 @@ const process = require('process');
19
19
  const { isMainThread, threadId } = require('worker_threads');
20
20
  const { safeConsoleError, safeConsoleWarn } = require('@contrast/common');
21
21
  const { Core } = require('@contrast/core/lib/ioc/core');
22
- const _agentify = require('@contrast/agentify');
23
22
 
24
23
  const {
25
24
  name: agentName,
@@ -30,6 +29,8 @@ const {
30
29
  }
31
30
  } = require('../package.json');
32
31
 
32
+ const kContrastInitialized = Symbol(`${agentName}:initialized`);
33
+
33
34
  function initCore() {
34
35
  const core = new Core({
35
36
  agentName,
@@ -70,46 +71,55 @@ function loadFeatures(core) {
70
71
  }
71
72
 
72
73
  function startAgent({ type = 'cjs' } = {}) {
73
- if (isMainThread) {
74
- try {
75
- const core = initCore();
76
- const agentify = _agentify(core);
77
-
78
- return agentify(loadFeatures, {
79
- installOrder: [
80
- 'reporter',
81
- 'startupValidation',
82
- 'telemetry',
83
- 'contrastMethods',
84
- 'deadzones',
85
- 'scopes',
86
- 'secObs',
87
- 'sources',
88
- 'architectureComponents',
89
- 'routeCoverage',
90
- 'assess',
91
- 'protect',
92
- 'depHooks',
93
- 'libraryAnalysis',
94
- 'heapSnapshots',
95
- 'metrics',
96
- 'rewriteHooks',
97
- 'functionHooks',
98
- 'esmHooks',
99
- 'diagnostics',
100
- ],
101
- type
102
- });
103
- } catch (cause) {
104
- // agentify should catch any startup errors and handle necessary logging,
105
- // but this is just in case a fatal error occurs during composition.
106
- safeConsoleError(new Error(
107
- 'Startup error was not handled by agentify. Application Will be run without instrumentation.',
108
- { cause }
109
- ));
110
- }
111
- } else {
74
+ if (!isMainThread) {
112
75
  safeConsoleWarn('Not in main thread. Thread (tid: %d) continuing without instrumentation.', threadId);
76
+ return;
77
+ }
78
+
79
+ if (global[kContrastInitialized]) {
80
+ safeConsoleWarn('%s has already been initialized. Continuing without reinstrumentation.', agentName);
81
+ return;
82
+ }
83
+
84
+ try {
85
+ global[kContrastInitialized] = true;
86
+
87
+ const core = initCore();
88
+ const agentify = require('@contrast/agentify')(core);
89
+
90
+ return agentify(loadFeatures, {
91
+ installOrder: [
92
+ 'reporter',
93
+ 'startupValidation',
94
+ 'telemetry',
95
+ 'contrastMethods',
96
+ 'deadzones',
97
+ 'scopes',
98
+ 'secObs',
99
+ 'sources',
100
+ 'architectureComponents',
101
+ 'routeCoverage',
102
+ 'assess',
103
+ 'protect',
104
+ 'depHooks',
105
+ 'libraryAnalysis',
106
+ 'heapSnapshots',
107
+ 'metrics',
108
+ 'rewriteHooks',
109
+ 'functionHooks',
110
+ 'esmHooks',
111
+ 'diagnostics',
112
+ ],
113
+ type
114
+ });
115
+ } catch (cause) {
116
+ delete global[kContrastInitialized];
117
+ // agentify should catch any startup errors and handle necessary logging,
118
+ // but this is just in case a fatal error occurs during composition.
119
+ safeConsoleError(new Error(
120
+ 'Startup error was not handled by agentify. Application Will be run without instrumentation.',
121
+ { cause }
122
+ ));
113
123
  }
114
124
  }
115
125
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/agent",
3
- "version": "5.39.1",
3
+ "version": "5.41.0",
4
4
  "description": "Assess and Protect agents for Node.js",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -27,15 +27,15 @@
27
27
  "test": "bash ../scripts/test.sh"
28
28
  },
29
29
  "dependencies": {
30
- "@contrast/agentify": "1.52.1",
31
- "@contrast/architecture-components": "1.42.1",
32
- "@contrast/assess": "1.58.1",
33
- "@contrast/common": "1.34.1",
34
- "@contrast/core": "1.54.1",
35
- "@contrast/library-analysis": "1.44.1",
36
- "@contrast/protect": "1.64.1",
37
- "@contrast/route-coverage": "1.45.1",
38
- "@contrast/sec-obs": "1.0.0-alpha.8",
39
- "@contrast/telemetry": "1.29.1"
30
+ "@contrast/agentify": "1.53.0",
31
+ "@contrast/architecture-components": "1.43.0",
32
+ "@contrast/assess": "1.59.0",
33
+ "@contrast/common": "1.35.0",
34
+ "@contrast/core": "1.55.0",
35
+ "@contrast/library-analysis": "1.45.0",
36
+ "@contrast/protect": "1.65.0",
37
+ "@contrast/route-coverage": "1.46.0",
38
+ "@contrast/sec-obs": "1.0.0-alpha.9",
39
+ "@contrast/telemetry": "1.30.0"
40
40
  }
41
41
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright: 2024 Contrast Security, Inc
2
+ * Copyright: 2025 Contrast Security, Inc
3
3
  * Contact: support@contrastsecurity.com
4
4
  * License: Commercial
5
5
 
@@ -12,7 +12,13 @@
12
12
  * engineered, modified, repackaged, sold, redistributed or otherwise used in a
13
13
  * way not consistent with the End User License Agreement.
14
14
  */
15
+
16
+ const rewriter = require.resolve('./rewriter.wasm');
17
+ const unwriter = require.resolve('./unwriter.wasm');
18
+
15
19
  module.exports = {
16
- defaultRewriter: require.resolve('./rewriter.wasm'),
17
- defaultUnwriter: require.resolve('./unwriter.wasm'),
20
+ rewriter,
21
+ unwriter,
22
+ defaultRewriter: rewriter,
23
+ defaultUnwriter: unwriter,
18
24
  };
@@ -1 +1,15 @@
1
- module.exports = ["concat", "match", "matchAll", "replace", "replaceAll", "slice", "split", "substring", "substr", "toLowerCase", "toUpperCase", "trim", "join"]
1
+ module.exports = [
2
+ 'concat',
3
+ 'match',
4
+ 'matchAll',
5
+ 'replace',
6
+ 'replaceAll',
7
+ 'slice',
8
+ 'split',
9
+ 'substring',
10
+ 'substr',
11
+ 'toLowerCase',
12
+ 'toUpperCase',
13
+ 'trim',
14
+ 'join',
15
+ ];
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/agent-swc-plugin",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "SWC plugins Contrast Node agent",
5
5
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -8,10 +8,8 @@
8
8
  "swc-plugin"
9
9
  ],
10
10
  "main": "index.js",
11
- "types": "index.d.ts",
12
11
  "files": [
13
12
  "index.js",
14
- "index.d.ts",
15
13
  "methods.js",
16
14
  "*.wasm"
17
15
  ],
@@ -27,15 +25,14 @@
27
25
  "@swc/core": "^1.11.24"
28
26
  },
29
27
  "devDependencies": {
30
- "@swc/cli": "0.7.7",
28
+ "@swc/cli": "0.7.8",
31
29
  "@swc/core": "^1.11.24",
32
- "@tsconfig/node16": "16.1.3",
33
- "@types/express": "5.0.1",
30
+ "@tsconfig/node16": "16.1.4",
34
31
  "benchmark": "2.1.4",
35
- "chai": "5.2.0",
32
+ "chai": "5.2.1",
36
33
  "express": "5.1.0",
37
34
  "lodash": "4.17.21",
38
- "mocha": "11.3.0",
35
+ "mocha": "11.7.1",
39
36
  "rimraf": "6.0.1",
40
37
  "source-map": "^0.7.4",
41
38
  "tinybench": "4.0.1",
@@ -12,7 +12,6 @@
12
12
  * engineered, modified, repackaged, sold, redistributed or otherwise used in a
13
13
  * way not consistent with the End User License Agreement.
14
14
  */
15
- /*eslint node/no-unsupported-features/es-syntax: ["error", {version: >=10.0.0}]*/
16
15
  'use strict';
17
16
 
18
17
  const Module = require('module');
@@ -137,6 +136,7 @@ module.exports = function init(core = {}) {
137
136
 
138
137
  logger.info('Starting %s v%s', core.agentName, core.agentVersion);
139
138
  logger.info({ config }, 'Agent configuration');
139
+ logger.debug({ effectiveConfig: config.getReport({ redact: true }) }, 'Effective configuration');
140
140
 
141
141
  const plugin = await _callback?.(core);
142
142
 
@@ -191,9 +191,9 @@ module.exports = function init(core = {}) {
191
191
  { name: 'reporter', spec: '@contrast/reporter', default: true },
192
192
  { name: 'instrumentation', spec: '@contrast/instrumentation' },
193
193
  { name: 'metrics', spec: '@contrast/metrics' },
194
+ { name: 'sources', spec: '@contrast/sources' },
194
195
  // compose additional local services
195
196
  { name: 'heap-snapshots', spec: './heap-snapshots' },
196
- { name: 'sources', spec: './sources' },
197
197
  { name: 'function-hooks', spec: './function-hooks' },
198
198
  { name: 'diagnostics', spec: './diagnostics' },
199
199
  { name: 'rewrite-hooks', spec: './rewrite-hooks' },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/agentify",
3
- "version": "1.52.1",
3
+ "version": "1.53.0",
4
4
  "description": "Configures Contrast agent services and instrumentation within an application",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -20,21 +20,22 @@
20
20
  "test": "bash ../scripts/test.sh"
21
21
  },
22
22
  "dependencies": {
23
- "@contrast/common": "1.34.1",
24
- "@contrast/config": "1.49.1",
25
- "@contrast/core": "1.54.1",
26
- "@contrast/deadzones": "1.26.1",
27
- "@contrast/dep-hooks": "1.23.1",
28
- "@contrast/esm-hooks": "2.28.1",
23
+ "@contrast/common": "1.35.0",
24
+ "@contrast/config": "1.50.0",
25
+ "@contrast/core": "1.55.0",
26
+ "@contrast/deadzones": "1.27.0",
27
+ "@contrast/dep-hooks": "1.24.0",
28
+ "@contrast/esm-hooks": "2.29.0",
29
29
  "@contrast/find-package-json": "^1.1.0",
30
- "@contrast/instrumentation": "1.33.1",
31
- "@contrast/logger": "1.27.1",
32
- "@contrast/metrics": "1.31.1",
33
- "@contrast/patcher": "1.26.1",
30
+ "@contrast/instrumentation": "1.34.0",
31
+ "@contrast/logger": "1.28.0",
32
+ "@contrast/metrics": "1.32.0",
33
+ "@contrast/patcher": "1.27.0",
34
34
  "@contrast/perf": "1.3.1",
35
- "@contrast/reporter": "1.51.1",
36
- "@contrast/rewriter": "1.30.1",
37
- "@contrast/scopes": "1.24.1",
35
+ "@contrast/reporter": "1.52.0",
36
+ "@contrast/rewriter": "1.31.0",
37
+ "@contrast/scopes": "1.25.0",
38
+ "@contrast/sources": "1.1.0",
38
39
  "on-finished": "^2.4.1",
39
40
  "semver": "^7.6.0"
40
41
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/architecture-components",
3
- "version": "1.42.1",
3
+ "version": "1.43.0",
4
4
  "description": "Detects external systems being connected to by applications.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -20,9 +20,9 @@
20
20
  "test": "bash ../scripts/test.sh"
21
21
  },
22
22
  "dependencies": {
23
- "@contrast/common": "1.34.1",
24
- "@contrast/dep-hooks": "1.23.1",
25
- "@contrast/logger": "1.27.1",
26
- "@contrast/patcher": "1.26.1"
23
+ "@contrast/common": "1.35.0",
24
+ "@contrast/dep-hooks": "1.24.0",
25
+ "@contrast/logger": "1.28.0",
26
+ "@contrast/patcher": "1.27.0"
27
27
  }
28
28
  }
@@ -288,10 +288,13 @@ module.exports = function(core) {
288
288
  source: data._objInfo ? (data._history.size > 1 ? 'A' : 'O') : 'P',
289
289
  target: 'R',
290
290
  });
291
- if (!event) return null;
292
291
 
293
- const { extern } = tracker.track(result, event);
294
- return extern;
292
+ if (event) {
293
+ const { extern } = tracker.track(result, event);
294
+ return extern;
295
+ }
296
+
297
+ return result;
295
298
  }
296
299
  });
297
300
  },
@@ -24,12 +24,35 @@ module.exports = function(core) {
24
24
  patcher,
25
25
  depHooks,
26
26
  assess: {
27
+ inspect,
27
28
  getPropagatorContext,
28
29
  eventFactory: { createPropagationEvent },
29
30
  dataflow: { tracker }
30
31
  }
31
32
  } = core;
32
33
 
34
+ function traverseObject(obj, result, tags, history, depth = 1) {
35
+ let i = 0;
36
+ for (const val of Object.values(obj)) {
37
+
38
+ if (typeof val === 'object' && depth <= 4) tags = traverseObject(val, result, tags, history, depth += 1);
39
+
40
+ const valInfo = tracker.getData(val);
41
+ if (!valInfo || depth > 4) break;
42
+
43
+ const currIdx = result.indexOf(val, i);
44
+ if (currIdx > -1) {
45
+ i = currIdx + val.length;
46
+ } else {
47
+ break;
48
+ }
49
+ tags = createAppendTags(tags, valInfo.tags, currIdx);
50
+ history.push({ ...valInfo });
51
+ }
52
+
53
+ return tags;
54
+ }
55
+
33
56
  return core.assess.dataflow.propagation.utilFormat = {
34
57
  install() {
35
58
  depHooks.resolve({ name: 'util', version: '*' }, (util) => {
@@ -57,13 +80,14 @@ module.exports = function(core) {
57
80
 
58
81
  for (i; i < args.length; i++) {
59
82
  let arg = args[i];
83
+ if (!arg) continue;
84
+
60
85
  const formatChar = formatChars[i - 1];
61
86
  if (formatChar) {
62
87
  switch (formatChar) {
63
88
  case 's':
64
89
  if (typeof arg === 'object') {
65
- // util.inspect instrumentation NYI
66
- arg = arg?.toString ? arg.toString() : util.inspect(arg, { depth: 0, colors: false, compact: 3 });
90
+ break; // handled below
67
91
  } else {
68
92
  arg = String(arg);
69
93
  }
@@ -77,36 +101,35 @@ module.exports = function(core) {
77
101
  arg = JSON.stringify(arg) ?? 'undefined';
78
102
  break;
79
103
  case 'o':
80
- // util.inspect instrumentation NYI
81
- arg = util.inspect(arg, { showHidden: true, showProxy: true });
82
- break;
104
+ break; // handled below
83
105
  case 'O':
84
- // util.inspect instrumentation NYI
85
- arg = util.inspect(arg);
86
- break;
106
+ break; // handled below
87
107
  case 'c':
88
108
  // c is ignored and skipped
89
109
  arg = '';
90
110
  break;
91
111
  }
92
112
  } else if (typeof arg !== 'string') {
93
- arg = util.inspect(arg);
113
+ arg = inspect(arg);
94
114
  }
95
115
 
96
- const argInfo = tracker.getData(arg);
97
- if (!argInfo) continue;
116
+ if (typeof arg === 'string') {
117
+ const argInfo = tracker.getData(arg);
118
+ if (!argInfo) continue;
98
119
 
99
- const currIdx = result.indexOf(arg, idx);
100
- if (currIdx > -1) {
101
- idx = currIdx + arg.length;
102
- } else {
103
- continue;
120
+ const currIdx = result.indexOf(arg, idx);
121
+ if (currIdx > -1) {
122
+ idx = currIdx + arg.length;
123
+ } else {
124
+ continue;
125
+ }
126
+ newTags = createAppendTags(newTags, argInfo.tags, currIdx);
127
+ history.push({ ...argInfo });
128
+ eventArgs.push({ value: argInfo ? argInfo.value : arg, tracked: !!argInfo });
129
+ } else if (typeof arg === 'object') {
130
+ newTags = traverseObject(arg, result, newTags, history);
131
+ eventArgs.push({ value: inspect(arg), tracked: false });
104
132
  }
105
-
106
- newTags = createAppendTags(newTags, argInfo.tags, currIdx);
107
-
108
- history.push({ ...argInfo });
109
- eventArgs.push({ value: argInfo ? argInfo.value : arg, tracked: !!argInfo });
110
133
  }
111
134
 
112
135
  const resultInfo = tracker.getData(result);
@@ -26,7 +26,7 @@ module.exports = function (core) {
26
26
  require('./install/hapi')(core);
27
27
  require('./install/koa')(core);
28
28
  require('./install/restify')(core);
29
- require('./install/body-parser1')(core);
29
+ require('./install/body-parser')(core);
30
30
  require('./install/busboy')(core);
31
31
  require('./install/cookie-parser1')(core);
32
32
  require('./install/formidable1')(core);
@@ -85,7 +85,7 @@ module.exports = function init(core) {
85
85
  },
86
86
  });
87
87
 
88
- sourceContext.parsedBody = !!Object.keys(_data).length;
88
+ sourceContext.parsedBody = !!(_data && Object.keys(_data).length);
89
89
  } catch (err) {
90
90
  logger.error({ err, funcKey: data.funcKey }, 'unable to handle source');
91
91
  }
@@ -97,7 +97,7 @@ module.exports = function init(core) {
97
97
  core.assess.dataflow.sources.bodyParser1Instrumentation = {
98
98
  install() {
99
99
  depHooks.resolve(
100
- { name: 'body-parser', version: '>=1 <2' },
100
+ { name: 'body-parser', version: '>=1 <3' },
101
101
  /** @param {import('body-parser').BodyParser} bodyParser */
102
102
  (bodyParser) => {
103
103
  bodyParser = patcher.patch(bodyParser, {
@@ -23,6 +23,7 @@ module.exports = (core) => {
23
23
  depHooks,
24
24
  patcher,
25
25
  logger,
26
+ scopes,
26
27
  assess: {
27
28
  getSourceContext,
28
29
  dataflow: { sources }
@@ -51,7 +52,8 @@ module.exports = (core) => {
51
52
  }
52
53
 
53
54
  data.args[1] = async function contrastNext(origErr) {
54
- const inputType = sourceContext.reqData.headers?.['content-type']?.includes('/json')
55
+ const contentType = scopes.sources.getStore()?.sourceInfo?.contentType;
56
+ const inputType = contentType?.includes?.('/json')
55
57
  ? InputType.JSON_VALUE
56
58
  : typeof ctx.request.body == 'object'
57
59
  ? InputType.PARAMETER_VALUE
@@ -23,6 +23,7 @@ module.exports = (core) => {
23
23
  depHooks,
24
24
  patcher,
25
25
  logger,
26
+ scopes,
26
27
  assess: {
27
28
  getSourceContext,
28
29
  dataflow: { sources }
@@ -38,21 +39,20 @@ module.exports = (core) => {
38
39
  patchType,
39
40
  post({ args, hooked, orig, result, funcKey }) {
40
41
  const sourceContext = getSourceContext();
41
-
42
- if (!sourceContext) {
43
- return;
44
- }
42
+ if (!sourceContext) return;
45
43
 
46
44
  if (sourceContext.parsedQuery) {
47
45
  logger.trace({ inputType, funcKey }, 'values already tracked');
48
46
  return;
49
47
  }
50
48
 
49
+ const queries = scopes.sources.getStore()?.sourceInfo?.queries;
50
+
51
51
  // We need to run analysis for the `qs` result only when it's used as a query parser.
52
52
  // `qs` is used also for parsing bodies, but these cases we handle individually with
53
53
  // the respective library that's using it (e.g. `formidable`, `co-body`) because in
54
54
  // some cases its use is optional and we cannot rely on it.
55
- if (sourceContext.reqData?.queries === args[0]) {
55
+ if (queries === args[0]) {
56
56
  try {
57
57
  sources.handle({
58
58
  context: 'req.query',
@@ -24,6 +24,7 @@ module.exports = (core) => {
24
24
  depHooks,
25
25
  patcher,
26
26
  logger,
27
+ scopes,
27
28
  } = core;
28
29
 
29
30
  core.assess.dataflow.sources.querystringInstrumentation = {
@@ -46,7 +47,7 @@ module.exports = (core) => {
46
47
 
47
48
  // We only run analysis for the `querystring` result when it's used
48
49
  // as the framework's query parser
49
- if (sourceContext.reqData?.queries === args[0]) {
50
+ if (scopes.sources.getStore().sourceInfo?.queries === args[0]) {
50
51
  try {
51
52
  core.assess.dataflow.sources.handle({
52
53
  context: 'req.query',
@@ -38,7 +38,6 @@ export interface Core extends _Core {
38
38
  }
39
39
 
40
40
  export interface SourceContext {
41
- reqData: object,
42
41
  responseData: {
43
42
  contentType: string,
44
43
  },
@@ -15,7 +15,6 @@
15
15
 
16
16
  'use strict';
17
17
 
18
- const { primordials: { StringPrototypeToLowerCase, StringPrototypeSlice } } = require('@contrast/common');
19
18
  const { Core } = require('@contrast/core/lib/ioc/core');
20
19
 
21
20
  /**
@@ -33,57 +32,28 @@ function factory(core) {
33
32
  const { assess, logger } = core;
34
33
 
35
34
  /**
35
+ * todo: how to handle non-HTTP sources
36
36
  * @returns {import('@contrast/assess').SourceContext}
37
37
  */
38
- return core.assess.makeSourceContext = function(sourceData) {
39
- try {
38
+ return core.assess.makeSourceContext = function ({ store, incomingMessage: req }) {
40
39
 
41
- const ctx = sourceData.store.assess = {
40
+ try {
41
+ const ctx = store.assess = {
42
42
  // default policy to `null` until it is set later below. this will cause
43
43
  // all instrumentation to short-circuit, see `./get-source-context.js`.
44
44
  policy: null,
45
45
  };
46
46
 
47
- if (!core.config.getEffectiveValue('assess.enable')) {
48
- return ctx;
49
- }
50
-
51
- // todo: how to handle non-HTTP sources
52
- const { incomingMessage: req } = sourceData;
53
-
54
- // minimally process the request data for sampling and exclusions.
55
- // more request fields will be appended in final result below.
56
- let uriPath;
57
- let queries;
58
- const idx = req.url.indexOf('?');
59
- if (idx >= 0) {
60
- uriPath = StringPrototypeSlice.call(req.url, 0, idx);
61
- queries = StringPrototypeSlice.call(req.url, idx + 1);
62
- } else {
63
- uriPath = req.url;
64
- queries = '';
65
- }
66
- ctx.reqData = {
67
- method: req.method,
68
- uriPath,
69
- queries,
70
- };
47
+ if (!core.config.getEffectiveValue('assess.enable')) return ctx;
71
48
 
72
49
  // check whether sampling allows processing
73
- ctx.sampleInfo = assess.sampler?.getSampleInfo(sourceData) ?? null;
50
+ ctx.sampleInfo = assess.sampler?.getSampleInfo(store.sourceInfo) ?? null;
74
51
  if (ctx.sampleInfo?.canSample === false) return ctx;
75
52
 
76
53
  // set policy - can be returned as `null` if request is url-excluded.
77
- ctx.policy = assess.getPolicy(ctx.reqData);
54
+ ctx.policy = assess.getPolicy(store.sourceInfo);
78
55
  if (!ctx.policy) return ctx;
79
56
 
80
- // build remaining reqData
81
- ctx.reqData.headers = { ...req.headers }; // copy to avoid storing tracked values
82
- ctx.reqData.ip = req.socket.remoteAddress;
83
- ctx.reqData.httpVersion = req.httpVersion;
84
- if (ctx.reqData.headers['content-type'])
85
- ctx.reqData.contentType = StringPrototypeToLowerCase.call(ctx.reqData.headers['content-type']);
86
-
87
57
  ctx.propagationEventsCount = 0;
88
58
  ctx.sourceEventsCount = 0;
89
59
  ctx.responseData = {};