@prosopo/provider 4.11.6 → 4.13.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 (258) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +44 -41
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +45 -42
  4. package/CHANGELOG.md +148 -0
  5. package/dist/api/admin/apiClearAllCountersEndpoint.d.ts.map +1 -1
  6. package/dist/api/admin/apiClearAllCountersEndpoint.js +1 -1
  7. package/dist/api/admin/apiClearAllCountersEndpoint.js.map +1 -1
  8. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -1
  9. package/dist/api/admin/apiDnsEventEndpoint.js +1 -1
  10. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -1
  11. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.d.ts.map +1 -1
  12. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js +1 -1
  13. package/dist/api/admin/apiGetAllDecisionMachinesEndpoint.js.map +1 -1
  14. package/dist/api/admin/apiGetDecisionMachineEndpoint.d.ts.map +1 -1
  15. package/dist/api/admin/apiGetDecisionMachineEndpoint.js +1 -1
  16. package/dist/api/admin/apiGetDecisionMachineEndpoint.js.map +1 -1
  17. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +1 -1
  18. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +1 -1
  19. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +1 -1
  20. package/dist/api/admin/apiRegisterSiteKeysEndpoint.d.ts.map +1 -1
  21. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js +1 -1
  22. package/dist/api/admin/apiRegisterSiteKeysEndpoint.js.map +1 -1
  23. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.d.ts.map +1 -1
  24. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js +1 -1
  25. package/dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js.map +1 -1
  26. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.d.ts.map +1 -1
  27. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js +1 -1
  28. package/dist/api/admin/apiRemoveDecisionMachineEndpoint.js.map +1 -1
  29. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
  30. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +1 -2
  31. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -1
  32. package/dist/api/admin/apiRemoveSiteKeyEndpoint.d.ts.map +1 -1
  33. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js +1 -1
  34. package/dist/api/admin/apiRemoveSiteKeyEndpoint.js.map +1 -1
  35. package/dist/api/admin/apiRemoveSiteKeysEndpoint.d.ts.map +1 -1
  36. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js +1 -1
  37. package/dist/api/admin/apiRemoveSiteKeysEndpoint.js.map +1 -1
  38. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.d.ts.map +1 -1
  39. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js +3 -1
  40. package/dist/api/admin/apiToggleMaintenanceModeEndpoint.js.map +1 -1
  41. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.d.ts.map +1 -1
  42. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js +1 -1
  43. package/dist/api/admin/apiUpdateDecisionMachineEndpoint.js.map +1 -1
  44. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +1 -2
  45. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -1
  46. package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
  47. package/dist/api/blacklistRequestInspector.js +7 -4
  48. package/dist/api/blacklistRequestInspector.js.map +1 -1
  49. package/dist/api/captcha/checkSpamEmail.d.ts.map +1 -1
  50. package/dist/api/captcha/checkSpamEmail.js +19 -4
  51. package/dist/api/captcha/checkSpamEmail.js.map +1 -1
  52. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts +0 -1
  53. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.d.ts.map +1 -1
  54. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js +25 -6
  55. package/dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js.map +1 -1
  56. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts +0 -1
  57. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -1
  58. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +8 -21
  59. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -1
  60. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts +1 -1
  61. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  62. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +68 -32
  63. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  64. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +0 -1
  65. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -1
  66. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +0 -2
  67. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -1
  68. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  69. package/dist/api/captcha/getImageCaptchaChallenge.js +23 -1
  70. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  71. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  72. package/dist/api/captcha/getPoWCaptchaChallenge.js +3 -0
  73. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  74. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  75. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +3 -0
  76. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  77. package/dist/api/captcha/submitPoWCaptchaSolution.js +0 -1
  78. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  79. package/dist/api/captcha.d.ts +2 -1
  80. package/dist/api/captcha.d.ts.map +1 -1
  81. package/dist/api/captcha.js +12 -15
  82. package/dist/api/captcha.js.map +1 -1
  83. package/dist/api/domainMiddleware.d.ts.map +1 -1
  84. package/dist/api/domainMiddleware.js +4 -0
  85. package/dist/api/domainMiddleware.js.map +1 -1
  86. package/dist/api/forwardVerify.d.ts +14 -0
  87. package/dist/api/forwardVerify.d.ts.map +1 -0
  88. package/dist/api/forwardVerify.js +54 -0
  89. package/dist/api/forwardVerify.js.map +1 -0
  90. package/dist/api/headerCheckMiddleware.d.ts.map +1 -1
  91. package/dist/api/headerCheckMiddleware.js +7 -4
  92. package/dist/api/headerCheckMiddleware.js.map +1 -1
  93. package/dist/api/ja4.d.ts +5 -0
  94. package/dist/api/ja4.d.ts.map +1 -0
  95. package/dist/api/ja4.js +203 -0
  96. package/dist/api/ja4.js.map +1 -0
  97. package/dist/api/ja4Middleware.d.ts.map +1 -1
  98. package/dist/api/ja4Middleware.js +9 -18
  99. package/dist/api/ja4Middleware.js.map +1 -1
  100. package/dist/api/metrics.d.ts +40 -0
  101. package/dist/api/metrics.d.ts.map +1 -0
  102. package/dist/api/metrics.js +260 -0
  103. package/dist/api/metrics.js.map +1 -0
  104. package/dist/api/public.d.ts.map +1 -1
  105. package/dist/api/public.js +6 -1
  106. package/dist/api/public.js.map +1 -1
  107. package/dist/api/startProviderApi.d.ts.map +1 -1
  108. package/dist/api/startProviderApi.js +19 -22
  109. package/dist/api/startProviderApi.js.map +1 -1
  110. package/dist/api/verify.d.ts.map +1 -1
  111. package/dist/api/verify.js +85 -8
  112. package/dist/api/verify.js.map +1 -1
  113. package/dist/cjs/api/admin/apiClearAllCountersEndpoint.cjs +1 -1
  114. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +1 -2
  115. package/dist/cjs/api/admin/apiGetAllDecisionMachinesEndpoint.cjs +1 -1
  116. package/dist/cjs/api/admin/apiGetDecisionMachineEndpoint.cjs +1 -1
  117. package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +1 -2
  118. package/dist/cjs/api/admin/apiRegisterSiteKeysEndpoint.cjs +1 -2
  119. package/dist/cjs/api/admin/apiRemoveAllDecisionMachinesEndpoint.cjs +1 -1
  120. package/dist/cjs/api/admin/apiRemoveDecisionMachineEndpoint.cjs +1 -1
  121. package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +1 -3
  122. package/dist/cjs/api/admin/apiRemoveSiteKeyEndpoint.cjs +1 -2
  123. package/dist/cjs/api/admin/apiRemoveSiteKeysEndpoint.cjs +1 -2
  124. package/dist/cjs/api/admin/apiToggleMaintenanceModeEndpoint.cjs +3 -2
  125. package/dist/cjs/api/admin/apiUpdateDecisionMachineEndpoint.cjs +1 -1
  126. package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +1 -2
  127. package/dist/cjs/api/blacklistRequestInspector.cjs +7 -4
  128. package/dist/cjs/api/captcha/checkSpamEmail.cjs +18 -3
  129. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.cjs +25 -6
  130. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +8 -21
  131. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +70 -34
  132. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +0 -2
  133. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +23 -1
  134. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +3 -0
  135. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +3 -0
  136. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +0 -1
  137. package/dist/cjs/api/captcha.cjs +12 -15
  138. package/dist/cjs/api/domainMiddleware.cjs +4 -0
  139. package/dist/cjs/api/forwardVerify.cjs +54 -0
  140. package/dist/cjs/api/headerCheckMiddleware.cjs +7 -4
  141. package/dist/cjs/api/ja4.cjs +203 -0
  142. package/dist/cjs/api/ja4Middleware.cjs +11 -21
  143. package/dist/cjs/api/metrics.cjs +260 -0
  144. package/dist/cjs/api/public.cjs +6 -1
  145. package/dist/cjs/api/startProviderApi.cjs +19 -44
  146. package/dist/cjs/api/verify.cjs +83 -6
  147. package/dist/cjs/index.cjs +1 -0
  148. package/dist/cjs/tasks/captchaManager.cjs +1 -2
  149. package/dist/cjs/tasks/detection/getBotScore.cjs +1 -5
  150. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +5 -63
  151. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +20 -23
  152. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +17 -24
  153. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +15 -22
  154. package/dist/index.js +2 -1
  155. package/dist/tasks/captchaManager.js +1 -1
  156. package/dist/tasks/captchaManager.js.map +1 -1
  157. package/dist/tasks/detection/getBotScore.d.ts +0 -2
  158. package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
  159. package/dist/tasks/detection/getBotScore.js +1 -5
  160. package/dist/tasks/detection/getBotScore.js.map +1 -1
  161. package/dist/tasks/frictionless/frictionlessTasks.d.ts +1 -11
  162. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  163. package/dist/tasks/frictionless/frictionlessTasks.js +5 -63
  164. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  165. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +20 -23
  166. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  167. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  168. package/dist/tasks/powCaptcha/powTasks.js +17 -24
  169. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  170. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  171. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +15 -22
  172. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  173. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js +2 -2
  174. package/dist/tests/integration/api/blacklistRequestInspector.integration.test.js.map +1 -1
  175. package/dist/tests/integration/clientSettingsPersistence.integration.test.js +1 -1
  176. package/dist/tests/integration/decisionMachines.integration.test.js +2 -2
  177. package/dist/tests/integration/decisionMachines.integration.test.js.map +1 -1
  178. package/dist/tests/integration/imgCaptcha.integration.test.js +2 -2
  179. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
  180. package/dist/tests/integration/powCaptcha.integration.test.js +2 -2
  181. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
  182. package/dist/tests/integration/routingDecisionMachines.integration.test.js +0 -1
  183. package/dist/tests/integration/routingDecisionMachines.integration.test.js.map +1 -1
  184. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js +1 -0
  185. package/dist/tests/unit/api/admin/apiClearAllCountersEndpoint.unit.test.js.map +1 -1
  186. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js +5 -1
  187. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js.map +1 -1
  188. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +1 -0
  189. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
  190. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js +1 -0
  191. package/dist/tests/unit/api/admin/apiRegisterSiteKeysEndpoint.unit.test.js.map +1 -1
  192. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +1 -0
  193. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +1 -1
  194. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js +1 -0
  195. package/dist/tests/unit/api/admin/apiToggleMaintenanceModeEndpoint.unit.test.js.map +1 -1
  196. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +1 -0
  197. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +1 -1
  198. package/dist/tests/unit/api/adminRoutes.unit.test.js +1 -0
  199. package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -1
  200. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js +43 -1
  201. package/dist/tests/unit/api/blacklistRequestInspector.unit.test.js.map +1 -1
  202. package/dist/tests/unit/api/captcha/checkSpamEmail.unit.test.d.ts +2 -0
  203. package/dist/tests/unit/api/captcha/checkSpamEmail.unit.test.d.ts.map +1 -0
  204. package/dist/tests/unit/api/captcha/checkSpamEmail.unit.test.js +62 -0
  205. package/dist/tests/unit/api/captcha/checkSpamEmail.unit.test.js.map +1 -0
  206. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js +63 -1
  207. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.unit.test.js.map +1 -1
  208. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +0 -75
  209. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -1
  210. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js +0 -1
  211. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.unit.test.js.map +1 -1
  212. package/dist/tests/unit/api/captcha.unit.test.js +31 -1
  213. package/dist/tests/unit/api/captcha.unit.test.js.map +1 -1
  214. package/dist/tests/unit/api/forwardVerify.unit.test.d.ts +2 -0
  215. package/dist/tests/unit/api/forwardVerify.unit.test.d.ts.map +1 -0
  216. package/dist/tests/unit/api/forwardVerify.unit.test.js +151 -0
  217. package/dist/tests/unit/api/forwardVerify.unit.test.js.map +1 -0
  218. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +68 -20
  219. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  220. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js +2 -2
  221. package/dist/tests/unit/api/headerCheckMiddleware.unit.test.js.map +1 -1
  222. package/dist/tests/unit/api/ja4.unit.test.d.ts +2 -0
  223. package/dist/tests/unit/api/ja4.unit.test.d.ts.map +1 -0
  224. package/dist/tests/unit/api/ja4.unit.test.js +233 -0
  225. package/dist/tests/unit/api/ja4.unit.test.js.map +1 -0
  226. package/dist/tests/unit/api/ja4Middleware.unit.test.js +11 -8
  227. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -1
  228. package/dist/tests/unit/api/public.unit.test.js +72 -0
  229. package/dist/tests/unit/api/public.unit.test.js.map +1 -1
  230. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +1 -1
  231. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
  232. package/dist/tests/unit/schedulers/getClientList.unit.test.js +1 -1
  233. package/dist/tests/unit/schedulers/getClientList.unit.test.js.map +1 -1
  234. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js +1 -1
  235. package/dist/tests/unit/schedulers/setClientEntropy.unit.test.js.map +1 -1
  236. package/dist/tests/unit/tasks/captchaManager.unit.test.js +1 -1
  237. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  238. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +1 -1
  239. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
  240. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +1 -1
  241. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -1
  242. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js +0 -3
  243. package/dist/tests/unit/tasks/decisionMachine/decisionMachineRunner.unit.test.js.map +1 -1
  244. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +0 -10
  245. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -1
  246. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +0 -82
  247. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -1
  248. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +1 -13
  249. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  250. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +4 -3
  251. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  252. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -4
  253. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  254. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +0 -2
  255. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
  256. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +0 -3
  257. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -1
  258. package/package.json +23 -23
