@prosopo/user-access-policy 3.5.19 → 3.5.27

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 (290) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/coverage/base.css +224 -0
  3. package/coverage/block-navigation.js +87 -0
  4. package/coverage/clover.xml +786 -0
  5. package/coverage/coverage-final.json +15 -0
  6. package/coverage/favicon.png +0 -0
  7. package/coverage/index.html +146 -0
  8. package/coverage/prettify.css +1 -0
  9. package/coverage/prettify.js +2 -0
  10. package/coverage/sort-arrow-sprite.png +0 -0
  11. package/coverage/sorter.js +210 -0
  12. package/coverage/src/accessPolicy.ts.html +457 -0
  13. package/coverage/src/accessPolicyResolver.ts.html +211 -0
  14. package/coverage/src/accessRules.ts.html +265 -0
  15. package/coverage/src/api/accessRuleApiRoutes.ts.html +379 -0
  16. package/coverage/src/api/accessRulesApiClient.ts.html +274 -0
  17. package/coverage/src/api/deleteAllRulesEndpoint.ts.html +229 -0
  18. package/coverage/src/api/deleteRulesEndpoint.ts.html +301 -0
  19. package/coverage/src/api/index.html +176 -0
  20. package/coverage/src/api/insertRulesEndpoint.ts.html +436 -0
  21. package/coverage/src/index.html +176 -0
  22. package/coverage/src/index.ts.html +277 -0
  23. package/coverage/src/redis/index.html +161 -0
  24. package/coverage/src/redis/redisRulesIndex.ts.html +769 -0
  25. package/coverage/src/redis/redisRulesReader.ts.html +652 -0
  26. package/coverage/src/redis/redisRulesStorage.ts.html +229 -0
  27. package/coverage/src/redis/redisRulesWriter.ts.html +424 -0
  28. package/coverage/src/util.ts.html +136 -0
  29. package/dist/.export.d.ts +6 -0
  30. package/dist/.export.d.ts.map +1 -0
  31. package/dist/.export.js +21 -0
  32. package/dist/.export.js.map +1 -0
  33. package/dist/accessPolicy.d.ts +169 -0
  34. package/dist/accessPolicy.d.ts.map +1 -0
  35. package/dist/accessPolicy.js.map +1 -0
  36. package/dist/accessPolicyResolver.d.ts +110 -0
  37. package/dist/accessPolicyResolver.d.ts.map +1 -0
  38. package/dist/accessPolicyResolver.js.map +1 -0
  39. package/dist/accessRules.d.ts +16 -0
  40. package/dist/accessRules.d.ts.map +1 -0
  41. package/dist/accessRules.js.map +1 -0
  42. package/dist/api/.export.d.ts +7 -0
  43. package/dist/api/.export.d.ts.map +1 -0
  44. package/dist/api/.export.js +11 -0
  45. package/dist/api/.export.js.map +1 -0
  46. package/dist/api/accessRuleApiRoutes.d.ts +27 -0
  47. package/dist/api/accessRuleApiRoutes.d.ts.map +1 -0
  48. package/dist/api/accessRuleApiRoutes.js.map +1 -0
  49. package/dist/api/accessRulesApiClient.d.ts +10 -0
  50. package/dist/api/accessRulesApiClient.d.ts.map +1 -0
  51. package/dist/api/accessRulesApiClient.js.map +1 -0
  52. package/dist/api/delete/.export.d.ts +2 -0
  53. package/dist/api/delete/.export.d.ts.map +1 -0
  54. package/dist/api/delete/.export.js +1 -0
  55. package/dist/api/delete/.export.js.map +1 -0
  56. package/dist/api/delete/deleteAllRules.d.ts +11 -0
  57. package/dist/api/delete/deleteAllRules.d.ts.map +1 -0
  58. package/dist/api/delete/deleteAllRules.js +25 -0
  59. package/dist/api/delete/deleteAllRules.js.map +1 -0
  60. package/dist/api/delete/deleteRuleGroups.d.ts +19 -0
  61. package/dist/api/delete/deleteRuleGroups.d.ts.map +1 -0
  62. package/dist/api/delete/deleteRuleGroups.js +52 -0
  63. package/dist/api/delete/deleteRuleGroups.js.map +1 -0
  64. package/dist/api/delete/deleteRules.d.ts +15 -0
  65. package/dist/api/delete/deleteRules.d.ts.map +1 -0
  66. package/dist/api/delete/deleteRules.js +43 -0
  67. package/dist/api/delete/deleteRules.js.map +1 -0
  68. package/dist/api/deleteAllRulesEndpoint.d.ts +12 -0
  69. package/dist/api/deleteAllRulesEndpoint.d.ts.map +1 -0
  70. package/dist/api/deleteAllRulesEndpoint.js.map +1 -0
  71. package/dist/api/deleteRulesEndpoint.d.ts +116 -0
  72. package/dist/api/deleteRulesEndpoint.d.ts.map +1 -0
  73. package/dist/api/deleteRulesEndpoint.js.map +1 -0
  74. package/dist/api/insertRulesEndpoint.d.ts +22 -0
  75. package/dist/api/insertRulesEndpoint.d.ts.map +1 -0
  76. package/dist/api/insertRulesEndpoint.js.map +1 -0
  77. package/dist/api/read/.export.d.ts +4 -0
  78. package/dist/api/read/.export.d.ts.map +1 -0
  79. package/dist/api/read/.export.js +1 -0
  80. package/dist/api/read/.export.js.map +1 -0
  81. package/dist/api/read/fetchRules.d.ts +53 -0
  82. package/dist/api/read/fetchRules.d.ts.map +1 -0
  83. package/dist/api/read/fetchRules.js +43 -0
  84. package/dist/api/read/fetchRules.js.map +1 -0
  85. package/dist/api/read/findRuleIds.d.ts +28 -0
  86. package/dist/api/read/findRuleIds.d.ts.map +1 -0
  87. package/dist/api/read/findRuleIds.js +50 -0
  88. package/dist/api/read/findRuleIds.js.map +1 -0
  89. package/dist/api/read/getMissingIds.d.ts +28 -0
  90. package/dist/api/read/getMissingIds.d.ts.map +1 -0
  91. package/dist/api/read/getMissingIds.js +41 -0
  92. package/dist/api/read/getMissingIds.js.map +1 -0
  93. package/dist/api/ruleApiRoutes.d.ts +43 -0
  94. package/dist/api/ruleApiRoutes.d.ts.map +1 -0
  95. package/dist/api/ruleApiRoutes.js +131 -0
  96. package/dist/api/ruleApiRoutes.js.map +1 -0
  97. package/dist/api/rulesApiClient.d.ts +20 -0
  98. package/dist/api/rulesApiClient.d.ts.map +1 -0
  99. package/dist/api/rulesApiClient.js +93 -0
  100. package/dist/api/rulesApiClient.js.map +1 -0
  101. package/dist/api/write/.export.d.ts +2 -0
  102. package/dist/api/write/.export.d.ts.map +1 -0
  103. package/dist/api/write/.export.js +1 -0
  104. package/dist/api/write/.export.js.map +1 -0
  105. package/dist/api/write/insertRules.d.ts +29 -0
  106. package/dist/api/write/insertRules.d.ts.map +1 -0
  107. package/dist/api/write/insertRules.js +102 -0
  108. package/dist/api/write/insertRules.js.map +1 -0
  109. package/dist/api/write/rehashRules.d.ts +11 -0
  110. package/dist/api/write/rehashRules.d.ts.map +1 -0
  111. package/dist/api/write/rehashRules.js +57 -0
  112. package/dist/api/write/rehashRules.js.map +1 -0
  113. package/dist/cjs/.export.cjs +21 -0
  114. package/dist/cjs/api/.export.cjs +11 -0
  115. package/dist/cjs/api/delete/.export.cjs +1 -0
  116. package/dist/cjs/api/delete/deleteAllRules.cjs +25 -0
  117. package/dist/cjs/api/delete/deleteRuleGroups.cjs +52 -0
  118. package/dist/cjs/api/delete/deleteRules.cjs +43 -0
  119. package/dist/cjs/api/read/.export.cjs +1 -0
  120. package/dist/cjs/api/read/fetchRules.cjs +43 -0
  121. package/dist/cjs/api/read/findRuleIds.cjs +50 -0
  122. package/dist/cjs/api/read/getMissingIds.cjs +41 -0
  123. package/dist/cjs/api/ruleApiRoutes.cjs +131 -0
  124. package/dist/cjs/api/rulesApiClient.cjs +93 -0
  125. package/dist/cjs/api/write/.export.cjs +1 -0
  126. package/dist/cjs/api/write/insertRules.cjs +102 -0
  127. package/dist/cjs/api/write/rehashRules.cjs +57 -0
  128. package/dist/cjs/index.cjs +4 -6
  129. package/dist/cjs/mongoose/.export.cjs +4 -0
  130. package/dist/cjs/mongoose/mongooseRuleSchema.cjs +36 -0
  131. package/dist/cjs/redis/.export.cjs +6 -0
  132. package/dist/cjs/redis/reader/redisAggregate.cjs +60 -0
  133. package/dist/cjs/redis/reader/redisRulesQuery.cjs +99 -0
  134. package/dist/cjs/redis/reader/redisRulesReader.cjs +230 -0
  135. package/dist/cjs/redis/{redisRulesReader.cjs → redisAccessRules.cjs} +38 -28
  136. package/dist/cjs/redis/{redisRulesIndex.cjs → redisAccessRulesIndex.cjs} +45 -12
  137. package/dist/cjs/redis/redisClient.cjs +67 -0
  138. package/dist/cjs/redis/redisIndex.cjs +22 -0
  139. package/dist/cjs/redis/redisRuleIndex.cjs +50 -0
  140. package/dist/cjs/redis/redisRulesStorage.cjs +22 -9
  141. package/dist/cjs/redis/redisRulesWriter.cjs +91 -64
  142. package/dist/cjs/rule.cjs +8 -0
  143. package/dist/cjs/ruleInput/.export.cjs +9 -0
  144. package/dist/cjs/ruleInput/policyInput.cjs +25 -0
  145. package/dist/cjs/ruleInput/ruleInput.cjs +50 -0
  146. package/dist/cjs/ruleInput/userScopeInput.cjs +55 -0
  147. package/dist/cjs/ruleRecord.cjs +23 -0
  148. package/dist/cjs/rulesStorage.cjs +8 -0
  149. package/dist/cjs/transformRule.cjs +77 -0
  150. package/dist/index.d.ts +15 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/mongoose/.export.d.ts +2 -0
  154. package/dist/mongoose/.export.d.ts.map +1 -0
  155. package/dist/mongoose/.export.js +4 -0
  156. package/dist/mongoose/.export.js.map +1 -0
  157. package/dist/mongoose/mongooseRuleSchema.d.ts +4 -0
  158. package/dist/mongoose/mongooseRuleSchema.d.ts.map +1 -0
  159. package/dist/mongoose/mongooseRuleSchema.js +36 -0
  160. package/dist/mongoose/mongooseRuleSchema.js.map +1 -0
  161. package/dist/redis/.export.d.ts +3 -0
  162. package/dist/redis/.export.d.ts.map +1 -0
  163. package/dist/redis/.export.js +6 -0
  164. package/dist/redis/.export.js.map +1 -0
  165. package/dist/redis/reader/redisAggregate.d.ts +4 -0
  166. package/dist/redis/reader/redisAggregate.d.ts.map +1 -0
  167. package/dist/redis/reader/redisAggregate.js +60 -0
  168. package/dist/redis/reader/redisAggregate.js.map +1 -0
  169. package/dist/redis/reader/redisRulesQuery.d.ts +4 -0
  170. package/dist/redis/reader/redisRulesQuery.d.ts.map +1 -0
  171. package/dist/redis/reader/redisRulesQuery.js +99 -0
  172. package/dist/redis/reader/redisRulesQuery.js.map +1 -0
  173. package/dist/redis/reader/redisRulesReader.d.ts +26 -0
  174. package/dist/redis/reader/redisRulesReader.d.ts.map +1 -0
  175. package/dist/redis/reader/redisRulesReader.js +213 -0
  176. package/dist/redis/reader/redisRulesReader.js.map +1 -0
  177. package/dist/redis/redisAccessRules.d.ts +7 -0
  178. package/dist/redis/redisAccessRules.d.ts.map +1 -0
  179. package/dist/redis/redisAccessRules.js +119 -0
  180. package/dist/redis/redisAccessRules.js.map +1 -0
  181. package/dist/redis/redisAccessRulesIndex.d.ts +13 -0
  182. package/dist/redis/redisAccessRulesIndex.d.ts.map +1 -0
  183. package/dist/redis/redisAccessRulesIndex.js +140 -0
  184. package/dist/redis/redisAccessRulesIndex.js.map +1 -0
  185. package/dist/redis/redisClient.d.ts +11 -0
  186. package/dist/redis/redisClient.d.ts.map +1 -0
  187. package/dist/redis/redisClient.js +67 -0
  188. package/dist/redis/redisClient.js.map +1 -0
  189. package/dist/redis/redisIndex.d.ts +9 -0
  190. package/dist/redis/redisIndex.d.ts.map +1 -0
  191. package/dist/redis/redisIndex.js +23 -0
  192. package/dist/redis/redisIndex.js.map +1 -0
  193. package/dist/redis/redisRuleIndex.d.ts +13 -0
  194. package/dist/redis/redisRuleIndex.d.ts.map +1 -0
  195. package/dist/redis/redisRuleIndex.js +50 -0
  196. package/dist/redis/redisRuleIndex.js.map +1 -0
  197. package/dist/redis/redisRulesIndex.d.ts +9 -0
  198. package/dist/redis/redisRulesIndex.d.ts.map +1 -0
  199. package/dist/redis/redisRulesIndex.js.map +1 -0
  200. package/dist/redis/redisRulesReader.d.ts +6 -0
  201. package/dist/redis/redisRulesReader.d.ts.map +1 -0
  202. package/dist/redis/redisRulesReader.js.map +1 -0
  203. package/dist/redis/redisRulesStorage.d.ts +5 -0
  204. package/dist/redis/redisRulesStorage.d.ts.map +1 -0
  205. package/dist/redis/redisRulesStorage.js +23 -10
  206. package/dist/redis/redisRulesStorage.js.map +1 -0
  207. package/dist/redis/redisRulesWriter.d.ts +22 -0
  208. package/dist/redis/redisRulesWriter.d.ts.map +1 -0
  209. package/dist/redis/redisRulesWriter.js +91 -64
  210. package/dist/redis/redisRulesWriter.js.map +1 -0
  211. package/dist/rule.d.ts +34 -0
  212. package/dist/rule.d.ts.map +1 -0
  213. package/dist/rule.js +8 -0
  214. package/dist/rule.js.map +1 -0
  215. package/dist/ruleInput/.export.d.ts +4 -0
  216. package/dist/ruleInput/.export.d.ts.map +1 -0
  217. package/dist/ruleInput/.export.js +9 -0
  218. package/dist/ruleInput/.export.js.map +1 -0
  219. package/dist/ruleInput/policyInput.d.ts +38 -0
  220. package/dist/ruleInput/policyInput.d.ts.map +1 -0
  221. package/dist/ruleInput/policyInput.js +25 -0
  222. package/dist/ruleInput/policyInput.js.map +1 -0
  223. package/dist/ruleInput/ruleInput.d.ts +145 -0
  224. package/dist/ruleInput/ruleInput.d.ts.map +1 -0
  225. package/dist/ruleInput/ruleInput.js +50 -0
  226. package/dist/ruleInput/ruleInput.js.map +1 -0
  227. package/dist/ruleInput/userScopeInput.d.ts +93 -0
  228. package/dist/ruleInput/userScopeInput.d.ts.map +1 -0
  229. package/dist/ruleInput/userScopeInput.js +55 -0
  230. package/dist/ruleInput/userScopeInput.js.map +1 -0
  231. package/dist/ruleRecord.d.ts +18 -0
  232. package/dist/ruleRecord.d.ts.map +1 -0
  233. package/dist/ruleRecord.js +23 -0
  234. package/dist/ruleRecord.js.map +1 -0
  235. package/dist/rulesStorage.d.ts +30 -0
  236. package/dist/rulesStorage.d.ts.map +1 -0
  237. package/dist/rulesStorage.js +8 -0
  238. package/dist/rulesStorage.js.map +1 -0
  239. package/dist/tests/accessPolicy.test.d.ts +2 -0
  240. package/dist/tests/accessPolicy.test.d.ts.map +1 -0
  241. package/dist/tests/accessPolicy.test.js +27 -0
  242. package/dist/tests/accessPolicy.test.js.map +1 -0
  243. package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts +2 -0
  244. package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts.map +1 -0
  245. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js +101 -0
  246. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js.map +1 -0
  247. package/dist/tests/redis/redisAccessRules.integration.test.d.ts +2 -0
  248. package/dist/tests/redis/redisAccessRules.integration.test.d.ts.map +1 -0
  249. package/dist/tests/redis/redisAccessRules.integration.test.js +586 -0
  250. package/dist/tests/redis/redisAccessRules.integration.test.js.map +1 -0
  251. package/dist/tests/redis/redisAccessRules.unit.test.d.ts +2 -0
  252. package/dist/tests/redis/redisAccessRules.unit.test.d.ts.map +1 -0
  253. package/dist/tests/redis/redisAccessRules.unit.test.js +198 -0
  254. package/dist/tests/redis/redisAccessRules.unit.test.js.map +1 -0
  255. package/dist/tests/redis/redisIndex.integration.test.d.ts +2 -0
  256. package/dist/tests/redis/redisIndex.integration.test.d.ts.map +1 -0
  257. package/dist/tests/redis/redisIndex.integration.test.js +80 -0
  258. package/dist/tests/redis/redisIndex.integration.test.js.map +1 -0
  259. package/dist/tests/redis/redisRulesIndex.unit.test.d.ts +2 -0
  260. package/dist/tests/redis/redisRulesIndex.unit.test.d.ts.map +1 -0
  261. package/dist/tests/redis/redisRulesIndex.unit.test.js +101 -0
  262. package/dist/tests/redis/redisRulesIndex.unit.test.js.map +1 -0
  263. package/dist/tests/redis/redisRulesStorage.integration.test.d.ts +2 -0
  264. package/dist/tests/redis/redisRulesStorage.integration.test.d.ts.map +1 -0
  265. package/dist/tests/redis/redisRulesStorage.integration.test.js +611 -0
  266. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -0
  267. package/dist/tests/redis/testRedisClient.d.ts +3 -0
  268. package/dist/tests/redis/testRedisClient.d.ts.map +1 -0
  269. package/dist/tests/redis/testRedisClient.js +8 -0
  270. package/dist/tests/redis/testRedisClient.js.map +1 -0
  271. package/dist/tests/testLogger.d.ts +4 -0
  272. package/dist/tests/testLogger.d.ts.map +1 -0
  273. package/dist/tests/testLogger.js +22 -0
  274. package/dist/tests/testLogger.js.map +1 -0
  275. package/dist/tests/transformRule.unit.test.d.ts +2 -0
  276. package/dist/tests/transformRule.unit.test.d.ts.map +1 -0
  277. package/dist/tests/transformRule.unit.test.js +188 -0
  278. package/dist/tests/transformRule.unit.test.js.map +1 -0
  279. package/dist/transformRule.d.ts +7 -0
  280. package/dist/transformRule.d.ts.map +1 -0
  281. package/dist/transformRule.js +77 -0
  282. package/dist/transformRule.js.map +1 -0
  283. package/dist/util.d.ts +2 -0
  284. package/dist/util.d.ts.map +1 -0
  285. package/dist/util.js.map +1 -0
  286. package/entries.ts +20 -0
  287. package/package.json +34 -18
  288. package/vite.cjs.config.ts +4 -1
  289. package/vite.esm.config.ts +6 -1
  290. package/dist/cjs/api/accessRulesApiClient.cjs +0 -38
