@prosopo/provider 3.2.0 → 3.2.2

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 (233) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/api/admin/apiAdminRoutesProvider.js +26 -21
  3. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +21 -20
  4. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +27 -27
  5. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +33 -33
  6. package/dist/api/admin/createApiAdminRoutesProvider.js +8 -5
  7. package/dist/api/blacklistRequestInspector.js +115 -98
  8. package/dist/api/block.js +13 -8
  9. package/dist/api/captcha.js +519 -356
  10. package/dist/api/domainMiddleware.js +75 -68
  11. package/dist/api/headerCheckMiddleware.js +26 -25
  12. package/dist/api/ignoreMiddleware.js +12 -10
  13. package/dist/api/ja4Middleware.js +74 -82
  14. package/dist/api/public.js +26 -23
  15. package/dist/api/robotsMiddleware.js +11 -9
  16. package/dist/api/validateAddress.js +20 -18
  17. package/dist/api/verify.js +133 -95
  18. package/dist/cjs/api/captcha.cjs +45 -36
  19. package/dist/cjs/tasks/captchaManager.cjs +24 -10
  20. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +12 -12
  21. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +1 -1
  22. package/dist/index.js +38 -15
  23. package/dist/rules/lang.js +14 -14
  24. package/dist/schedulers/captchaScheduler.js +28 -23
  25. package/dist/schedulers/getClientList.js +29 -24
  26. package/dist/tasks/captchaManager.js +109 -85
  27. package/dist/tasks/client/clientTasks.js +265 -204
  28. package/dist/tasks/dataset/datasetTasks.js +27 -16
  29. package/dist/tasks/dataset/datasetTasksUtils.js +31 -31
  30. package/dist/tasks/detection/decodePayload.js +378 -208
  31. package/dist/tasks/detection/getBotScore.js +12 -10
  32. package/dist/tasks/frictionless/frictionlessTasks.js +120 -119
  33. package/dist/tasks/frictionless/frictionlessTasksUtils.js +10 -5
  34. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +360 -271
  35. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +23 -16
  36. package/dist/tasks/index.js +4 -2
  37. package/dist/tasks/powCaptcha/powTasks.js +157 -97
  38. package/dist/tasks/powCaptcha/powTasksUtils.js +24 -20
  39. package/dist/tasks/tasks.js +53 -29
  40. package/dist/util.js +98 -88
  41. package/package.json +31 -27
  42. package/vite.cjs.config.ts +4 -1
  43. package/vite.esm.config.ts +20 -0
  44. package/vite.test.config.ts +15 -3
  45. package/dist/api/admin/apiAdminRoutesProvider.d.ts +0 -9
  46. package/dist/api/admin/apiAdminRoutesProvider.d.ts.map +0 -1
  47. package/dist/api/admin/apiAdminRoutesProvider.js.map +0 -1
  48. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts +0 -14
  49. package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +0 -1
  50. package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +0 -1
  51. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts +0 -14
  52. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +0 -1
  53. package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +0 -1
  54. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts +0 -14
  55. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +0 -1
  56. package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +0 -1
  57. package/dist/api/admin/createApiAdminRoutesProvider.d.ts +0 -4
  58. package/dist/api/admin/createApiAdminRoutesProvider.d.ts.map +0 -1
  59. package/dist/api/admin/createApiAdminRoutesProvider.js.map +0 -1
  60. package/dist/api/blacklistRequestInspector.d.ts +0 -39
  61. package/dist/api/blacklistRequestInspector.d.ts.map +0 -1
  62. package/dist/api/blacklistRequestInspector.js.map +0 -1
  63. package/dist/api/block.d.ts +0 -3
  64. package/dist/api/block.d.ts.map +0 -1
  65. package/dist/api/block.js.map +0 -1
  66. package/dist/api/captcha.d.ts +0 -4
  67. package/dist/api/captcha.d.ts.map +0 -1
  68. package/dist/api/captcha.js.map +0 -1
  69. package/dist/api/domainMiddleware.d.ts +0 -4
  70. package/dist/api/domainMiddleware.d.ts.map +0 -1
  71. package/dist/api/domainMiddleware.js.map +0 -1
  72. package/dist/api/headerCheckMiddleware.d.ts +0 -4
  73. package/dist/api/headerCheckMiddleware.d.ts.map +0 -1
  74. package/dist/api/headerCheckMiddleware.js.map +0 -1
  75. package/dist/api/ignoreMiddleware.d.ts +0 -3
  76. package/dist/api/ignoreMiddleware.d.ts.map +0 -1
  77. package/dist/api/ignoreMiddleware.js.map +0 -1
  78. package/dist/api/ja4Middleware.d.ts +0 -10
  79. package/dist/api/ja4Middleware.d.ts.map +0 -1
  80. package/dist/api/ja4Middleware.js.map +0 -1
  81. package/dist/api/public.d.ts +0 -3
  82. package/dist/api/public.d.ts.map +0 -1
  83. package/dist/api/public.js.map +0 -1
  84. package/dist/api/robotsMiddleware.d.ts +0 -3
  85. package/dist/api/robotsMiddleware.d.ts.map +0 -1
  86. package/dist/api/robotsMiddleware.js.map +0 -1
  87. package/dist/api/validateAddress.d.ts +0 -5
  88. package/dist/api/validateAddress.d.ts.map +0 -1
  89. package/dist/api/validateAddress.js.map +0 -1
  90. package/dist/api/verify.d.ts +0 -4
  91. package/dist/api/verify.d.ts.map +0 -1
  92. package/dist/api/verify.js.map +0 -1
  93. package/dist/index.d.ts +0 -15
  94. package/dist/index.d.ts.map +0 -1
  95. package/dist/index.js.map +0 -1
  96. package/dist/rules/lang.d.ts +0 -3
  97. package/dist/rules/lang.d.ts.map +0 -1
  98. package/dist/rules/lang.js.map +0 -1
  99. package/dist/schedulers/captchaScheduler.d.ts +0 -4
  100. package/dist/schedulers/captchaScheduler.d.ts.map +0 -1
  101. package/dist/schedulers/captchaScheduler.js.map +0 -1
  102. package/dist/schedulers/getClientList.d.ts +0 -4
  103. package/dist/schedulers/getClientList.d.ts.map +0 -1
  104. package/dist/schedulers/getClientList.js.map +0 -1
  105. package/dist/tasks/captchaManager.d.ts +0 -48
  106. package/dist/tasks/captchaManager.d.ts.map +0 -1
  107. package/dist/tasks/captchaManager.js.map +0 -1
  108. package/dist/tasks/client/clientTasks.d.ts +0 -21
  109. package/dist/tasks/client/clientTasks.d.ts.map +0 -1
  110. package/dist/tasks/client/clientTasks.js.map +0 -1
  111. package/dist/tasks/dataset/datasetTasks.d.ts +0 -13
  112. package/dist/tasks/dataset/datasetTasks.d.ts.map +0 -1
  113. package/dist/tasks/dataset/datasetTasks.js.map +0 -1
  114. package/dist/tasks/dataset/datasetTasksUtils.d.ts +0 -3
  115. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +0 -1
  116. package/dist/tasks/dataset/datasetTasksUtils.js.map +0 -1
  117. package/dist/tasks/detection/decodePayload.d.ts +0 -5
  118. package/dist/tasks/detection/decodePayload.d.ts.map +0 -1
  119. package/dist/tasks/detection/decodePayload.js.map +0 -1
  120. package/dist/tasks/detection/getBotScore.d.ts +0 -5
  121. package/dist/tasks/detection/getBotScore.d.ts.map +0 -1
  122. package/dist/tasks/detection/getBotScore.js.map +0 -1
  123. package/dist/tasks/frictionless/frictionlessTasks.d.ts +0 -23
  124. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +0 -1
  125. package/dist/tasks/frictionless/frictionlessTasks.js.map +0 -1
  126. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts +0 -5
  127. package/dist/tasks/frictionless/frictionlessTasksUtils.d.ts.map +0 -1
  128. package/dist/tasks/frictionless/frictionlessTasksUtils.js.map +0 -1
  129. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +0 -29
  130. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +0 -1
  131. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +0 -1
  132. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +0 -7
  133. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +0 -1
  134. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +0 -1
  135. package/dist/tasks/index.d.ts +0 -2
  136. package/dist/tasks/index.d.ts.map +0 -1
  137. package/dist/tasks/index.js.map +0 -1
  138. package/dist/tasks/powCaptcha/powTasks.d.ts +0 -16
  139. package/dist/tasks/powCaptcha/powTasks.d.ts.map +0 -1
  140. package/dist/tasks/powCaptcha/powTasks.js.map +0 -1
  141. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +0 -3
  142. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +0 -1
  143. package/dist/tasks/powCaptcha/powTasksUtils.js.map +0 -1
  144. package/dist/tasks/tasks.d.ts +0 -25
  145. package/dist/tasks/tasks.d.ts.map +0 -1
  146. package/dist/tasks/tasks.js.map +0 -1
  147. package/dist/tests/index.d.ts +0 -2
  148. package/dist/tests/index.d.ts.map +0 -1
  149. package/dist/tests/index.js +0 -2
  150. package/dist/tests/index.js.map +0 -1
  151. package/dist/tests/integration/accessRules.integration.test.d.ts +0 -2
  152. package/dist/tests/integration/accessRules.integration.test.d.ts.map +0 -1
  153. package/dist/tests/integration/accessRules.integration.test.js +0 -164
  154. package/dist/tests/integration/accessRules.integration.test.js.map +0 -1
  155. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +0 -2
  156. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +0 -1
  157. package/dist/tests/integration/imgCaptcha.integration.test.js +0 -261
  158. package/dist/tests/integration/imgCaptcha.integration.test.js.map +0 -1
  159. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +0 -32
  160. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +0 -1
  161. package/dist/tests/integration/mocks/solvedTestCaptchas.js +0 -1046
  162. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +0 -1
  163. package/dist/tests/integration/powCaptcha.integration.test.d.ts +0 -2
  164. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +0 -1
  165. package/dist/tests/integration/powCaptcha.integration.test.js +0 -306
  166. package/dist/tests/integration/powCaptcha.integration.test.js.map +0 -1
  167. package/dist/tests/integration/registerSitekey.d.ts +0 -3
  168. package/dist/tests/integration/registerSitekey.d.ts.map +0 -1
  169. package/dist/tests/integration/registerSitekey.js +0 -39
  170. package/dist/tests/integration/registerSitekey.js.map +0 -1
  171. package/dist/tests/integration/userAccessPolicy.d.ts +0 -16
  172. package/dist/tests/integration/userAccessPolicy.d.ts.map +0 -1
  173. package/dist/tests/integration/userAccessPolicy.js +0 -55
  174. package/dist/tests/integration/userAccessPolicy.js.map +0 -1
  175. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +0 -2
  176. package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +0 -1
  177. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +0 -43
  178. package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +0 -1
  179. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts +0 -2
  180. package/dist/tests/unit/api/ja4Middleware.unit.test.d.ts.map +0 -1
  181. package/dist/tests/unit/api/ja4Middleware.unit.test.js +0 -71
  182. package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +0 -1
  183. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +0 -2
  184. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +0 -1
  185. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +0 -75
  186. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +0 -1
  187. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts +0 -2
  188. package/dist/tests/unit/tasks/captchaManager.unit.test.d.ts.map +0 -1
  189. package/dist/tests/unit/tasks/captchaManager.unit.test.js +0 -236
  190. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +0 -1
  191. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +0 -2
  192. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +0 -1
  193. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +0 -277
  194. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +0 -1
  195. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +0 -2
  196. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +0 -1
  197. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +0 -93
  198. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +0 -1
  199. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +0 -2
  200. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +0 -1
  201. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +0 -75
  202. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +0 -1
  203. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts +0 -2
  204. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.d.ts.map +0 -1
  205. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +0 -68
  206. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +0 -1
  207. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts +0 -2
  208. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.d.ts.map +0 -1
  209. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js +0 -37
  210. package/dist/tests/unit/tasks/frictionless/frictionlessTasksUtils.unit.test.js.map +0 -1
  211. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +0 -2
  212. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +0 -1
  213. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +0 -402
  214. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +0 -1
  215. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +0 -2
  216. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +0 -1
  217. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +0 -46
  218. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +0 -1
  219. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +0 -2
  220. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +0 -1
  221. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -228
  222. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +0 -1
  223. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +0 -2
  224. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +0 -1
  225. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +0 -68
  226. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +0 -1
  227. package/dist/tests/unit/util.unit.test.d.ts +0 -2
  228. package/dist/tests/unit/util.unit.test.d.ts.map +0 -1
  229. package/dist/tests/unit/util.unit.test.js +0 -148
  230. package/dist/tests/unit/util.unit.test.js.map +0 -1
  231. package/dist/util.d.ts +0 -13
  232. package/dist/util.d.ts.map +0 -1
  233. package/dist/util.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 3.2.2