@@ -3,12 +3,10 @@ import https__default from "node:https";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { createApiExpressDefaultEndpointAdapter, requestLoggerMiddleware, authMiddleware, apiExpressRouterFactory } from "@prosopo/api-express-router";
6
- import { setProviderLoader, getLoadBalancerUrl, convertHostedProvider } from "@prosopo/load-balancer";
7
6
  import { i18nMiddleware } from "@prosopo/locale";
8
7
  import { parseLogLevel } from "@prosopo/logger";
9
8
  import { ClientApiPaths, AdminApiPaths } from "@prosopo/types";
10
9
  import { AccessRuleApiRoutes, getExpressApiRuleRateLimits } from "@prosopo/user-access-policy/api";
11
- import { cacheFile } from "@prosopo/util/node";
12
10
  import cors from "cors";
13
11
  import express from "express";
14
12
  import rateLimit from "express-rate-limit";
@@ -20,6 +18,7 @@ import { headerCheckMiddleware } from "./headerCheckMiddleware.js";
20
18
  import { ignoreMiddleware } from "./ignoreMiddleware.js";
21
19
  import { ipInfoMiddleware } from "./ipInfoMiddleware.js";
22
20
  import { ja4Middleware } from "./ja4Middleware.js";
21
+ import { metricsMiddleware } from "./metrics.js";
23
22
  import { publicRouter } from "./public.js";
