@prosopo/provider 4.15.16 → 5.0.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 (190) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +103 -102
  2. package/.turbo/turbo-build$colon$tsc.log +24 -24
  3. package/.turbo/turbo-build.log +103 -102
  4. package/CHANGELOG.md +108 -0
  5. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +1 -1
  6. package/dist/api/admin/apiAdminRoutesProvider.js +3 -5
  7. package/dist/api/admin/apiAdminRoutesProvider.js.map +1 -1
  8. package/dist/api/admin/apiReplaceDetectorPoolEndpoint.d.ts +11 -0
  9. package/dist/api/admin/apiReplaceDetectorPoolEndpoint.d.ts.map +1 -0
  10. package/dist/api/admin/apiReplaceDetectorPoolEndpoint.js +56 -0
  11. package/dist/api/admin/apiReplaceDetectorPoolEndpoint.js.map +1 -0
  12. package/dist/api/captcha/assignDetectorBundle.d.ts +6 -0
  13. package/dist/api/captcha/assignDetectorBundle.d.ts.map +1 -0
  14. package/dist/api/captcha/assignDetectorBundle.js +51 -0
  15. package/dist/api/captcha/assignDetectorBundle.js.map +1 -0
  16. package/dist/api/captcha/assignDetectorBundle.test.d.ts +2 -0
  17. package/dist/api/captcha/assignDetectorBundle.test.d.ts.map +1 -0
  18. package/dist/api/captcha/assignDetectorBundle.test.js +71 -0
  19. package/dist/api/captcha/assignDetectorBundle.test.js.map +1 -0
  20. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts +1 -0
  21. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.d.ts.map +1 -1
  22. package/dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js.map +1 -1
  23. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.d.ts.map +1 -1
  24. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js +21 -2
  25. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js.map +1 -1
  26. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts +1 -1
  27. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.d.ts.map +1 -1
  28. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js +3 -3
  29. package/dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js.map +1 -1
  30. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  31. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +13 -7
  32. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  33. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts +3 -0
  34. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.d.ts.map +1 -1
  35. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js +52 -18
  36. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js.map +1 -1
  37. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.d.ts +2 -0
  38. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.d.ts.map +1 -0
  39. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.js +86 -0
  40. package/dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.powFallback.test.js.map +1 -0
  41. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  42. package/dist/api/captcha/getImageCaptchaChallenge.js +2 -1
  43. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  44. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  45. package/dist/api/captcha/getPoWCaptchaChallenge.js +2 -1
  46. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  47. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  48. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +2 -1
  49. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  50. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  51. package/dist/api/captcha/submitPoWCaptchaSolution.js +1 -1
  52. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  53. package/dist/api/captcha.d.ts.map +1 -1
  54. package/dist/api/captcha.js +6 -0
  55. package/dist/api/captcha.js.map +1 -1
  56. package/dist/api/startProviderApi.d.ts.map +1 -1
  57. package/dist/api/startProviderApi.js +21 -3
  58. package/dist/api/startProviderApi.js.map +1 -1
  59. package/dist/cjs/api/admin/apiAdminRoutesProvider.cjs +3 -5
  60. package/dist/cjs/api/admin/apiReplaceDetectorPoolEndpoint.cjs +56 -0
  61. package/dist/cjs/api/captcha/assignDetectorBundle.cjs +51 -0
  62. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.cjs +21 -2
  63. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.cjs +3 -3
  64. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +12 -6
  65. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.cjs +52 -17
  66. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -1
  67. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +2 -1
  68. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +2 -1
  69. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +1 -1
  70. package/dist/cjs/api/captcha.cjs +6 -0
  71. package/dist/cjs/api/startProviderApi.cjs +24 -5
  72. package/dist/cjs/tasks/captchaManager.cjs +76 -59
  73. package/dist/cjs/tasks/client/clientTasks.cjs +1 -29
  74. package/dist/cjs/tasks/detection/bundlePool.cjs +220 -0
  75. package/dist/cjs/tasks/detection/decodeBehavior.cjs +644 -362
  76. package/dist/cjs/tasks/detection/decodeBehavior.js +1 -1
  77. package/dist/cjs/tasks/detection/decodePayload.cjs +956 -617
  78. package/dist/cjs/tasks/detection/decodePayload.js +1 -1
  79. package/dist/cjs/tasks/detection/decodeSimd.cjs +723 -411
  80. package/dist/cjs/tasks/detection/decodeSimd.js +1 -1
  81. package/dist/cjs/tasks/detection/getBotScore.cjs +2 -2
  82. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +35 -12
  83. package/dist/cjs/tasks/frictionless/frictionlessTasksUtils.cjs +1 -2
  84. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +6 -6
  85. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +2 -2
  86. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +2 -2
  87. package/dist/tasks/captchaManager.d.ts +12 -4
  88. package/dist/tasks/captchaManager.d.ts.map +1 -1
  89. package/dist/tasks/captchaManager.js +76 -59
  90. package/dist/tasks/captchaManager.js.map +1 -1
  91. package/dist/tasks/client/clientTasks.d.ts +0 -2
  92. package/dist/tasks/client/clientTasks.d.ts.map +1 -1
  93. package/dist/tasks/client/clientTasks.js +1 -29
  94. package/dist/tasks/client/clientTasks.js.map +1 -1
  95. package/dist/tasks/detection/bundlePool.d.ts +32 -0
  96. package/dist/tasks/detection/bundlePool.d.ts.map +1 -0
  97. package/dist/tasks/detection/bundlePool.js +215 -0
  98. package/dist/tasks/detection/bundlePool.js.map +1 -0
  99. package/dist/tasks/detection/bundlePool.test.d.ts +2 -0
  100. package/dist/tasks/detection/bundlePool.test.d.ts.map +1 -0
  101. package/dist/tasks/detection/bundlePool.test.js +178 -0
  102. package/dist/tasks/detection/bundlePool.test.js.map +1 -0
  103. package/dist/tasks/detection/decodeBehavior.d.ts +2 -2
  104. package/dist/tasks/detection/decodeBehavior.d.ts.map +1 -1
  105. package/dist/tasks/detection/decodeBehavior.js +1 -1
  106. package/dist/tasks/detection/decodeBehavior.js.map +1 -1
  107. package/dist/tasks/detection/decodePayload.d.ts +2 -2
  108. package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
  109. package/dist/tasks/detection/decodePayload.js +1 -1
  110. package/dist/tasks/detection/decodePayload.js.map +1 -1
  111. package/dist/tasks/detection/decodeSimd.d.ts +2 -2
  112. package/dist/tasks/detection/decodeSimd.d.ts.map +1 -1
  113. package/dist/tasks/detection/decodeSimd.js +1 -1
  114. package/dist/tasks/detection/decodeSimd.js.map +1 -1
  115. package/dist/tasks/detection/getBotScore.d.ts +1 -1
  116. package/dist/tasks/detection/getBotScore.d.ts.map +1 -1
  117. package/dist/tasks/detection/getBotScore.js +3 -3
  118. package/dist/tasks/detection/getBotScore.js.map +1 -1
  119. package/dist/tasks/frictionless/frictionlessTasks.d.ts +10 -2
  120. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  121. package/dist/tasks/frictionless/frictionlessTasks.js +35 -12
  122. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  123. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +1 -1
  124. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +1 -1
  125. package/dist/tasks/frictionless/frictionlessTasksUtils.js +1 -2
  126. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +1 -1
  127. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  128. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +6 -6
  129. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  130. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  131. package/dist/tasks/powCaptcha/powTasks.js +2 -2
  132. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  133. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  134. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +2 -2
  135. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  136. package/dist/tests/integration/maintenanceModeAdmin.integration.test.js +0 -28
  137. package/dist/tests/integration/maintenanceModeAdmin.integration.test.js.map +1 -1
  138. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js +1 -0
  139. package/dist/tests/unit/api/admin/apiRegisterSiteKeyEndpoint.unit.test.js.map +1 -1
  140. package/dist/tests/unit/api/adminRoutes.unit.test.js +0 -46
  141. package/dist/tests/unit/api/adminRoutes.unit.test.js.map +1 -1
  142. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js +51 -0
  143. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.unit.test.js.map +1 -1
  144. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js +12 -12
  145. package/dist/tests/unit/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.unit.test.js.map +1 -1
  146. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js +15 -1
  147. package/dist/tests/unit/api/getFrictionlessCaptchaChallenge.unit.test.js.map +1 -1
  148. package/dist/tests/unit/tasks/captchaManager.unit.test.js +14 -30
  149. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  150. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js +3 -3
  151. package/dist/tests/unit/tasks/detection/getBotScore.unit.test.js.map +1 -1
  152. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js +25 -7
  153. package/dist/tests/unit/tasks/frictionless/decryptPayload.unit.test.js.map +1 -1
  154. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -1
  155. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  156. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +6 -14
  157. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +1 -1
  158. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +0 -1
  159. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
  160. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +0 -2
  161. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -1
  162. package/fixtures/detector-pool/bundle-0.js +15 -0
  163. package/fixtures/detector-pool/bundle-0.json +1 -0
  164. package/package.json +14 -14
  165. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +0 -23
  166. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +0 -1
  167. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +0 -32
  168. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +0 -1
  169. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +0 -14
  170. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +0 -1
  171. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +0 -39
  172. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
  173. package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +0 -32
  174. package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +0 -39
  175. package/dist/tasks/detection/getBehavioralData.d.ts +0 -4
  176. package/dist/tasks/detection/getBehavioralData.d.ts.map +0 -1
  177. package/dist/tasks/detection/getBehavioralData.js +0 -51
  178. package/dist/tasks/detection/getBehavioralData.js.map +0 -1
  179. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts +0 -2
  180. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.d.ts.map +0 -1
  181. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js +0 -57
  182. package/dist/tests/unit/api/admin/apiRemoveDetectorKeyEndpoint.unit.test.js.map +0 -1
  183. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts +0 -2
  184. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.d.ts.map +0 -1
  185. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js +0 -60
  186. package/dist/tests/unit/api/admin/apiUpdateDetectorKeyEndpoint.unit.test.js.map +0 -1
  187. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts +0 -2
  188. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.d.ts.map +0 -1
  189. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js +0 -109
  190. package/dist/tests/unit/tasks/detection/getBehavioralData.unit.test.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/provider@4.15.16 build
