@contrast/agent-bundle 5.42.0 → 5.46.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 (484) hide show
  1. package/README.md +1 -10
  2. package/node_modules/@contrast/agent/README.md +1 -10
  3. package/node_modules/@contrast/agent/package.json +12 -12
  4. package/node_modules/@contrast/agent-swc-plugin/package.json +3 -3
  5. package/node_modules/@contrast/agentify/lib/rewrite-hooks.js +3 -3
  6. package/node_modules/@contrast/agentify/lib/utils.js +13 -7
  7. package/node_modules/@contrast/agentify/package.json +17 -17
  8. package/node_modules/@contrast/architecture-components/package.json +6 -6
  9. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/ejs/template.js +1 -1
  10. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/pug/index.js +1 -1
  11. package/node_modules/@contrast/assess/lib/dataflow/sinks/install/http/server-response.js +1 -12
  12. package/node_modules/@contrast/assess/lib/dataflow/sinks/install/restify.js +1 -1
  13. package/node_modules/@contrast/assess/lib/dataflow/sources/handler.js +21 -24
  14. package/node_modules/@contrast/assess/lib/dataflow/sources/install/http.js +1 -1
  15. package/node_modules/@contrast/assess/lib/dataflow/tracker.js +1 -1
  16. package/node_modules/@contrast/assess/lib/get-source-context.js +11 -22
  17. package/node_modules/@contrast/assess/lib/index.js +1 -1
  18. package/node_modules/@contrast/assess/lib/make-source-context.js +5 -10
  19. package/node_modules/@contrast/assess/lib/policy.js +400 -0
  20. package/node_modules/@contrast/assess/lib/response-scanning/handlers/index.js +10 -14
  21. package/node_modules/@contrast/assess/lib/response-scanning/install/http.js +0 -12
  22. package/node_modules/@contrast/assess/lib/session-configuration/handlers.js +1 -1
  23. package/node_modules/@contrast/assess/package.json +14 -14
  24. package/node_modules/@contrast/code-events/binding.gyp +1 -1
  25. package/node_modules/@contrast/code-events/package.json +11 -9
  26. package/node_modules/@contrast/code-events/prebuilds/darwin-x64+arm64/@contrast+code-events.abi108.node +0 -0
  27. package/node_modules/@contrast/code-events/prebuilds/darwin-x64+arm64/@contrast+code-events.abi115.node +0 -0
  28. package/node_modules/@contrast/code-events/prebuilds/darwin-x64+arm64/@contrast+code-events.abi127.node +0 -0
  29. package/node_modules/@contrast/code-events/prebuilds/darwin-x64+arm64/{@contrast+code-events.abi93.node → @contrast+code-events.abi137.node} +0 -0
  30. package/node_modules/@contrast/code-events/prebuilds/linux-arm64/@contrast+code-events.abi108.armv8.node +0 -0
  31. package/node_modules/@contrast/code-events/prebuilds/linux-arm64/@contrast+code-events.abi115.armv8.node +0 -0
  32. package/node_modules/@contrast/code-events/prebuilds/linux-arm64/@contrast+code-events.abi127.armv8.node +0 -0
  33. package/node_modules/@contrast/code-events/prebuilds/linux-arm64/@contrast+code-events.abi137.armv8.node +0 -0
  34. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi108.glibc.node +0 -0
  35. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi108.musl.node +0 -0
  36. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi115.glibc.node +0 -0
  37. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi115.musl.node +0 -0
  38. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi127.glibc.node +0 -0
  39. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi127.musl.node +0 -0
  40. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi137.glibc.node +0 -0
  41. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi137.musl.node +0 -0
  42. package/node_modules/@contrast/code-events/prebuilds/win32-x64/@contrast+code-events.abi108.node +0 -0
  43. package/node_modules/@contrast/code-events/prebuilds/win32-x64/@contrast+code-events.abi115.node +0 -0
  44. package/node_modules/@contrast/code-events/prebuilds/win32-x64/@contrast+code-events.abi127.node +0 -0
  45. package/node_modules/@contrast/code-events/prebuilds/win32-x64/@contrast+code-events.abi137.node +0 -0
  46. package/node_modules/@contrast/common/lib/constants.d.ts +1 -1
  47. package/node_modules/@contrast/common/lib/constants.js +1 -1
  48. package/node_modules/@contrast/common/lib/index.js +15 -15
  49. package/node_modules/@contrast/common/lib/primordials.d.ts +22 -20
  50. package/node_modules/@contrast/common/lib/types.d.ts +18 -6
  51. package/node_modules/@contrast/common/package.json +2 -2
  52. package/node_modules/@contrast/config/lib/options.js +37 -4
  53. package/node_modules/@contrast/config/package.json +4 -4
  54. package/node_modules/@contrast/core/lib/app-info.js +53 -74
  55. package/node_modules/@contrast/core/lib/index.d.ts +17 -1
  56. package/node_modules/@contrast/core/lib/sensitive-data-masking/index.js +33 -5
  57. package/node_modules/@contrast/core/package.json +10 -9
  58. package/node_modules/@contrast/deadzones/package.json +6 -6
  59. package/node_modules/@contrast/dep-hooks/lib/export-handler-registry.d.ts +17 -13
  60. package/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +16 -4
  61. package/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.d.ts +2 -2
  62. package/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +2 -3
  63. package/node_modules/@contrast/dep-hooks/lib/handler-invoker.d.ts +6 -6
  64. package/node_modules/@contrast/dep-hooks/lib/handler-invoker.js +0 -1
  65. package/node_modules/@contrast/dep-hooks/lib/helpers.d.ts +0 -7
  66. package/node_modules/@contrast/dep-hooks/lib/helpers.js +2 -18
  67. package/node_modules/@contrast/dep-hooks/lib/index.d.ts +17 -12
  68. package/node_modules/@contrast/dep-hooks/lib/index.js +5 -3
  69. package/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +2 -1
  70. package/node_modules/@contrast/dep-hooks/lib/package-finder.js +6 -6
  71. package/node_modules/@contrast/dep-hooks/package.json +4 -3
  72. package/node_modules/@contrast/distringuish/package.json +7 -6
  73. package/node_modules/@contrast/distringuish/prebuilds/darwin-x64+arm64/@contrast+distringuish.abi108.node +0 -0
  74. package/node_modules/@contrast/distringuish/prebuilds/darwin-x64+arm64/@contrast+distringuish.abi115.node +0 -0
  75. package/node_modules/@contrast/distringuish/prebuilds/darwin-x64+arm64/@contrast+distringuish.abi127.node +0 -0
  76. package/node_modules/@contrast/distringuish/prebuilds/darwin-x64+arm64/{@contrast+distringuish.abi93.node → @contrast+distringuish.abi137.node} +0 -0
  77. package/node_modules/@contrast/distringuish/prebuilds/linux-arm64/@contrast+distringuish.abi108.armv8.node +0 -0
  78. package/node_modules/@contrast/distringuish/prebuilds/linux-arm64/@contrast+distringuish.abi115.armv8.node +0 -0
  79. package/node_modules/@contrast/distringuish/prebuilds/linux-arm64/@contrast+distringuish.abi127.armv8.node +0 -0
  80. package/node_modules/@contrast/distringuish/prebuilds/linux-arm64/@contrast+distringuish.abi137.armv8.node +0 -0
  81. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi108.glibc.node +0 -0
  82. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi108.musl.node +0 -0
  83. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi115.glibc.node +0 -0
  84. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi115.musl.node +0 -0
  85. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi127.glibc.node +0 -0
  86. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi127.musl.node +0 -0
  87. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi137.glibc.node +0 -0
  88. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi137.musl.node +0 -0
  89. package/node_modules/@contrast/distringuish/prebuilds/win32-x64/@contrast+distringuish.abi108.node +0 -0
  90. package/node_modules/@contrast/distringuish/prebuilds/win32-x64/@contrast+distringuish.abi115.node +0 -0
  91. package/node_modules/@contrast/distringuish/prebuilds/win32-x64/@contrast+distringuish.abi127.node +0 -0
  92. package/node_modules/@contrast/distringuish/prebuilds/win32-x64/@contrast+distringuish.abi137.node +0 -0
  93. package/node_modules/@contrast/esm-hooks/lib/debug-methods.mjs +4 -4
  94. package/node_modules/@contrast/esm-hooks/lib/get-file-type.mjs +2 -9
  95. package/node_modules/@contrast/esm-hooks/lib/hooks.mjs +0 -2
  96. package/node_modules/@contrast/esm-hooks/lib/redirects/builtin/fs/promises.mjs +2 -0
  97. package/node_modules/@contrast/esm-hooks/lib/redirects/builtin/fs.mjs +3 -0
  98. package/node_modules/@contrast/esm-hooks/lib/redirects/builtin/util.mjs +1 -0
  99. package/node_modules/@contrast/esm-hooks/package.json +7 -7
  100. package/node_modules/@contrast/fn-inspect/package.json +9 -5
  101. package/node_modules/@contrast/fn-inspect/prebuilds/darwin-x64+arm64/@contrast+fn-inspect.abi108.node +0 -0
  102. package/node_modules/@contrast/fn-inspect/prebuilds/darwin-x64+arm64/@contrast+fn-inspect.abi115.node +0 -0
  103. package/node_modules/@contrast/fn-inspect/prebuilds/darwin-x64+arm64/@contrast+fn-inspect.abi127.node +0 -0
  104. package/node_modules/@contrast/fn-inspect/prebuilds/darwin-x64+arm64/{@contrast+fn-inspect.abi93.node → @contrast+fn-inspect.abi137.node} +0 -0
  105. package/node_modules/@contrast/fn-inspect/prebuilds/linux-arm64/@contrast+fn-inspect.abi108.armv8.node +0 -0
  106. package/node_modules/@contrast/fn-inspect/prebuilds/linux-arm64/@contrast+fn-inspect.abi115.armv8.node +0 -0
  107. package/node_modules/@contrast/fn-inspect/prebuilds/linux-arm64/@contrast+fn-inspect.abi127.armv8.node +0 -0
  108. package/node_modules/@contrast/fn-inspect/prebuilds/linux-arm64/@contrast+fn-inspect.abi137.armv8.node +0 -0
  109. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi108.glibc.node +0 -0
  110. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi108.musl.node +0 -0
  111. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi115.glibc.node +0 -0
  112. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi115.musl.node +0 -0
  113. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi127.glibc.node +0 -0
  114. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi127.musl.node +0 -0
  115. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi137.glibc.node +0 -0
  116. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/{@contrast+fn-inspect.abi93.musl.node → @contrast+fn-inspect.abi137.musl.node} +0 -0
  117. package/node_modules/@contrast/fn-inspect/prebuilds/win32-x64/@contrast+fn-inspect.abi108.node +0 -0
  118. package/node_modules/@contrast/fn-inspect/prebuilds/win32-x64/@contrast+fn-inspect.abi115.node +0 -0
  119. package/node_modules/@contrast/fn-inspect/prebuilds/win32-x64/@contrast+fn-inspect.abi127.node +0 -0
  120. package/node_modules/@contrast/fn-inspect/prebuilds/win32-x64/@contrast+fn-inspect.abi137.node +0 -0
  121. package/node_modules/@contrast/instrumentation/lib/http2.js +0 -11
  122. package/node_modules/@contrast/instrumentation/package.json +6 -6
  123. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +312 -224
  124. package/node_modules/@contrast/library-analysis/package.json +6 -6
  125. package/node_modules/@contrast/logger/lib/index.js +18 -8
  126. package/node_modules/@contrast/logger/lib/serializers.js +5 -5
  127. package/node_modules/@contrast/logger/lib/utils.d.ts +0 -6
  128. package/node_modules/@contrast/logger/package.json +4 -4
  129. package/node_modules/@contrast/metrics/lib/index.d.ts +6 -6
  130. package/node_modules/@contrast/metrics/lib/index.js +0 -1
  131. package/node_modules/@contrast/metrics/package.json +7 -7
  132. package/node_modules/@contrast/patcher/package.json +3 -3
  133. package/node_modules/@contrast/perf/package.json +7 -4
  134. package/node_modules/@contrast/protect/lib/hardening/handlers.js +37 -21
  135. package/node_modules/@contrast/protect/lib/index.d.ts +3 -2
  136. package/node_modules/@contrast/protect/lib/index.js +9 -2
  137. package/node_modules/@contrast/protect/lib/input-analysis/handlers.js +269 -238
  138. package/node_modules/@contrast/protect/lib/input-analysis/install/http.js +3 -4
  139. package/node_modules/@contrast/protect/lib/input-tracing/{handlers/index.js → handlers.js} +15 -15
  140. package/node_modules/@contrast/protect/lib/input-tracing/index.js +0 -1
  141. package/node_modules/@contrast/protect/lib/make-source-context.js +5 -7
  142. package/node_modules/@contrast/protect/lib/policy.js +130 -95
  143. package/node_modules/@contrast/protect/lib/semantic-analysis/handlers.js +19 -18
  144. package/node_modules/@contrast/protect/package.json +12 -12
  145. package/node_modules/@contrast/reporter/lib/index.js +1 -1
  146. package/node_modules/@contrast/reporter/lib/reporters/base.d.ts +0 -1
  147. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/index.d.ts +4 -2
  148. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/index.js +14 -14
  149. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.d.ts +43 -6
  150. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +262 -429
  151. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/server-inventory.d.ts +3 -3
  152. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +17 -7
  153. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +12 -13
  154. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/utils.js +6 -7
  155. package/node_modules/@contrast/reporter/lib/reporters/file.js +1 -1
  156. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.d.ts +2 -3
  157. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.js +72 -86
  158. package/node_modules/@contrast/reporter/lib/reporters/security-logger/messages.js +6 -7
  159. package/node_modules/@contrast/reporter/lib/validators.js +0 -1
  160. package/node_modules/@contrast/reporter/node_modules/sonic-boom/.husky/pre-commit +2 -2
  161. package/node_modules/@contrast/reporter/node_modules/sonic-boom/.taprc +5 -0
  162. package/node_modules/@contrast/reporter/node_modules/sonic-boom/README.md +2 -4
  163. package/node_modules/@contrast/reporter/node_modules/sonic-boom/bench.js +5 -36
  164. package/node_modules/@contrast/reporter/node_modules/sonic-boom/index.js +56 -300
  165. package/node_modules/@contrast/reporter/node_modules/sonic-boom/package.json +12 -7
  166. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test.js +1684 -0
  167. package/node_modules/@contrast/reporter/node_modules/sonic-boom/types/index.d.ts +1 -2
  168. package/node_modules/@contrast/reporter/package.json +10 -10
  169. package/node_modules/@contrast/rewriter/lib/index.js +5 -43
  170. package/node_modules/@contrast/rewriter/package.json +8 -8
  171. package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +0 -5
  172. package/node_modules/@contrast/route-coverage/lib/install/restify.js +1 -1
  173. package/node_modules/@contrast/route-coverage/package.json +10 -10
  174. package/node_modules/@contrast/scopes/package.json +6 -6
  175. package/node_modules/@contrast/sec-obs/lib/traces/http.js +1 -1
  176. package/node_modules/@contrast/sec-obs/lib/traces/http.test.js +1 -1
  177. package/node_modules/@contrast/sec-obs/package.json +10 -10
  178. package/node_modules/@contrast/sources/lib/index.js +1 -1
  179. package/node_modules/@contrast/sources/lib/index.test.js +0 -26
  180. package/node_modules/@contrast/sources/package.json +3 -3
  181. package/node_modules/@contrast/telemetry/package.json +6 -6
  182. package/node_modules/@opentelemetry/semantic-conventions/README.md +3 -2
  183. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +4350 -2882
  184. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +4350 -2882
  185. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
  186. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.d.ts +136 -0
  187. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js +154 -0
  188. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_events.js.map +1 -0
  189. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +713 -141
  190. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +713 -141
  191. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
  192. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.d.ts +2 -0
  193. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js +2 -0
  194. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index-incubating.js.map +1 -1
  195. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index.d.ts +1 -0
  196. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js +1 -0
  197. package/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js.map +1 -1
  198. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +7 -1
  199. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +7 -1
  200. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
  201. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.d.ts +5 -0
  202. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js +23 -0
  203. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_events.js.map +1 -0
  204. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
  205. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
  206. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
  207. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +4350 -2882
  208. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +4350 -2882
  209. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
  210. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.d.ts +136 -0
  211. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js +154 -0
  212. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_events.js.map +1 -0
  213. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +713 -141
  214. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +713 -141
  215. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
  216. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.d.ts +2 -0
  217. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js +2 -0
  218. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index-incubating.js.map +1 -1
  219. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.d.ts +1 -0
  220. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js +1 -0
  221. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/index.js.map +1 -1
  222. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +7 -1
  223. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +7 -1
  224. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
  225. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.d.ts +5 -0
  226. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js +23 -0
  227. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_events.js.map +1 -0
  228. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
  229. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
  230. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
  231. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +4350 -2882
  232. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +4354 -2883
  233. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
  234. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.d.ts +136 -0
  235. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js +157 -0
  236. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_events.js.map +1 -0
  237. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +713 -141
  238. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +720 -147
  239. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
  240. package/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.d.ts +2 -0
  241. package/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js +2 -0
  242. package/node_modules/@opentelemetry/semantic-conventions/build/src/index-incubating.js.map +1 -1
  243. package/node_modules/@opentelemetry/semantic-conventions/build/src/index.d.ts +1 -0
  244. package/node_modules/@opentelemetry/semantic-conventions/build/src/index.js +1 -0
  245. package/node_modules/@opentelemetry/semantic-conventions/build/src/index.js.map +1 -1
  246. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +7 -1
  247. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +10 -4
  248. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
  249. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.d.ts +5 -0
  250. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js +26 -0
  251. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js.map +1 -0
  252. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
  253. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
  254. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
  255. package/node_modules/@opentelemetry/semantic-conventions/package.json +6 -7
  256. package/node_modules/@swc/core/README.md +5 -0
  257. package/node_modules/@swc/core/binding.d.ts +2 -2
  258. package/node_modules/@swc/core/index.d.ts +5 -4
  259. package/node_modules/@swc/core/index.js +2 -2
  260. package/node_modules/@swc/core/package.json +12 -12
  261. package/node_modules/@swc/core-darwin-arm64/package.json +1 -1
  262. package/node_modules/@swc/core-darwin-arm64/swc.darwin-arm64.node +0 -0
  263. package/node_modules/@swc/core-darwin-x64/package.json +1 -1
  264. package/node_modules/@swc/core-darwin-x64/swc.darwin-x64.node +0 -0
  265. package/node_modules/@swc/core-linux-arm64-gnu/package.json +1 -1
  266. package/node_modules/@swc/core-linux-arm64-gnu/swc.linux-arm64-gnu.node +0 -0
  267. package/node_modules/@swc/core-linux-arm64-musl/package.json +1 -1
  268. package/node_modules/@swc/core-linux-arm64-musl/swc.linux-arm64-musl.node +0 -0
  269. package/node_modules/@swc/core-linux-x64-gnu/package.json +1 -1
  270. package/node_modules/@swc/core-linux-x64-gnu/swc.linux-x64-gnu.node +0 -0
  271. package/node_modules/@swc/core-linux-x64-musl/package.json +1 -1
  272. package/node_modules/@swc/core-linux-x64-musl/swc.linux-x64-musl.node +0 -0
  273. package/node_modules/@swc/core-win32-arm64-msvc/package.json +1 -1
  274. package/node_modules/@swc/core-win32-arm64-msvc/swc.win32-arm64-msvc.node +0 -0
  275. package/node_modules/@swc/core-win32-x64-msvc/package.json +1 -1
  276. package/node_modules/@swc/core-win32-x64-msvc/swc.win32-x64-msvc.node +0 -0
  277. package/node_modules/@swc/types/index.d.ts +14 -5
  278. package/node_modules/@swc/types/package.json +2 -2
  279. package/node_modules/@types/node/README.md +1 -1
  280. package/node_modules/@types/node/assert/strict.d.ts +105 -2
  281. package/node_modules/@types/node/assert.d.ts +119 -95
  282. package/node_modules/@types/node/buffer.d.ts +1 -1
  283. package/node_modules/@types/node/child_process.d.ts +26 -122
  284. package/node_modules/@types/node/crypto.d.ts +161 -17
  285. package/node_modules/@types/node/dns.d.ts +5 -0
  286. package/node_modules/@types/node/events.d.ts +79 -33
  287. package/node_modules/@types/node/fs/promises.d.ts +41 -26
  288. package/node_modules/@types/node/fs.d.ts +276 -35
  289. package/node_modules/@types/node/globals.d.ts +148 -347
  290. package/node_modules/@types/node/http.d.ts +57 -8
  291. package/node_modules/@types/node/https.d.ts +5 -0
  292. package/node_modules/@types/node/index.d.ts +7 -2
  293. package/node_modules/@types/node/inspector.d.ts +187 -4089
  294. package/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  295. package/node_modules/@types/node/module.d.ts +1 -0
  296. package/node_modules/@types/node/net.d.ts +21 -0
  297. package/node_modules/@types/node/package.json +3 -3
  298. package/node_modules/@types/node/sqlite.d.ts +34 -0
  299. package/node_modules/@types/node/test.d.ts +106 -23
  300. package/node_modules/@types/node/tls.d.ts +32 -0
  301. package/node_modules/@types/node/ts5.6/index.d.ts +7 -2
  302. package/node_modules/@types/node/ts5.7/index.d.ts +7 -2
  303. package/node_modules/@types/node/url.d.ts +25 -6
  304. package/node_modules/@types/node/util.d.ts +11 -4
  305. package/node_modules/@types/node/vm.d.ts +73 -10
  306. package/node_modules/@types/node/wasi.d.ts +21 -0
  307. package/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  308. package/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  309. package/node_modules/@types/node/{dom-events.d.ts → web-globals/events.d.ts} +49 -51
  310. package/node_modules/@types/node/web-globals/fetch.d.ts +50 -0
  311. package/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  312. package/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  313. package/node_modules/@types/node/worker_threads.d.ts +84 -50
  314. package/node_modules/@types/node/zlib.d.ts +6 -0
  315. package/node_modules/axios/CHANGELOG.md +58 -0
  316. package/node_modules/axios/README.md +87 -10
  317. package/node_modules/axios/dist/axios.js +355 -289
  318. package/node_modules/axios/dist/axios.js.map +1 -1
  319. package/node_modules/axios/dist/axios.min.js +2 -2
  320. package/node_modules/axios/dist/axios.min.js.map +1 -1
  321. package/node_modules/axios/dist/browser/axios.cjs +286 -213
  322. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  323. package/node_modules/axios/dist/esm/axios.js +286 -213
  324. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  325. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  326. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  327. package/node_modules/axios/dist/node/axios.cjs +377 -213
  328. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  329. package/node_modules/axios/index.d.cts +12 -5
  330. package/node_modules/axios/index.d.ts +13 -4
  331. package/node_modules/axios/lib/adapters/adapters.js +6 -4
  332. package/node_modules/axios/lib/adapters/fetch.js +221 -162
  333. package/node_modules/axios/lib/adapters/http.js +18 -0
  334. package/node_modules/axios/lib/adapters/xhr.js +11 -8
  335. package/node_modules/axios/lib/core/Axios.js +0 -2
  336. package/node_modules/axios/lib/core/AxiosError.js +10 -3
  337. package/node_modules/axios/lib/core/dispatchRequest.js +1 -1
  338. package/node_modules/axios/lib/defaults/index.js +1 -1
  339. package/node_modules/axios/lib/env/data.js +1 -1
  340. package/node_modules/axios/lib/helpers/buildURL.js +1 -3
  341. package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +73 -0
  342. package/node_modules/axios/lib/helpers/resolveConfig.js +13 -9
  343. package/node_modules/axios/lib/utils.js +5 -3
  344. package/node_modules/axios/package.json +18 -12
  345. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  346. package/node_modules/balanced-match/LICENSE.md +21 -0
  347. package/node_modules/balanced-match/README.md +97 -0
  348. package/node_modules/balanced-match/index.js +62 -0
  349. package/node_modules/balanced-match/package.json +48 -0
  350. package/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  351. package/node_modules/brace-expansion/LICENSE +21 -0
  352. package/node_modules/brace-expansion/README.md +135 -0
  353. package/node_modules/brace-expansion/index.js +203 -0
  354. package/node_modules/brace-expansion/package.json +49 -0
  355. package/node_modules/detect-libc/lib/detect-libc.js +59 -13
  356. package/node_modules/detect-libc/lib/elf.js +39 -0
  357. package/node_modules/detect-libc/lib/filesystem.js +18 -8
  358. package/node_modules/detect-libc/package.json +3 -2
  359. package/node_modules/minimatch/LICENSE +15 -0
  360. package/node_modules/minimatch/README.md +454 -0
  361. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts +2 -0
  362. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.d.ts.map +1 -0
  363. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +14 -0
  364. package/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js.map +1 -0
  365. package/node_modules/minimatch/dist/commonjs/ast.d.ts +20 -0
  366. package/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -0
  367. package/node_modules/minimatch/dist/commonjs/ast.js +592 -0
  368. package/node_modules/minimatch/dist/commonjs/ast.js.map +1 -0
  369. package/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts +8 -0
  370. package/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -0
  371. package/node_modules/minimatch/dist/commonjs/brace-expressions.js +152 -0
  372. package/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -0
  373. package/node_modules/minimatch/dist/commonjs/escape.d.ts +12 -0
  374. package/node_modules/minimatch/dist/commonjs/escape.d.ts.map +1 -0
  375. package/node_modules/minimatch/dist/commonjs/escape.js +22 -0
  376. package/node_modules/minimatch/dist/commonjs/escape.js.map +1 -0
  377. package/node_modules/minimatch/dist/commonjs/index.d.ts +94 -0
  378. package/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -0
  379. package/node_modules/minimatch/dist/commonjs/index.js +1017 -0
  380. package/node_modules/minimatch/dist/commonjs/index.js.map +1 -0
  381. package/node_modules/minimatch/dist/commonjs/package.json +3 -0
  382. package/node_modules/minimatch/dist/commonjs/unescape.d.ts +17 -0
  383. package/node_modules/minimatch/dist/commonjs/unescape.d.ts.map +1 -0
  384. package/node_modules/minimatch/dist/commonjs/unescape.js +24 -0
  385. package/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -0
  386. package/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts +2 -0
  387. package/node_modules/minimatch/dist/esm/assert-valid-pattern.d.ts.map +1 -0
  388. package/node_modules/minimatch/dist/esm/assert-valid-pattern.js +10 -0
  389. package/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
  390. package/node_modules/minimatch/dist/esm/ast.d.ts +20 -0
  391. package/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -0
  392. package/node_modules/minimatch/dist/esm/ast.js +588 -0
  393. package/node_modules/minimatch/dist/esm/ast.js.map +1 -0
  394. package/node_modules/minimatch/dist/esm/brace-expressions.d.ts +8 -0
  395. package/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -0
  396. package/node_modules/minimatch/dist/esm/brace-expressions.js +148 -0
  397. package/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
  398. package/node_modules/minimatch/dist/esm/escape.d.ts +12 -0
  399. package/node_modules/minimatch/dist/esm/escape.d.ts.map +1 -0
  400. package/node_modules/minimatch/dist/esm/escape.js +18 -0
  401. package/node_modules/minimatch/dist/esm/escape.js.map +1 -0
  402. package/node_modules/minimatch/dist/esm/index.d.ts +94 -0
  403. package/node_modules/minimatch/dist/esm/index.d.ts.map +1 -0
  404. package/node_modules/minimatch/dist/esm/index.js +1001 -0
  405. package/node_modules/minimatch/dist/esm/index.js.map +1 -0
  406. package/node_modules/minimatch/dist/esm/package.json +3 -0
  407. package/node_modules/minimatch/dist/esm/unescape.d.ts +17 -0
  408. package/node_modules/minimatch/dist/esm/unescape.d.ts.map +1 -0
  409. package/node_modules/minimatch/dist/esm/unescape.js +20 -0
  410. package/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
  411. package/node_modules/minimatch/package.json +82 -0
  412. package/node_modules/node-abi/LICENSE +21 -0
  413. package/node_modules/node-abi/README.md +54 -0
  414. package/node_modules/node-abi/abi_registry.json +408 -0
  415. package/node_modules/node-abi/getNextTarget.js +13 -0
  416. package/node_modules/node-abi/index.js +161 -0
  417. package/node_modules/node-abi/package.json +46 -0
  418. package/node_modules/node-addon-api/README.md +25 -249
  419. package/node_modules/node-addon-api/common.gypi +1 -0
  420. package/node_modules/node-addon-api/index.js +2 -0
  421. package/node_modules/node-addon-api/napi-inl.h +592 -166
  422. package/node_modules/node-addon-api/napi.h +167 -59
  423. package/node_modules/node-addon-api/node_addon_api.gyp +10 -0
  424. package/node_modules/node-addon-api/noexcept.gypi +1 -1
  425. package/node_modules/node-addon-api/package.json +13 -13
  426. package/node_modules/node-addon-api/tools/conversion.js +1 -1
  427. package/node_modules/protobufjs/dist/light/protobuf.js +2 -2
  428. package/node_modules/protobufjs/dist/light/protobuf.min.js +2 -2
  429. package/node_modules/protobufjs/dist/minimal/protobuf.js +2 -2
  430. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +2 -2
  431. package/node_modules/protobufjs/dist/protobuf.js +2 -2
  432. package/node_modules/protobufjs/dist/protobuf.min.js +2 -2
  433. package/node_modules/protobufjs/google/protobuf/descriptor.json +2 -2
  434. package/node_modules/protobufjs/google/protobuf/descriptor.proto +2 -1
  435. package/node_modules/protobufjs/package.json +1 -1
  436. package/node_modules/undici-types/agent.d.ts +0 -4
  437. package/node_modules/undici-types/client.d.ts +0 -2
  438. package/node_modules/undici-types/diagnostics-channel.d.ts +9 -0
  439. package/node_modules/undici-types/dispatcher.d.ts +3 -8
  440. package/node_modules/undici-types/env-http-proxy-agent.d.ts +2 -1
  441. package/node_modules/undici-types/eventsource.d.ts +3 -3
  442. package/node_modules/undici-types/fetch.d.ts +1 -0
  443. package/node_modules/undici-types/h2c-client.d.ts +0 -2
  444. package/node_modules/undici-types/handlers.d.ts +1 -1
  445. package/node_modules/undici-types/index.d.ts +3 -1
  446. package/node_modules/undici-types/mock-client.d.ts +2 -0
  447. package/node_modules/undici-types/mock-interceptor.d.ts +2 -1
  448. package/node_modules/undici-types/mock-pool.d.ts +2 -0
  449. package/node_modules/undici-types/package.json +1 -1
  450. package/node_modules/undici-types/retry-handler.d.ts +9 -0
  451. package/node_modules/undici-types/snapshot-agent.d.ts +107 -0
  452. package/node_modules/undici-types/webidl.d.ts +29 -15
  453. package/node_modules/undici-types/websocket.d.ts +3 -1
  454. package/package.json +3 -3
  455. package/node_modules/@contrast/assess/lib/get-policy.js +0 -336
  456. package/node_modules/@contrast/code-events/prebuilds/linux-arm64/@contrast+code-events.abi93.armv8.node +0 -0
  457. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi93.glibc.node +0 -0
  458. package/node_modules/@contrast/code-events/prebuilds/linux-x64/@contrast+code-events.abi93.musl.node +0 -0
  459. package/node_modules/@contrast/code-events/prebuilds/win32-x64/@contrast+code-events.abi93.node +0 -0
  460. package/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +0 -111
  461. package/node_modules/@contrast/distringuish/prebuilds/linux-arm64/@contrast+distringuish.abi93.armv8.node +0 -0
  462. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi93.glibc.node +0 -0
  463. package/node_modules/@contrast/distringuish/prebuilds/linux-x64/@contrast+distringuish.abi93.musl.node +0 -0
  464. package/node_modules/@contrast/distringuish/prebuilds/win32-x64/@contrast+distringuish.abi93.node +0 -0
  465. package/node_modules/@contrast/fn-inspect/prebuilds/linux-arm64/@contrast+fn-inspect.abi93.armv8.node +0 -0
  466. package/node_modules/@contrast/fn-inspect/prebuilds/linux-x64/@contrast+fn-inspect.abi93.glibc.node +0 -0
  467. package/node_modules/@contrast/fn-inspect/prebuilds/win32-x64/@contrast+fn-inspect.abi93.node +0 -0
  468. package/node_modules/@contrast/perf/lib/index.test.js +0 -547
  469. package/node_modules/@contrast/perf/lib/tsconfig.json +0 -31
  470. package/node_modules/@contrast/protect/lib/input-tracing/install/spdy.js +0 -63
  471. package/node_modules/@contrast/reporter/node_modules/sonic-boom/.taprc.yaml +0 -11
  472. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/destroy.test.js +0 -49
  473. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/end.test.js +0 -98
  474. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/flush-sync.test.js +0 -140
  475. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/flush.test.js +0 -419
  476. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/fsync.test.js +0 -63
  477. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/helper.js +0 -42
  478. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/minlength.test.js +0 -35
  479. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/mode.test.js +0 -116
  480. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/reopen.test.js +0 -239
  481. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/retry.test.js +0 -414
  482. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/sync.test.js +0 -261
  483. package/node_modules/@contrast/reporter/node_modules/sonic-boom/test/write.test.js +0 -465
  484. package/node_modules/node-addon-api/tools/eslint-format.js +0 -79
