@prosopo/provider 3.1.3 → 3.2.1

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