4
+ ### Patch Changes
5
+
6
+ - 9e4e7ca: better key logging
7
+
8
+ ## 3.2.1
9
+ ### Patch Changes
10
+
11
+ - 2f0c830: Remove node-fetch
12
+ - 52dbf21: bumping deps
13
+ - 3573f0b: fix npm scripts bundle command
14
+ - 3573f0b: build using vite, typecheck using tsc
15
+ - efd8102: Add tests for unwrap error helper
16
+ - 63519d7: Tests
17
+ - f29fc7e: Refining API error handling. Adding more language strings
18
+ - 3573f0b: standardise all vite based npm scripts for bundling
19
+ - 2d0dd8a: Integration tests for UAPs
20
+ - Updated dependencies [52dbf21]
21
+ - Updated dependencies [93d5e50]
22
+ - Updated dependencies [3573f0b]
23
+ - Updated dependencies [8a64429]
24
+ - Updated dependencies [3573f0b]
25
+ - Updated dependencies [efd8102]
26
+ - Updated dependencies [93d5e50]
27
+ - Updated dependencies [63519d7]
28
+ - Updated dependencies [f29fc7e]
29
+ - Updated dependencies [3573f0b]
30
+ - Updated dependencies [2d0dd8a]
31
+ - Updated dependencies [6d604ad]
32
+ - @prosopo/util@3.0.3
33
+ - @prosopo/util-crypto@13.5.2
34
+ - @prosopo/types-env@2.7.14
35
+ - @prosopo/keyring@2.8.7
36
+ - @prosopo/types@3.0.4
37
+ - @prosopo/api-express-router@3.0.4
38
+ - @prosopo/user-access-policy@3.3.1
39
+ - @prosopo/types-database@3.0.10
40
+ - @prosopo/api-route@2.6.8
41
+ - @prosopo/database@3.0.10
42
+ - @prosopo/datasets@3.0.10
43
+ - @prosopo/common@3.1.0
44
+ - @prosopo/env@3.1.1
45
+ - @prosopo/config@3.1.1
46
+
3
47
  ## 3.2.0