2
+ > @prosopo/provider@5.0.0 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/provider@4.15.16 build:cross-env
6
+ > @prosopo/provider@5.0.0 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -57,109 +57,110 @@ ViteEsmConfig: .
57
57
  vite v8.1.5 building ssr environment for production...
58
58
  Bundle build started
59
59
  
60
- ✓ 98 modules transformed.
60
+ ✓ 99 modules transformed.
61
61
  rendering chunks...
62
62
  computing gzip size...
63
- dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
64
- dist/tasks/index.js 0.05 kB │ gzip: 0.06 kB
65
- dist/api/captcha/getFrictionlessCaptchaChallenge.js 0.11 kB │ gzip: 0.10 kB
66
- dist/api/admin/createApiAdminRoutesProvider.js 0.35 kB │ gzip: 0.18 kB
67
- dist/api/robotsMiddleware.js 0.36 kB │ gzip: 0.24 kB
68
- dist/tasks/puzzleCaptcha/puzzleTasksUtils.js 0.37 kB │ gzip: 0.24 kB
69
- dist/rules/lang.js 0.39 kB │ gzip: 0.24 kB
70
- dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 0.40 kB │ gzip: 0.23 kB
71
- dist/api/ignoreMiddleware.js 0.41 kB │ gzip: 0.26 kB
72
- dist/api/ipInfoMiddleware.js 0.41 kB │ gzip: 0.26 kB
73
- dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js 0.51 kB │ gzip: 0.29 kB
74
- dist/utils/hashUserIp.js 0.52 kB │ gzip: 0.33 kB
75
- dist/api/testSiteKey.js 0.56 kB │ gzip: 0.30 kB
76
- dist/utils/hashUserAgent.js 0.63 kB │ gzip: 0.39 kB
77
- dist/api/validateAddress.js 0.70 kB │ gzip: 0.33 kB
78
- dist/utils/devicePlatform.js 0.74 kB │ gzip: 0.45 kB
79
- dist/api/block.js 0.80 kB │ gzip: 0.36 kB
80
- dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
81
- dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
82
- dist/tasks/frictionless/frictionlessTasksUtils.js 0.87 kB │ gzip: 0.45 kB
83
- dist/tasks/powCaptcha/powTasksUtils.js 0.89 kB │ gzip: 0.46 kB
84
- dist/api/headerCheckMiddleware.js 0.91 kB │ gzip: 0.43 kB
85
- dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip: 0.51 kB
86
- dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js 0.96 kB │ gzip: 0.48 kB
87
- dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip: 0.46 kB
88
- dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip: 0.45 kB
89
- dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip: 0.48 kB
90
- dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip: 0.50 kB
91
- dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip: 0.48 kB
92
- dist/api/captcha/contextAwareValidation.js 1.09 kB │ gzip: 0.45 kB
93
- dist/api/admin/apiRemoveDetectorKeyEndpoint.js 1.09 kB │ gzip: 0.49 kB
94
- dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
95
- dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
96
- dist/pairs.js 1.19 kB │ gzip: 0.58 kB
97
- dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
98
- dist/schedulers/setClientEntropy.js 1.20 kB │ gzip: 0.52 kB
99
- dist/api/admin/apiUpdateDetectorKeyEndpoint.js 1.20 kB │ gzip: 0.50 kB
100
- dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
101
- dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
102
- dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
103
- dist/tasks/detection/getBotScore.js 1.29 kB │ gzip: 0.47 kB
104
- dist/tasks/dataset/datasetTasksUtils.js 1.30 kB │ gzip: 0.48 kB
105
- dist/compositeIpAddress.js 1.36 kB │ gzip: 0.55 kB
106
- dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 kB │ gzip: 0.57 kB
107
- dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
108
- dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
109
- dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
110
- dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
111
- dist/api/admin/apiUpdateDecisionMachineEndpoint.js 1.68 kB │ gzip: 0.58 kB
112
- dist/utils/honeypot/phraseBank.js 1.69 kB │ gzip: 0.84 kB
113
- dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
114
- dist/api/captcha/maintenanceModeResponses.js 1.76 kB │ gzip: 0.57 kB
115
- dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 1.87 kB │ gzip: 0.79 kB
116
- dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
117
- dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
118
- dist/api/public.js 1.90 kB │ gzip: 0.83 kB
119
- dist/tasks/frictionless/routingMachine.js 2.16 kB │ gzip: 0.91 kB
120
- dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
121
- dist/api/admin/apiDnsEventEndpoint.js 2.43 kB │ gzip: 0.96 kB
122
- dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
123
- dist/api/captcha/submitPuzzleCaptchaSolution.js 2.55 kB │ gzip: 0.96 kB
124
- dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
125
- dist/api/captcha/submitImageCaptchaSolution.js 2.59 kB │ gzip: 1.00 kB
126
- dist/tasks/spam/evaluateEmailSpamRules.js 2.77 kB │ gzip: 1.20 kB
127
- dist/index.js 2.78 kB │ gzip: 0.76 kB
128
- dist/api/admin/apiAdminRoutesProvider.js 2.84 kB │ gzip: 0.54 kB
129
- dist/api/domainMiddleware.js 3.52 kB │ gzip: 1.22 kB
130
- dist/api/captcha.js 3.72 kB │ gzip: 1.21 kB
131
- dist/services/ipComparison.js 3.96 kB │ gzip: 1.19 kB
132
- dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 3.99 kB │ gzip: 0.99 kB
133
- dist/api/hardBlockVerdictCache.js 4.08 kB │ gzip: 1.66 kB
134
- dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
135
- dist/tasks/dnsEvent/enrichDnsEvent.js 4.23 kB │ gzip: 1.50 kB
136
- dist/tasks/tasks.js 4.69 kB │ gzip: 1.51 kB
137
- dist/api/captcha/getPoWCaptchaChallenge.js 5.13 kB │ gzip: 1.61 kB
138
- dist/api/captcha/getPuzzleCaptchaChallenge.js 5.35 kB │ gzip: 1.64 kB
139
- dist/api/captcha/getImageCaptchaChallenge.js 5.39 kB │ gzip: 1.74 kB
140
- dist/tasks/spam/checkTrafficFilter.js 5.63 kB │ gzip: 2.05 kB
141
- dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
142
- dist/api/captcha/submitPoWCaptchaSolution.js 6.16 kB │ gzip: 2.09 kB
143
- dist/api/metrics.js 6.96 kB │ gzip: 2.09 kB
144
- dist/api/ja4.js 7.06 kB │ gzip: 2.23 kB
145
- dist/api/startProviderApi.js 8.47 kB │ gzip: 2.81 kB
146
- dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 8.91 kB │ gzip: 2.03 kB
147
- dist/tasks/decisionMachine/decisionMachineRunner.js 9.40 kB │ gzip: 2.86 kB
148
- dist/api/blacklistRequestInspector.js 11.57 kB │ gzip: 4.19 kB
149
- dist/api/verify.js 12.03 kB │ gzip: 2.44 kB
150
- dist/util.js 12.92 kB │ gzip: 3.16 kB
151
- dist/tasks/client/clientTasks.js 13.21 kB │ gzip: 3.28 kB
152
- dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 13.94 kB │ gzip: 3.55 kB
153
- dist/tasks/frictionless/frictionlessTasks.js 14.62 kB │ gzip: 3.94 kB
154
- dist/tasks/captchaManager.js 16.63 kB │ gzip: 4.85 kB
155
- dist/tasks/detection/decodeBehavior.js 17.15 kB │ gzip: 6.60 kB
156
- dist/tasks/puzzleCaptcha/puzzleTasks.js 17.94 kB │ gzip: 4.31 kB
157
- dist/tasks/detection/decodeSimd.js 19.34 kB │ gzip: 8.30 kB
158
- dist/tasks/powCaptcha/powTasks.js 20.18 kB │ gzip: 5.24 kB
159
- dist/tasks/imgCaptcha/imgCaptchaTasks.js 23.90 kB │ gzip: 5.84 kB
160
- dist/tasks/detection/decodePayload.js 26.98 kB │ gzip: 9.17 kB
63
+ dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
64
+ dist/tasks/index.js 0.05 kB │ gzip: 0.06 kB
65
+ dist/api/captcha/getFrictionlessCaptchaChallenge.js 0.11 kB │ gzip: 0.10 kB
66
+ dist/api/admin/createApiAdminRoutesProvider.js 0.35 kB │ gzip: 0.18 kB
67
+ dist/api/robotsMiddleware.js 0.36 kB │ gzip: 0.24 kB
68
+ dist/tasks/puzzleCaptcha/puzzleTasksUtils.js 0.37 kB │ gzip: 0.24 kB
69
+ dist/rules/lang.js 0.39 kB │ gzip: 0.24 kB
70
+ dist/api/captcha/getFrictionlessCaptchaChallenge/constants.js 0.40 kB │ gzip: 0.23 kB
71
+ dist/api/ignoreMiddleware.js 0.41 kB │ gzip: 0.26 kB
72
+ dist/api/ipInfoMiddleware.js 0.41 kB │ gzip: 0.26 kB
73
+ dist/api/captcha/getFrictionlessCaptchaChallenge/decryptSimdReadings.js 0.51 kB │ gzip: 0.27 kB
74
+ dist/utils/hashUserIp.js 0.52 kB │ gzip: 0.33 kB
75
+ dist/api/testSiteKey.js 0.56 kB │ gzip: 0.30 kB
76
+ dist/utils/hashUserAgent.js 0.63 kB │ gzip: 0.39 kB
77
+ dist/api/validateAddress.js 0.70 kB │ gzip: 0.33 kB
78
+ dist/utils/devicePlatform.js 0.74 kB │ gzip: 0.45 kB
79
+ dist/tasks/frictionless/frictionlessTasksUtils.js 0.79 kB │ gzip: 0.42 kB
80
+ dist/api/block.js 0.80 kB │ gzip: 0.36 kB
81
+ dist/api/dnsEventUrl.js 0.80 kB │ gzip: 0.44 kB
82
+ dist/tasks/dataset/datasetTasks.js 0.85 kB │ gzip: 0.39 kB
83
+ dist/tasks/powCaptcha/powTasksUtils.js 0.89 kB │ gzip: 0.46 kB
84
+ dist/api/headerCheckMiddleware.js 0.91 kB │ gzip: 0.43 kB
85
+ dist/api/captcha/getFrictionlessCaptchaChallenge/honeypotResponse.js 0.95 kB │ gzip: 0.51 kB
86
+ dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js 0.96 kB │ gzip: 0.48 kB
87
+ dist/api/admin/apiRegisterSiteKeyEndpoint.js 1.00 kB │ gzip: 0.46 kB
88
+ dist/api/captcha/getFrictionlessCaptchaChallenge/sessionDedup.js 1.01 kB │ gzip: 0.45 kB
89
+ dist/api/admin/apiRemoveSiteKeysEndpoint.js 1.07 kB │ gzip: 0.48 kB
90
+ dist/api/admin/apiRegisterSiteKeysEndpoint.js 1.08 kB │ gzip: 0.50 kB
91
+ dist/api/admin/apiRemoveSiteKeyEndpoint.js 1.08 kB │ gzip: 0.48 kB
92
+ dist/api/captcha/contextAwareValidation.js 1.09 kB │ gzip: 0.45 kB
93
+ dist/schedulers/captchaScheduler.js 1.11 kB │ gzip: 0.48 kB
94
+ dist/utils/normalizeRequestIp.js 1.14 kB │ gzip: 0.52 kB
95
+ dist/pairs.js 1.19 kB │ gzip: 0.58 kB
96
+ dist/schedulers/getClientList.js 1.19 kB │ gzip: 0.53 kB
97
+ dist/schedulers/setClientEntropy.js 1.20 kB │ gzip: 0.52 kB
98
+ dist/api/admin/apiGetDecisionMachineEndpoint.js 1.26 kB │ gzip: 0.50 kB
99
+ dist/api/admin/apiRemoveAllDecisionMachinesEndpoint.js 1.27 kB │ gzip: 0.51 kB
100
+ dist/api/admin/apiRemoveDecisionMachineEndpoint.js 1.29 kB │ gzip: 0.51 kB
101
+ dist/tasks/dataset/datasetTasksUtils.js 1.30 kB │ gzip: 0.48 kB
102
+ dist/tasks/detection/getBotScore.js 1.33 kB │ gzip: 0.49 kB
103
+ dist/compositeIpAddress.js 1.36 kB │ gzip: 0.55 kB
104
+ dist/api/admin/apiGetAllDecisionMachinesEndpoint.js 1.48 kB │ gzip: 0.57 kB
105
+ dist/schedulers/updateSpamEmailDomains.js 1.52 kB │ gzip: 0.60 kB
106
+ dist/api/admin/apiReplaceDetectorPoolEndpoint.js 1.57 kB │ gzip: 0.68 kB
107
+ dist/api/ja4Middleware.js 1.59 kB │ gzip: 0.75 kB
108
+ dist/utils/honeypot/encoders.js 1.62 kB │ gzip: 0.67 kB
109
+ dist/api/admin/apiToggleMaintenanceModeEndpoint.js 1.66 kB │ gzip: 0.69 kB
110
+ dist/api/admin/apiUpdateDecisionMachineEndpoint.js 1.68 kB │ gzip: 0.58 kB
111
+ dist/utils/honeypot/phraseBank.js 1.69 kB │ gzip: 0.84 kB
112
+ dist/api/handshakeTimingMiddleware.js 1.75 kB │ gzip: 0.69 kB
113
+ dist/api/captcha/maintenanceModeResponses.js 1.76 kB │ gzip: 0.57 kB
114
+ dist/tasks/spam/updateSpamEmailDomains.js 1.87 kB │ gzip: 0.77 kB
115
+ dist/api/admin/apiClearAllCountersEndpoint.js 1.89 kB │ gzip: 0.76 kB
116
+ dist/api/public.js 1.90 kB │ gzip: 0.83 kB
117
+ dist/api/captcha/assignDetectorBundle.js 1.96 kB │ gzip: 0.87 kB
118
+ dist/tasks/frictionless/routingMachine.js 2.16 kB │ gzip: 0.91 kB
119
+ dist/utils/dns.js 2.36 kB │ gzip: 0.95 kB
120
+ dist/api/admin/apiDnsEventEndpoint.js 2.43 kB │ gzip: 0.96 kB
121
+ dist/api/captcha/checkSpamEmail.js 2.47 kB │ gzip: 0.91 kB
122
+ dist/api/captcha/submitPuzzleCaptchaSolution.js 2.55 kB │ gzip: 0.96 kB
123
+ dist/api/forwardVerify.js 2.59 kB │ gzip: 1.10 kB
124
+ dist/api/captcha/submitImageCaptchaSolution.js 2.59 kB │ gzip: 1.00 kB
125
+ dist/api/admin/apiAdminRoutesProvider.js 2.64 kB │ gzip: 0.53 kB
126
+ dist/tasks/spam/evaluateEmailSpamRules.js 2.77 kB │ gzip: 1.20 kB
127
+ dist/index.js 2.78 kB │ gzip: 0.76 kB
128
+ dist/api/captcha/getFrictionlessCaptchaChallenge/shortCircuit.js 3.44 kB │ gzip: 1.40 kB
129
+ dist/api/domainMiddleware.js 3.52 kB │ gzip: 1.22 kB
130
+ dist/services/ipComparison.js 3.96 kB │ gzip: 1.19 kB
131
+ dist/api/captcha/getFrictionlessCaptchaChallenge/accessPolicy.js 3.99 kB │ gzip: 0.99 kB
132
+ dist/api/captcha.js 4.05 kB │ gzip: 1.31 kB
133
+ dist/api/hardBlockVerdictCache.js 4.08 kB │ gzip: 1.66 kB
134
+ dist/tasks/spam/checkSpamEmail.js 4.12 kB │ gzip: 1.12 kB
135
+ dist/tasks/dnsEvent/enrichDnsEvent.js 4.23 kB │ gzip: 1.50 kB
136
+ dist/tasks/tasks.js 4.69 kB │ gzip: 1.51 kB
137
+ dist/api/captcha/getPoWCaptchaChallenge.js 5.26 kB │ gzip: 1.66 kB
138
+ dist/api/captcha/getPuzzleCaptchaChallenge.js 5.48 kB │ gzip: 1.69 kB
139
+ dist/api/captcha/getImageCaptchaChallenge.js 5.52 kB │ gzip: 1.78 kB
140
+ dist/tasks/spam/checkTrafficFilter.js 5.63 kB │ gzip: 2.05 kB
141
+ dist/util/usageCounters.js 5.65 kB │ gzip: 2.01 kB
142
+ dist/api/captcha/submitPoWCaptchaSolution.js 6.18 kB │ gzip: 2.09 kB
143
+ dist/api/metrics.js 6.96 kB │ gzip: 2.09 kB
144
+ dist/api/ja4.js 7.06 kB │ gzip: 2.23 kB
145
+ dist/tasks/detection/bundlePool.js 8.30 kB │ gzip: 3.21 kB
146
+ dist/api/startProviderApi.js 9.25 kB │ gzip: 3.14 kB
147
+ dist/tasks/decisionMachine/decisionMachineRunner.js 9.40 kB │ gzip: 2.86 kB
148
+ dist/api/captcha/getFrictionlessCaptchaChallenge/decisionMachine.js 9.41 kB │ gzip: 2.06 kB
149
+ dist/api/blacklistRequestInspector.js 11.57 kB │ gzip: 4.19 kB
150
+ dist/api/verify.js 12.03 kB │ gzip: 2.44 kB
151
+ dist/tasks/client/clientTasks.js 12.33 kB │ gzip: 3.07 kB
152
+ dist/util.js 12.92 kB │ gzip: 3.16 kB
153
+ dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js 14.35 kB │ gzip: 3.65 kB
154
+ dist/tasks/frictionless/frictionlessTasks.js 15.60 kB │ gzip: 4.28 kB
155
+ dist/tasks/captchaManager.js 17.75 kB │ gzip: 5.17 kB
156
+ dist/tasks/puzzleCaptcha/puzzleTasks.js 17.93 kB │ gzip: 4.28 kB
157
+ dist/tasks/powCaptcha/powTasks.js 20.17 kB │ gzip: 5.21 kB
158
+ dist/tasks/imgCaptcha/imgCaptchaTasks.js 23.91 kB │ gzip: 5.83 kB
159
+ dist/tasks/detection/decodeBehavior.js 32.26 kB │ gzip: 10.34 kB
160
+ dist/tasks/detection/decodeSimd.js 36.06 kB │ gzip: 12.00 kB
161
+ dist/tasks/detection/decodePayload.js 46.69 kB │ gzip: 14.66 kB
161
162
 