24
23
  import { robotsMiddleware } from "./robotsMiddleware.js";
25
24
  import { prosopoVerifyRouter } from "./verify.js";
@@ -60,24 +59,6 @@ const getUserFromJWT = (req) => {
60
59
  };
61
60
  async function startProviderApi(env, admin = false, port) {
62
61
  env.logger.info(() => ({ msg: "Starting Prosopo API" }));
63
- const providerCacheDir = path.resolve("./provider-list-cache");
64
- setProviderLoader(async (environment) => {
65
- if (environment === "development") {
66
- const { loadBalancer } = await import("@prosopo/load-balancer");
67
- return loadBalancer(environment);
68
- }
69
- const url = getLoadBalancerUrl(environment);
70
- const filePath = await cacheFile(
71
- providerCacheDir,
72
- url,
73
- env.logger,
74
- "provider-list-",
75
- ".json"
76
- );
77
- const text = fs.readFileSync(filePath, "utf-8");
78
- const providers = JSON.parse(text);
79
- return convertHostedProvider(providers);
80
- });
81
62
  const apiApp = express();
82
63
  const apiPort = port || env.config.server?.port;
83
64
  const apiEndpointAdapter = createApiExpressDefaultEndpointAdapter(
@@ -103,9 +84,25 @@ async function startProviderApi(env, admin = false, port) {
103
84
  paths: clientPathsExcludingVerify
104
85
  }));