4
48
  ### Minor Changes
5
49
 
@@ -3,25 +3,30 @@ import { ApiRegisterSiteKeyEndpoint } from "./apiRegisterSiteKeyEndpoint.js";
3
3
  import { ApiRemoveDetectorKeyEndpoint } from "./apiRemoveDetectorKeyEndpoint.js";
4
4
  import { ApiUpdateDetectorKeyEndpoint } from "./apiUpdateDetectorKeyEndpoint.js";
5
5
  class ApiAdminRoutesProvider {
6
- constructor(tasks) {
7
- this.tasks = tasks;
8
- }
9
- getRoutes() {
10
- return [
11
- {
12
- path: AdminApiPaths.SiteKeyRegister,
13
- endpoint: new ApiRegisterSiteKeyEndpoint(this.tasks.clientTaskManager),
14
- },
15
- {
16
- path: AdminApiPaths.UpdateDetectorKey,
17
- endpoint: new ApiUpdateDetectorKeyEndpoint(this.tasks.clientTaskManager),
18
- },
19
- {
20
- path: AdminApiPaths.RemoveDetectorKey,
21
- endpoint: new ApiRemoveDetectorKeyEndpoint(this.tasks.clientTaskManager),
22
- },
23
- ];
24
- }
6
+ constructor(tasks) {
7
+ this.tasks = tasks;
8
+ }
9
+ getRoutes() {
10
+ return [
11
+ {
12
+ path: AdminApiPaths.SiteKeyRegister,
13
+ endpoint: new ApiRegisterSiteKeyEndpoint(this.tasks.clientTaskManager)
14
+ },
15
+ {
16
+ path: AdminApiPaths.UpdateDetectorKey,
17
+ endpoint: new ApiUpdateDetectorKeyEndpoint(
18
+ this.tasks.clientTaskManager
19
+ )
20
+ },
21
+ {
22
+ path: AdminApiPaths.RemoveDetectorKey,
23
+ endpoint: new ApiRemoveDetectorKeyEndpoint(
24
+ this.tasks.clientTaskManager
25
+ )
26
+ }
27
+ ];
28
+ }
25
29
  }
