@prosopo/user-access-policy 3.5.27 → 3.5.31

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 (240) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/package.json +11 -11
  3. package/coverage/base.css +0 -224
  4. package/coverage/block-navigation.js +0 -87
  5. package/coverage/clover.xml +0 -786
  6. package/coverage/coverage-final.json +0 -15
  7. package/coverage/favicon.png +0 -0
  8. package/coverage/index.html +0 -146
  9. package/coverage/prettify.css +0 -1
  10. package/coverage/prettify.js +0 -2
  11. package/coverage/sort-arrow-sprite.png +0 -0
  12. package/coverage/sorter.js +0 -210
  13. package/coverage/src/accessPolicy.ts.html +0 -457
  14. package/coverage/src/accessPolicyResolver.ts.html +0 -211
  15. package/coverage/src/accessRules.ts.html +0 -265
  16. package/coverage/src/api/accessRuleApiRoutes.ts.html +0 -379
  17. package/coverage/src/api/accessRulesApiClient.ts.html +0 -274
  18. package/coverage/src/api/deleteAllRulesEndpoint.ts.html +0 -229
  19. package/coverage/src/api/deleteRulesEndpoint.ts.html +0 -301
  20. package/coverage/src/api/index.html +0 -176
  21. package/coverage/src/api/insertRulesEndpoint.ts.html +0 -436
  22. package/coverage/src/index.html +0 -176
  23. package/coverage/src/index.ts.html +0 -277
  24. package/coverage/src/redis/index.html +0 -161
  25. package/coverage/src/redis/redisRulesIndex.ts.html +0 -769
  26. package/coverage/src/redis/redisRulesReader.ts.html +0 -652
  27. package/coverage/src/redis/redisRulesStorage.ts.html +0 -229
  28. package/coverage/src/redis/redisRulesWriter.ts.html +0 -424
  29. package/coverage/src/util.ts.html +0 -136
  30. package/dist/.export.d.ts +0 -6
  31. package/dist/.export.d.ts.map +0 -1
  32. package/dist/.export.js.map +0 -1
  33. package/dist/accessPolicy.d.ts +0 -169
  34. package/dist/accessPolicy.d.ts.map +0 -1
  35. package/dist/accessPolicy.js +0 -80
  36. package/dist/accessPolicy.js.map +0 -1
  37. package/dist/accessPolicyResolver.d.ts +0 -110
  38. package/dist/accessPolicyResolver.d.ts.map +0 -1
  39. package/dist/accessPolicyResolver.js +0 -31
  40. package/dist/accessPolicyResolver.js.map +0 -1
  41. package/dist/accessRules.d.ts +0 -16
  42. package/dist/accessRules.d.ts.map +0 -1
  43. package/dist/accessRules.js +0 -11
  44. package/dist/accessRules.js.map +0 -1
  45. package/dist/api/.export.d.ts +0 -7
  46. package/dist/api/.export.d.ts.map +0 -1
  47. package/dist/api/.export.js.map +0 -1
  48. package/dist/api/accessRuleApiRoutes.d.ts +0 -27
  49. package/dist/api/accessRuleApiRoutes.d.ts.map +0 -1
  50. package/dist/api/accessRuleApiRoutes.js +0 -79
  51. package/dist/api/accessRuleApiRoutes.js.map +0 -1
  52. package/dist/api/accessRulesApiClient.d.ts +0 -10
  53. package/dist/api/accessRulesApiClient.d.ts.map +0 -1
  54. package/dist/api/accessRulesApiClient.js +0 -38
  55. package/dist/api/accessRulesApiClient.js.map +0 -1
  56. package/dist/api/delete/.export.d.ts +0 -2
  57. package/dist/api/delete/.export.d.ts.map +0 -1
  58. package/dist/api/delete/.export.js.map +0 -1
  59. package/dist/api/delete/deleteAllRules.d.ts +0 -11
  60. package/dist/api/delete/deleteAllRules.d.ts.map +0 -1
  61. package/dist/api/delete/deleteAllRules.js.map +0 -1
  62. package/dist/api/delete/deleteRuleGroups.d.ts +0 -19
  63. package/dist/api/delete/deleteRuleGroups.d.ts.map +0 -1
  64. package/dist/api/delete/deleteRuleGroups.js.map +0 -1
  65. package/dist/api/delete/deleteRules.d.ts +0 -15
  66. package/dist/api/delete/deleteRules.d.ts.map +0 -1
  67. package/dist/api/delete/deleteRules.js.map +0 -1
  68. package/dist/api/deleteAllRulesEndpoint.d.ts +0 -12
  69. package/dist/api/deleteAllRulesEndpoint.d.ts.map +0 -1
  70. package/dist/api/deleteAllRulesEndpoint.js +0 -24
  71. package/dist/api/deleteAllRulesEndpoint.js.map +0 -1
  72. package/dist/api/deleteRulesEndpoint.d.ts +0 -116
  73. package/dist/api/deleteRulesEndpoint.d.ts.map +0 -1
  74. package/dist/api/deleteRulesEndpoint.js +0 -34
  75. package/dist/api/deleteRulesEndpoint.js.map +0 -1
  76. package/dist/api/insertRulesEndpoint.d.ts +0 -22
  77. package/dist/api/insertRulesEndpoint.d.ts.map +0 -1
  78. package/dist/api/insertRulesEndpoint.js +0 -62
  79. package/dist/api/insertRulesEndpoint.js.map +0 -1
  80. package/dist/api/read/.export.d.ts +0 -4
  81. package/dist/api/read/.export.d.ts.map +0 -1
  82. package/dist/api/read/.export.js.map +0 -1
  83. package/dist/api/read/fetchRules.d.ts +0 -53
  84. package/dist/api/read/fetchRules.d.ts.map +0 -1
  85. package/dist/api/read/fetchRules.js.map +0 -1
  86. package/dist/api/read/findRuleIds.d.ts +0 -28
  87. package/dist/api/read/findRuleIds.d.ts.map +0 -1
  88. package/dist/api/read/findRuleIds.js.map +0 -1
  89. package/dist/api/read/getMissingIds.d.ts +0 -28
  90. package/dist/api/read/getMissingIds.d.ts.map +0 -1
  91. package/dist/api/read/getMissingIds.js.map +0 -1
  92. package/dist/api/ruleApiRoutes.d.ts +0 -43
  93. package/dist/api/ruleApiRoutes.d.ts.map +0 -1
  94. package/dist/api/ruleApiRoutes.js.map +0 -1
  95. package/dist/api/rulesApiClient.d.ts +0 -20
  96. package/dist/api/rulesApiClient.d.ts.map +0 -1
  97. package/dist/api/rulesApiClient.js.map +0 -1
  98. package/dist/api/write/.export.d.ts +0 -2
  99. package/dist/api/write/.export.d.ts.map +0 -1
  100. package/dist/api/write/.export.js.map +0 -1
  101. package/dist/api/write/insertRules.d.ts +0 -29
  102. package/dist/api/write/insertRules.d.ts.map +0 -1
  103. package/dist/api/write/insertRules.js.map +0 -1
  104. package/dist/api/write/rehashRules.d.ts +0 -11
  105. package/dist/api/write/rehashRules.d.ts.map +0 -1
  106. package/dist/api/write/rehashRules.js.map +0 -1
  107. package/dist/cjs/accessPolicy.cjs +0 -80
  108. package/dist/cjs/accessPolicyResolver.cjs +0 -31
  109. package/dist/cjs/accessRules.cjs +0 -11
  110. package/dist/cjs/api/accessRuleApiRoutes.cjs +0 -79
  111. package/dist/cjs/api/deleteAllRulesEndpoint.cjs +0 -24
  112. package/dist/cjs/api/deleteRulesEndpoint.cjs +0 -34
  113. package/dist/cjs/api/insertRulesEndpoint.cjs +0 -62
  114. package/dist/cjs/index.cjs +0 -29
  115. package/dist/cjs/redis/redisAccessRules.cjs +0 -152
  116. package/dist/cjs/redis/redisAccessRulesIndex.cjs +0 -171
  117. package/dist/cjs/redis/redisIndex.cjs +0 -22
  118. package/dist/cjs/util.cjs +0 -5
  119. package/dist/index.d.ts +0 -15
  120. package/dist/index.d.ts.map +0 -1
  121. package/dist/index.js +0 -32
  122. package/dist/index.js.map +0 -1
  123. package/dist/mongoose/.export.d.ts +0 -2
  124. package/dist/mongoose/.export.d.ts.map +0 -1
  125. package/dist/mongoose/.export.js.map +0 -1
  126. package/dist/mongoose/mongooseRuleSchema.d.ts +0 -4
  127. package/dist/mongoose/mongooseRuleSchema.d.ts.map +0 -1
  128. package/dist/mongoose/mongooseRuleSchema.js.map +0 -1
  129. package/dist/redis/.export.d.ts +0 -3
  130. package/dist/redis/.export.d.ts.map +0 -1
  131. package/dist/redis/.export.js.map +0 -1
  132. package/dist/redis/reader/redisAggregate.d.ts +0 -4
  133. package/dist/redis/reader/redisAggregate.d.ts.map +0 -1
  134. package/dist/redis/reader/redisAggregate.js.map +0 -1
  135. package/dist/redis/reader/redisRulesQuery.d.ts +0 -4
  136. package/dist/redis/reader/redisRulesQuery.d.ts.map +0 -1
  137. package/dist/redis/reader/redisRulesQuery.js.map +0 -1
  138. package/dist/redis/reader/redisRulesReader.d.ts +0 -26
  139. package/dist/redis/reader/redisRulesReader.d.ts.map +0 -1
  140. package/dist/redis/reader/redisRulesReader.js.map +0 -1
  141. package/dist/redis/redisAccessRules.d.ts +0 -7
  142. package/dist/redis/redisAccessRules.d.ts.map +0 -1
  143. package/dist/redis/redisAccessRules.js +0 -119
  144. package/dist/redis/redisAccessRules.js.map +0 -1
  145. package/dist/redis/redisAccessRulesIndex.d.ts +0 -13
  146. package/dist/redis/redisAccessRulesIndex.d.ts.map +0 -1
  147. package/dist/redis/redisAccessRulesIndex.js +0 -140
  148. package/dist/redis/redisAccessRulesIndex.js.map +0 -1
  149. package/dist/redis/redisClient.d.ts +0 -11
  150. package/dist/redis/redisClient.d.ts.map +0 -1
  151. package/dist/redis/redisClient.js.map +0 -1
  152. package/dist/redis/redisIndex.d.ts +0 -9
  153. package/dist/redis/redisIndex.d.ts.map +0 -1
  154. package/dist/redis/redisIndex.js +0 -23
  155. package/dist/redis/redisIndex.js.map +0 -1
  156. package/dist/redis/redisRuleIndex.d.ts +0 -13
  157. package/dist/redis/redisRuleIndex.d.ts.map +0 -1
  158. package/dist/redis/redisRuleIndex.js.map +0 -1
  159. package/dist/redis/redisRulesIndex.d.ts +0 -9
  160. package/dist/redis/redisRulesIndex.d.ts.map +0 -1
  161. package/dist/redis/redisRulesIndex.js +0 -138
  162. package/dist/redis/redisRulesIndex.js.map +0 -1
  163. package/dist/redis/redisRulesReader.d.ts +0 -6
  164. package/dist/redis/redisRulesReader.d.ts.map +0 -1
  165. package/dist/redis/redisRulesReader.js +0 -125
  166. package/dist/redis/redisRulesReader.js.map +0 -1
  167. package/dist/redis/redisRulesStorage.d.ts +0 -5
  168. package/dist/redis/redisRulesStorage.d.ts.map +0 -1
  169. package/dist/redis/redisRulesStorage.js.map +0 -1
  170. package/dist/redis/redisRulesWriter.d.ts +0 -22
  171. package/dist/redis/redisRulesWriter.d.ts.map +0 -1
  172. package/dist/redis/redisRulesWriter.js.map +0 -1
  173. package/dist/rule.d.ts +0 -34
  174. package/dist/rule.d.ts.map +0 -1
  175. package/dist/rule.js.map +0 -1
  176. package/dist/ruleInput/.export.d.ts +0 -4
  177. package/dist/ruleInput/.export.d.ts.map +0 -1
  178. package/dist/ruleInput/.export.js.map +0 -1
  179. package/dist/ruleInput/policyInput.d.ts +0 -38
  180. package/dist/ruleInput/policyInput.d.ts.map +0 -1
  181. package/dist/ruleInput/policyInput.js.map +0 -1
  182. package/dist/ruleInput/ruleInput.d.ts +0 -145
  183. package/dist/ruleInput/ruleInput.d.ts.map +0 -1
  184. package/dist/ruleInput/ruleInput.js.map +0 -1
  185. package/dist/ruleInput/userScopeInput.d.ts +0 -93
  186. package/dist/ruleInput/userScopeInput.d.ts.map +0 -1
  187. package/dist/ruleInput/userScopeInput.js.map +0 -1
  188. package/dist/ruleRecord.d.ts +0 -18
  189. package/dist/ruleRecord.d.ts.map +0 -1
  190. package/dist/ruleRecord.js.map +0 -1
  191. package/dist/rulesStorage.d.ts +0 -30
  192. package/dist/rulesStorage.d.ts.map +0 -1
  193. package/dist/rulesStorage.js.map +0 -1
  194. package/dist/tests/accessPolicy.test.d.ts +0 -2
  195. package/dist/tests/accessPolicy.test.d.ts.map +0 -1
  196. package/dist/tests/accessPolicy.test.js +0 -27
  197. package/dist/tests/accessPolicy.test.js.map +0 -1
  198. package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts +0 -2
  199. package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts.map +0 -1
  200. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js +0 -101
  201. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js.map +0 -1
  202. package/dist/tests/redis/redisAccessRules.integration.test.d.ts +0 -2
  203. package/dist/tests/redis/redisAccessRules.integration.test.d.ts.map +0 -1
  204. package/dist/tests/redis/redisAccessRules.integration.test.js +0 -586
  205. package/dist/tests/redis/redisAccessRules.integration.test.js.map +0 -1
  206. package/dist/tests/redis/redisAccessRules.unit.test.d.ts +0 -2
  207. package/dist/tests/redis/redisAccessRules.unit.test.d.ts.map +0 -1
  208. package/dist/tests/redis/redisAccessRules.unit.test.js +0 -198
  209. package/dist/tests/redis/redisAccessRules.unit.test.js.map +0 -1
  210. package/dist/tests/redis/redisIndex.integration.test.d.ts +0 -2
  211. package/dist/tests/redis/redisIndex.integration.test.d.ts.map +0 -1
  212. package/dist/tests/redis/redisIndex.integration.test.js +0 -80
  213. package/dist/tests/redis/redisIndex.integration.test.js.map +0 -1
  214. package/dist/tests/redis/redisRulesIndex.unit.test.d.ts +0 -2
  215. package/dist/tests/redis/redisRulesIndex.unit.test.d.ts.map +0 -1
  216. package/dist/tests/redis/redisRulesIndex.unit.test.js +0 -101
  217. package/dist/tests/redis/redisRulesIndex.unit.test.js.map +0 -1
  218. package/dist/tests/redis/redisRulesStorage.integration.test.d.ts +0 -2
  219. package/dist/tests/redis/redisRulesStorage.integration.test.d.ts.map +0 -1
  220. package/dist/tests/redis/redisRulesStorage.integration.test.js +0 -611
  221. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +0 -1
  222. package/dist/tests/redis/testRedisClient.d.ts +0 -3
  223. package/dist/tests/redis/testRedisClient.d.ts.map +0 -1
  224. package/dist/tests/redis/testRedisClient.js +0 -8
  225. package/dist/tests/redis/testRedisClient.js.map +0 -1
  226. package/dist/tests/testLogger.d.ts +0 -4
  227. package/dist/tests/testLogger.d.ts.map +0 -1
  228. package/dist/tests/testLogger.js +0 -22
  229. package/dist/tests/testLogger.js.map +0 -1
  230. package/dist/tests/transformRule.unit.test.d.ts +0 -2
  231. package/dist/tests/transformRule.unit.test.d.ts.map +0 -1
  232. package/dist/tests/transformRule.unit.test.js +0 -188
  233. package/dist/tests/transformRule.unit.test.js.map +0 -1
  234. package/dist/transformRule.d.ts +0 -7
  235. package/dist/transformRule.d.ts.map +0 -1
  236. package/dist/transformRule.js.map +0 -1
  237. package/dist/util.d.ts +0 -2
  238. package/dist/util.d.ts.map +0 -1
  239. package/dist/util.js +0 -5
  240. package/dist/util.js.map +0 -1
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rulesApiClient.js","sourceRoot":"","sources":["../../src/api/rulesApiClient.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export type { InsertRulesGroup } from "./insertRules.js";
2
- //# sourceMappingURL=.export.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":".export.d.ts","sourceRoot":"","sources":["../../../src/api/write/.export.ts"],"names":[],"mappings":"AAcA,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":".export.js","sourceRoot":"","sources":["../../../src/api/write/.export.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"insertRules.js","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const types = require("@prosopo/types");
4
- const util = require("@prosopo/util");
5
- const ipAddress = require("ip-address");
6
- const zod = require("zod");
7
- const util$1 = require("./util.cjs");
8
- var AccessPolicyType = /* @__PURE__ */ ((AccessPolicyType2) => {
9
- AccessPolicyType2["Block"] = "block";
10
- AccessPolicyType2["Restrict"] = "restrict";
11
- return AccessPolicyType2;
12
- })(AccessPolicyType || {});
13
- const accessPolicySchema = zod.z.object({
14
- type: zod.z.nativeEnum(AccessPolicyType),
15
- captchaType: types.CaptchaTypeSchema.optional(),
16
- description: zod.z.coerce.string().optional(),
17
- // Redis stores values as strings, so coerce is needed to parse properly
18
- solvedImagesCount: zod.z.coerce.number().optional(),
19
- // the percentage of image panels that must be solved per image CAPTCHA
20
- imageThreshold: zod.z.coerce.number().optional(),
21
- // the Proof-of-Work difficulty level
22
- powDifficulty: zod.z.coerce.number().optional(),
23
- // the number of unsolved image CAPTCHA challenges to serve
24
- unsolvedImagesCount: zod.z.coerce.number().optional(),
25
- // used to increase the user's score
26
- frictionlessScore: zod.z.coerce.number().optional()
27
- });
28
- const policyScopeSchema = zod.z.object({
29
- clientId: zod.z.coerce.string().optional(),
30
- ruleGroupId: zod.z.coerce.string().optional()
31
- });
32
- const userScopeSchema = zod.z.object({
33
- // coerce is used for safety, as e.g., incoming userId can be digital
34
- userId: zod.z.coerce.string().optional(),
35
- numericIp: zod.z.coerce.bigint().optional(),
36
- numericIpMaskMin: zod.z.coerce.bigint().optional(),
37
- numericIpMaskMax: zod.z.coerce.bigint().optional(),
38
- ja4Hash: zod.z.coerce.string().optional(),
39
- headersHash: zod.z.coerce.string().optional(),
40
- userAgentHash: zod.z.coerce.string().optional()
41
- });
42
- const userScopeInputSchema = userScopeSchema.extend({
43
- // human-friendly ip versions. If present, then converted to numeric and removed from the object
44
- // 127.0.0.1
45
- ip: zod.z.string().optional(),
46
- // 127.0.0.1/24
47
- ipMask: zod.z.string().optional(),
48
- // human friendly user agent
49
- userAgent: zod.z.string().optional()
50
- }).transform((inputUserScope) => {
51
- const { ip, ipMask, userAgent, ...userScope } = inputUserScope;
52
- if ("string" === typeof ip) {
53
- userScope.numericIp = util.getIPAddress(ip).bigInt();
54
- }
55
- if ("string" === typeof ipMask) {
56
- const ipObject = new ipAddress.Address4(ipMask);
57
- userScope.numericIpMaskMin = ipObject.startAddress().bigInt();
58
- userScope.numericIpMaskMax = ipObject.endAddress().bigInt();
59
- }
60
- if ("string" === typeof userAgent) {
61
- userScope.userAgentHash = util$1.hashUserAgent(userAgent);
62
- }
63
- return userScope;
64
- });
65
- const accessRuleSchemaExtended = zod.z.object({
66
- // flat structure is used to fit the Redis requirements
67
- ...accessPolicySchema.shape,
68
- ...policyScopeSchema.shape,
69
- ...userScopeInputSchema._def.schema.shape
70
- }).omit({
71
- numericIp: true,
72
- numericIpMaskMin: true,
73
- numericIpMaskMax: true
74
- });
75
- exports.AccessPolicyType = AccessPolicyType;
76
- exports.accessPolicySchema = accessPolicySchema;
77
- exports.accessRuleSchemaExtended = accessRuleSchemaExtended;
78
- exports.policyScopeSchema = policyScopeSchema;
79
- exports.userScopeInputSchema = userScopeInputSchema;
80
- exports.userScopeSchema = userScopeSchema;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const zod = require("zod");
4
- const accessPolicy = require("./accessPolicy.cjs");
5
- var ScopeMatch = /* @__PURE__ */ ((ScopeMatch2) => {
6
- ScopeMatch2["Exact"] = "exact";
7
- ScopeMatch2["Greedy"] = "greedy";
8
- return ScopeMatch2;
9
- })(ScopeMatch || {});
10
- const policyFilterSchema = zod.z.object({
11
- policyScope: accessPolicy.policyScopeSchema.optional(),
12
- /**
13
- * Exact: "clientId" => client rules, "undefined" => global rules. Used by the API
14
- * Greedy: "clientId" => client + global rules, "undefined" => any rules. Used by the Express middleware
15
- */
16
- policyScopeMatch: zod.z.nativeEnum(ScopeMatch).default(
17
- "exact"
18
- /* Exact */
19
- ),
20
- userScope: accessPolicy.userScopeInputSchema.optional(),
21
- /**
22
- * Exact: finds rules where all the given fields matches and doesn't check IP against masks. Used by the API
23
- * Greedy: finds rules where any of the given fields match and checks IP against masks. Used by the Express middleware
24
- */
25
- userScopeMatch: zod.z.nativeEnum(ScopeMatch).default(
26
- "exact"
27
- /* Exact */
28
- )
29
- });
30
- exports.ScopeMatch = ScopeMatch;
31
- exports.policyFilterSchema = policyFilterSchema;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const zod = require("zod");
4
- const accessPolicy = require("./accessPolicy.cjs");
5
- const accessRuleSchema = zod.z.object({
6
- // flat structure is used to fit the Redis requirements
7
- ...accessPolicy.accessPolicySchema.shape,
8
- ...accessPolicy.policyScopeSchema.shape,
9
- ...accessPolicy.userScopeSchema.shape
10
- });
11
- exports.accessRuleSchema = accessRuleSchema;
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const deleteAllRulesEndpoint = require("./deleteAllRulesEndpoint.cjs");
4
- const deleteRulesEndpoint = require("./deleteRulesEndpoint.cjs");
5
- const insertRulesEndpoint = require("./insertRulesEndpoint.cjs");
6
- var accessRuleApiPaths = /* @__PURE__ */ ((accessRuleApiPaths2) => {
7
- accessRuleApiPaths2["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
8
- accessRuleApiPaths2["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
9
- accessRuleApiPaths2["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
10
- return accessRuleApiPaths2;
11
- })(accessRuleApiPaths || {});
12
- class AccessRuleApiRoutes {
13
- constructor(accessRulesStorage) {
14
- this.accessRulesStorage = accessRulesStorage;
15
- }
16
- getRoutes() {
17
- return [
18
- {
19
- path: "/v1/prosopo/user-access-policy/rules/insert-many",
20
- endpoint: new insertRulesEndpoint.InsertRulesEndpoint(this.accessRulesStorage)
21
- },
22
- {
23
- path: "/v1/prosopo/user-access-policy/rules/delete-many",
24
- endpoint: new deleteRulesEndpoint.DeleteRulesEndpoint(this.accessRulesStorage)
25
- },
26
- {
27
- path: "/v1/prosopo/user-access-policy/rules/delete-all",
28
- endpoint: new deleteAllRulesEndpoint.DeleteAllRulesEndpoint(this.accessRulesStorage)
29
- }
30
- ];
31
- }
32
- }
33
- const getExpressApiRuleRateLimits = () => {
34
- const defaultWindowsMs = 6e4;
35
- const defaultLimit = 5;
36
- return {
37
- [
38
- "/v1/prosopo/user-access-policy/rules/insert-many"
39
- /* INSERT_MANY */
40
- ]: {
41
- windowMs: getIntEnvironmentVariable(
42
- "PROSOPO_USER_ACCESS_POLICY_RULE_INSERT_MANY_WINDOW"
43
- ) || defaultWindowsMs,
44
- limit: getIntEnvironmentVariable(
45
- "PROSOPO_USER_ACCESS_POLICY_RULE_INSERT_MANY_LIMIT"
46
- ) || defaultLimit
47
- },
48
- [
49
- "/v1/prosopo/user-access-policy/rules/delete-many"
50
- /* DELETE_MANY */
51
- ]: {
52
- windowMs: getIntEnvironmentVariable(
53
- "PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_MANY_WINDOW"
54
- ) || defaultWindowsMs,
55
- limit: getIntEnvironmentVariable(
56
- "PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_MANY_LIMIT"
57
- ) || defaultLimit
58
- },
59
- [
60
- "/v1/prosopo/user-access-policy/rules/delete-all"
61
- /* DELETE_ALL */
62
- ]: {
63
- windowMs: getIntEnvironmentVariable(
64
- "PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_ALL_WINDOW"
65
- ) || defaultWindowsMs,
66
- limit: getIntEnvironmentVariable(
67
- "PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_ALL_LIMIT"
68
- ) || defaultLimit
69
- }
70
- };
71
- };
72
- const getIntEnvironmentVariable = (variableName) => {
73
- const variableValue = process.env[variableName];
74
- const numericValue = variableValue ? Number.parseInt(variableValue) : Number.NaN;
75
- return Number.isInteger(numericValue) ? numericValue : void 0;
76
- };
77
- exports.AccessRuleApiRoutes = AccessRuleApiRoutes;
78
- exports.accessRuleApiPaths = accessRuleApiPaths;
79
- exports.getExpressApiRuleRateLimits = getExpressApiRuleRateLimits;
@@ -1,24 +0,0 @@
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 deleteAllRulesEndpointSchema = zod.z.object({});
6
- class DeleteAllRulesEndpoint {
7
- constructor(accessRulesStorage) {
8
- this.accessRulesStorage = accessRulesStorage;
9
- }
10
- async processRequest(args) {
11
- const deletedCount = await this.accessRulesStorage.deleteAllRules();
12
- return {
13
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
14
- data: {
15
- deleted_count: deletedCount
16
- }
17
- };
18
- }
19
- getRequestArgsSchema() {
20
- return deleteAllRulesEndpointSchema;
21
- }
22
- }
23
- exports.DeleteAllRulesEndpoint = DeleteAllRulesEndpoint;
24
- exports.deleteAllRulesEndpointSchema = deleteAllRulesEndpointSchema;
@@ -1,34 +0,0 @@
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 accessPolicyResolver = require("../accessPolicyResolver.cjs");
6
- const deleteRulesEndpointSchema = zod.z.array(accessPolicyResolver.policyFilterSchema);
7
- class DeleteRulesEndpoint {
8
- constructor(accessRulesStorage) {
9
- this.accessRulesStorage = accessRulesStorage;
10
- }
11
- async processRequest(args) {
12
- const allRuleIds = [];
13
- for (const accessRuleFilter of args) {
14
- const parsedRules = accessPolicyResolver.policyFilterSchema.parse(accessRuleFilter);
15
- const foundRuleIds = await this.accessRulesStorage.findRuleIds(parsedRules);
16
- allRuleIds.push(...foundRuleIds);
17
- }
18
- const uniqueRuleIds = [...new Set(allRuleIds)];
19
- if (uniqueRuleIds.length > 0) {
20
- await this.accessRulesStorage.deleteRules(uniqueRuleIds);
21
- }
22
- return {
23
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
24
- data: {
25
- deleted_count: uniqueRuleIds.length
26
- }
27
- };
28
- }
29
- getRequestArgsSchema() {
30
- return deleteRulesEndpointSchema;
31
- }
32
- }
33
- exports.DeleteRulesEndpoint = DeleteRulesEndpoint;
34
- exports.deleteRulesEndpointSchema = deleteRulesEndpointSchema;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const apiRoute = require("@prosopo/api-route");
4
- const common = require("@prosopo/common");
5
- const zod = require("zod");
6
- const accessPolicy = require("../accessPolicy.cjs");
7
- const insertRulesEndpointSchema = zod.z.object({
8
- accessPolicy: accessPolicy.accessPolicySchema,
9
- policyScope: accessPolicy.policyScopeSchema.optional(),
10
- userScopes: zod.z.array(accessPolicy.userScopeInputSchema),
11
- expirationTimestamp: zod.z.number().optional().transform((val) => val !== void 0 ? Math.floor(val) : val)
12
- });
13
- class InsertRulesEndpoint {
14
- constructor(accessRulesWriter) {
15
- this.accessRulesWriter = accessRulesWriter;
16
- }
17
- async processRequest(args, logger) {
18
- logger = logger || common.getLogger(common.LogLevel.enum.info, "InsertRulesEndpoint");
19
- const timeoutPromise = new Promise((resolve) => {
20
- setTimeout(() => {
21
- resolve({
22
- status: apiRoute.ApiEndpointResponseStatus.PROCESSING
23
- });
24
- }, 5e3);
25
- });
26
- const createRulesPromise = this.createRules(args).then(() => ({
27
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS
28
- })).catch((error) => {
29
- if (logger?.getLogLevel() === common.LogLevel.enum.debug) {
30
- logger.error(() => ({
31
- err: error,
32
- data: { args },
33
- msg: "Failed to insert access rules"
34
- }));
35
- }
36
- return {
37
- status: apiRoute.ApiEndpointResponseStatus.FAIL
38
- };
39
- });
40
- return Promise.race([timeoutPromise, createRulesPromise]);
41
- }
42
- getRequestArgsSchema() {
43
- return insertRulesEndpointSchema;
44
- }
45
- async createRules(args) {
46
- const policyScope = args.policyScope || {};
47
- const createPromises = [];
48
- for (const userScope of args.userScopes) {
49
- const rule = {
50
- ...args.accessPolicy,
51
- ...policyScope,
52
- ...userScope
53
- };
54
- createPromises.push(
55
- this.accessRulesWriter.insertRule(rule, args.expirationTimestamp)
56
- );
57
- }
58
- return Promise.all(createPromises);
59
- }
60
- }
61
- exports.InsertRulesEndpoint = InsertRulesEndpoint;
62
- exports.insertRulesEndpointSchema = insertRulesEndpointSchema;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const accessPolicy = require("./accessPolicy.cjs");
4
- const accessPolicyResolver = require("./accessPolicyResolver.cjs");
5
- const accessRules = require("./accessRules.cjs");
6
- const accessRuleApiRoutes = require("./api/accessRuleApiRoutes.cjs");
7
- const deleteAllRulesEndpoint = require("./api/deleteAllRulesEndpoint.cjs");
8
- const deleteRulesEndpoint = require("./api/deleteRulesEndpoint.cjs");
9
- const insertRulesEndpoint = require("./api/insertRulesEndpoint.cjs");
10
- const redisAccessRules = require("./redis/redisAccessRules.cjs");
11
- const redisAccessRulesIndex = require("./redis/redisAccessRulesIndex.cjs");
12
- const createApiRuleRoutesProvider = (rulesStorage) => {
13
- return new accessRuleApiRoutes.AccessRuleApiRoutes(rulesStorage);
14
- };
15
- exports.AccessPolicyType = accessPolicy.AccessPolicyType;
16
- exports.accessPolicySchema = accessPolicy.accessPolicySchema;
17
- exports.accessRuleSchemaExtended = accessPolicy.accessRuleSchemaExtended;
18
- exports.policyScopeSchema = accessPolicy.policyScopeSchema;
19
- exports.userScopeInputSchema = accessPolicy.userScopeInputSchema;
20
- exports.ScopeMatch = accessPolicyResolver.ScopeMatch;
21
- exports.accessRuleSchema = accessRules.accessRuleSchema;
22
- exports.accessRuleApiPaths = accessRuleApiRoutes.accessRuleApiPaths;
23
- exports.getExpressApiRuleRateLimits = accessRuleApiRoutes.getExpressApiRuleRateLimits;
24
- exports.deleteAllRulesEndpointSchema = deleteAllRulesEndpoint.deleteAllRulesEndpointSchema;
25
- exports.deleteRulesEndpointSchema = deleteRulesEndpoint.deleteRulesEndpointSchema;
26
- exports.insertRulesEndpointSchema = insertRulesEndpoint.insertRulesEndpointSchema;
27
- exports.createRedisAccessRulesStorage = redisAccessRules.createRedisAccessRulesStorage;
28
- exports.createRedisAccessRulesIndex = redisAccessRulesIndex.createRedisAccessRulesIndex;
29
- exports.createApiRuleRoutesProvider = createApiRuleRoutesProvider;
@@ -1,152 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const util = require("node:util");
4
- const accessRules = require("../accessRules.cjs");
5
- const redisAccessRulesIndex = require("./redisAccessRulesIndex.cjs");
6
- function _interopNamespaceDefault(e) {
7
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
- if (e) {
9
- for (const k in e) {
10
- if (k !== "default") {
11
- const d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: () => e[k]
15
- });
16
- }
17
- }
18
- }
19
- n.default = e;
20
- return Object.freeze(n);
21
- }
22
- const util__namespace = /* @__PURE__ */ _interopNamespaceDefault(util);
23
- const createRedisAccessRulesReader = (client, logger) => {
24
- return {
25
- findRules: async (filter, matchingFieldsOnly = false, skipEmptyUserScopes = true) => {
26
- const query = redisAccessRulesIndex.getRedisAccessRulesQuery(filter, matchingFieldsOnly);
27
- if (skipEmptyUserScopes && query === "ismissing(@clientId)") {
28
- return [];
29
- }
30
- let searchReply;
31
- try {
32
- searchReply = await client.ft.search(
33
- redisAccessRulesIndex.accessRulesRedisIndexName,
34
- query,
35
- redisAccessRulesIndex.accessRulesRedisSearchOptions
36
- );
37
- if (searchReply.total > 0) {
38
- logger.debug(() => ({
39
- msg: "Executed search query",
40
- data: {
41
- inspect: util__namespace.inspect(
42
- {
43
- filter,
44
- searchReply,
45
- query
46
- },
47
- { depth: null }
48
- )
49
- }
50
- }));
51
- }
52
- } catch (e) {
53
- logger.error(() => ({
54
- err: e,
55
- data: {
56
- inspect: util__namespace.inspect(
57
- {
58
- query,
59
- filter
60
- },
61
- {
62
- depth: null
63
- }
64
- )
65
- },
66
- msg: "failed to execute search query"
67
- }));
68
- return [];
69
- }
70
- return extractAccessRulesFromSearchReply(searchReply, logger);
71
- },
72
- findRuleIds: async (filter, matchingFieldsOnly = false) => {
73
- const query = redisAccessRulesIndex.getRedisAccessRulesQuery(filter, matchingFieldsOnly);
74
- let searchReply;
75
- try {
76
- searchReply = await client.ft.searchNoContent(
77
- redisAccessRulesIndex.accessRulesRedisIndexName,
78
- query,
79
- redisAccessRulesIndex.accessRulesRedisSearchOptions
80
- );
81
- } catch (e) {
82
- logger.error(() => ({
83
- err: e,
84
- data: {
85
- inspect: util__namespace.inspect(
86
- {
87
- query,
88
- filter
89
- },
90
- {
91
- depth: null
92
- }
93
- )
94
- },
95
- msg: "Failed to execute search query for rule IDs"
96
- }));
97
- return [];
98
- }
99
- return searchReply.documents;
100
- }
101
- };
102
- };
103
- const createRedisAccessRulesWriter = (client) => {
104
- return {
105
- insertRule: async (rule, expirationTimestamp) => {
106
- const ruleKey = redisAccessRulesIndex.getRedisAccessRuleKey(rule);
107
- const ruleValue = redisAccessRulesIndex.getRedisAccessRuleValue(rule);
108
- await client.hSet(ruleKey, ruleValue);
109
- if (expirationTimestamp) {
110
- const expiryDate = new Date(expirationTimestamp);
111
- if (expiryDate.getUTCFullYear() === 1970) {
112
- await client.expireAt(ruleKey, expirationTimestamp);
113
- } else {
114
- const timestampInSeconds = Math.floor(expirationTimestamp / 1e3);
115
- await client.expireAt(ruleKey, timestampInSeconds);
116
- }
117
- }
118
- return ruleKey;
119
- },
120
- deleteRules: async (ruleIds) => void await client.del(ruleIds),
121
- deleteAllRules: async () => {
122
- const keys = await client.keys(`${redisAccessRulesIndex.accessRuleRedisKeyPrefix}*`);
123
- if (keys.length === 0) return 0;
124
- return await client.del(keys);
125
- }
126
- };
127
- };
128
- const createRedisAccessRulesStorage = (client, logger) => {
129
- return {
130
- ...createRedisAccessRulesReader(client, logger),
131
- ...createRedisAccessRulesWriter(client)
132
- };
133
- };
134
- const extractAccessRulesFromSearchReply = (searchReply, logger) => {
135
- const accessRules$1 = [];
136
- searchReply.documents.map(({ id, value: document }) => {
137
- const parsedDocument = accessRules.accessRuleSchema.safeParse(document);
138
- if (parsedDocument.success) {
139
- accessRules$1.push(parsedDocument.data);
140
- } else {
141
- logger.debug(() => ({
142
- msg: "Failed to parse access rule from search reply",
143
- id,
144
- error: parsedDocument.error
145
- }));
146
- }
147
- });
148
- return accessRules$1;
149
- };
150
- exports.createRedisAccessRulesReader = createRedisAccessRulesReader;
151
- exports.createRedisAccessRulesStorage = createRedisAccessRulesStorage;
152
- exports.createRedisAccessRulesWriter = createRedisAccessRulesWriter;