105
86
  apiApp.set("trust proxy", 1);
106
- apiApp.use(cors({ exposedHeaders: ["x-prosopo-meta"] }));
107
- apiApp.use(express.json({ limit: "50mb" }));
87
+ apiApp.use(
88
+ cors({
89
+ exposedHeaders: ["x-prosopo-meta"],
90
+ allowedHeaders: [
91
+ "Accept",
92
+ "Accept-Language",
93
+ "Authorization",
94
+ "Content-Language",
95
+ "Content-Type",
96
+ "Prosopo-Site-Key",
97
+ "Prosopo-User",
98
+ "x-prosopo-meta"
99
+ ],
100
+ maxAge: 86400
101
+ })
102
+ );
103
+ apiApp.use(express.json({ limit: "1mb" }));
108
104
  apiApp.use(publicRouter(env));
105
+ apiApp.use(metricsMiddleware());
109
106
  const isTestOrDevelopmentEnv = process.env.NODE_ENV === "test" || env.config.defaultEnvironment === "development";
110
107
  if (!isTestOrDevelopmentEnv) {
111
108
  const configRateLimits = env.config.rateLimits;
@@ -1 +1 @@
1
- {"version":3,"file":"startProviderApi.js","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startProviderApi.js","sourceRoot":"","sources":["../../src/api/startProviderApi.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAW/C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CA2ZpE"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AA0C/C,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAufpE"}
@@ -1,11 +1,31 @@
1
+ import { VERIFY_FORWARDED_HEADER } from "@prosopo/api";
1
2
  import { verifySignature, handleErrors } from "@prosopo/api-express-router";
2
3
  import { ProsopoApiError } from "@prosopo/common";
3
- import { ClientApiPaths, VerifySolutionBody, decodeProcaptchaOutput, ApiParams, ServerPowCaptchaVerifyRequestBody, ServerPuzzleCaptchaVerifyRequestBody } from "@prosopo/types";
4
+ import { decodeProcaptchaOutput, ClientApiPaths, CaptchaType, VerifySolutionBody, ApiParams, ServerPowCaptchaVerifyRequestBody, ServerPuzzleCaptchaVerifyRequestBody } from "@prosopo/types";
4
5
  import { validateAddress } from "@prosopo/util-crypto";
5
6
  import express from "express";
6
7
  import { Tasks } from "../tasks/tasks.js";
7
8
  import { getMaintenanceMode } from "./admin/apiToggleMaintenanceModeEndpoint.js";
8
- import { resolveTestSiteKeyVerdict } from "./testSiteKey.js";
9
+ import { forwardVerifyIfNotIssuer } from "./forwardVerify.js";
10
+ import { metricsEnabled, recordCaptchaVerify } from "./metrics.js";
11
+ import { isReservedTestSiteKey, resolveTestSiteKeyVerdict } from "./testSiteKey.js";
12
+ const deriveVerifySource = (body) => {
13
+ if (getMaintenanceMode()) return "maintenance";
14
+ try {
15
+ const token = body?.token;
16
+ if (token) {
17
+ const { dapp } = decodeProcaptchaOutput(token);
18
+ if (isReservedTestSiteKey(dapp)) return "test_key";
19
+ }
20
+ } catch {
21
+ }
22
+ return "real";
23
+ };
24
+ const VERIFY_PATH_TYPE = {
25
+ [ClientApiPaths.VerifyImageCaptchaSolutionDapp]: CaptchaType.image,
26
+ [ClientApiPaths.VerifyPowCaptchaSolution]: CaptchaType.pow,
27
+ [ClientApiPaths.VerifyPuzzleCaptchaSolution]: CaptchaType.puzzle
28
+ };
9
29
  function prosopoVerifyRouter(env) {
10
30
  const router = express.Router();
11
31
  let userAccessRulesStorage;
@@ -18,6 +38,24 @@ function prosopoVerifyRouter(env) {
18
38
  }));
19
39
  userAccessRulesStorage = void 0;
20
40
  }
41
+ router.use((req, res, next) => {
42
+ if (!metricsEnabled()) return next();
43
+ const type = VERIFY_PATH_TYPE[req.path];
44
+ if (!type) return next();
45
+ const originalJson = res.json.bind(res);
46
+ res.json = (body) => {
47
+ if (res.statusCode < 300) {
48
+ const verified = !!(body && typeof body === "object" && body.verified);
49
+ recordCaptchaVerify({
50
+ type,
51
+ verified,
52
+ source: deriveVerifySource(req.body)
53
+ });
54
+ }
55
+ return originalJson(body);
56
+ };
57
+ next();
58
+ });
21
59
  router.post(
22
60
  ClientApiPaths.VerifyImageCaptchaSolutionDapp,
23
61
  async (req, res, next) => {
@@ -31,7 +69,6 @@ function prosopoVerifyRouter(env) {
31
69
  };
32
70
  return res.json(verificationResponse);
33
71
  }
34
- const tasks = new Tasks(env, req.logger);
35
72
  let parsed;
36
73
  try {
37
74
  parsed = VerifySolutionBody.parse(req.body);
@@ -46,7 +83,7 @@ function prosopoVerifyRouter(env) {
46
83
  }
47
84
  const { dappSignature, token, ip, maxVerifiedTime, email } = parsed;
48
85
  try {
49
- const { user, dapp, timestamp, commitmentId } = decodeProcaptchaOutput(token);
86
+ const { user, dapp, timestamp, commitmentId, providerUrl } = decodeProcaptchaOutput(token);
50
87
  const testVerdict = resolveTestSiteKeyVerdict(dapp, req.logger);
51
88
  if (testVerdict !== null) {
52
89
  const verificationResponse2 = {
@@ -55,6 +92,20 @@ function prosopoVerifyRouter(env) {
55
92
  };
56
93
  return res.json(verificationResponse2);
57
94
  }
95
+ const forwarded = await forwardVerifyIfNotIssuer({
96
+ env,
97
+ logger: req.logger,
98
+ path: ClientApiPaths.VerifyImageCaptchaSolutionDapp,
99
+ providerUrl,
100
+ dapp,
101
+ user,
102
+ body: parsed,
103
+ alreadyForwarded: req.headers[VERIFY_FORWARDED_HEADER] !== void 0
104
+ });
105
+ if (forwarded) {
106
+ return res.json(forwarded);
107
+ }
108
+ const tasks = new Tasks(env, req.logger);
58
109
  validateAddress(dapp, false, 42);
59
110
  validateAddress(user, false, 42);
60
111
  const clientRecord = await tasks.db.getClientRecord(dapp);
@@ -120,7 +171,6 @@ function prosopoVerifyRouter(env) {
120
171
  };
121
172
  return res.json(verificationResponse);
122
173
  }
123
- const tasks = new Tasks(env, req.logger);
124
174
  let parsed;
125
175
  try {
126
176
  parsed = ServerPowCaptchaVerifyRequestBody.parse(req.body);
@@ -135,7 +185,7 @@ function prosopoVerifyRouter(env) {
135
185
  }
136
186
  try {
137
187
  const { token, dappSignature, ip, email } = parsed;
138
- const { dapp, user, timestamp, challenge } = decodeProcaptchaOutput(token);
188
+ const { dapp, user, timestamp, challenge, providerUrl } = decodeProcaptchaOutput(token);
139
189
  const testVerdict = resolveTestSiteKeyVerdict(dapp, req.logger);
140
190
  if (testVerdict !== null) {
141
191
  const verificationResponse2 = {
@@ -144,6 +194,20 @@ function prosopoVerifyRouter(env) {
144
194
  };
145
195
  return res.json(verificationResponse2);
146
196
  }
197
+ const forwarded = await forwardVerifyIfNotIssuer({
198
+ env,
199
+ logger: req.logger,
200
+ path: ClientApiPaths.VerifyPowCaptchaSolution,
201
+ providerUrl,
202
+ dapp,
203
+ user,
204
+ body: parsed,
205
+ alreadyForwarded: req.headers[VERIFY_FORWARDED_HEADER] !== void 0
206
+ });
207
+ if (forwarded) {
208
+ return res.json(forwarded);
209
+ }
210
+ const tasks = new Tasks(env, req.logger);
147
211
  validateAddress(dapp, false, 42);
148
212
  validateAddress(user, false, 42);
149
213
  const clientRecord = await tasks.db.getClientRecord(dapp);
@@ -215,7 +279,6 @@ function prosopoVerifyRouter(env) {
215
279
  };
216
280
  return res.json(verificationResponse);
217
281
  }
218
- const tasks = new Tasks(env, req.logger);
219
282
  let parsed;
220
283
  try {
221
284
  parsed = ServerPuzzleCaptchaVerifyRequestBody.parse(req.body);
@@ -230,7 +293,7 @@ function prosopoVerifyRouter(env) {
230
293
  }
231
294
  try {
232
295
  const { token, dappSignature, ip, email } = parsed;
233
- const { dapp, user, timestamp, challenge } = decodeProcaptchaOutput(token);
296
+ const { dapp, user, timestamp, challenge, providerUrl } = decodeProcaptchaOutput(token);
234
297
  const testVerdict = resolveTestSiteKeyVerdict(dapp, req.logger);
235
298
  if (testVerdict !== null) {
236
299
  const verificationResponse2 = {
@@ -239,6 +302,20 @@ function prosopoVerifyRouter(env) {
239
302
  };
240
303
  return res.json(verificationResponse2);
241
304
  }
305
+ const forwarded = await forwardVerifyIfNotIssuer({
306
+ env,
307
+ logger: req.logger,
308
+ path: ClientApiPaths.VerifyPuzzleCaptchaSolution,
309
+ providerUrl,
310
+ dapp,
311
+ user,
312
+ body: parsed,
313
+ alreadyForwarded: req.headers[VERIFY_FORWARDED_HEADER] !== void 0
314
+ });
315
+ if (forwarded) {
316
+ return res.json(forwarded);
317
+ }
318
+ const tasks = new Tasks(env, req.logger);
242
319
  validateAddress(dapp, false, 42);
243
320
  validateAddress(user, false, 42);
244
321
  const clientRecord = await tasks.db.getClientRecord(dapp);
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/api/verify.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ class ApiClearAllCountersEndpoint {
8
8
  this.usageCounters = usageCounters;
9
9
  }
10
10
  async processRequest(args, logger$1) {
11
- logger$1 = logger$1 || logger.getLogger("info", "");
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:counters:clear-all") : logger.getLogger("info", "provider:admin:counters:clear-all");
12
12
  const dappAccount = args.dapp;
13
13
  const scope = dappAccount ?? "all";
14
14
  try {
@@ -4,7 +4,6 @@ const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
6
  const enrichDnsEvent = require("../../tasks/dnsEvent/enrichDnsEvent.cjs");
7
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
8
7
  const dnsEventToFields = (event) => {
9
8
  if (event.kind === "dns") {
10
9
  return { resolverIp: event.src_ip };
@@ -23,7 +22,7 @@ class ApiDnsEventEndpoint {
23
22
  this.ipInfoService = ipInfoService;
24
23
  }
25
24
  async processRequest(args, logger$1) {
26
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiDnsEventEndpoint.cjs", document.baseURI).href);
25
+ logger$1 = logger$1 ? logger$1.with({}, "admin:dns-event:ingest") : logger.getLogger("info", "provider:admin:dns-event:ingest");
27
26
  const { events } = args;
28
27
  let stored = 0;
29
28
  let errors = 0;
@@ -9,7 +9,7 @@ class ApiGetAllDecisionMachinesEndpoint {
9
9
  this.clientTaskManager = clientTaskManager;
10
10
  }
11
11
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", "");
12
+ logger$1 = logger$1 ? logger$1.with({}, "admin:decision-machines:get-all") : logger.getLogger("info", "provider:admin:decision-machines:get-all");
13
13
  try {
14
14
  logger$1.info(() => ({
15
15
  msg: "Getting all decision machines"
@@ -8,7 +8,7 @@ class ApiGetDecisionMachineEndpoint {
8
8
  this.clientTaskManager = clientTaskManager;
9
9
  }
10
10
  async processRequest(args, logger$1) {
11
- logger$1 = logger$1 || logger.getLogger("info", "");
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:decision-machine:get") : logger.getLogger("info", "provider:admin:decision-machine:get");
12
12
  try {
13
13
  const { id } = args;
14
14
  logger$1.info(() => ({
@@ -3,14 +3,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
7
6
  class ApiRegisterSiteKeyEndpoint {
8
7
  constructor(clientTaskManager) {
9
8
  this.clientTaskManager = clientTaskManager;
10
9
  }
11
10
  async processRequest(args, logger$1) {
12
11
  const { siteKey, tier, settings } = args;
13
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRegisterSiteKeyEndpoint.cjs", document.baseURI).href);
12
+ logger$1 = logger$1 ? logger$1.with({}, "admin:site-key:register") : logger.getLogger("info", "provider:admin:site-key:register");
14
13
  const temp = settings || types.ClientSettingsSchema.parse({});
15
14
  logger$1.info(() => ({ data: { siteKey }, msg: "`Registering site key" }));
16
15
  await this.clientTaskManager.registerSiteKey(siteKey, tier, temp);
@@ -3,13 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
7
6
  class ApiRegisterSiteKeysEndpoint {
8
7
  constructor(clientTaskManager) {
9
8
  this.clientTaskManager = clientTaskManager;
10
9
  }
11
10
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRegisterSiteKeysEndpoint.cjs", document.baseURI).href);
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:site-keys:register") : logger.getLogger("info", "provider:admin:site-keys:register");
13
12
  logger$1.info(() => ({
14
13
  data: { count: args.length },
15
14
  msg: "Registering site keys"
@@ -9,7 +9,7 @@ class ApiRemoveAllDecisionMachinesEndpoint {
9
9
  this.clientTaskManager = clientTaskManager;
10
10
  }
11
11
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", "");
12
+ logger$1 = logger$1 ? logger$1.with({}, "admin:decision-machines:remove-all") : logger.getLogger("info", "provider:admin:decision-machines:remove-all");
13
13
  try {
14
14
  logger$1.info(() => ({
15
15
  msg: "Removing all decision machines"
@@ -8,7 +8,7 @@ class ApiRemoveDecisionMachineEndpoint {
8
8
  this.clientTaskManager = clientTaskManager;
9
9
  }
10
10
  async processRequest(args, logger$1) {
11
- logger$1 = logger$1 || logger.getLogger("info", "");
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:decision-machine:remove") : logger.getLogger("info", "provider:admin:decision-machine:remove");
12
12
  try {
13
13
  const { id } = args;
14
14
  logger$1.info(() => ({
@@ -3,16 +3,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
7
6
  class ApiRemoveDetectorKeyEndpoint {
8
7
  constructor(clientTaskManager) {
9
8
  this.clientTaskManager = clientTaskManager;
10
9
  }
11
10
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRemoveDetectorKeyEndpoint.cjs", document.baseURI).href);
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:detector-key:remove") : logger.getLogger("info", "provider:admin:detector-key:remove");
13
12
  try {
14
13
  const { detectorKey, expirationInSeconds } = args;
15
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRemoveDetectorKeyEndpoint.cjs", document.baseURI).href);
16
14
  logger$1.info(() => ({ msg: "Removing detector key" }));
17
15
  await this.clientTaskManager.removeDetectorKey(
18
16
  detectorKey,
@@ -3,13 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
7
6
  class ApiRemoveSiteKeyEndpoint {
8
7
  constructor(clientTaskManager) {
9
8
  this.clientTaskManager = clientTaskManager;
10
9
  }
11
10
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRemoveSiteKeyEndpoint.cjs", document.baseURI).href);
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:site-key:remove") : logger.getLogger("info", "provider:admin:site-key:remove");
13
12
  try {
14
13
  const { siteKey } = args;
15
14
  logger$1.info(() => ({ data: { siteKey }, msg: "Removing site key" }));
@@ -3,13 +3,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
7
6
  class ApiRemoveSiteKeysEndpoint {
8
7
  constructor(clientTaskManager) {
9
8
  this.clientTaskManager = clientTaskManager;
10
9
  }
11
10
  async processRequest(args, logger$1) {
12
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiRemoveSiteKeysEndpoint.cjs", document.baseURI).href);
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:site-keys:remove") : logger.getLogger("info", "provider:admin:site-keys:remove");
13
12
  try {
14
13
  logger$1.info(() => ({
15
14
  data: { count: args.length },
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const apiRoute = require("@prosopo/api-route");
4
4
  const logger = require("@prosopo/logger");
5
5
  const types = require("@prosopo/types");
6
- var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;
6
+ const metrics = require("../metrics.cjs");
7
7
  function getMaintenanceMode() {
8
8
  return process.env.MAINTENANCE_MODE?.toLowerCase() === "true";
9
9
  }
@@ -13,13 +13,14 @@ function setMaintenanceMode(enabled) {
13
13
  class ApiToggleMaintenanceModeEndpoint {
14
14
  async processRequest(args, logger$1) {
15
15
  const { enabled } = args;
16
- logger$1 = logger$1 || logger.getLogger("info", typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("api/admin/apiToggleMaintenanceModeEndpoint.cjs", document.baseURI).href);
16
+ logger$1 = logger$1 ? logger$1.with({}, "admin:maintenance:toggle") : logger.getLogger("info", "provider:admin:maintenance:toggle");
17
17
  const previousMode = getMaintenanceMode();
18
18
  logger$1.info(() => ({
19
19
  data: { enabled, previous: previousMode },
20
20
  msg: "Toggling maintenance mode"
21
21
  }));
22
22
  setMaintenanceMode(enabled);
23
+ metrics.setMaintenanceModeGauge(enabled);
23
24
  const currentMode = getMaintenanceMode();
24
25
  logger$1.info(() => ({
25
26
  data: { enabled: currentMode },
@@ -8,7 +8,7 @@ class ApiUpdateDecisionMachineEndpoint {
8
8
  this.clientTaskManager = clientTaskManager;
9
9
  }
10
10
  async processRequest(args, logger$1) {
11
- logger$1 = logger$1 || logger.getLogger("info", "");
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:decision-machine:update") : logger.getLogger("info", "provider:admin:decision-machine:update");
12
12
  try {
13
13
  const {
14
14
  decisionMachineScope,
@@ -8,10 +8,9 @@ class ApiUpdateDetectorKeyEndpoint {
8
8
  this.clientTaskManager = clientTaskManager;
9
9
  }
10
10
  async processRequest(args, logger$1) {
11
- logger$1 = logger$1 || logger.getLogger("info", "");
11
+ logger$1 = logger$1 ? logger$1.with({}, "admin:detector-key:update") : logger.getLogger("info", "provider:admin:detector-key:update");
12
12
  try {
13
13
  const { detectorKey } = args;
14
- logger$1 = logger$1 || logger.getLogger("info", "");
15
14
  logger$1.info(() => ({ msg: "Updating detector key" }));
16
15
  const activeDetectorKeys = await this.clientTaskManager.updateDetectorKey(detectorKey);
17
16
  logger$1.info(() => ({
@@ -4,6 +4,7 @@ const node_crypto = require("node:crypto");
4
4
  const types = require("@prosopo/types");
5
5
  const userAccessPolicy = require("@prosopo/user-access-policy");
6
6
  const compositeIpAddress = require("../compositeIpAddress.cjs");
7
+ const metrics = require("./metrics.cjs");
7
8
  const getRequestUserScope = (requestHeaders, ja4, ip, user, headHash, coords, countryCode, asn) => {
8
9
  const userAgent = requestHeaders["user-agent"] ? requestHeaders["user-agent"].toString() : void 0;
9
10
  return {
@@ -145,7 +146,7 @@ class BlacklistRequestInspector {
145
146
  request.ipInfo
146
147
  );
147
148
  if (shouldAbortRequest) {
148
- res.status(401).json({ error: "Unauthorized" });
149
+ res.status(403).json({ error: "Forbidden" });
149
150
  return;
150
151
  }
151
152
  next();
@@ -163,6 +164,7 @@ class BlacklistRequestInspector {
163
164
  },
164
165
  msg: "Request without IP"
165
166
  }));
167
+ metrics.recordBlockedRequest("no_ip");
166
168
  return true;
167
169
  }
168
170
  await this.environmentReadinessWaiter();
@@ -205,6 +207,7 @@ class BlacklistRequestInspector {
205
207
  const accessPolicy = enforceable[0];
206
208
  const isBlock = userAccessPolicy.AccessPolicyType.Block === accessPolicy.type;
207
209
  if (isBlock) {
210
+ metrics.recordBlockedRequest("access_policy");
208
211
  this.recordBlockDecision(
209
212
  accessPolicy,
210
213
  {
@@ -226,14 +229,15 @@ class BlacklistRequestInspector {
226
229
  err,
227
230
  msg: "Block Middleware Error"
228
231
  }));
232
+ metrics.recordBlockedRequest("error");
229
233
  return true;
230
234
  }
231
235
  }
232
236
  /**
233
237
  * Emit a structured log line and (if a DB is wired) persist a synthetic
234
- * Session record for the request we're about to 401. Fire-and-forget on
238
+ * Session record for the request we're about to block (403). Fire-and-forget on
235
239
  * the Mongo side — the structured log line is the source of truth and
236
- * the 401 response is never delayed by a persistence failure.
240
+ * the 403 response is never delayed by a persistence failure.
237
241
  *
238
242
  * Carries the matched rule's identity (hash + ruleType + description)
239
243
  * so the Traffic page can surface "what's blocking traffic for this
@@ -279,7 +283,6 @@ class BlacklistRequestInspector {
279
283
  score: 1,
280
284
  threshold: 0,
281
285
  scoreComponents: { baseScore: 1 },
282
- providerSelectEntropy: 0,
283
286
  captchaType: types.CaptchaType.frictionless,
284
287
  webView: false,
285
288
  iFrame: false,