162
- ✓ built in 166ms
163
+ ✓ built in 178ms
163
164
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeBehavior.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeBehavior.js
164
165
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodePayload.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodePayload.js
165
166
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/provider/src/tasks/detection/decodeSimd.js to /home/runner/work/captcha/captcha/packages/provider/dist/tasks/detection/decodeSimd.js
package/CHANGELOG.md CHANGED
@@ -1,5 +1,113 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 5.0.0
4
+ ### Major Changes
5
+
6
+ - 787017b: chore(detector): remove the legacy detector-key rotation machinery
7
+
8
+ Nothing has read these keys since the detector moved to per-session provider
9
+ bundles — the decrypt paths resolve a bundle's own keypair instead. Rotating
10
+ them was already a no-op, so the whole surface is removed rather than left
11
+ looking live.
12
+
13
+ **Breaking — the admin API loses two endpoints:**
14
+
15
+ - `POST /v1/prosopo/provider/admin/detector/update` (`AdminApiPaths.UpdateDetectorKey`)
16
+ - `POST /v1/prosopo/provider/admin/detector/remove` (`AdminApiPaths.RemoveDetectorKey`)
17
+
18
+ Also removed: `ProviderApi.updateDetectorKey` / `.removeDetectorKey`;
19
+ `ClientTaskManager.updateDetectorKey` / `.removeDetectorKey`;
20
+ `IProviderDatabase.storeDetectorKey` / `.getDetectorKeys` / `.removeDetectorKey`;
21
+ the `detector` Mongo collection and its `DetectorRecordSchema` / `DetectorSchema`
22
+ / `DetectorKey` types; the `UpdateDetectorKeyBody` / `RemoveDetectorKeyBodySpec`
23
+ / `UpdateDetectorKeyResponse` API types; and the rate-limit config for both
24
+ paths.
25
+
26
+ The `detector` collection itself is left in place on existing deployments — no
27
+ migration drops it. It can be dropped manually once the pool rollout is
28
+ confirmed.
29
+
30
+ ### Minor Changes
31
+
32
+ - 787017b: feat(detector): serve the detector only from per-session provider bundles; PoW fallback
33
+
34
+ The detector now lives ONLY in the provider-served, precomputed pool bundles — there is no detector bundled into the widget and no legacy detector-key pool. Each session's bundle encrypts everything it produces (bot score, SIMD readings, behavioural data) with its own RSA keypair + inner ChaCha20-Poly1305 cipher; the provider decrypts each payload with that exact bundle, resolved per session.
35
+
36
+ - `DetectorBundlePool`: loads precomputed `{id}.js`/`{id}.json` bundle pairs from disk, uniform-random per-session selection, hot-swap `replace()` for the admin push channel.
37
+ - The pool is ALWAYS initialised at boot (a missing/empty dir yields an empty pool), collapsing the old three states into two: bundles present ⇒ per-session serving; no bundles ⇒ always PoW.
38
+ - Redis short-TTL `detectorSessionId → bundleId` binding; the resolved `bundleId` is promoted onto the durable session record so later hops (SIMD attach, PoW/puzzle/image solution submit) decrypt with the same bundle.
39
+ - Client: removed the inlined `@prosopo/detector` runtime import (now type-only). When no provider bundle can be obtained/run, the client signals `detectorUnavailable` and the provider serves a PoW challenge.
40
+ - All server decrypt paths (score, SIMD readings, behavioural data) resolve the session's bundle and pass its inner cipher; the legacy key-pool brute force and its env fallback are removed from the detection paths. Decrypt failures fail closed (treated as bot ⇒ PoW).
41
+ - 787017b: feat(detector-pool): persist pushed pools, stamp releases, fix the failed-decrypt path
42
+
43
+ - `ReplaceDetectorPool` gets a dedicated 128 MB body limit (~86 MB for a
44
+ 100-bundle pool); every other route keeps the 1 MB backstop.
45
+ - A pushed pool is now written to the pool directory (staged + renamed) so it
46
+ survives a restart instead of living only in process memory. The response
47
+ reports `persisted` so an unpersisted push can be alarmed on. The provider
48
+ containers gain a host-mounted volume for it — the pool is never baked into
49
+ the image, which is public on Docker Hub.
50
+ - Bundles carry the release they were built from; providers skip bundles from
51
+ another release (`PROSOPO_DETECTOR_POOL_RELEASE`). The widget carries no
52
+ detector of its own, so nothing else tied the two together.
53
+ - Failed decryption is now its own decision (`DECRYPTION_FAILED`, 3 image
54
+ rounds) evaluated before every other check. Previously the synthetic
55
+ `userAgent: undefined` / `baseBotScore: 1` / `timestamp: 0` that
56
+ `decryptPayload` substitutes made these sessions land in USER_AGENT_MISMATCH
57
+ (6 rounds), or a 401 on sitekeys with `autoBanScoreThreshold` set.
58
+ `timestampDecayFunction` loses its now-unreachable `decryptionFailed` arm.
59
+
60
+ ### Patch Changes
61
+
62
+ - 787017b: perf(caddy): compress proxied provider responses with zstd/gzip
63
+
64
+ `docker/provider.Caddyfile` had no `encode` directive, and Caddy does not
65
+ compress by default, so every proxied response went out uncompressed. The
66
+ detector-pool bundle makes that expensive: ~830 KB of obfuscated JS returned
67
+ inline from `/detector/assign` once per frictionless session.
68
+
69
+ Obfuscated output still compresses well (the obfuscator's string-array encoding
70
+ is highly repetitive) — 2.6x with gzip, 3.1x with zstd. At 15k sessions/hour a
71
+ single provider drops from ~9.15 TB/month of egress to ~3 TB.
72
+
73
+ zstd is preferred with gzip as the fallback. Responses below `minimum_length`
74
+ (512 bytes) are untouched, which covers every small JSON reply the API returns.
75
+ - 787017b: fix(detector-pool): persist into the pool directory instead of replacing it
76
+
77
+ The previous stage-and-rename persist was destructive against the provider's
78
+ bind-mounted pool directory: it deleted the mount's contents and then failed
79
+ with EBUSY renaming over the mount point, wiping the on-disk pool while still
80
+ reporting the push as successful. Now writes each bundle via a per-file temp +
81
+ rename within the directory and prunes removed bundles, never touching the
82
+ directory itself.
83
+ - Updated dependencies [787017b]
84
+ - Updated dependencies [787017b]
85
+ - Updated dependencies [787017b]
86
+ - Updated dependencies [d107d65]
87
+ - Updated dependencies [6f19cde]
88
+ - @prosopo/database@4.0.0
89
+ - @prosopo/types@5.0.0
90
+ - @prosopo/types-database@5.0.0
91
+ - @prosopo/api@4.0.0
92
+ - @prosopo/api-express-router@3.1.54
93
+ - @prosopo/datasets@3.1.56
94
+ - @prosopo/env@3.6.23
95
+ - @prosopo/ipinfo@0.3.1
96
+ - @prosopo/keyring@2.9.63
97
+ - @prosopo/load-balancer@2.10.17
98
+ - @prosopo/types-env@2.10.20
99
+ - @prosopo/user-access-policy@3.12.11
100
+
101
+ ## 4.15.17
102
+ ### Patch Changes
103
+
104
+ - a66273a: Populate `userScope.headHash` from the frictionless session record in the three captcha-challenge endpoints (`getPoWCaptchaChallenge`, `getImageCaptchaChallenge`, `getPuzzleCaptchaChallenge`). Previously all three hardcoded `undefined` for the headHash slot, so access-policy rules keyed on `headHash` could only take effect at server-verify time — after the challenge was already issued at the client-configured type / difficulty. With `sessionId` in hand each endpoint now does one indexed `getSessionRecordBySessionId` lookup and forwards `sessionRecord?.decryptedHeadHash` into `getRequestUserScope`, so headHash rules can restrict or adjust the challenge at issuance. No change when the request omits `sessionId` (direct-pow etc.).
105
+ - Updated dependencies [71a5952]
106
+ - @prosopo/keyring@2.9.62
107
+ - @prosopo/env@3.6.22
108
+ - @prosopo/types-env@2.10.19
109
+ - @prosopo/api-express-router@3.1.53
110
+
3
111
  ## 4.15.16