@@ -0,0 +1,131 @@
1
+ import { FetchRulesEndpoint } from "./read/fetchRules.js";
2
+ import { FindRuleIdsEndpoint } from "./read/findRuleIds.js";
3
+ import { GetMissingIdsEndpoint } from "./read/getMissingIds.js";
4
+ import { RehashRulesEndpoint } from "./write/rehashRules.js";
5
+ import { DeleteAllRulesEndpoint } from "./delete/deleteAllRules.js";
6
+ import { DeleteRuleGroupsEndpoint } from "./delete/deleteRuleGroups.js";
7
+ import { DeleteRulesEndpoint } from "./delete/deleteRules.js";
8
+ import { InsertRulesEndpoint } from "./write/insertRules.js";
9
+ var accessRuleApiPaths = /* @__PURE__ */ ((accessRuleApiPaths2) => {
10
+ accessRuleApiPaths2["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
11
+ accessRuleApiPaths2["DELETE_GROUPS"] = "/v1/prosopo/user-access-policy/rules/delete-groups";
12
+ accessRuleApiPaths2["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
13
+ accessRuleApiPaths2["FETCH_MANY"] = "/v1/prosopo/user-access-policy/rules/fetch-many";
14
+ accessRuleApiPaths2["FIND_IDS"] = "/v1/prosopo/user-access-policy/rules/find-ids";
15
+ accessRuleApiPaths2["GET_MISSING_IDS"] = "/v1/prosopo/user-access-policy/rules/get-missing-ids";
16
+ accessRuleApiPaths2["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
17
+ accessRuleApiPaths2["REHASH_ALL"] = "/v1/prosopo/user-access-policy/rules/rehash-all";
18
+ return accessRuleApiPaths2;
19
+ })(accessRuleApiPaths || {});
20
+ class AccessRuleApiRoutes {
21
+ constructor(accessRulesStorage, logger) {
22
+ this.accessRulesStorage = accessRulesStorage;
23
+ this.logger = logger;
24
+ }
25
+ getRoutes() {
26
+ return {
27
+ ...this.makeDeleteEndpoints(),
28
+ ...this.makeReadEndpoints(),
29
+ ...this.makeWriteEndpoints()
30
+ };
31
+ }
32
+ makeDeleteEndpoints() {
33
+ return {
34
+ [
35
+ "/v1/prosopo/user-access-policy/rules/delete-all"
36
+ /* DELETE_ALL */
37
+ ]: new DeleteAllRulesEndpoint(
38
+ this.accessRulesStorage,
39
+ this.logger
40
+ ),
41
+ [
42
+ "/v1/prosopo/user-access-policy/rules/delete-groups"
43
+ /* DELETE_GROUPS */
44
+ ]: new DeleteRuleGroupsEndpoint(
45
+ this.accessRulesStorage,
46
+ this.logger
47
+ ),
48
+ [
49
+ "/v1/prosopo/user-access-policy/rules/delete-many"
50
+ /* DELETE_MANY */
51
+ ]: new DeleteRulesEndpoint(
52
+ this.accessRulesStorage,
53
+ this.logger
54
+ )
55
+ };
56
+ }
57
+ makeReadEndpoints() {
58
+ return {
59
+ [
60
+ "/v1/prosopo/user-access-policy/rules/fetch-many"
61
+ /* FETCH_MANY */
62
+ ]: new FetchRulesEndpoint(
63
+ this.accessRulesStorage,
64
+ this.logger
65
+ ),
66
+ [
67
+ "/v1/prosopo/user-access-policy/rules/find-ids"
68
+ /* FIND_IDS */
69
+ ]: new FindRuleIdsEndpoint(
70
+ this.accessRulesStorage,
71
+ this.logger
72
+ ),
73
+ [
74
+ "/v1/prosopo/user-access-policy/rules/get-missing-ids"
75
+ /* GET_MISSING_IDS */
76
+ ]: new GetMissingIdsEndpoint(
77
+ this.accessRulesStorage,
78
+ this.logger
79
+ )
80
+ };
81
+ }
82
+ makeWriteEndpoints() {
83
+ return {
84
+ [
85
+ "/v1/prosopo/user-access-policy/rules/insert-many"
86
+ /* INSERT_MANY */
87
+ ]: new InsertRulesEndpoint(
88
+ this.accessRulesStorage,
89
+ this.logger
90
+ ),
91
+ [
92
+ "/v1/prosopo/user-access-policy/rules/rehash-all"
93
+ /* REHASH_ALL */
94
+ ]: new RehashRulesEndpoint(
95
+ this.accessRulesStorage,
96
+ this.logger
97
+ )
98
+ };
99
+ }
100
+ }
101
+ const getExpressApiRuleRateLimits = () => {
102
+ const defaults = {
103
+ limit: 5,
104
+ windowSeconds: 10
105
+ };
106
+ const defaultWindowMs = defaults.windowSeconds * 1e3;
107
+ const rateLimitEntries = Object.entries(accessRuleApiPaths).map(
108
+ ([endpointName, endpointPath]) => [
109
+ endpointPath,
110
+ {
111
+ windowMs: getIntEnvironmentVariable(
112
+ `PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_WINDOW`
113
+ ) || defaultWindowMs,
114
+ limit: getIntEnvironmentVariable(
115
+ `PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_LIMIT`
116
+ ) || defaults.limit
117
+ }
118
+ ]
119
+ );
120
+ return Object.fromEntries(rateLimitEntries);
121
+ };
122
+ const getIntEnvironmentVariable = (variableName) => {
123
+ const variableValue = process.env[variableName];
124
+ const numericValue = variableValue ? Number.parseInt(variableValue) : Number.NaN;
125
+ return Number.isInteger(numericValue) ? numericValue : void 0;
126
+ };
127
+ export {
128
+ AccessRuleApiRoutes,
129
+ accessRuleApiPaths,
130
+ getExpressApiRuleRateLimits
131
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruleApiRoutes.js","sourceRoot":"","sources":["../../src/api/ruleApiRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ApiClient } from "@prosopo/api";
2
+ import type { ApiEndpointResponse } from "@prosopo/api-route";
3
+ import { type FetchRulesEndpointResponse, type FetchRulesOptions } from "#policy/api/read/fetchRules.js";
4
+ import { type RuleIdsEndpointResponse } from "#policy/api/read/findRuleIds.js";
5
+ import { type MissingIds, type MissingIdsEndpointResponse } from "#policy/api/read/getMissingIds.js";
6
+ import type { AccessRulesFilterInput } from "#policy/ruleInput/ruleInput.js";
7
+ import type { DeleteSiteGroups } from "./delete/deleteRuleGroups.js";
8
+ import type { InsertRulesGroup } from "./write/insertRules.js";
9
+ export declare class AccessRulesApiClient extends ApiClient {
10
+ deleteMany(filters: AccessRulesFilterInput[], timestamp: string, signature: string): Promise<ApiEndpointResponse>;
11
+ deleteGroups(siteGroups: DeleteSiteGroups, timestamp: string, signature: string): Promise<ApiEndpointResponse>;
12
+ deleteAll(timestamp: string, signature: string): Promise<ApiEndpointResponse>;
13
+ getMissingIds(idsToCheck: MissingIds, timestamp: string, signature: string): Promise<MissingIdsEndpointResponse>;
14
+ fetchMany(fetchOptions: FetchRulesOptions, timestamp: string, signature: string): Promise<FetchRulesEndpointResponse>;
15
+ findIds(filters: AccessRulesFilterInput[], timestamp: string, signature: string): Promise<RuleIdsEndpointResponse>;
16
+ rehashAll(timestamp: string, signature: string): Promise<ApiEndpointResponse>;
17
+ insertMany(ruleGroups: InsertRulesGroup[], timestamp: string, signature: string): Promise<ApiEndpointResponse>;
18
+ protected getAuthHeaders(timestamp: string, signature: string): RequestInit;
19
+ }
20
+ //# sourceMappingURL=rulesApiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulesApiClient.d.ts","sourceRoot":"","sources":["../../src/api/rulesApiClient.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EAEtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,KAAK,uBAAuB,EAE5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,KAAK,UAAU,EACf,KAAK,0BAA0B,EAE/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,qBAAa,oBAAqB,SAAQ,SAAS;IAG3C,UAAU,CAChB,OAAO,EAAE,sBAAsB,EAAE,EACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC;IAQxB,YAAY,CAClB,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC;IAQxB,SAAS,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC;IAUlB,aAAa,CACzB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC;IAezB,SAAS,CACrB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC;IAezB,OAAO,CACnB,OAAO,EAAE,sBAAsB,EAAE,EACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,uBAAuB,CAAC;IAiBtB,SAAS,CACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC;IAQxB,UAAU,CAChB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC;IAQ/B,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW;CAS3E"}
@@ -0,0 +1,93 @@
1
+ import { ApiClient } from "@prosopo/api";
2
+ import { fetchRulesResponse } from "./read/fetchRules.js";
3
+ import { ruleIdsResponse } from "./read/findRuleIds.js";
4
+ import { missingIdsResponse } from "./read/getMissingIds.js";
5
+ import { accessRuleApiPaths } from "./ruleApiRoutes.js";
6
+ class AccessRulesApiClient extends ApiClient {
7
+ //// delete
8
+ deleteMany(filters, timestamp, signature) {
9
+ return this.post(
10
+ accessRuleApiPaths.DELETE_MANY,
11
+ filters,
12
+ this.getAuthHeaders(timestamp, signature)
13
+ );
14
+ }
15
+ deleteGroups(siteGroups, timestamp, signature) {
16
+ return this.post(
17
+ accessRuleApiPaths.DELETE_GROUPS,
18
+ siteGroups,
19
+ this.getAuthHeaders(timestamp, signature)
20
+ );
21
+ }
22
+ deleteAll(timestamp, signature) {
23
+ return this.post(
24
+ accessRuleApiPaths.DELETE_ALL,
25
+ {},
26
+ this.getAuthHeaders(timestamp, signature)
27
+ );
28
+ }
29
+ //// read
30
+ async getMissingIds(idsToCheck, timestamp, signature) {
31
+ const endpointResponse = await this.post(
32
+ accessRuleApiPaths.GET_MISSING_IDS,
33
+ idsToCheck,
34
+ this.getAuthHeaders(timestamp, signature)
35
+ );
36
+ const parsedData = missingIdsResponse.safeParse(endpointResponse.data);
37
+ return {
38
+ ...endpointResponse,
39
+ data: parsedData.success ? parsedData.data : void 0
40
+ };
41
+ }
42
+ async fetchMany(fetchOptions, timestamp, signature) {
43
+ const endpointResponse = await this.post(
44
+ accessRuleApiPaths.FETCH_MANY,
45
+ fetchOptions,
46
+ this.getAuthHeaders(timestamp, signature)
47
+ );
48
+ const parsedData = fetchRulesResponse.safeParse(endpointResponse.data);
49
+ return {
50
+ ...endpointResponse,
51
+ data: parsedData.success ? parsedData.data : void 0
52
+ };
53
+ }
54
+ async findIds(filters, timestamp, signature) {
55
+ const endpointResponse = await this.post(
56
+ accessRuleApiPaths.FIND_IDS,
57
+ filters,
58
+ this.getAuthHeaders(timestamp, signature)
59
+ );
60
+ const parsedData = ruleIdsResponse.safeParse(endpointResponse.data);
61
+ return {
62
+ ...endpointResponse,
63
+ data: parsedData.success ? parsedData.data : void 0
64
+ };
65
+ }
66
+ //// write
67
+ async rehashAll(timestamp, signature) {
68
+ return this.post(
69
+ accessRuleApiPaths.REHASH_ALL,
70
+ {},
71
+ this.getAuthHeaders(timestamp, signature)
72
+ );
73
+ }
74
+ insertMany(ruleGroups, timestamp, signature) {
75
+ return this.post(
76
+ accessRuleApiPaths.INSERT_MANY,
77
+ ruleGroups,
78
+ this.getAuthHeaders(timestamp, signature)
79
+ );
80
+ }
81
+ getAuthHeaders(timestamp, signature) {
82
+ return {
83
+ headers: {
84
+ "Prosopo-Site-Key": this.account,
85
+ timestamp,
86
+ signature
87
+ }
88
+ };
89
+ }
90
+ }
91
+ export {
92
+ AccessRulesApiClient
93
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulesApiClient.js","sourceRoot":"","sources":["../../src/api/rulesApiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type { InsertRulesGroup } from "./insertRules.js";
2
+ //# sourceMappingURL=.export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":".export.d.ts","sourceRoot":"","sources":["../../../src/api/write/.export.ts"],"names":[],"mappings":"AAcA,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+ {"version":3,"file":".export.js","sourceRoot":"","sources":["../../../src/api/write/.export.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
2
+ import { type Logger } from "@prosopo/common";
3
+ import { type ZodType } from "zod";
4
+ import type { AccessPolicy, PolicyScope, UserScope } from "#policy/rule.js";
5
+ import { type UserScopeInput } from "#policy/ruleInput/userScopeInput.js";
6
+ import type { AccessRulesWriter } from "#policy/rulesStorage.js";
7
+ export type InsertRulesGroup = {
8
+ accessPolicy: AccessPolicy;
9
+ userScopes: UserScopeInput[];
10
+ policyScopes?: PolicyScope[];
11
+ groupId?: string;
12
+ expiresUnixTimestamp?: number;
13
+ };
14
+ type ParsedInsertRulesGroup = InsertRulesGroup & {
15
+ userScopes: UserScope[];
16
+ };
17
+ type ParsedInsertRuleGroups = ParsedInsertRulesGroup[];
18
+ type InsertRulesSchema = ZodType<InsertRulesGroup[]>;
19
+ export declare class InsertRulesEndpoint implements ApiEndpoint<InsertRulesSchema> {
20
+ private readonly accessRulesWriter;
21
+ private readonly logger;
22
+ constructor(accessRulesWriter: AccessRulesWriter, logger: Logger);
23
+ getRequestArgsSchema(): InsertRulesSchema;
24
+ processRequest(args: ParsedInsertRuleGroups): Promise<ApiEndpointResponse>;
25
+ protected createRuleGroups(groups: ParsedInsertRuleGroups): Promise<string[]>;
26
+ protected createRulesGroup(group: ParsedInsertRulesGroup): Promise<string[]>;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=insertRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertRules.d.ts","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA0B,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EACX,YAAY,EAEZ,WAAW,EACX,SAAS,EACT,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACN,KAAK,cAAc,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAEX,iBAAiB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;IAG7B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,sBAAsB,GAAG,gBAAgB,GAAG;IAChD,UAAU,EAAE,SAAS,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;AAEvD,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAErD,qBAAa,mBAAoB,YAAW,WAAW,CAAC,iBAAiB,CAAC;IAExE,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM;IAGzB,oBAAoB,IAAI,iBAAiB;IAY1C,cAAc,CACnB,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;cAsDf,gBAAgB,CAC/B,MAAM,EAAE,sBAAsB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;cAQJ,gBAAgB,CAC/B,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;CA8BpB"}
@@ -0,0 +1,102 @@
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
+ import { LogLevel } from "@prosopo/common";
3
+ import { z } from "zod";
4
+ import { policyScopeInput, accessPolicyInput } from "../../ruleInput/policyInput.js";
5
+ import { userScopeInput } from "../../ruleInput/userScopeInput.js";
6
+ class InsertRulesEndpoint {
7
+ constructor(accessRulesWriter, logger) {
8
+ this.accessRulesWriter = accessRulesWriter;
9
+ this.logger = logger;
10
+ }
11
+ getRequestArgsSchema() {
12
+ return z.array(
13
+ z.object({
14
+ accessPolicy: accessPolicyInput,
15
+ policyScopes: z.array(policyScopeInput).optional(),
16
+ groupId: z.string().optional(),
17
+ userScopes: z.array(userScopeInput),
18
+ expiresUnixTimestamp: z.number().optional()
19
+ })
20
+ );
21
+ }
22
+ async processRequest(args) {
23
+ const timeoutPromise = new Promise((resolve) => {
24
+ setTimeout(() => {
25
+ resolve({
26
+ status: ApiEndpointResponseStatus.PROCESSING
27
+ });
28
+ }, 5e3);
29
+ });
30
+ const userScopesCount = args.reduce(
31
+ (userScopesCount2, group) => userScopesCount2 + group.userScopes.length,
32
+ 0
33
+ );
34
+ const createRulesPromise = this.createRuleGroups(args).then((insertedIds) => {
35
+ this.logger.info(() => ({
36
+ msg: "Endpoint inserted access rules",
37
+ data: {
38
+ userScopesCount,
39
+ insertedCount: insertedIds.length,
40
+ uniqueIdsCount: new Set(insertedIds).size
41
+ }
42
+ }));
43
+ this.logger.debug(() => ({
44
+ msg: "Inserted access rules details",
45
+ data: {
46
+ insertedIds,
47
+ input: args
48
+ }
49
+ }));
50
+ return {
51
+ status: ApiEndpointResponseStatus.SUCCESS
52
+ };
53
+ }).catch((error) => {
54
+ if (LogLevel.enum.debug === this.logger.getLogLevel()) {
55
+ this.logger.error(() => ({
56
+ err: error,
57
+ data: { args },
58
+ msg: "Failed to insert access rules"
59
+ }));
60
+ }
61
+ return {
62
+ status: ApiEndpointResponseStatus.FAIL
63
+ };
64
+ });
65
+ return Promise.race([timeoutPromise, createRulesPromise]);
66
+ }
67
+ async createRuleGroups(groups) {
68
+ const ruleIdPromises = groups.map((group) => this.createRulesGroup(group));
69
+ const ruleIdSets = await Promise.all(ruleIdPromises);
70
+ return ruleIdSets.flat();
71
+ }
72
+ async createRulesGroup(group) {
73
+ const ruleEntries = [];
74
+ const policyScopes = group.policyScopes || [];
75
+ for (const userScope of group.userScopes) {
76
+ const ruleBase = {
77
+ ...group.accessPolicy,
78
+ ...userScope,
79
+ ...group.groupId ? { groupId: group.groupId } : {}
80
+ };
81
+ if (policyScopes.length > 0) {
82
+ for (const policyScope of policyScopes) {
83
+ ruleEntries.push({
84
+ rule: {
85
+ ...ruleBase,
86
+ ...policyScope
87
+ }
88
+ });
89
+ }
90
+ } else {
91
+ ruleEntries.push({
92
+ rule: ruleBase,
93
+ expiresUnixTimestamp: group.expiresUnixTimestamp
94
+ });
95
+ }
96
+ }
97
+ return this.accessRulesWriter.insertRules(ruleEntries);
98
+ }
99
+ }
100
+ export {
101
+ InsertRulesEndpoint
102
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertRules.js","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
2
+ import type { Logger } from "@prosopo/common";
3
+ import type { AccessRulesStorage } from "#policy/rulesStorage.js";
4
+ export declare class RehashRulesEndpoint implements ApiEndpoint<undefined> {
5
+ private readonly accessRulesStorage;
6
+ private readonly logger;
7
+ constructor(accessRulesStorage: AccessRulesStorage, logger: Logger);
8
+ getRequestArgsSchema(): undefined;
9
+ processRequest(): Promise<ApiEndpointResponse>;
10
+ }
11
+ //# sourceMappingURL=rehashRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehashRules.d.ts","sourceRoot":"","sources":["../../../src/api/write/rehashRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,qBAAa,mBAAoB,YAAW,WAAW,CAAC,SAAS,CAAC;IAEhE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM;IAGzB,oBAAoB,IAAI,SAAS;IAElC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAqDpD"}
@@ -0,0 +1,57 @@
1
+ import { ApiEndpointResponseStatus } from "@prosopo/api-route";
2
+ class RehashRulesEndpoint {
3
+ constructor(accessRulesStorage, logger) {
4
+ this.accessRulesStorage = accessRulesStorage;
5
+ this.logger = logger;
6
+ }
7
+ getRequestArgsSchema() {
8
+ }
9
+ async processRequest() {
10
+ await this.accessRulesStorage.fetchAllRuleIds(async (ruleIds) => {
11
+ this.logger.info(() => ({
12
+ msg: "Fetched rule ids batch",
13
+ data: {
14
+ count: ruleIds.length,
15
+ ruleIds
16
+ }
17
+ }));
18
+ const ruleEntries = await this.accessRulesStorage.fetchRules(ruleIds);
19
+ this.logger.info(() => ({
20
+ msg: "Fetched rules",
21
+ data: {
22
+ count: ruleEntries.length
23
+ }
24
+ }));
25
+ if (ruleEntries.length !== ruleIds.length) {
26
+ this.logger.warn(() => ({
27
+ msg: "Fetched rules count is not equal to the requested count",
28
+ data: {
29
+ fetchedCount: ruleEntries.length,
30
+ requestedCount: ruleIds.length
31
+ }
32
+ }));
33
+ }
34
+ await this.accessRulesStorage.deleteRules(ruleIds);
35
+ this.logger.info(() => ({
36
+ msg: "Deleted rules",
37
+ data: {
38
+ count: ruleIds.length
39
+ }
40
+ }));
41
+ await this.accessRulesStorage.insertRules(ruleEntries);
42
+ this.logger.info(() => ({
43
+ msg: "Inserted rules",
44
+ data: {
45
+ count: ruleEntries.length
46
+ }
47
+ }));
48
+ });
49
+ return {
50
+ status: ApiEndpointResponseStatus.SUCCESS,
51
+ data: {}
52
+ };
53
+ }
54
+ }
55
+ export {
56
+ RehashRulesEndpoint
57
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehashRules.js","sourceRoot":"","sources":["../../../src/api/write/rehashRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,OAAO,mBAAmB;IAC/B,YACkB,kBAAsC,EACtC,MAAc;QADd,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAEG,oBAAoB,KAAe,CAAC;IAE3C,KAAK,CAAC,cAAc;QACnB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,EAAE,OAAiB,EAAE,EAAE;YACzE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,wBAAwB;gBAC7B,IAAI,EAAE;oBACL,KAAK,EAAE,OAAO,CAAC,MAAM;oBACrB,OAAO;iBACP;aACD,CAAC,CAAC,CAAC;YAEJ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEtE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,eAAe;gBACpB,IAAI,EAAE;oBACL,KAAK,EAAE,WAAW,CAAC,MAAM;iBACzB;aACD,CAAC,CAAC,CAAC;YAEJ,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBACvB,GAAG,EAAE,yDAAyD;oBAC9D,IAAI,EAAE;wBACL,YAAY,EAAE,WAAW,CAAC,MAAM;wBAChC,cAAc,EAAE,OAAO,CAAC,MAAM;qBAC9B;iBACD,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,eAAe;gBACpB,IAAI,EAAE;oBACL,KAAK,EAAE,OAAO,CAAC,MAAM;iBACrB;aACD,CAAC,CAAC,CAAC;YAEJ,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,gBAAgB;gBACrB,IAAI,EAAE;oBACL,KAAK,EAAE,WAAW,CAAC,MAAM;iBACzB;aACD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,MAAM,EAAE,yBAAyB,CAAC,OAAO;YACzC,IAAI,EAAE,EAAE;SACR,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("./ruleInput/.export.cjs");
4
+ const transformRule = require("./transformRule.cjs");
5
+ const rule = require("./rule.cjs");
6
+ const rulesStorage = require("./rulesStorage.cjs");
7
+ const ruleRecord = require("./ruleRecord.cjs");
8
+ const ruleInput = require("./ruleInput/ruleInput.cjs");
9
+ const policyInput = require("./ruleInput/policyInput.cjs");
10
+ const userScopeInput = require("./ruleInput/userScopeInput.cjs");
11
+ exports.makeAccessRuleHash = transformRule.makeAccessRuleHash;
12
+ exports.transformAccessRuleIntoRecord = transformRule.transformAccessRuleIntoRecord;
13
+ exports.transformAccessRuleRecordIntoRule = transformRule.transformAccessRuleRecordIntoRule;
14
+ exports.AccessPolicyType = rule.AccessPolicyType;
15
+ exports.FilterScopeMatch = rulesStorage.FilterScopeMatch;
16
+ exports.getUserScopeRecordFromAccessRuleRecord = ruleRecord.getUserScopeRecordFromAccessRuleRecord;
17
+ exports.userScopeRecordFields = ruleRecord.userScopeRecordFields;
18
+ exports.accessRuleInput = ruleInput.accessRuleInput;
19
+ exports.accessPolicyInput = policyInput.accessPolicyInput;
20
+ exports.policyScopeInput = policyInput.policyScopeInput;
21
+ exports.userScopeInput = userScopeInput.userScopeInput;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("./delete/.export.cjs");
4
+ require("./read/.export.cjs");
5
+ require("./write/.export.cjs");
6
+ const ruleApiRoutes = require("./ruleApiRoutes.cjs");
7
+ const rulesApiClient = require("./rulesApiClient.cjs");
8
+ exports.AccessRuleApiRoutes = ruleApiRoutes.AccessRuleApiRoutes;
9
+ exports.accessRuleApiPaths = ruleApiRoutes.accessRuleApiPaths;
10
+ exports.getExpressApiRuleRateLimits = ruleApiRoutes.getExpressApiRuleRateLimits;
11
+ exports.AccessRulesApiClient = rulesApiClient.AccessRulesApiClient;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const apiRoute = require("@prosopo/api-route");
4
+ class DeleteAllRulesEndpoint {
5
+ constructor(accessRulesStorage, logger) {
6
+ this.accessRulesStorage = accessRulesStorage;
7
+ this.logger = logger;
8
+ }
9
+ getRequestArgsSchema() {
10
+ }
11
+ async processRequest() {
12
+ const deletedCount = await this.accessRulesStorage.deleteAllRules();
13
+ this.logger.info(() => ({
14
+ msg: "Endpoint deleted all access rules",
15
+ data: { deletedCount }
16
+ }));
17
+ return {
18
+ status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
19
+ data: {
20
+ deleted_count: deletedCount
21
+ }
22
+ };
23
+ }
24
+ }
25
+ exports.DeleteAllRulesEndpoint = DeleteAllRulesEndpoint;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const apiRoute = require("@prosopo/api-route");
4
+ const zod = require("zod");
5
+ const rulesStorage = require("../../rulesStorage.cjs");
6
+ class DeleteRuleGroupsEndpoint {
7
+ constructor(accessRulesStorage, logger) {
8
+ this.accessRulesStorage = accessRulesStorage;
9
+ this.logger = logger;
10
+ }
11
+ getRequestArgsSchema() {
12
+ return zod.z.array(
13
+ zod.z.object({
14
+ clientIds: zod.z.string().array(),
15
+ groupId: zod.z.string()
16
+ })
17
+ );
18
+ }
19
+ async processRequest(args) {
20
+ const foundRuleIdPromises = args.flatMap(
21
+ (ruleToDelete) => ruleToDelete.clientIds.map(
22
+ (clientId) => this.accessRulesStorage.findRuleIds({
23
+ policyScope: {
24
+ clientId
25
+ },
26
+ policyScopeMatch: rulesStorage.FilterScopeMatch.Exact,
27
+ groupId: ruleToDelete.groupId
28
+ })
29
+ )
30
+ );
31
+ const foundRuleIds = await Promise.all(foundRuleIdPromises);
32
+ const ruleIds = foundRuleIds.flat();
33
+ const uniqueRuleIds = [...new Set(ruleIds)];
34
+ if (uniqueRuleIds.length > 0) {
35
+ await this.accessRulesStorage.deleteRules(uniqueRuleIds);
36
+ }
37
+ this.logger.info(() => ({
38
+ msg: "Endpoint deleted rule groups",
39
+ data: {
40
+ args,
41
+ uniqueRuleIds
42
+ }
43
+ }));
44
+ return {
45
+ status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
46
+ data: {
47
+ deleted_count: uniqueRuleIds.length
48
+ }
49
+ };
50
+ }
51
+ }
52
+ exports.DeleteRuleGroupsEndpoint = DeleteRuleGroupsEndpoint;