26
- export { ApiAdminRoutesProvider };
27
- //# sourceMappingURL=apiAdminRoutesProvider.js.map
30
+ export {
31
+ ApiAdminRoutesProvider
32
+ };
@@ -1,24 +1,25 @@
1
- import { ApiEndpointResponseStatus, } from "@prosopo/api-route";
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
2
  import { getLogger } from "@prosopo/common";
3
3
  import { ClientSettingsSchema, RegisterSitekeyBody } from "@prosopo/types";
4
4
  class ApiRegisterSiteKeyEndpoint {
5
- constructor(clientTaskManager) {
6
- this.clientTaskManager = clientTaskManager;
7
- }
8
- async processRequest(args, logger) {
9
- const { siteKey, tier, settings } = args;
10
- logger = logger || getLogger("info", import.meta.url);
11
- const temp = settings || ClientSettingsSchema.parse({});
12
- logger.info(() => ({ data: { siteKey }, msg: "`Registering site key" }));
13
- await this.clientTaskManager.registerSiteKey(siteKey, tier, temp);
14
- logger.info(() => ({ msg: "Site key registered" }));
15
- return {
16
- status: ApiEndpointResponseStatus.SUCCESS,
17
- };
18
- }
19
- getRequestArgsSchema() {
20
- return RegisterSitekeyBody;
21
- }
5
+ constructor(clientTaskManager) {
6
+ this.clientTaskManager = clientTaskManager;
7
+ }
8
+ async processRequest(args, logger) {
9
+ const { siteKey, tier, settings } = args;
10
+ logger = logger || getLogger("info", import.meta.url);
11
+ const temp = settings || ClientSettingsSchema.parse({});
12
+ logger.info(() => ({ data: { siteKey }, msg: "`Registering site key" }));
13
+ await this.clientTaskManager.registerSiteKey(siteKey, tier, temp);
14
+ logger.info(() => ({ msg: "Site key registered" }));
15
+ return {
16
+ status: ApiEndpointResponseStatus.SUCCESS
17
+ };
18
+ }
19
+ getRequestArgsSchema() {
20
+ return RegisterSitekeyBody;
21
+ }
22
22
  }