4
112
  ### Patch Changes
5
113
 
@@ -1 +1 @@
1
- {"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAgBlD,cAAM,sBAAuB,YAAW,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,IAAI,SAAS;CA0C7B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"apiAdminRoutesProvider.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAelD,cAAM,sBAAuB,YAAW,iBAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEzC,SAAS,IAAI,SAAS;CAqC7B;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -7,11 +7,10 @@ import { ApiRegisterSiteKeyEndpoint } from "./apiRegisterSiteKeyEndpoint.js";
7
7
  import { ApiRegisterSiteKeysEndpoint } from "./apiRegisterSiteKeysEndpoint.js";
8
8
  import { ApiRemoveAllDecisionMachinesEndpoint } from "./apiRemoveAllDecisionMachinesEndpoint.js";
9
9
  import { ApiRemoveDecisionMachineEndpoint } from "./apiRemoveDecisionMachineEndpoint.js";
10
- import { ApiRemoveDetectorKeyEndpoint } from "./apiRemoveDetectorKeyEndpoint.js";
11
10
  import { ApiRemoveSiteKeyEndpoint } from "./apiRemoveSiteKeyEndpoint.js";
12
11
  import { ApiRemoveSiteKeysEndpoint } from "./apiRemoveSiteKeysEndpoint.js";
12
+ import { ApiReplaceDetectorPoolEndpoint } from "./apiReplaceDetectorPoolEndpoint.js";
13
13
  import { ApiUpdateDecisionMachineEndpoint } from "./apiUpdateDecisionMachineEndpoint.js";
14
- import { ApiUpdateDetectorKeyEndpoint } from "./apiUpdateDetectorKeyEndpoint.js";
15
14
  import { AdminApiPaths } from "@prosopo/types";
16
15
  //#region src/api/admin/apiAdminRoutesProvider.ts
17
16
  var ApiAdminRoutesProvider = class {
@@ -22,8 +21,6 @@ var ApiAdminRoutesProvider = class {
22
21
  return {
23
22
  [AdminApiPaths.SiteKeyRegister]: new ApiRegisterSiteKeyEndpoint(this.tasks.clientTaskManager),
24
23
  [AdminApiPaths.SiteKeysRegister]: new ApiRegisterSiteKeysEndpoint(this.tasks.clientTaskManager),
25
- [AdminApiPaths.UpdateDetectorKey]: new ApiUpdateDetectorKeyEndpoint(this.tasks.clientTaskManager),
26
- [AdminApiPaths.RemoveDetectorKey]: new ApiRemoveDetectorKeyEndpoint(this.tasks.clientTaskManager),
27
24
  [AdminApiPaths.UpdateDecisionMachine]: new ApiUpdateDecisionMachineEndpoint(this.tasks.clientTaskManager),
28
25
  [AdminApiPaths.GetAllDecisionMachines]: new ApiGetAllDecisionMachinesEndpoint(this.tasks.clientTaskManager),
29
26
  [AdminApiPaths.GetDecisionMachine]: new ApiGetDecisionMachineEndpoint(this.tasks.clientTaskManager),
@@ -33,7 +30,8 @@ var ApiAdminRoutesProvider = class {
33
30
  [AdminApiPaths.SiteKeyRemove]: new ApiRemoveSiteKeyEndpoint(this.tasks.clientTaskManager),
34
31
  [AdminApiPaths.SiteKeysRemove]: new ApiRemoveSiteKeysEndpoint(this.tasks.clientTaskManager),
35
32
  [AdminApiPaths.ToggleMaintenanceMode]: new ApiToggleMaintenanceModeEndpoint(),
36
- [AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService)
33
+ [AdminApiPaths.DnsEvent]: new ApiDnsEventEndpoint(this.tasks.db, this.tasks.env.ipInfoService),
34
+ [AdminApiPaths.ReplaceDetectorPool]: new ApiReplaceDetectorPoolEndpoint()
37
35
  };
38
36
  }
39
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,sBAAsB;IAC3B,YAAoC,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,SAAS;QACf,OAAO;YACN,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,0BAA0B,CAC9D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,4BAA4B,CAClE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,IAAI,4BAA4B,CAClE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,sBAAsB,CAAC,EACrC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACpE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,IAAI,6BAA6B,CACpE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,yBAAyB,CAAC,EACxC,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACvE,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CACxB;YACD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,wBAAwB,CAC1D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,yBAAyB,CAC5D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,EAAE;YACvC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,mBAAmB,CAChD,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAC5B;SACD,CAAC;IACH,CAAC;CACD;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"apiAdminRoutesProvider.js","sourceRoot":"","sources":["../../../src/api/admin/apiAdminRoutesProvider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,MAAM,sBAAsB;IAC3B,YAAoC,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAE7C,SAAS;QACf,OAAO;YACN,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,0BAA0B,CAC9D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,sBAAsB,CAAC,EACrC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACpE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,IAAI,6BAA6B,CACpE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnE,CAAC,aAAa,CAAC,yBAAyB,CAAC,EACxC,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACvE,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,IAAI,2BAA2B,CAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CACxB;YACD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,wBAAwB,CAC1D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,IAAI,yBAAyB,CAC5D,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAC5B;YACD,CAAC,aAAa,CAAC,qBAAqB,CAAC,EACpC,IAAI,gCAAgC,EAAE;YACvC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,mBAAmB,CAChD,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAC5B;YACD,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,IAAI,8BAA8B,EAAE;SACzE,CAAC;IACH,CAAC;CACD;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
2
+ import { type Logger } from "@prosopo/logger";
3
+ import { ReplaceDetectorPoolBody } from "@prosopo/types";
4
+ import type { z } from "zod";
5
+ type ReplaceDetectorPoolBodyType = typeof ReplaceDetectorPoolBody;
6
+ declare class ApiReplaceDetectorPoolEndpoint implements ApiEndpoint<ReplaceDetectorPoolBodyType> {
7
+ processRequest(args: z.infer<ReplaceDetectorPoolBodyType>, logger?: Logger): Promise<ApiEndpointResponse>;
8
+ getRequestArgsSchema(): ReplaceDetectorPoolBodyType;
9
+ }
10
+ export { ApiReplaceDetectorPoolEndpoint };
11
+ //# sourceMappingURL=apiReplaceDetectorPoolEndpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiReplaceDetectorPoolEndpoint.d.ts","sourceRoot":"","sources":["../../../src/api/admin/apiReplaceDetectorPoolEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAM7B,KAAK,2BAA2B,GAAG,OAAO,uBAAuB,CAAC;AAQlE,cAAM,8BACL,YAAW,WAAW,CAAC,2BAA2B,CAAC;IAE7C,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAC1C,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAiCxB,oBAAoB,IAAI,2BAA2B;CAG1D;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { replaceDetectorBundlePool } from "../../tasks/detection/bundlePool.js";
2
+ import { getLogger } from "@prosopo/logger";
3
+ import { ReplaceDetectorPoolBody } from "@prosopo/types";
4
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
5
+ //#region src/api/admin/apiReplaceDetectorPoolEndpoint.ts
6
+ /**
7
+ * Hot-swaps the in-memory detector bundle pool with a freshly-pushed set of
8
+ * bundles. The emergency rotation channel — lets the cycle script swap the pool
9
+ * without a provider redeploy. Bundles never touch disk here; they live only in
10
+ * process memory.
11
+ */
12
+ var ApiReplaceDetectorPoolEndpoint = class {
13
+ async processRequest(args, logger) {
14
+ logger = logger || getLogger("info", "");
15
+ try {
16
+ const bundles = new Map(Object.entries(args.bundles));
17
+ const activeLogger = logger;
18
+ const { count, persisted } = replaceDetectorBundlePool(bundles, {
19
+ warn: (msg, data) => activeLogger.warn(() => ({
20
+ msg,
21
+ data
22
+ })),
23
+ info: (msg, data) => activeLogger.info(() => ({
24
+ msg,
25
+ data
26
+ }))
27
+ });
28
+ logger.info(() => ({
29
+ msg: "Detector bundle pool replaced",
30
+ count,
31
+ persisted
32
+ }));
33
+ return {
34
+ status: ApiEndpointResponseStatus.SUCCESS,
35
+ data: {
36
+ count,
37
+ persisted
38
+ }
39
+ };
40
+ } catch (error) {
41
+ logger.error(() => ({
42
+ msg: "Error replacing detector bundle pool",
43
+ err: error
44
+ }));
45
+ return {
46
+ status: ApiEndpointResponseStatus.FAIL,
47
+ error: error.message
48
+ };
49
+ }
50
+ }
51
+ getRequestArgsSchema() {
52
+ return ReplaceDetectorPoolBody;
53
+ }
54
+ };
55
+ //#endregion
56
+ export { ApiReplaceDetectorPoolEndpoint };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiReplaceDetectorPoolEndpoint.js","sourceRoot":"","sources":["../../../src/api/admin/apiReplaceDetectorPoolEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAEN,yBAAyB,GACzB,MAAM,qCAAqC,CAAC;AAU7C,MAAM,8BAA8B;IAGnC,KAAK,CAAC,cAAc,CACnB,IAA0C,EAC1C,MAAe;QAEf,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAqB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1E,MAAM,YAAY,GAAG,MAAM,CAAC;YAC5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE;gBAC/D,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7D,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClB,GAAG,EAAE,+BAA+B;gBACpC,KAAK;gBAIL,SAAS;aACT,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,MAAM,EAAE,yBAAyB,CAAC,OAAO;gBACzC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;aAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnB,GAAG,EAAE,sCAAsC;gBAC3C,GAAG,EAAE,KAAK;aACV,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,MAAM,EAAE,yBAAyB,CAAC,IAAI;gBACtC,KAAK,EAAG,KAAyB,CAAC,OAAO;aACzC,CAAC;QACH,CAAC;IACF,CAAC;IAEM,oBAAoB;QAC1B,OAAO,uBAAuB,CAAC;IAChC,CAAC;CACD;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ProviderEnvironment } from "@prosopo/types-env";
2
+ import type { NextFunction, Request, Response } from "express";
3
+ import type { AugmentedRequest } from "../../express.js";
4
+ declare const _default: (env: ProviderEnvironment) => (req: Request & AugmentedRequest, res: Response, _next: NextFunction) => Promise<Response>;
5
+ export default _default;
6
+ //# sourceMappingURL=assignDetectorBundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignDetectorBundle.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;8BAiBpC,mBAAmB,WAEjC,OAAO,GAAG,gBAAgB,OAC1B,QAAQ,SACN,YAAY,KACjB,OAAO,CAAC,QAAQ,CAAC;AALrB,wBAwDG"}
@@ -0,0 +1,51 @@
1
+ import { getDetectorBundlePool } from "../../tasks/detection/bundlePool.js";
2
+ import { Tasks } from "../../tasks/tasks.js";
3
+ import { ApiParams } from "@prosopo/types";
4
+ import { v4 } from "uuid";
5
+ //#region src/api/captcha/assignDetectorBundle.ts
6
+ /**
7
+ * Assigns a precomputed detector bundle for this detection session.
8
+ *
9
+ * When the provider has a non-empty pool it picks a random bundle, records the
10
+ * (short-TTL) `detectorSessionId → bundleId` binding in Redis, and returns the
11
+ * obfuscated detector script inline.
12
+ *
13
+ * When it cannot (no pool loaded, or Redis unavailable so the binding could not
14
+ * be persisted) it returns `useProviderBundle: false`. There is NO bundled
15
+ * detector and no legacy key pool to fall back to — the client then reports
16
+ * `detectorUnavailable` on the frictionless hop and the provider serves a
17
+ * challenge instead of attempting to score an absent payload.
18
+ */
19
+ var assignDetectorBundle_default = (env) => async (req, res, _next) => {
20
+ try {
21
+ const noBundle = {
22
+ [ApiParams.useProviderBundle]: false,
23
+ status: "ok"
24
+ };
25
+ const pool = getDetectorBundlePool();
26
+ if (!pool || pool.size() === 0) return res.json(noBundle);
27
+ const { bundleId, bundle } = pool.pickRandom();
28
+ const detectorSessionId = `det-${v4()}`;
29
+ const writeQueue = new Tasks(env, req.logger).frictionlessManager.writeQueue;
30
+ if (!writeQueue) return res.json(noBundle);
31
+ if (!await writeQueue.cacheDetectorBundle(detectorSessionId, bundleId)) return res.json(noBundle);
32
+ const response = {
33
+ [ApiParams.useProviderBundle]: true,
34
+ [ApiParams.detectorSessionId]: detectorSessionId,
35
+ [ApiParams.detectorScript]: bundle.js,
36
+ status: "ok"
37
+ };
38
+ return res.json(response);
39
+ } catch (err) {
40
+ req.logger.warn(() => ({
41
+ msg: "assignDetectorBundle failed; falling back to bundled detector",
42
+ err
43
+ }));
44
+ return res.json({
45
+ [ApiParams.useProviderBundle]: false,
46
+ status: "ok"
47
+ });
48
+ }
49
+ };
50
+ //#endregion
51
+ export { assignDetectorBundle_default as default };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignDetectorBundle.js","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAqC,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAe7C,eAAe,CAAC,GAAwB,EAAE,EAAE,CAC3C,KAAK,EACJ,GAA+B,EAC/B,GAAa,EACb,KAAmB,EACC,EAAE;IACtB,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAiC;YAC9C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,KAAK;YACpC,MAAM,EAAE,IAAI;SACZ,CAAC;QAEF,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,OAAO,MAAM,EAAE,EAAE,CAAC;QAM5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAClD,iBAAiB,EACjB,QAAQ,CACR,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAiC;YAC9C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI;YACnC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;YAChD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE;YACrC,MAAM,EAAE,IAAI;SACZ,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAGd,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtB,GAAG,EAAE,+DAA+D;YACpE,GAAG;SACH,CAAC,CAAC,CAAC;QACJ,OAAO,GAAG,CAAC,IAAI,CAAC;YACf,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,KAAK;YACpC,MAAM,EAAE,IAAI;SAC2B,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=assignDetectorBundle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignDetectorBundle.test.d.ts","sourceRoot":"","sources":["../../../src/api/captcha/assignDetectorBundle.test.ts"],"names":[],"mappings":""}