@@ -0,0 +1,400 @@
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
+
16
+ 'use strict';
17
+
18
+ const {
19
+ Event,
20
+ ExclusionType,
21
+ InputType,
22
+ Rule,
23
+ ResponseScanningRule,
24
+ SessionConfigurationRule,
25
+ set,
26
+ primordials: { ArrayPrototypeJoin, RegExpPrototypeTest }
27
+ } = require('@contrast/common');
28
+ const { Core } = require('@contrast/core/lib/ioc/core');
29
+
30
+ const ASSESS_RULES = Object.values({
31
+ ...Rule,
32
+ ...ResponseScanningRule,
33
+ ...SessionConfigurationRule,
34
+ });
35
+ const BROAD_INPUT_EXCLUSION_TYPES = [
36
+ ExclusionType.BODY,
37
+ ExclusionType.QUERYSTRING
38
+ ];
39
+ const NAMED_INPUT_EXCLUSION_TYPES = [
40
+ ExclusionType.COOKIE,
41
+ ExclusionType.HEADER,
42
+ ExclusionType.PARAMETER
43
+ ];
44
+ const BODY_TYPES = [
45
+ InputType.BODY,
46
+ InputType.JSON_VALUE,
47
+ InputType.JSON_ARRAYED_VALUE,
48
+ InputType.MULTIPART_CONTENT_TYPE,
49
+ InputType.MULTIPART_FIELD_NAME,
50
+ InputType.MULTIPART_NAME,
51
+ InputType.MULTIPART_VALUE,
52
+ ];
53
+ const COMPONENT_NAME = 'assess.policy';
54
+
55
+ class AssessPolicy {
56
+ /**
57
+ * @param {{
58
+ * config: import('@contrast/config').Config,
59
+ * logger: import('@contrast/logger').Logger,
60
+ * messages: import('@contrast/common').Messages,
61
+ * }} core
62
+ */
63
+ constructor(core) {
64
+ Object.defineProperty(this, 'core', { value: core });
65
+
66
+ this.version = Date.now();
67
+ this.disabledRules = new Set(core.config.getEffectiveValue('assess.rules.disabled_rules'));
68
+ this.exclusionMap = new Map([
69
+ [ExclusionType.BODY, []],
70
+ [ExclusionType.COOKIE, []],
71
+ [ExclusionType.HEADER, []],
72
+ [ExclusionType.PARAMETER, []],
73
+ [ExclusionType.QUERYSTRING, []],
74
+ [ExclusionType.URL, []],
75
+ ]);
76
+
77
+ core.messages.on(Event.SERVER_SETTINGS_UPDATE, (msg) => {
78
+ if (!msg.assess && !msg.exclusions) return;
79
+
80
+ this.version = Date.now();
81
+
82
+ if (msg.assess) {
83
+ const enabledRules = new Set();
84
+ this.disabledRules = new Set(core.config.getEffectiveValue('assess.rules.disabled_rules'));
85
+
86
+ for (const ruleId of ASSESS_RULES) {
87
+ const enable = msg.assess[ruleId]?.enable;
88
+ if (enable === false) {
89
+ this.disabledRules.add(ruleId);
90
+ // map to "sub-rules"
91
+ if (ruleId === Rule.NOSQL_INJECTION) this.disabledRules.add(Rule.NOSQL_INJECTION_MONGO);
92
+ } else if (enable === true) {
93
+ enabledRules.add(ruleId);
94
+ if (ruleId === Rule.NOSQL_INJECTION) enabledRules.add(Rule.NOSQL_INJECTION_MONGO);
95
+ }
96
+ }
97
+ this.core.logger.info({
98
+ enabledRules,
99
+ disabledRules: Array.from(this.disabledRules)
100
+ }, 'Assess policy rules updated');
101
+ }
102
+
103
+ if (msg.exclusions) {
104
+ for (const arr of this.exclusionMap.values()) arr.length = 0;
105
+
106
+ const rawDtmList = [
107
+ ...(msg?.exclusions?.input || []),
108
+ ...(msg?.exclusions?.url || []),
109
+ ].filter((exclusion) => exclusion?.modes?.includes?.('assess'));
110
+
111
+ // reset global exclusion state
112
+ for (const type of Object.values(ExclusionType)) {
113
+ this.exclusionMap.get(type).length = 0;
114
+ }
115
+
116
+ if (!rawDtmList.length) return;
117
+
118
+ for (const dtm of rawDtmList) {
119
+ // normalize different dtm types
120
+ dtm.type = dtm.type || 'URL';
121
+ const { type } = dtm;
122
+ const key = ExclusionType[type];
123
+ // defensive code against unanticipated DTM values
124
+ if (key) {
125
+ const Ctor = dtm.type === ExclusionType.URL ? UrlExclusion : InputExclusion;
126
+ this.exclusionMap.get(dtm.type).push(new Ctor(dtm));
127
+ }
128
+ }
129
+
130
+ this.core.logger.info({
131
+ exclusions: Object.fromEntries(this.exclusionMap)
132
+ }, 'Assess exclusions updated (%s total)', rawDtmList.length);
133
+ }
134
+ });
135
+ }
136
+
137
+ getRequestPolicy(sourceInfo) {
138
+ return new RequestPolicy(this.core, sourceInfo);
139
+ }
140
+ }
141
+
142
+ class RequestPolicy {
143
+ /**
144
+ * @param {{
145
+ * config: import('@contrast/config').Config,
146
+ * logger: import('@contrast/logger').Logger,
147
+ * messages: import('@contrast/common').Messages,
148
+ * }} core
149
+ * @param {import('@contrast/common').SourceInfo} sourceInfo
150
+ */
151
+ constructor(core, sourceInfo) {
152
+ Object.defineProperty(this, 'core', { value: core });
153
+ this.sourceInfo = sourceInfo;
154
+ this.init();
155
+ }
156
+
157
+ /**
158
+ * Used to (re)initialize the instance's exclusions, reading from current assess global policy.
159
+ */
160
+ init() {
161
+ const { core, sourceInfo } = this;
162
+ this.allowed = false;
163
+ this.version = core.assess.policy.version;
164
+ this.exclusions = {};
165
+
166
+ if (!core.config.getEffectiveValue('assess.enable')) {
167
+ this.allowed = true;
168
+ return;
169
+ }
170
+
171
+ // Evaluate URL exclusions.
172
+ // If one matches and applies to all rules, we set `allowed: true` which will
173
+ // disable assess for the request (via getSourceContext()). If specific rules are
174
+ // disabled, we remove them from the request policy's set of enabled rules.
175
+ for (const urlExclusion of this.core.assess.policy.exclusionMap.get(ExclusionType.URL)) {
176
+ if (urlExclusion.matchesUriPath(sourceInfo.uriPath)) {
177
+ if (!urlExclusion.rules?.size) {
178
+ core.logger.debug({
179
+ name: urlExclusion.name
180
+ }, 'All Assess rules have been disabled by URL exclusion');
181
+ this.allowed = true;
182
+ // no need to further process exclusions - request will be ignored
183
+ return;
184
+ } else {
185
+ // build as needed
186
+ if (!this.exclusions.disabledRules) this.exclusions.disabledRules = new Set();
187
+
188
+ for (const ruleId of urlExclusion.rules) {
189
+ this.exclusions.disabledRules.add(ruleId);
190
+ }
191
+ core.logger.debug({
192
+ name: urlExclusion.name,
193
+ rules: Array.from(urlExclusion.rules),
194
+ }, 'Assess rules disabled by URL exclusion');
195
+ }
196
+ }
197
+ }
198
+
199
+ // Process input exclusions that apply broadly: BODY, QUERYSTRING
200
+ for (const type of BROAD_INPUT_EXCLUSION_TYPES) {
201
+ for (const exclusion of core.assess.policy.exclusionMap.get(type)) {
202
+ if (exclusion.matchesUriPath(sourceInfo.uriPath)) {
203
+ // build as needed
204
+ if (!this.exclusions[type]) this.exclusions[type] = { track: true, excludedRules: new Set() };
205
+ const inputPolicy = this.exclusions[type];
206
+
207
+ if (exclusion.rules.size) {
208
+ for (const ruleId of exclusion.rules) {
209
+ inputPolicy.excludedRules.add(ruleId);
210
+ }
211
+ } else {
212
+ inputPolicy.track = false;
213
+ inputPolicy.excludedRules.clear();
214
+ break;
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ for (const type of NAMED_INPUT_EXCLUSION_TYPES) {
221
+ for (const exclusion of core.assess.policy.exclusionMap.get(type)) {
222
+ if (exclusion.matchesUriPath(sourceInfo.uriPath)) {
223
+ if (!this.exclusions[type]) this.exclusions[type] = [];
224
+ this.exclusions[type].push(exclusion);
225
+ }
226
+ }
227
+ }
228
+ }
229
+
230
+ /**
231
+ * Given input type and optional field name will give instructions on how
232
+ * to track based on global policy and various exclusions that may apply.
233
+ * @param {} inputType
234
+ * @param {} fieldName
235
+ * @returns {boolean|Set<string>} false - do not track
236
+ * true - track
237
+ * Set - track but add tags to exclude these rules
238
+ */
239
+ getInputPolicy(inputType, fieldName) {
240
+ if (this.version < this.core.assess.policy.version) this.init();
241
+ if (this.allowed) return false; // don't track - request ignored
242
+
243
+ let inputRuleExclusions;
244
+ let excludedRuleIds;
245
+
246
+ if (inputType === InputType.HEADER) {
247
+ inputRuleExclusions = this.exclusions[ExclusionType.HEADER];
248
+ } else if (inputType === InputType.QUERYSTRING) {
249
+ if (this.exclusions[ExclusionType.QUERYSTRING]?.track === false) {
250
+ return false;
251
+ } else {
252
+ if (this.exclusions[ExclusionType.QUERYSTRING]?.excludedRules)
253
+ excludedRuleIds = new Set(this.exclusions[ExclusionType.QUERYSTRING]?.excludedRules);
254
+ inputRuleExclusions = this.exclusions[ExclusionType.PARAMETER];
255
+ }
256
+ } else if (inputType === InputType.URL_PARAMETER) {
257
+ inputRuleExclusions = this.exclusions[ExclusionType.PARAMETER];
258
+ } else if ([
259
+ InputType.COOKIE_NAME,
260
+ InputType.COOKIE_VALUE
261
+ ].includes(inputType)) {
262
+ inputRuleExclusions = this.exclusions[ExclusionType.COOKIE];
263
+ } else if (BODY_TYPES.includes(inputType)) {
264
+ if (this.exclusions[ExclusionType.BODY]?.track === false) {
265
+ return false;
266
+ } else {
267
+ inputRuleExclusions = this.exclusions[ExclusionType.PARAMETER];
268
+ }
269
+ }
270
+
271
+ if (inputRuleExclusions) {
272
+ for (const exclusion of inputRuleExclusions) {
273
+ if (exclusion.matchesInputName(fieldName)) {
274
+ // disables some rules
275
+ if (exclusion.rules.size) {
276
+ for (const ruleId of exclusion.rules) {
277
+ if (!excludedRuleIds) excludedRuleIds = new Set();
278
+ excludedRuleIds.add(ruleId);
279
+ }
280
+ } else {
281
+ return false; // don't track - all rules disabled
282
+ }
283
+ }
284
+ }
285
+ }
286
+
287
+ if (this.exclusions.disabledRules || excludedRuleIds) {
288
+ // only URL Exclusions disabled these rules
289
+ if (!excludedRuleIds) return this.exclusions.disabledRules;
290
+ // only Input Exclusion disabled these
291
+ if (!this.exclusions.disabledRules) return excludedRuleIds;
292
+ // merge since URL Exclusions and Input Exclusions have disabled rules
293
+ return new Set([...this.exclusions.disabledRules, ...excludedRuleIds]);
294
+ }
295
+
296
+ return true;
297
+ }
298
+
299
+ isRuleEnabled(ruleId) {
300
+ if (this.version < this.core.assess.policy.version) this.init();
301
+
302
+ if (this.allowed) return false;
303
+
304
+ return (
305
+ !this.exclusions.disabledRules?.has?.(ruleId) &&
306
+ !this.core.assess.policy.disabledRules?.has?.(ruleId)
307
+ );
308
+ }
309
+ }
310
+
311
+ /**
312
+ * @typedef InputPolicy
313
+ * @property {boolean} track
314
+ * @property {Set<Rule>} excludedRules
315
+ */
316
+
317
+ class UrlExclusion {
318
+ constructor(dtm) {
319
+ this._urlRegex = null;
320
+ this._urls = new Set();
321
+ this.name = dtm.name;
322
+ this.type = ExclusionType[dtm.type];
323
+ this.rules = new Set(dtm.assess_rules);
324
+
325
+ if (dtm.urls.length) {
326
+ const regexSegments = [];
327
+ for (const url of dtm.urls) {
328
+ if (shouldBeRegExp(url)) {
329
+ regexSegments.push(url);
330
+ } else {
331
+ this._urls.add(url);
332
+ }
333
+ }
334
+ if (regexSegments.length) {
335
+ this._urlRegex = new RegExp(`^${ArrayPrototypeJoin.call(regexSegments, '|')}$`);
336
+ }
337
+ }
338
+ }
339
+
340
+ /**
341
+ * Checks whether the current URI path matches any of the exclusion's URL values.
342
+ * Exclusions that don't match for the current request will not be enabled. The
343
+ * interpretation of the DTM is that if its urls list is empty, then that means
344
+ * it should match all requestss (can be the case for input exclusions).
345
+ * @param {string} uriPath uri to check
346
+ * @returns {boolean}
347
+ */
348
+ matchesUriPath(uriPath) {
349
+ return (!this._urlRegex && !this._urls.size) ||
350
+ this._urls.has(uriPath) ||
351
+ !!this._urlRegex?.test?.(uriPath);
352
+ }
353
+ }
354
+
355
+ class InputExclusion extends UrlExclusion {
356
+ constructor(dtm) {
357
+ super(dtm);
358
+ this._inputNameRegex = null;
359
+ this._inputName = null;
360
+
361
+ // dtm.name value is null for BODY and QUERYSTRING types
362
+ if (dtm.name) {
363
+ if (shouldBeRegExp(dtm.name)) {
364
+ this._inputNameRegex = new RegExp(`^${dtm.name}$`);
365
+ } else {
366
+ this._inputName = dtm.name;
367
+ }
368
+ }
369
+ }
370
+
371
+ /**
372
+ * Checks if the provided name matches the value from the exclusion dtm.
373
+ * @param {string} name field name being evaluated
374
+ * @returns {boolean}
375
+ */
376
+ matchesInputName(name) {
377
+ // BODY and QUERYSTRING always match since they apply broadly
378
+ if (!this._inputName && !this._inputNameRegex) return true;
379
+ return this._inputNameRegex ? RegExpPrototypeTest.call(this._inputNameRegex, name) : this._inputName === name;
380
+ }
381
+ }
382
+
383
+ function shouldBeRegExp(str) {
384
+ return str.indexOf('*') > 0 ||
385
+ str.indexOf('.') > 0 ||
386
+ str.indexOf('+') > 0 ||
387
+ str.indexOf('?') > 0 ||
388
+ str.indexOf('\\') > 0;
389
+ }
390
+
391
+ module.exports = Core.makeComponent({
392
+ name: COMPONENT_NAME,
393
+ factory(core) {
394
+ const policy = new AssessPolicy(core);
395
+ set(core, COMPONENT_NAME, policy);
396
+ return policy;
397
+ },
398
+ });
399
+ module.exports.AssessPolicy = AssessPolicy;
400
+ module.exports.RequestPolicy = RequestPolicy;
@@ -60,7 +60,7 @@ module.exports = function(core) {
60
60
 
61
61
  responseScanning.handleAutoCompleteMissing = function(sourceContext, resHeaders, resBody) {
62
62
  if (
63
- !isEnabled(AUTOCOMPLETE_MISSING, sourceContext) ||
63
+ !sourceContext.policy?.isRuleEnabled(AUTOCOMPLETE_MISSING) ||
64
64
  !isHtmlContent(resHeaders)
65
65
  ) {
66
66
  return;
@@ -91,7 +91,7 @@ module.exports = function(core) {
91
91
 
92
92
  // de-dupe; this will be re-emitted for parseableBody handlers anyway
93
93
  if (
94
- !isEnabled(CACHE_CONTROLS_MISSING, sourceContext) ||
94
+ !sourceContext.policy?.isRuleEnabled(CACHE_CONTROLS_MISSING) ||
95
95
  (isParseableResponse(resHeaders) && !resBody)
96
96
  ) {
97
97
  return;
@@ -139,7 +139,7 @@ module.exports = function(core) {
139
139
  };
140
140
 
141
141
  responseScanning.handleClickJackingControlsMissing = function(sourceContext, resHeaders) {
142
- if (!isEnabled(CLICKJACKING_CONTROL_MISSING, sourceContext)) return;
142
+ if (!sourceContext.policy?.isRuleEnabled(CLICKJACKING_CONTROL_MISSING)) return;
143
143
 
144
144
  // look for x-frame-options headers with deny or sameorigin
145
145
  const xFrameHeaders = resHeaders['x-frame-options'];
@@ -158,7 +158,7 @@ module.exports = function(core) {
158
158
  };
159
159
 
160
160
  responseScanning.handleParameterPollution = function(sourceContext, resBody) {
161
- if (!isEnabled(PARAMETER_POLLUTION, sourceContext)) return;
161
+ if (!sourceContext.policy?.isRuleEnabled(PARAMETER_POLLUTION)) return;
162
162
 
163
163
  // look for form tag with missing action attribute.
164
164
  // ex: <form method="post">..
@@ -189,12 +189,12 @@ module.exports = function(core) {
189
189
  const cspHeaders = getCspHeaders(resHeaders);
190
190
 
191
191
  // Don't report if not set; this report belongs to 'csp-header-missing'
192
- if (!cspHeaders && isEnabled(CSP_HEADER_MISSING, sourceContext)) {
192
+ if (!cspHeaders && sourceContext.policy?.isRuleEnabled(CSP_HEADER_MISSING)) {
193
193
  reportFindings(sourceContext, { ruleId: ResponseScanningRule.CSP_HEADER_MISSING });
194
194
  return;
195
195
  }
196
196
 
197
- if (!isEnabled(CSP_HEADER_INSECURE, sourceContext)) return;
197
+ if (!sourceContext.policy?.isRuleEnabled(CSP_HEADER_INSECURE)) return;
198
198
 
199
199
  const vulnerabilityMetadata = checkCspSources(cspHeaders);
200
200
 
@@ -209,7 +209,7 @@ module.exports = function(core) {
209
209
  };
210
210
 
211
211
  responseScanning.handleHstsHeaderMissing = function(sourceContext, resHeaders) {
212
- if (!isEnabled(HSTS_HEADER_MISSING, sourceContext)) return;
212
+ if (!sourceContext?.policy?.isRuleEnabled(HSTS_HEADER_MISSING)) return;
213
213
 
214
214
  let header = resHeaders['strict-transport-security'];
215
215
  let maxAge;
@@ -241,7 +241,7 @@ module.exports = function(core) {
241
241
  };
242
242
 
243
243
  responseScanning.handleXContentTypeHeaderMissing = function(sourceContext, resHeaders) {
244
- if (!isEnabled(XCONTENTTYPE_HEADER_MISSING, sourceContext)) return;
244
+ if (!sourceContext.policy?.isRuleEnabled(XCONTENTTYPE_HEADER_MISSING)) return;
245
245
 
246
246
  const headerName = 'x-content-type-options';
247
247
  let header = resHeaders[headerName];
@@ -262,7 +262,7 @@ module.exports = function(core) {
262
262
  };
263
263
 
264
264
  responseScanning.handleXPoweredByHeader = function(sourceContext, resHeaders) {
265
- if (!isEnabled(X_POWERED_BY_HEADER, sourceContext)) return;
265
+ if (!sourceContext.policy?.isRuleEnabled(X_POWERED_BY_HEADER)) return;
266
266
 
267
267
  const headerName = 'x-powered-by';
268
268
  let header = resHeaders[headerName];
@@ -280,7 +280,7 @@ module.exports = function(core) {
280
280
  };
281
281
 
282
282
  responseScanning.handleXxsProtectionHeaderDisabled = function(sourceContext, responseHeaders) {
283
- if (!isEnabled(XXSPROTECTION_HEADER_DISABLED, sourceContext)) return;
283
+ if (!sourceContext?.policy?.isRuleEnabled(XXSPROTECTION_HEADER_DISABLED)) return;
284
284
 
285
285
  const header = responseHeaders['x-xss-protection'];
286
286
 
@@ -294,9 +294,5 @@ module.exports = function(core) {
294
294
  }
295
295
  };
296
296
 
297
- function isEnabled(ruleId, sourceContext) {
298
- return !!sourceContext?.policy?.enabledRules?.has?.(ruleId);
299
- }
300
-
301
297
  return responseScanning;
302
298
  };
@@ -146,18 +146,6 @@ module.exports = function(core) {
146
146
  });
147
147
  }
148
148
  });
149
-
150
- depHooks.resolve({ name: 'spdy', version: '<5', file: 'lib/spdy/response.js' }, (response) => {
151
- patcher.patch(response, 'end', {
152
- name: 'spdy.response.end',
153
- patchType: 'test',
154
- post(data) {
155
- const sourceContext = getSourceContext();
156
- if (!sourceContext) return;
157
- endHookChecks(sourceContext, data.obj.getHeaders?.(), StringPrototypeToLowerCase.call(data.args[0] || ''));
158
- }
159
- });
160
- });
161
149
  };
162
150
 
163
151
  return http;
@@ -67,7 +67,7 @@ module.exports = function (core) {
67
67
  function handle(ruleId, sourceContext, cookie, sessionEvent) {
68
68
  const state = ensureState(ruleId, sourceContext);
69
69
 
70
- if (!sourceContext?.policy?.enabledRules?.has?.(ruleId) || state.reported) return;
70
+ if (sourceContext?.policy?.disabledRules?.has?.(ruleId) || state.reported) return;
71
71
 
72
72
  for (const value of ensureIterable(cookie)) {
73
73
  if (state.valuesAnalyzed.has(value)) continue;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/assess",
3
- "version": "1.60.0",
3
+ "version": "1.64.0",
4
4
  "description": "Contrast service providing framework-agnostic Assess support",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -14,24 +14,24 @@
14
14
  "types": "lib/index.d.ts",
15
15
  "engines": {
16
16
  "npm": ">=6.13.7 <7 || >= 8.3.1",
17
- "node": ">= 16.9.1"
17
+ "node": ">= 18.7.0"
18
18
  },
19
19
  "scripts": {
20
20
  "test": "bash ../scripts/test.sh"
21
21
  },
22
22
  "dependencies": {
23
- "@contrast/common": "1.35.0",
24
- "@contrast/config": "1.50.0",
25
- "@contrast/core": "1.55.0",
26
- "@contrast/dep-hooks": "1.24.0",
27
- "@contrast/distringuish": "^5.1.0",
28
- "@contrast/instrumentation": "1.34.0",
29
- "@contrast/logger": "1.28.0",
30
- "@contrast/patcher": "1.27.0",
31
- "@contrast/rewriter": "1.31.0",
32
- "@contrast/route-coverage": "1.47.0",
33
- "@contrast/scopes": "1.25.0",
34
- "@contrast/sources": "1.1.0",
23
+ "@contrast/common": "1.37.0",
24
+ "@contrast/config": "1.53.0",
25
+ "@contrast/core": "1.58.0",
26
+ "@contrast/dep-hooks": "1.27.0",
27
+ "@contrast/distringuish": "^6.0.2",
28
+ "@contrast/instrumentation": "1.37.0",
29
+ "@contrast/logger": "1.31.0",
30
+ "@contrast/patcher": "1.30.0",
31
+ "@contrast/rewriter": "1.35.0",
32
+ "@contrast/route-coverage": "1.50.0",
33
+ "@contrast/scopes": "1.28.0",
34
+ "@contrast/sources": "1.4.0",
35
35
  "semver": "^7.6.0"
36
36
  }
37
37
  }
@@ -31,7 +31,7 @@
31
31
  "OTHER_CFLAGS": [
32
32
  "-arch x86_64",
33
33
  "-arch arm64",
34
- "-std=c++17",
34
+ "-std=c++20",
35
35
  "-stdlib=libc++",
36
36
  "-Wall"
37
37
  ],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/code-events",
3
- "version": "3.1.0",
3
+ "version": "4.0.2",
4
4
  "description": "Listen for v8 CodeEvents and make them available to JavaScript",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -22,7 +22,7 @@
22
22
  "install": "node-gyp-build",
23
23
  "prepare": "husky install",
24
24
  "prebuild": "npm run clean",
25
- "build": "prebuildify -t 16.9.1 -t 18.7.0 -t 20.6.0 -t 22.2.0 --strip --napi false",
25
+ "build": "prebuildify -t 18.7.0 -t 20.6.0 -t 22.2.0 -t 24.0.1 --strip --napi false",
26
26
  "build:darwin": "npm run build -- --arch x64+arm64",
27
27
  "build:win32": "npm run build",
28
28
  "clean": "rimraf build/ coverage/ prebuilds/",
@@ -32,10 +32,16 @@
32
32
  },
33
33
  "keywords": [],
34
34
  "engines": {
35
- "node": ">=16.9.1"
35
+ "node": ">=18.7.0"
36
36
  },
37
37
  "dependencies": {
38
- "node-gyp-build": "^4.8.1"
38
+ "nan": "^2.23.0",
39
+ "node-abi": "^4.12.0",
40
+ "node-addon-api": "^8.5.0",
41
+ "node-gyp-build": "^4.8.4"
42
+ },
43
+ "overrides": {
44
+ "node-abi": "^4.12.0"
39
45
  },
40
46
  "devDependencies": {
41
47
  "@contrast/eslint-config": "^3.2.0",
@@ -43,14 +49,10 @@
43
49
  "@octokit/rest": "^20.0.1",
44
50
  "c8": "^8.0.1",
45
51
  "chai": "^4.3.7",
46
- "fast-xml-parser": "^4.3.3",
47
52
  "husky": "^8.0.3",
48
53
  "lint-staged": "^13.2.3",
49
54
  "mocha": "^10.2.0",
50
- "nan": "^2.19.0",
51
- "node-abi": "^3.65.0",
52
- "node-addon-api": "^7.1.0",
53
- "node-gyp": "10.1.0",
55
+ "node-gyp": "^11.2.0",
54
56
  "prebuildify": "^6.0.1",
55
57
  "rimraf": "^5.0.1",
56
58
  "semver": "^7.5.4",