23
- export { ApiRegisterSiteKeyEndpoint };
24
- //# sourceMappingURL=apiRegisterSiteKeyEndpoint.js.map
23
+ export {
24
+ ApiRegisterSiteKeyEndpoint
25
+ };
@@ -1,32 +1,32 @@
1
- import { ApiEndpointResponseStatus, } from "@prosopo/api-route";
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
2
  import { getLogger } from "@prosopo/common";
3
3
  import { UpdateDetectorKeyBody } from "@prosopo/types";
4
4
  class ApiRemoveDetectorKeyEndpoint {
5
- constructor(clientTaskManager) {
6
- this.clientTaskManager = clientTaskManager;
7
- }
8
- async processRequest(args, logger) {
9
- logger = logger || getLogger("info", import.meta.url);
10
- try {
11
- const { detectorKey } = args;
12
- logger = logger || getLogger("info", import.meta.url);
13
- logger.info(() => ({ msg: "Removing detector key" }));
14
- await this.clientTaskManager.removeDetectorKey(detectorKey);
15
- return {
16
- status: ApiEndpointResponseStatus.SUCCESS,
17
- };
18
- }
19
- catch (error) {
20
- logger.error(() => ({ err: error, msg: "Error updating detector key" }));
21
- return {
22
- status: ApiEndpointResponseStatus.FAIL,
23
- error: error.message,
24
- };
25
- }
26
- }
27
- getRequestArgsSchema() {
28
- return UpdateDetectorKeyBody;
5
+ constructor(clientTaskManager) {
6
+ this.clientTaskManager = clientTaskManager;
7
+ }
8
+ async processRequest(args, logger) {
9
+ logger = logger || getLogger("info", import.meta.url);
10
+ try {
11
+ const { detectorKey } = args;
12
+ logger = logger || getLogger("info", import.meta.url);
13
+ logger.info(() => ({ msg: "Removing detector key" }));
14
+ await this.clientTaskManager.removeDetectorKey(detectorKey);
15
+ return {
16
+ status: ApiEndpointResponseStatus.SUCCESS
17
+ };
18
+ } catch (error) {
19
+ logger.error(() => ({ err: error, msg: "Error updating detector key" }));
20
+ return {
21
+ status: ApiEndpointResponseStatus.FAIL,
22
+ error: error.message
23
+ };
29
24
  }
25
+ }
26
+ getRequestArgsSchema() {
27
+ return UpdateDetectorKeyBody;
28
+ }
30
29
  }
31
- export { ApiRemoveDetectorKeyEndpoint };
32
- //# sourceMappingURL=apiRemoveDetectorKeyEndpoint.js.map
30
+ export {
31
+ ApiRemoveDetectorKeyEndpoint
32
+ };
@@ -1,39 +1,39 @@
1
- import { ApiEndpointResponseStatus, } from "@prosopo/api-route";
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
2
  import { getLogger } from "@prosopo/common";
3
3
  import { UpdateDetectorKeyBody } from "@prosopo/types";
4
4
  class ApiUpdateDetectorKeyEndpoint {
5
- constructor(clientTaskManager) {
6
- this.clientTaskManager = clientTaskManager;
7
- }
8
- async processRequest(args, logger) {
9
- logger = logger || getLogger("info", "");
10
- try {
11
- const { detectorKey } = args;
12
- logger = logger || getLogger("info", "");
13
- logger.info(() => ({ msg: "Updating detector key" }));
14
- const activeDetectorKeys = await this.clientTaskManager.updateDetectorKey(detectorKey);
15
- logger.info(() => ({
16
- msg: "Detector key updated",
17
- activeDetectorKeys,
18
- }));
19
- return {
20
- status: ApiEndpointResponseStatus.SUCCESS,
21
- data: {
22
- activeDetectorKeys,
23
- },
24
- };
25
- }
26
- catch (error) {
27
- logger.error(() => ({ msg: "Error updating detector key", err: error }));
28
- return {
29
- status: ApiEndpointResponseStatus.FAIL,
30
- error: error.message,
31
- };
5
+ constructor(clientTaskManager) {
6
+ this.clientTaskManager = clientTaskManager;
7
+ }
8
+ async processRequest(args, logger) {
9
+ logger = logger || getLogger("info", "");
10
+ try {
11
+ const { detectorKey } = args;
12
+ logger = logger || getLogger("info", "");
13
+ logger.info(() => ({ msg: "Updating detector key" }));
14
+ const activeDetectorKeys = await this.clientTaskManager.updateDetectorKey(detectorKey);
15
+ logger.info(() => ({
16
+ msg: "Detector key updated",
17
+ activeDetectorKeys
18
+ }));
19
+ return {
20
+ status: ApiEndpointResponseStatus.SUCCESS,
21
+ data: {
22
+ activeDetectorKeys
32
23
  }
24
+ };
25
+ } catch (error) {
26
+ logger.error(() => ({ msg: "Error updating detector key", err: error }));
27
+ return {
28
+ status: ApiEndpointResponseStatus.FAIL,
29
+ error: error.message
30
+ };
33
31
  }
34
- getRequestArgsSchema() {
35
- return UpdateDetectorKeyBody;
36
- }
32
+ }
33
+ getRequestArgsSchema() {
34
+ return UpdateDetectorKeyBody;
35
+ }
37
36
  }
38
- export { ApiUpdateDetectorKeyEndpoint };
39
- //# sourceMappingURL=apiUpdateDetectorKeyEndpoint.js.map
37
+ export {
38
+ ApiUpdateDetectorKeyEndpoint
39
+ };
@@ -1,7 +1,10 @@
1
- import { Tasks } from "../../tasks/index.js";
1
+ import "../../tasks/index.js";
2
2
  import { ApiAdminRoutesProvider } from "./apiAdminRoutesProvider.js";
3
- export const createApiAdminRoutesProvider = (providerEnvironment) => {
4
- const tasks = new Tasks(providerEnvironment);
5
- return new ApiAdminRoutesProvider(tasks);
3
+ import { Tasks } from "../../tasks/tasks.js";
4
+ const createApiAdminRoutesProvider = (providerEnvironment) => {
5
+ const tasks = new Tasks(providerEnvironment);
6
+ return new ApiAdminRoutesProvider(tasks);
7
+ };
8
+ export {
9
+ createApiAdminRoutesProvider
6
10
  };
7
- //# sourceMappingURL=createApiAdminRoutesProvider.js.map
@@ -1,110 +1,127 @@
1
1
  import { ApiPrefix } from "@prosopo/types";
2
- import { AccessPolicyType, ScopeMatch, userScopeInputSchema, } from "@prosopo/user-access-policy";
2
+ import { ScopeMatch, userScopeInputSchema, AccessPolicyType } from "@prosopo/user-access-policy";
3
3
  import { uniqueSubsets } from "@prosopo/util";
4
- export const getRequestUserScope = (requestHeaders, ja4, ip, user) => {
5
- const userAgent = requestHeaders["user-agent"]
6
- ? requestHeaders["user-agent"].toString()
7
- : undefined;
8
- return {
9
- ...(user && { userId: user }),
10
- ...(ja4 && { ja4Hash: ja4 }),
11
- ...(userAgent && { userAgent: userAgent }),
12
- ...(ip && { ip }),
13
- };
4
+ const getRequestUserScope = (requestHeaders, ja4, ip, user) => {
5
+ const userAgent = requestHeaders["user-agent"] ? requestHeaders["user-agent"].toString() : void 0;
6
+ return {
7
+ ...user && { userId: user },
8
+ ...ja4 && { ja4Hash: ja4 },
9
+ ...userAgent && { userAgent },
10
+ ...ip && { ip }
11
+ };
14
12
  };
15
- export const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
16
- const userScopeKeys = Object.keys(userScope).filter((key) => userScope[key] !== undefined);
17
- const prioritisedUserScopes = uniqueSubsets(userScopeKeys)
18
- .map((subset) => subset.reduce((acc, key) => {
13
+ const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
14
+ const userScopeKeys = Object.keys(userScope).filter(
15
+ (key) => userScope[key] !== void 0
16
+ );
17
+ const prioritisedUserScopes = uniqueSubsets(userScopeKeys).map(
18
+ (subset) => subset.reduce(
19
+ (acc, key) => {
19
20
  acc[key] = userScope[key];
20
21
  return acc;
21
- }, {}))
22
- .filter((us) => Object.keys(us).length > 0)
23
- .filter((us) => Object.values(us).some((value) => value !== undefined));
24
- const policyPromises = [];
25
- for (const clientOrUndefined of [clientId, undefined]) {
26
- for (const scope of prioritisedUserScopes) {
27
- policyPromises.push(userAccessRulesStorage.findRules({
28
- ...(clientOrUndefined && {
29
- policyScope: {
30
- clientId: clientOrUndefined,
31
- },
32
- }),
33
- policyScopeMatch: ScopeMatch.Exact,
34
- userScope: userScopeInputSchema.parse(scope),
35
- userScopeMatch: ScopeMatch.Exact,
36
- }));
37
- }
22
+ },
23
+ {}
24
+ )
25
+ ).filter((us) => Object.keys(us).length > 0).filter((us) => Object.values(us).some((value) => value !== void 0));
26
+ const policyPromises = [];
27
+ for (const clientOrUndefined of [clientId, void 0]) {
28
+ for (const scope of prioritisedUserScopes) {
29
+ policyPromises.push(
30
+ userAccessRulesStorage.findRules({
31
+ ...clientOrUndefined && {
32
+ policyScope: {
33
+ clientId: clientOrUndefined
34
+ }
35
+ },
36
+ policyScopeMatch: ScopeMatch.Exact,
37
+ userScope: userScopeInputSchema.parse(scope),
38
+ userScopeMatch: ScopeMatch.Exact
39
+ })
40
+ );
38
41
  }
39
- return (await Promise.all(policyPromises)).flat();
42
+ }
43
+ return (await Promise.all(policyPromises)).flat();
40
44
  };
41
- export class BlacklistRequestInspector {
42
- constructor(userAccessRulesStorage, environmentReadinessWaiter) {
43
- this.userAccessRulesStorage = userAccessRulesStorage;
44
- this.environmentReadinessWaiter = environmentReadinessWaiter;
45
+ class BlacklistRequestInspector {
46
+ constructor(userAccessRulesStorage, environmentReadinessWaiter) {
47
+ this.userAccessRulesStorage = userAccessRulesStorage;
48
+ this.environmentReadinessWaiter = environmentReadinessWaiter;
49
+ }
50
+ async abortRequestForBlockedUsers(request, res, next) {
51
+ const rawIp = request.ip || "";
52
+ request.logger.debug(() => ({
53
+ data: { ja4: request.ja4 }
54
+ }));
55
+ const shouldAbortRequest = await this.shouldAbortRequest(
56
+ request.url,
57
+ rawIp,
58
+ request.ja4,
59
+ request.headers,
60
+ request.body,
61
+ request.logger
62
+ );
63
+ if (shouldAbortRequest) {
64
+ res.status(401).json({ error: "Unauthorized" });
65
+ return;
45
66
  }
46
- async abortRequestForBlockedUsers(request, res, next) {
47
- const rawIp = request.ip || "";
48
- request.logger.debug(() => ({
49
- data: { ja4: request.ja4 },
50
- }));
51
- const shouldAbortRequest = await this.shouldAbortRequest(request.url, rawIp, request.ja4, request.headers, request.body, request.logger);
52
- if (shouldAbortRequest) {
53
- res.status(401).json({ error: "Unauthorized" });
54
- return;
55
- }
56
- next();
57
- }
58
- async shouldAbortRequest(requestedRoute, rawIp, ja4, requestHeaders, requestBody, logger) {
59
- if (this.isApiUnrelatedRoute(requestedRoute)) {
60
- return false;
61
- }
62
- if (!rawIp) {
63
- logger.info(() => ({
64
- data: {
65
- requestedRoute: requestedRoute,
66
- requestHeaders: requestHeaders,
67
- requestBody: requestBody,
68
- },
69
- msg: "Request without IP",
70
- }));
71
- return true;
72
- }
73
- await this.environmentReadinessWaiter();
74
- try {
75
- const { userId, clientId } = this.extractIdsFromRequest(requestHeaders, requestBody);
76
- const accessPolicies = await getPrioritisedAccessRule(this.userAccessRulesStorage, getRequestUserScope(requestHeaders, ja4, rawIp, userId), clientId);
77
- if (!accessPolicies ||
78
- accessPolicies.length === 0 ||
79
- !accessPolicies[0]) {
80
- return false;
81
- }
82
- const accessPolicy = accessPolicies[0];
83
- return AccessPolicyType.Block === accessPolicy.type;
84
- }
85
- catch (err) {
86
- logger.error(() => ({
87
- err,
88
- msg: "Block Middleware Error",
89
- }));
90
- return true;
91
- }
67
+ next();
68
+ }
69
+ async shouldAbortRequest(requestedRoute, rawIp, ja4, requestHeaders, requestBody, logger) {
70
+ if (this.isApiUnrelatedRoute(requestedRoute)) {
71
+ return false;
92
72
  }
93
- isApiUnrelatedRoute(url) {
94
- return !url.includes(ApiPrefix);
73
+ if (!rawIp) {
74
+ logger.info(() => ({
75
+ data: {
76
+ requestedRoute,
77
+ requestHeaders,
78
+ requestBody
79
+ },
80
+ msg: "Request without IP"
81
+ }));
82
+ return true;
95
83
  }
96
- extractIdsFromRequest(requestHeaders, requestBody) {
97
- const userId = this.getObjectValue(requestHeaders, "Prosopo-User") ||
98
- this.getObjectValue(requestBody, "user");
99
- const clientId = this.getObjectValue(requestHeaders, "Prosopo-Site-Key") ||
100
- this.getObjectValue(requestBody, "dapp");
101
- return {
102
- userId: "string" === typeof userId ? userId : undefined,
103
- clientId: "string" === typeof clientId ? clientId : undefined,
104
- };
105
- }
106
- getObjectValue(object, key) {
107
- return object[key];
84
+ await this.environmentReadinessWaiter();
85
+ try {
86
+ const { userId, clientId } = this.extractIdsFromRequest(
87
+ requestHeaders,
88
+ requestBody
89
+ );
90
+ const accessPolicies = await getPrioritisedAccessRule(
91
+ this.userAccessRulesStorage,
92
+ getRequestUserScope(requestHeaders, ja4, rawIp, userId),
93
+ clientId
94
+ );
95
+ if (!accessPolicies || accessPolicies.length === 0 || !accessPolicies[0]) {
96
+ return false;
97
+ }
98
+ const accessPolicy = accessPolicies[0];
99
+ return AccessPolicyType.Block === accessPolicy.type;
100
+ } catch (err) {
101
+ logger.error(() => ({
102
+ err,
103
+ msg: "Block Middleware Error"
104
+ }));
105
+ return true;
108
106
  }
107
+ }
108
+ isApiUnrelatedRoute(url) {
109
+ return !url.includes(ApiPrefix);
110
+ }
111
+ extractIdsFromRequest(requestHeaders, requestBody) {
112
+ const userId = this.getObjectValue(requestHeaders, "Prosopo-User") || this.getObjectValue(requestBody, "user");
113
+ const clientId = this.getObjectValue(requestHeaders, "Prosopo-Site-Key") || this.getObjectValue(requestBody, "dapp");
114
+ return {
115
+ userId: "string" === typeof userId ? userId : void 0,
116
+ clientId: "string" === typeof clientId ? clientId : void 0
117
+ };
118
+ }
119
+ getObjectValue(object, key) {
120
+ return object[key];
121
+ }
109
122
  }
110
- //# sourceMappingURL=blacklistRequestInspector.js.map
123
+ export {
124
+ BlacklistRequestInspector,
125
+ getPrioritisedAccessRule,
126
+ getRequestUserScope
127
+ };
package/dist/api/block.js CHANGED
@@ -1,10 +1,15 @@
1
1
  import { BlacklistRequestInspector } from "./blacklistRequestInspector.js";
2
- export const blockMiddleware = (providerEnvironment) => {
3
- const userAccessRulesStorage = providerEnvironment
4
- .getDb()
5
- .getUserAccessRulesStorage();
6
- const environmentReadinessWaiter = providerEnvironment.isReady.bind(providerEnvironment);
7
- const blacklistRequestInspector = new BlacklistRequestInspector(userAccessRulesStorage, environmentReadinessWaiter);
8
- return blacklistRequestInspector.abortRequestForBlockedUsers.bind(blacklistRequestInspector);
2
+ const blockMiddleware = (providerEnvironment) => {
3
+ const userAccessRulesStorage = providerEnvironment.getDb().getUserAccessRulesStorage();
4
+ const environmentReadinessWaiter = providerEnvironment.isReady.bind(providerEnvironment);
5
+ const blacklistRequestInspector = new BlacklistRequestInspector(
6
+ userAccessRulesStorage,
7
+ environmentReadinessWaiter
8
+ );
9
+ return blacklistRequestInspector.abortRequestForBlockedUsers.bind(
10
+ blacklistRequestInspector
11
+ );
12
+ };
13
+ export {
14
+ blockMiddleware
9
15
  };
10
- //# sourceMappingURL=block.js.map