@prosopo/user-access-policy 2.6.4 → 3.1.5

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 (371) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/dist/accessPolicy.d.ts +169 -0
  3. package/dist/accessPolicy.d.ts.map +1 -0
  4. package/dist/accessPolicy.js +65 -0
  5. package/dist/accessPolicy.js.map +1 -0
  6. package/dist/accessPolicyResolver.d.ts +115 -0
  7. package/dist/accessPolicyResolver.d.ts.map +1 -0
  8. package/dist/accessPolicyResolver.js +44 -0
  9. package/dist/accessPolicyResolver.js.map +1 -0
  10. package/dist/accessRules.d.ts +16 -0
  11. package/dist/accessRules.d.ts.map +1 -0
  12. package/dist/accessRules.js +8 -0
  13. package/dist/accessRules.js.map +1 -0
  14. package/dist/api/accessRuleApiRoutes.d.ts +27 -0
  15. package/dist/api/accessRuleApiRoutes.d.ts.map +1 -0
  16. package/dist/api/accessRuleApiRoutes.js +56 -0
  17. package/dist/api/accessRuleApiRoutes.js.map +1 -0
  18. package/dist/api/deleteAllRulesEndpoint.d.ts +12 -0
  19. package/dist/api/deleteAllRulesEndpoint.d.ts.map +1 -0
  20. package/dist/api/deleteAllRulesEndpoint.js +21 -0
  21. package/dist/api/deleteAllRulesEndpoint.js.map +1 -0
  22. package/dist/api/deleteRulesEndpoint.d.ts +116 -0
  23. package/dist/api/deleteRulesEndpoint.d.ts.map +1 -0
  24. package/dist/api/deleteRulesEndpoint.js +31 -0
  25. package/dist/api/deleteRulesEndpoint.js.map +1 -0
  26. package/dist/api/insertRulesEndpoint.d.ts +22 -0
  27. package/dist/api/insertRulesEndpoint.d.ts.map +1 -0
  28. package/dist/api/insertRulesEndpoint.js +62 -0
  29. package/dist/api/insertRulesEndpoint.js.map +1 -0
  30. package/dist/cjs/accessPolicy.cjs +79 -0
  31. package/dist/cjs/accessPolicyResolver.cjs +87 -0
  32. package/dist/cjs/accessRules.cjs +11 -0
  33. package/dist/cjs/api/accessRuleApiRoutes.cjs +79 -0
  34. package/dist/cjs/api/deleteAllRulesEndpoint.cjs +24 -0
  35. package/dist/cjs/api/deleteRulesEndpoint.cjs +34 -0
  36. package/dist/cjs/api/insertRulesEndpoint.cjs +65 -0
  37. package/dist/cjs/index.cjs +22 -23
  38. package/dist/cjs/redis/redisAccessRules.cjs +140 -0
  39. package/dist/cjs/redis/redisAccessRulesIndex.cjs +103 -0
  40. package/dist/cjs/redis/redisIndex.cjs +22 -0
  41. package/dist/cjs/util.cjs +5 -0
  42. package/dist/index.d.ts +13 -15
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +14 -20
  45. package/dist/index.js.map +1 -1
  46. package/dist/redis/redisAccessRules.d.ts +7 -0
  47. package/dist/redis/redisAccessRules.d.ts.map +1 -0
  48. package/dist/redis/redisAccessRules.js +105 -0
  49. package/dist/redis/redisAccessRules.js.map +1 -0
  50. package/dist/redis/redisAccessRulesIndex.d.ts +12 -0
  51. package/dist/redis/redisAccessRulesIndex.d.ts.map +1 -0
  52. package/dist/redis/redisAccessRulesIndex.js +81 -0
  53. package/dist/redis/redisAccessRulesIndex.js.map +1 -0
  54. package/dist/redis/redisIndex.d.ts +9 -0
  55. package/dist/redis/redisIndex.d.ts.map +1 -0
  56. package/dist/redis/redisIndex.js +23 -0
  57. package/dist/redis/redisIndex.js.map +1 -0
  58. package/dist/tests/accessPolicy.test.d.ts +2 -0
  59. package/dist/tests/accessPolicy.test.d.ts.map +1 -0
  60. package/dist/tests/accessPolicy.test.js +27 -0
  61. package/dist/tests/accessPolicy.test.js.map +1 -0
  62. package/dist/tests/redis/redisAccessRules.test.d.ts +2 -0
  63. package/dist/tests/redis/redisAccessRules.test.d.ts.map +1 -0
  64. package/dist/tests/redis/redisAccessRules.test.js +398 -0
  65. package/dist/tests/redis/redisAccessRules.test.js.map +1 -0
  66. package/dist/tests/redis/redisIndex.test.d.ts +2 -0
  67. package/dist/tests/redis/redisIndex.test.d.ts.map +1 -0
  68. package/dist/tests/redis/redisIndex.test.js +84 -0
  69. package/dist/tests/redis/redisIndex.test.js.map +1 -0
  70. package/dist/tests/redis/testRedisClient.d.ts +3 -0
  71. package/dist/tests/redis/testRedisClient.d.ts.map +1 -0
  72. package/dist/tests/redis/testRedisClient.js +8 -0
  73. package/dist/tests/redis/testRedisClient.js.map +1 -0
  74. package/dist/tests/testLogger.d.ts +4 -0
  75. package/dist/tests/testLogger.d.ts.map +1 -0
  76. package/dist/tests/testLogger.js +22 -0
  77. package/dist/tests/testLogger.js.map +1 -0
  78. package/dist/util.d.ts +2 -0
  79. package/dist/util.d.ts.map +1 -0
  80. package/dist/util.js +3 -0
  81. package/dist/util.js.map +1 -0
  82. package/package.json +16 -14
  83. package/vite.cjs.config.ts +4 -6
  84. package/vite.config.ts +39 -0
  85. package/vite.test.config.ts +2 -1
  86. package/dist/blacklistInspector.d.ts +0 -6
  87. package/dist/blacklistInspector.d.ts.map +0 -1
  88. package/dist/blacklistInspector.js +0 -2
  89. package/dist/blacklistInspector.js.map +0 -1
  90. package/dist/cjs/rules/api/apiRulePaths.cjs +0 -7
  91. package/dist/cjs/rules/api/apiRuleRoutesProvider.cjs +0 -23
  92. package/dist/cjs/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.cjs +0 -13
  93. package/dist/cjs/rules/api/deleteMany/apiDeleteManyRulesEndpoint.cjs +0 -19
  94. package/dist/cjs/rules/api/getExpressApiRuleRateLimits.cjs +0 -18
  95. package/dist/cjs/rules/api/insertMany/apiInsertManyRulesArgsSchema.cjs +0 -39
  96. package/dist/cjs/rules/api/insertMany/apiInsertManyRulesEndpoint.cjs +0 -193
  97. package/dist/cjs/rules/blacklistRulesInspector.cjs +0 -44
  98. package/dist/cjs/rules/imageCaptchaConfigRulesResolver.cjs +0 -115
  99. package/dist/cjs/rules/mongoose/indexes/rulePerformanceMongooseIndexes.cjs +0 -75
  100. package/dist/cjs/rules/mongoose/indexes/ruleUniqueMongooseIndexes.cjs +0 -137
  101. package/dist/cjs/rules/mongoose/rulesMongooseStorage.cjs +0 -177
  102. package/dist/cjs/rules/mongoose/schemas/config/configMongooseSchema.cjs +0 -14
  103. package/dist/cjs/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.cjs +0 -17
  104. package/dist/cjs/rules/mongoose/schemas/getRuleMongooseSchema.cjs +0 -19
  105. package/dist/cjs/rules/mongoose/schemas/ip/ipMongooseSchema.cjs +0 -29
  106. package/dist/cjs/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.cjs +0 -14
  107. package/dist/cjs/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.cjs +0 -18
  108. package/dist/cjs/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.cjs +0 -34
  109. package/dist/cjs/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.cjs +0 -33
  110. package/dist/cjs/rules/mongoose/schemas/ruleMongooseSchema.cjs +0 -43
  111. package/dist/cjs/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.cjs +0 -8
  112. package/dist/cjs/rules/rule/config/ruleConfigSchema.cjs +0 -8
  113. package/dist/cjs/rules/rule/ip/ruleIpSchema.cjs +0 -10
  114. package/dist/cjs/rules/rule/ip/ruleIpVersion.cjs +0 -8
  115. package/dist/cjs/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.cjs +0 -9
  116. package/dist/cjs/rules/rule/ip/v4/ruleIpV4Schema.cjs +0 -10
  117. package/dist/cjs/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.cjs +0 -9
  118. package/dist/cjs/rules/rule/ip/v6/ruleIpV6NumericMaxLength.cjs +0 -4
  119. package/dist/cjs/rules/rule/ip/v6/ruleIpV6Schema.cjs +0 -10
  120. package/dist/imageCaptchaConfigResolver.d.ts +0 -7
  121. package/dist/imageCaptchaConfigResolver.d.ts.map +0 -1
  122. package/dist/imageCaptchaConfigResolver.js +0 -2
  123. package/dist/imageCaptchaConfigResolver.js.map +0 -1
  124. package/dist/rules/api/apiRulePaths.d.ts +0 -5
  125. package/dist/rules/api/apiRulePaths.d.ts.map +0 -1
  126. package/dist/rules/api/apiRulePaths.js +0 -5
  127. package/dist/rules/api/apiRulePaths.js.map +0 -1
  128. package/dist/rules/api/apiRuleRoutesProvider.d.ts +0 -9
  129. package/dist/rules/api/apiRuleRoutesProvider.d.ts.map +0 -1
  130. package/dist/rules/api/apiRuleRoutesProvider.js +0 -22
  131. package/dist/rules/api/apiRuleRoutesProvider.js.map +0 -1
  132. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts +0 -162
  133. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts.map +0 -1
  134. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js +0 -10
  135. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js.map +0 -1
  136. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts +0 -12
  137. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts.map +0 -1
  138. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js +0 -18
  139. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js.map +0 -1
  140. package/dist/rules/api/getExpressApiRuleRateLimits.d.ts +0 -8
  141. package/dist/rules/api/getExpressApiRuleRateLimits.d.ts.map +0 -1
  142. package/dist/rules/api/getExpressApiRuleRateLimits.js +0 -21
  143. package/dist/rules/api/getExpressApiRuleRateLimits.js.map +0 -1
  144. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts +0 -163
  145. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts.map +0 -1
  146. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js +0 -37
  147. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js.map +0 -1
  148. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts +0 -18
  149. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts.map +0 -1
  150. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js +0 -195
  151. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js.map +0 -1
  152. package/dist/rules/blacklistRulesInspector.d.ts +0 -12
  153. package/dist/rules/blacklistRulesInspector.d.ts.map +0 -1
  154. package/dist/rules/blacklistRulesInspector.js +0 -38
  155. package/dist/rules/blacklistRulesInspector.js.map +0 -1
  156. package/dist/rules/imageCaptchaConfigRulesResolver.d.ts +0 -21
  157. package/dist/rules/imageCaptchaConfigRulesResolver.d.ts.map +0 -1
  158. package/dist/rules/imageCaptchaConfigRulesResolver.js +0 -92
  159. package/dist/rules/imageCaptchaConfigRulesResolver.js.map +0 -1
  160. package/dist/rules/mongoose/indexes/mongooseIndex.d.ts +0 -7
  161. package/dist/rules/mongoose/indexes/mongooseIndex.d.ts.map +0 -1
  162. package/dist/rules/mongoose/indexes/mongooseIndex.js +0 -2
  163. package/dist/rules/mongoose/indexes/mongooseIndex.js.map +0 -1
  164. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts +0 -4
  165. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts.map +0 -1
  166. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js +0 -74
  167. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js.map +0 -1
  168. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts +0 -4
  169. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts.map +0 -1
  170. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js +0 -136
  171. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js.map +0 -1
  172. package/dist/rules/mongoose/ruleMongooseRecord.d.ts +0 -7
  173. package/dist/rules/mongoose/ruleMongooseRecord.d.ts.map +0 -1
  174. package/dist/rules/mongoose/ruleMongooseRecord.js +0 -2
  175. package/dist/rules/mongoose/ruleMongooseRecord.js.map +0 -1
  176. package/dist/rules/mongoose/rulesMongooseStorage.d.ts +0 -30
  177. package/dist/rules/mongoose/rulesMongooseStorage.d.ts.map +0 -1
  178. package/dist/rules/mongoose/rulesMongooseStorage.js +0 -177
  179. package/dist/rules/mongoose/rulesMongooseStorage.js.map +0 -1
  180. package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts +0 -43
  181. package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts.map +0 -1
  182. package/dist/rules/mongoose/schemas/config/configMongooseSchema.js +0 -10
  183. package/dist/rules/mongoose/schemas/config/configMongooseSchema.js.map +0 -1
  184. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts +0 -29
  185. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts.map +0 -1
  186. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js +0 -13
  187. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js.map +0 -1
  188. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts +0 -5
  189. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts.map +0 -1
  190. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js +0 -15
  191. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js.map +0 -1
  192. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts +0 -141
  193. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts.map +0 -1
  194. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js +0 -25
  195. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js.map +0 -1
  196. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts +0 -36
  197. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts.map +0 -1
  198. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js +0 -8
  199. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js.map +0 -1
  200. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts +0 -64
  201. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts.map +0 -1
  202. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js +0 -12
  203. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js.map +0 -1
  204. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts +0 -36
  205. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts.map +0 -1
  206. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js +0 -17
  207. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js.map +0 -1
  208. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts +0 -64
  209. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts.map +0 -1
  210. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js +0 -17
  211. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js.map +0 -1
  212. package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts +0 -9
  213. package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts.map +0 -1
  214. package/dist/rules/mongoose/schemas/ruleMongooseSchema.js +0 -42
  215. package/dist/rules/mongoose/schemas/ruleMongooseSchema.js.map +0 -1
  216. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts +0 -5
  217. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts.map +0 -1
  218. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js +0 -2
  219. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js.map +0 -1
  220. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts +0 -12
  221. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts.map +0 -1
  222. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js +0 -7
  223. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js.map +0 -1
  224. package/dist/rules/rule/config/ruleConfig.d.ts +0 -5
  225. package/dist/rules/rule/config/ruleConfig.d.ts.map +0 -1
  226. package/dist/rules/rule/config/ruleConfig.js +0 -2
  227. package/dist/rules/rule/config/ruleConfig.js.map +0 -1
  228. package/dist/rules/rule/config/ruleConfigSchema.d.ts +0 -24
  229. package/dist/rules/rule/config/ruleConfigSchema.d.ts.map +0 -1
  230. package/dist/rules/rule/config/ruleConfigSchema.js +0 -7
  231. package/dist/rules/rule/config/ruleConfigSchema.js.map +0 -1
  232. package/dist/rules/rule/ip/ruleIp.d.ts +0 -5
  233. package/dist/rules/rule/ip/ruleIp.d.ts.map +0 -1
  234. package/dist/rules/rule/ip/ruleIp.js +0 -2
  235. package/dist/rules/rule/ip/ruleIp.js.map +0 -1
  236. package/dist/rules/rule/ip/ruleIpSchema.d.ts +0 -108
  237. package/dist/rules/rule/ip/ruleIpSchema.d.ts.map +0 -1
  238. package/dist/rules/rule/ip/ruleIpSchema.js +0 -9
  239. package/dist/rules/rule/ip/ruleIpSchema.js.map +0 -1
  240. package/dist/rules/rule/ip/ruleIpVersion.d.ts +0 -6
  241. package/dist/rules/rule/ip/ruleIpVersion.d.ts.map +0 -1
  242. package/dist/rules/rule/ip/ruleIpVersion.js +0 -7
  243. package/dist/rules/rule/ip/ruleIpVersion.js.map +0 -1
  244. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts +0 -5
  245. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts.map +0 -1
  246. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js +0 -2
  247. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js.map +0 -1
  248. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts +0 -15
  249. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts.map +0 -1
  250. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js +0 -8
  251. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js.map +0 -1
  252. package/dist/rules/rule/ip/v4/ruleIpV4.d.ts +0 -5
  253. package/dist/rules/rule/ip/v4/ruleIpV4.d.ts.map +0 -1
  254. package/dist/rules/rule/ip/v4/ruleIpV4.js +0 -2
  255. package/dist/rules/rule/ip/v4/ruleIpV4.js.map +0 -1
  256. package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts +0 -35
  257. package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts.map +0 -1
  258. package/dist/rules/rule/ip/v4/ruleIpV4Schema.js +0 -9
  259. package/dist/rules/rule/ip/v4/ruleIpV4Schema.js.map +0 -1
  260. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts +0 -5
  261. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts.map +0 -1
  262. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js +0 -2
  263. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js.map +0 -1
  264. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts +0 -15
  265. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts.map +0 -1
  266. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js +0 -8
  267. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js.map +0 -1
  268. package/dist/rules/rule/ip/v6/ruleIpV6.d.ts +0 -5
  269. package/dist/rules/rule/ip/v6/ruleIpV6.d.ts.map +0 -1
  270. package/dist/rules/rule/ip/v6/ruleIpV6.js +0 -2
  271. package/dist/rules/rule/ip/v6/ruleIpV6.js.map +0 -1
  272. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts +0 -3
  273. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts.map +0 -1
  274. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js +0 -3
  275. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js.map +0 -1
  276. package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts +0 -35
  277. package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts.map +0 -1
  278. package/dist/rules/rule/ip/v6/ruleIpV6Schema.js +0 -9
  279. package/dist/rules/rule/ip/v6/ruleIpV6Schema.js.map +0 -1
  280. package/dist/rules/rule/rule.d.ts +0 -14
  281. package/dist/rules/rule/rule.d.ts.map +0 -1
  282. package/dist/rules/rule/rule.js +0 -2
  283. package/dist/rules/rule/rule.js.map +0 -1
  284. package/dist/rules/storage/filters/deleteRuleFilters.d.ts +0 -9
  285. package/dist/rules/storage/filters/deleteRuleFilters.d.ts.map +0 -1
  286. package/dist/rules/storage/filters/deleteRuleFilters.js +0 -2
  287. package/dist/rules/storage/filters/deleteRuleFilters.js.map +0 -1
  288. package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts +0 -6
  289. package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts.map +0 -1
  290. package/dist/rules/storage/filters/search/searchRuleFilterSettings.js +0 -2
  291. package/dist/rules/storage/filters/search/searchRuleFilterSettings.js.map +0 -1
  292. package/dist/rules/storage/filters/search/searchRuleFilters.d.ts +0 -9
  293. package/dist/rules/storage/filters/search/searchRuleFilters.d.ts.map +0 -1
  294. package/dist/rules/storage/filters/search/searchRuleFilters.js +0 -2
  295. package/dist/rules/storage/filters/search/searchRuleFilters.js.map +0 -1
  296. package/dist/rules/storage/ruleRecord.d.ts +0 -6
  297. package/dist/rules/storage/ruleRecord.d.ts.map +0 -1
  298. package/dist/rules/storage/ruleRecord.js +0 -2
  299. package/dist/rules/storage/ruleRecord.js.map +0 -1
  300. package/dist/rules/storage/rulesStorage.d.ts +0 -14
  301. package/dist/rules/storage/rulesStorage.d.ts.map +0 -1
  302. package/dist/rules/storage/rulesStorage.js +0 -2
  303. package/dist/rules/storage/rulesStorage.js.map +0 -1
  304. package/dist/tests/benchmark/commands/commandBase.d.ts +0 -14
  305. package/dist/tests/benchmark/commands/commandBase.d.ts.map +0 -1
  306. package/dist/tests/benchmark/commands/commandBase.js +0 -22
  307. package/dist/tests/benchmark/commands/commandBase.js.map +0 -1
  308. package/dist/tests/benchmark/commands/measureFindCommand.d.ts +0 -14
  309. package/dist/tests/benchmark/commands/measureFindCommand.d.ts.map +0 -1
  310. package/dist/tests/benchmark/commands/measureFindCommand.js +0 -60
  311. package/dist/tests/benchmark/commands/measureFindCommand.js.map +0 -1
  312. package/dist/tests/benchmark/commands/populateCommand.d.ts +0 -18
  313. package/dist/tests/benchmark/commands/populateCommand.d.ts.map +0 -1
  314. package/dist/tests/benchmark/commands/populateCommand.js +0 -97
  315. package/dist/tests/benchmark/commands/populateCommand.js.map +0 -1
  316. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts +0 -5
  317. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts.map +0 -1
  318. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js +0 -2
  319. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js.map +0 -1
  320. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts +0 -6
  321. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts.map +0 -1
  322. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js +0 -8
  323. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js.map +0 -1
  324. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts +0 -2
  325. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts.map +0 -1
  326. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js +0 -8
  327. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js.map +0 -1
  328. package/dist/tests/benchmark/rulesStorageBenchmark.d.ts +0 -12
  329. package/dist/tests/benchmark/rulesStorageBenchmark.d.ts.map +0 -1
  330. package/dist/tests/benchmark/rulesStorageBenchmark.js +0 -30
  331. package/dist/tests/benchmark/rulesStorageBenchmark.js.map +0 -1
  332. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts +0 -10
  333. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts.map +0 -1
  334. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js +0 -16
  335. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js.map +0 -1
  336. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts +0 -6
  337. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts.map +0 -1
  338. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js +0 -2
  339. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js.map +0 -1
  340. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts +0 -2
  341. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts.map +0 -1
  342. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js +0 -75
  343. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js.map +0 -1
  344. package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts +0 -2
  345. package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts.map +0 -1
  346. package/dist/tests/rules/blacklistRulesInspector.unit.test.js +0 -58
  347. package/dist/tests/rules/blacklistRulesInspector.unit.test.js.map +0 -1
  348. package/dist/tests/rules/loggerMockedInstance.d.ts +0 -13
  349. package/dist/tests/rules/loggerMockedInstance.d.ts.map +0 -1
  350. package/dist/tests/rules/loggerMockedInstance.js +0 -14
  351. package/dist/tests/rules/loggerMockedInstance.js.map +0 -1
  352. package/dist/tests/rules/mongoose/find.unit.test.d.ts +0 -2
  353. package/dist/tests/rules/mongoose/find.unit.test.d.ts.map +0 -1
  354. package/dist/tests/rules/mongoose/find.unit.test.js +0 -202
  355. package/dist/tests/rules/mongoose/find.unit.test.js.map +0 -1
  356. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts +0 -2
  357. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts.map +0 -1
  358. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js +0 -131
  359. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js.map +0 -1
  360. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts +0 -2
  361. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts.map +0 -1
  362. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js +0 -101
  363. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js.map +0 -1
  364. package/dist/tests/rules/mongoose/ip.unit.test.d.ts +0 -2
  365. package/dist/tests/rules/mongoose/ip.unit.test.d.ts.map +0 -1
  366. package/dist/tests/rules/mongoose/ip.unit.test.js +0 -380
  367. package/dist/tests/rules/mongoose/ip.unit.test.js.map +0 -1
  368. package/dist/tests/rules/storage/testRulesStorage.d.ts +0 -17
  369. package/dist/tests/rules/storage/testRulesStorage.d.ts.map +0 -1
  370. package/dist/tests/rules/storage/testRulesStorage.js +0 -25
  371. package/dist/tests/rules/storage/testRulesStorage.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,85 @@
1
1
  # @prosopo/user-access-policy
2
2
 
3
+ ## 3.1.5
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies [b0d7207]
7
+ - @prosopo/types@3.0.3
8
+
9
+ ## 3.1.4
10
+ ### Patch Changes
11
+
12
+ - @prosopo/util@3.0.2
13
+
14
+ ## 3.1.3
15
+ ### Patch Changes
16
+
17
+ - @prosopo/util@3.0.1
18
+
19
+ ## 3.1.2
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [f682f0c]
23
+ - @prosopo/types@3.0.2
24
+ - @prosopo/common@3.0.2
25
+ - @prosopo/api-route@2.6.7
26
+
27
+ ## 3.1.1
28
+ ### Patch Changes
29
+
30
+ - @prosopo/common@3.0.1
31
+ - @prosopo/types@3.0.1
32
+ - @prosopo/api-route@2.6.6
33
+
34
+ ## 3.1.0
35
+ ### Minor Changes
36
+
37
+ - 913f2a6: Make custom expiration times work in redis. Make redis internal only and persist data
38
+
39
+ ## 3.0.0
40
+ ### Major Changes
41
+
42
+ - 64b5bcd: Access Controls
43
+
44
+ ### Patch Changes
45
+
46
+ - Updated dependencies [64b5bcd]
47
+ - @prosopo/common@3.0.0
48
+ - @prosopo/types@3.0.0
49
+ - @prosopo/util@3.0.0
50
+ - @prosopo/api-route@2.6.5
51
+
52
+ ## 2.6.8
53
+ ### Patch Changes
54
+
55
+ - Updated dependencies [aee3efe]
56
+ - @prosopo/types@2.10.0
57
+
58
+ ## 2.6.7
59
+ ### Patch Changes
60
+
61
+ - 86c22b8: structured logging
62
+ - Updated dependencies [86c22b8]
63
+ - @prosopo/api-route@2.6.4
64
+ - @prosopo/common@2.7.2
65
+ - @prosopo/types@2.9.1
66
+
67
+ ## 2.6.6
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [30bb383]
71
+ - @prosopo/types@2.9.0
72
+ - @prosopo/common@2.7.1
73
+ - @prosopo/api-route@2.6.3
74
+
75
+ ## 2.6.5
76
+ ### Patch Changes
77
+
78
+ - Updated dependencies [8f0644a]
79
+ - @prosopo/common@2.7.0
80
+ - @prosopo/types@2.8.0
81
+ - @prosopo/api-route@2.6.2
82
+
3
83
  ## 2.6.4
4
84
 
5
85
  ### Patch Changes
@@ -0,0 +1,169 @@
1
+ import { type ZodRawShape, z } from "zod";
2
+ export declare enum AccessPolicyType {
3
+ Block = "block",
4
+ Restrict = "restrict"
5
+ }
6
+ export declare const accessPolicySchema: z.ZodObject<{
7
+ type: ZodRawShape["type"];
8
+ captchaType: ZodRawShape["captchaType"];
9
+ description: ZodRawShape["description"];
10
+ solvedImagesCount: ZodRawShape["solvedImagesCount"];
11
+ imageThreshold: ZodRawShape["imageThreshold"];
12
+ powDifficulty: ZodRawShape["powDifficulty"];
13
+ unsolvedImagesCount: ZodRawShape["unsolvedImagesCount"];
14
+ frictionlessScore: ZodRawShape["frictionlessScore"];
15
+ }>;
16
+ export declare const policyScopeSchema: z.ZodObject<{
17
+ clientId: z.ZodOptional<z.ZodString>;
18
+ ruleGroupId: z.ZodOptional<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ clientId?: string | undefined;
21
+ ruleGroupId?: string | undefined;
22
+ }, {
23
+ clientId?: string | undefined;
24
+ ruleGroupId?: string | undefined;
25
+ }>;
26
+ export declare const userScopeSchema: z.ZodObject<{
27
+ userId: z.ZodOptional<z.ZodString>;
28
+ numericIp: z.ZodOptional<z.ZodBigInt>;
29
+ numericIpMaskMin: z.ZodOptional<z.ZodBigInt>;
30
+ numericIpMaskMax: z.ZodOptional<z.ZodBigInt>;
31
+ ja4Hash: z.ZodOptional<z.ZodString>;
32
+ headersHash: z.ZodOptional<z.ZodString>;
33
+ userAgentHash: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ userId?: string | undefined;
36
+ numericIp?: bigint | undefined;
37
+ numericIpMaskMin?: bigint | undefined;
38
+ numericIpMaskMax?: bigint | undefined;
39
+ ja4Hash?: string | undefined;
40
+ headersHash?: string | undefined;
41
+ userAgentHash?: string | undefined;
42
+ }, {
43
+ userId?: string | undefined;
44
+ numericIp?: bigint | undefined;
45
+ numericIpMaskMin?: bigint | undefined;
46
+ numericIpMaskMax?: bigint | undefined;
47
+ ja4Hash?: string | undefined;
48
+ headersHash?: string | undefined;
49
+ userAgentHash?: string | undefined;
50
+ }>;
51
+ export declare const userScopeInputSchema: z.ZodEffects<z.ZodObject<z.objectUtil.extendShape<{
52
+ userId: z.ZodOptional<z.ZodString>;
53
+ numericIp: z.ZodOptional<z.ZodBigInt>;
54
+ numericIpMaskMin: z.ZodOptional<z.ZodBigInt>;
55
+ numericIpMaskMax: z.ZodOptional<z.ZodBigInt>;
56
+ ja4Hash: z.ZodOptional<z.ZodString>;
57
+ headersHash: z.ZodOptional<z.ZodString>;
58
+ userAgentHash: z.ZodOptional<z.ZodString>;
59
+ }, {
60
+ ip: z.ZodOptional<z.ZodString>;
61
+ ipMask: z.ZodOptional<z.ZodString>;
62
+ userAgent: z.ZodOptional<z.ZodString>;
63
+ }>, "strip", z.ZodTypeAny, {
64
+ userId?: string | undefined;
65
+ numericIp?: bigint | undefined;
66
+ numericIpMaskMin?: bigint | undefined;
67
+ numericIpMaskMax?: bigint | undefined;
68
+ ja4Hash?: string | undefined;
69
+ headersHash?: string | undefined;
70
+ userAgentHash?: string | undefined;
71
+ ip?: string | undefined;
72
+ ipMask?: string | undefined;
73
+ userAgent?: string | undefined;
74
+ }, {
75
+ userId?: string | undefined;
76
+ numericIp?: bigint | undefined;
77
+ numericIpMaskMin?: bigint | undefined;
78
+ numericIpMaskMax?: bigint | undefined;
79
+ ja4Hash?: string | undefined;
80
+ headersHash?: string | undefined;
81
+ userAgentHash?: string | undefined;
82
+ ip?: string | undefined;
83
+ ipMask?: string | undefined;
84
+ userAgent?: string | undefined;
85
+ }>, {
86
+ userId?: string | undefined;
87
+ numericIp?: bigint | undefined;
88
+ numericIpMaskMin?: bigint | undefined;
89
+ numericIpMaskMax?: bigint | undefined;
90
+ ja4Hash?: string | undefined;
91
+ headersHash?: string | undefined;
92
+ userAgentHash?: string | undefined;
93
+ }, {
94
+ userId?: string | undefined;
95
+ numericIp?: bigint | undefined;
96
+ numericIpMaskMin?: bigint | undefined;
97
+ numericIpMaskMax?: bigint | undefined;
98
+ ja4Hash?: string | undefined;
99
+ headersHash?: string | undefined;
100
+ userAgentHash?: string | undefined;
101
+ ip?: string | undefined;
102
+ ipMask?: string | undefined;
103
+ userAgent?: string | undefined;
104
+ }>;
105
+ export type AccessPolicy = z.output<typeof accessPolicySchema>;
106
+ export type PolicyScope = z.output<typeof policyScopeSchema>;
107
+ export type UserScope = z.output<typeof userScopeSchema>;
108
+ export type UserScopeApiInput = z.input<typeof userScopeInputSchema>;
109
+ export type UserScopeApiOutput = z.output<typeof userScopeInputSchema>;
110
+ export declare const accessRuleSchemaExtended: z.ZodObject<Omit<{
111
+ userId: z.ZodOptional<z.ZodString>;
112
+ numericIp: z.ZodOptional<z.ZodBigInt>;
113
+ numericIpMaskMin: z.ZodOptional<z.ZodBigInt>;
114
+ numericIpMaskMax: z.ZodOptional<z.ZodBigInt>;
115
+ ja4Hash: z.ZodOptional<z.ZodString>;
116
+ headersHash: z.ZodOptional<z.ZodString>;
117
+ userAgentHash: z.ZodOptional<z.ZodString>;
118
+ ip: z.ZodOptional<z.ZodString>;
119
+ ipMask: z.ZodOptional<z.ZodString>;
120
+ userAgent: z.ZodOptional<z.ZodString>;
121
+ clientId: z.ZodOptional<z.ZodString>;
122
+ ruleGroupId: z.ZodOptional<z.ZodString>;
123
+ type: ZodRawShape["type"];
124
+ captchaType: ZodRawShape["captchaType"];
125
+ description: ZodRawShape["description"];
126
+ solvedImagesCount: ZodRawShape["solvedImagesCount"];
127
+ imageThreshold: ZodRawShape["imageThreshold"];
128
+ powDifficulty: ZodRawShape["powDifficulty"];
129
+ unsolvedImagesCount: ZodRawShape["unsolvedImagesCount"];
130
+ frictionlessScore: ZodRawShape["frictionlessScore"];
131
+ }, "numericIp" | "numericIpMaskMin" | "numericIpMaskMax">, "strip", z.ZodTypeAny, {
132
+ type?: any;
133
+ captchaType?: any;
134
+ description?: any;
135
+ solvedImagesCount?: any;
136
+ imageThreshold?: any;
137
+ powDifficulty?: any;
138
+ unsolvedImagesCount?: any;
139
+ frictionlessScore?: any;
140
+ clientId?: string | undefined;
141
+ ruleGroupId?: string | undefined;
142
+ userId?: string | undefined;
143
+ ja4Hash?: string | undefined;
144
+ headersHash?: string | undefined;
145
+ userAgentHash?: string | undefined;
146
+ ip?: string | undefined;
147
+ ipMask?: string | undefined;
148
+ userAgent?: string | undefined;
149
+ }, {
150
+ type?: any;
151
+ captchaType?: any;
152
+ description?: any;
153
+ solvedImagesCount?: any;
154
+ imageThreshold?: any;
155
+ powDifficulty?: any;
156
+ unsolvedImagesCount?: any;
157
+ frictionlessScore?: any;
158
+ clientId?: string | undefined;
159
+ ruleGroupId?: string | undefined;
160
+ userId?: string | undefined;
161
+ ja4Hash?: string | undefined;
162
+ headersHash?: string | undefined;
163
+ userAgentHash?: string | undefined;
164
+ ip?: string | undefined;
165
+ ipMask?: string | undefined;
166
+ userAgent?: string | undefined;
167
+ }>;
168
+ export type AccessRuleExtended = z.input<typeof accessRuleSchemaExtended>;
169
+ //# sourceMappingURL=accessPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessPolicy.d.ts","sourceRoot":"","sources":["../src/accessPolicy.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG1C,oBAAY,gBAAgB;IAC3B,KAAK,UAAU;IACf,QAAQ,aAAa;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC;IAC5C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACpD,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,mBAAmB,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACxD,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;CACpD,CAcC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC9B,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;UApF9B,WAAW,CAAC,MAAM,CAAC;iBACZ,WAAW,CAAC,aAAa,CAAC;iBAC1B,WAAW,CAAC,aAAa,CAAC;uBACpB,WAAW,CAAC,mBAAmB,CAAC;oBACnC,WAAW,CAAC,gBAAgB,CAAC;mBAC9B,WAAW,CAAC,eAAe,CAAC;yBACtB,WAAW,CAAC,qBAAqB,CAAC;uBACpC,WAAW,CAAC,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFjD,CAAC;AACJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { CaptchaTypeSchema } from "@prosopo/types";
2
+ import { Address4 } from "ip-address";
3
+ import { z } from "zod";
4
+ import { hashUserAgent } from "#policy/util.js";
5
+ export var AccessPolicyType;
6
+ (function (AccessPolicyType) {
7
+ AccessPolicyType["Block"] = "block";
8
+ AccessPolicyType["Restrict"] = "restrict";
9
+ })(AccessPolicyType || (AccessPolicyType = {}));
10
+ export const accessPolicySchema = z.object({
11
+ type: z.nativeEnum(AccessPolicyType),
12
+ captchaType: CaptchaTypeSchema.optional(),
13
+ description: z.coerce.string().optional(),
14
+ solvedImagesCount: z.coerce.number().optional(),
15
+ imageThreshold: z.coerce.number().optional(),
16
+ powDifficulty: z.coerce.number().optional(),
17
+ unsolvedImagesCount: z.coerce.number().optional(),
18
+ frictionlessScore: z.coerce.number().optional(),
19
+ });
20
+ export const policyScopeSchema = z.object({
21
+ clientId: z.coerce.string().optional(),
22
+ ruleGroupId: z.coerce.string().optional(),
23
+ });
24
+ export const userScopeSchema = z.object({
25
+ userId: z.coerce.string().optional(),
26
+ numericIp: z.coerce.bigint().optional(),
27
+ numericIpMaskMin: z.coerce.bigint().optional(),
28
+ numericIpMaskMax: z.coerce.bigint().optional(),
29
+ ja4Hash: z.coerce.string().optional(),
30
+ headersHash: z.coerce.string().optional(),
31
+ userAgentHash: z.coerce.string().optional(),
32
+ });
33
+ export const userScopeInputSchema = userScopeSchema
34
+ .extend({
35
+ ip: z.string().optional(),
36
+ ipMask: z.string().optional(),
37
+ userAgent: z.string().optional(),
38
+ })
39
+ .transform((inputUserScope) => {
40
+ const { ip, ipMask, userAgent, ...userScope } = inputUserScope;
41
+ if ("string" === typeof ip) {
42
+ userScope.numericIp = new Address4(ip).bigInt();
43
+ }
44
+ if ("string" === typeof ipMask) {
45
+ const ipObject = new Address4(ipMask);
46
+ userScope.numericIpMaskMin = ipObject.startAddress().bigInt();
47
+ userScope.numericIpMaskMax = ipObject.endAddress().bigInt();
48
+ }
49
+ if ("string" === typeof userAgent) {
50
+ userScope.userAgentHash = hashUserAgent(userAgent);
51
+ }
52
+ return userScope;
53
+ });
54
+ export const accessRuleSchemaExtended = z
55
+ .object({
56
+ ...accessPolicySchema.shape,
57
+ ...policyScopeSchema.shape,
58
+ ...userScopeInputSchema._def.schema.shape,
59
+ })
60
+ .omit({
61
+ numericIp: true,
62
+ numericIpMaskMin: true,
63
+ numericIpMaskMax: true,
64
+ });
65
+ //# sourceMappingURL=accessPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessPolicy.js","sourceRoot":"","sources":["../src/accessPolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type { Logger } from "@prosopo/common";
2
+ import { z } from "zod";
3
+ import { type AccessPolicy } from "#policy/accessPolicy.js";
4
+ import type { AccessRulesReader } from "#policy/accessRules.js";
5
+ export declare enum ScopeMatch {
6
+ Exact = "exact",
7
+ Greedy = "greedy"
8
+ }
9
+ export declare const policyFilterSchema: z.ZodObject<{
10
+ policyScope: z.ZodOptional<z.ZodObject<{
11
+ clientId: z.ZodOptional<z.ZodString>;
12
+ ruleGroupId: z.ZodOptional<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ clientId?: string | undefined;
15
+ ruleGroupId?: string | undefined;
16
+ }, {
17
+ clientId?: string | undefined;
18
+ ruleGroupId?: string | undefined;
19
+ }>>;
20
+ policyScopeMatch: z.ZodDefault<z.ZodNativeEnum<typeof ScopeMatch>>;
21
+ userScope: z.ZodOptional<z.ZodEffects<z.ZodObject<z.objectUtil.extendShape<{
22
+ userId: z.ZodOptional<z.ZodString>;
23
+ numericIp: z.ZodOptional<z.ZodBigInt>;
24
+ numericIpMaskMin: z.ZodOptional<z.ZodBigInt>;
25
+ numericIpMaskMax: z.ZodOptional<z.ZodBigInt>;
26
+ ja4Hash: z.ZodOptional<z.ZodString>;
27
+ headersHash: z.ZodOptional<z.ZodString>;
28
+ userAgentHash: z.ZodOptional<z.ZodString>;
29
+ }, {
30
+ ip: z.ZodOptional<z.ZodString>;
31
+ ipMask: z.ZodOptional<z.ZodString>;
32
+ userAgent: z.ZodOptional<z.ZodString>;
33
+ }>, "strip", z.ZodTypeAny, {
34
+ userId?: string | undefined;
35
+ numericIp?: bigint | undefined;
36
+ numericIpMaskMin?: bigint | undefined;
37
+ numericIpMaskMax?: bigint | undefined;
38
+ ja4Hash?: string | undefined;
39
+ headersHash?: string | undefined;
40
+ userAgentHash?: string | undefined;
41
+ ip?: string | undefined;
42
+ ipMask?: string | undefined;
43
+ userAgent?: string | undefined;
44
+ }, {
45
+ userId?: string | undefined;
46
+ numericIp?: bigint | undefined;
47
+ numericIpMaskMin?: bigint | undefined;
48
+ numericIpMaskMax?: bigint | undefined;
49
+ ja4Hash?: string | undefined;
50
+ headersHash?: string | undefined;
51
+ userAgentHash?: string | undefined;
52
+ ip?: string | undefined;
53
+ ipMask?: string | undefined;
54
+ userAgent?: string | undefined;
55
+ }>, {
56
+ userId?: string | undefined;
57
+ numericIp?: bigint | undefined;
58
+ numericIpMaskMin?: bigint | undefined;
59
+ numericIpMaskMax?: bigint | undefined;
60
+ ja4Hash?: string | undefined;
61
+ headersHash?: string | undefined;
62
+ userAgentHash?: string | undefined;
63
+ }, {
64
+ userId?: string | undefined;
65
+ numericIp?: bigint | undefined;
66
+ numericIpMaskMin?: bigint | undefined;
67
+ numericIpMaskMax?: bigint | undefined;
68
+ ja4Hash?: string | undefined;
69
+ headersHash?: string | undefined;
70
+ userAgentHash?: string | undefined;
71
+ ip?: string | undefined;
72
+ ipMask?: string | undefined;
73
+ userAgent?: string | undefined;
74
+ }>>;
75
+ userScopeMatch: z.ZodDefault<z.ZodNativeEnum<typeof ScopeMatch>>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ policyScopeMatch: ScopeMatch;
78
+ userScopeMatch: ScopeMatch;
79
+ userScope?: {
80
+ userId?: string | undefined;
81
+ numericIp?: bigint | undefined;
82
+ numericIpMaskMin?: bigint | undefined;
83
+ numericIpMaskMax?: bigint | undefined;
84
+ ja4Hash?: string | undefined;
85
+ headersHash?: string | undefined;
86
+ userAgentHash?: string | undefined;
87
+ } | undefined;
88
+ policyScope?: {
89
+ clientId?: string | undefined;
90
+ ruleGroupId?: string | undefined;
91
+ } | undefined;
92
+ }, {
93
+ userScope?: {
94
+ userId?: string | undefined;
95
+ numericIp?: bigint | undefined;
96
+ numericIpMaskMin?: bigint | undefined;
97
+ numericIpMaskMax?: bigint | undefined;
98
+ ja4Hash?: string | undefined;
99
+ headersHash?: string | undefined;
100
+ userAgentHash?: string | undefined;
101
+ ip?: string | undefined;
102
+ ipMask?: string | undefined;
103
+ userAgent?: string | undefined;
104
+ } | undefined;
105
+ policyScope?: {
106
+ clientId?: string | undefined;
107
+ ruleGroupId?: string | undefined;
108
+ } | undefined;
109
+ policyScopeMatch?: ScopeMatch | undefined;
110
+ userScopeMatch?: ScopeMatch | undefined;
111
+ }>;
112
+ export type PolicyFilter = z.input<typeof policyFilterSchema>;
113
+ export type ResolveAccessPolicy = (filter: PolicyFilter) => Promise<AccessPolicy | undefined>;
114
+ export declare const createAccessPolicyResolver: (accessRulesReader: AccessRulesReader, logger: Logger) => ResolveAccessPolicy;
115
+ //# sourceMappingURL=accessPolicyResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessPolicyResolver.d.ts","sourceRoot":"","sources":["../src/accessPolicyResolver.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,KAAK,YAAY,EAIjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,oBAAY,UAAU;IACrB,KAAK,UAAU;IACf,MAAM,WAAW;CACjB;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa7B,CAAC;AAGH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG,CACjC,MAAM,EAAE,YAAY,KAChB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;AAEvC,eAAO,MAAM,0BAA0B,sBACnB,iBAAiB,UAC5B,MAAM,KACZ,mBAuBF,CAAC"}
@@ -0,0 +1,44 @@
1
+ import * as util from "node:util";
2
+ import { z } from "zod";
3
+ import { AccessPolicyType, policyScopeSchema, userScopeInputSchema, } from "#policy/accessPolicy.js";
4
+ export var ScopeMatch;
5
+ (function (ScopeMatch) {
6
+ ScopeMatch["Exact"] = "exact";
7
+ ScopeMatch["Greedy"] = "greedy";
8
+ })(ScopeMatch || (ScopeMatch = {}));
9
+ export const policyFilterSchema = z.object({
10
+ policyScope: policyScopeSchema.optional(),
11
+ policyScopeMatch: z.nativeEnum(ScopeMatch).default(ScopeMatch.Exact),
12
+ userScope: userScopeInputSchema.optional(),
13
+ userScopeMatch: z.nativeEnum(ScopeMatch).default(ScopeMatch.Exact),
14
+ });
15
+ export const createAccessPolicyResolver = (accessRulesReader, logger) => {
16
+ return async (filter) => {
17
+ const accessRules = await accessRulesReader.findRules(filter);
18
+ const primaryAccessRule = resolvePrimaryRule(accessRules);
19
+ logger.debug(() => ({
20
+ msg: "Resolved access policy",
21
+ data: {
22
+ inspect: util.inspect({
23
+ filter: filter,
24
+ accessRules: accessRules,
25
+ primaryAccessRule: primaryAccessRule,
26
+ }, { depth: null }),
27
+ },
28
+ }));
29
+ return primaryAccessRule;
30
+ };
31
+ };
32
+ const resolvePrimaryRule = (rules) => {
33
+ const blockingRules = rules.filter((accessRule) => AccessPolicyType.Block === accessRule.type);
34
+ const rulesToEvaluate = blockingRules.length > 0 ? blockingRules : rules;
35
+ return resolveMostLocalRule(rulesToEvaluate);
36
+ };
37
+ const resolveMostLocalRule = (rules) => {
38
+ const clientRules = rules.filter((accessRule) => "string" === typeof accessRule.clientId);
39
+ if (clientRules.length > 0) {
40
+ return clientRules.shift();
41
+ }
42
+ return rules.shift();
43
+ };
44
+ //# sourceMappingURL=accessPolicyResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessPolicyResolver.js","sourceRoot":"","sources":["../src/accessPolicyResolver.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEN,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACrB,6BAAe,CAAA;IACf,+BAAiB,CAAA;AAClB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IAKzC,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;IACpE,SAAS,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IAK1C,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;CAClE,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,iBAAoC,EACpC,MAAc,EACQ,EAAE;IACxB,OAAO,KAAK,EAAE,MAAoB,EAAqC,EAAE;QACxE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE1D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACnB,GAAG,EAAE,wBAAwB;YAE7B,IAAI,EAAE;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CACpB;oBACC,MAAM,EAAE,MAAM;oBACd,WAAW,EAAE,WAAW;oBACxB,iBAAiB,EAAE,iBAAiB;iBACpC,EACD,EAAE,KAAK,EAAE,IAAI,EAAE,CACf;aACD;SACD,CAAC,CAAC,CAAC;QAEJ,OAAO,iBAAiB,CAAC;IAC1B,CAAC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAA0B,EAAE;IAE1E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,CAC1D,CAAC;IAEF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzE,OAAO,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAAmB,EAA0B,EAAE;IAE5E,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,OAAO,UAAU,CAAC,QAAQ,CACvD,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ import { accessPolicySchema, policyScopeSchema, userScopeSchema } from "#policy/accessPolicy.js";
3
+ import type { PolicyFilter } from "#policy/accessPolicyResolver.js";
4
+ export declare const accessRuleSchema: z.ZodObject<typeof accessPolicySchema.shape & typeof policyScopeSchema.shape & typeof userScopeSchema.shape>;
5
+ export type AccessRule = z.infer<typeof accessRuleSchema>;
6
+ export type AccessRulesReader = {
7
+ findRules(filter: PolicyFilter): Promise<AccessRule[]>;
8
+ findRuleIds(filter: PolicyFilter): Promise<string[]>;
9
+ };
10
+ export type AccessRulesWriter = {
11
+ insertRule(rule: AccessRule, expirationTimestampSeconds?: number): Promise<string>;
12
+ deleteRules(ruleIds: string[]): Promise<void>;
13
+ deleteAllRules(): Promise<number>;
14
+ };
15
+ export type AccessRulesStorage = AccessRulesReader & AccessRulesWriter;
16
+ //# sourceMappingURL=accessRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessRules.d.ts","sourceRoot":"","sources":["../src/accessRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,SAAS,CACzC,OAAO,kBAAkB,CAAC,KAAK,GAC9B,OAAO,iBAAiB,CAAC,KAAK,GAC9B,OAAO,eAAe,CAAC,KAAK,CAM5B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG;IAC/B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvD,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,UAAU,CACT,IAAI,EAAE,UAAU,EAChB,0BAA0B,CAAC,EAAE,MAAM,GACjC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ import { accessPolicySchema, policyScopeSchema, userScopeSchema, } from "#policy/accessPolicy.js";
3
+ export const accessRuleSchema = z.object({
4
+ ...accessPolicySchema.shape,
5
+ ...policyScopeSchema.shape,
6
+ ...userScopeSchema.shape,
7
+ });
8
+ //# sourceMappingURL=accessRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessRules.js","sourceRoot":"","sources":["../src/accessRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAC,MAAM,gBAAgB,GAIzB,CAAC,CAAC,MAAM,CAAC;IAEZ,GAAG,kBAAkB,CAAC,KAAK;IAC3B,GAAG,iBAAiB,CAAC,KAAK;IAC1B,GAAG,eAAe,CAAC,KAAK;CACxB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ApiRoute, ApiRoutesProvider } from "@prosopo/api-route";
2
+ import type { AccessRulesStorage } from "#policy/accessRules.js";
3
+ export declare enum accessRuleApiPaths {
4
+ INSERT_MANY = "/v1/prosopo/user-access-policy/rules/insert-many",
5
+ DELETE_MANY = "/v1/prosopo/user-access-policy/rules/delete-many",
6
+ DELETE_ALL = "/v1/prosopo/user-access-policy/rules/delete-all"
7
+ }
8
+ export declare class AccessRuleApiRoutes implements ApiRoutesProvider {
9
+ private readonly accessRulesStorage;
10
+ constructor(accessRulesStorage: AccessRulesStorage);
11
+ getRoutes(): ApiRoute[];
12
+ }
13
+ export declare const getExpressApiRuleRateLimits: () => {
14
+ "/v1/prosopo/user-access-policy/rules/insert-many": {
15
+ windowMs: number;
16
+ limit: number;
17
+ };
18
+ "/v1/prosopo/user-access-policy/rules/delete-many": {
19
+ windowMs: number;
20
+ limit: number;
21
+ };
22
+ "/v1/prosopo/user-access-policy/rules/delete-all": {
23
+ windowMs: number;
24
+ limit: number;
25
+ };
26
+ };
27
+ //# sourceMappingURL=accessRuleApiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessRuleApiRoutes.d.ts","sourceRoot":"","sources":["../../src/api/accessRuleApiRoutes.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAKjE,oBAAY,kBAAkB;IAC7B,WAAW,qDAAqD;IAChE,WAAW,qDAAqD;IAChE,UAAU,oDAAoD;CAC9D;AAID,qBAAa,mBAAoB,YAAW,iBAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAEnE,SAAS,IAAI,QAAQ,EAAE;CAgB9B;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;CAoCvC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { DeleteAllRulesEndpoint } from "#policy/api/deleteAllRulesEndpoint.js";
2
+ import { DeleteRulesEndpoint } from "./deleteRulesEndpoint.js";
3
+ import { InsertRulesEndpoint } from "./insertRulesEndpoint.js";
4
+ export var accessRuleApiPaths;
5
+ (function (accessRuleApiPaths) {
6
+ accessRuleApiPaths["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
7
+ accessRuleApiPaths["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
8
+ accessRuleApiPaths["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
9
+ })(accessRuleApiPaths || (accessRuleApiPaths = {}));
10
+ export class AccessRuleApiRoutes {
11
+ constructor(accessRulesStorage) {
12
+ this.accessRulesStorage = accessRulesStorage;
13
+ }
14
+ getRoutes() {
15
+ return [
16
+ {
17
+ path: accessRuleApiPaths.INSERT_MANY,
18
+ endpoint: new InsertRulesEndpoint(this.accessRulesStorage),
19
+ },
20
+ {
21
+ path: accessRuleApiPaths.DELETE_MANY,
22
+ endpoint: new DeleteRulesEndpoint(this.accessRulesStorage),
23
+ },
24
+ {
25
+ path: accessRuleApiPaths.DELETE_ALL,
26
+ endpoint: new DeleteAllRulesEndpoint(this.accessRulesStorage),
27
+ },
28
+ ];
29
+ }
30
+ }
31
+ export const getExpressApiRuleRateLimits = () => {
32
+ const defaultWindowsMs = 60000;
33
+ const defaultLimit = 5;
34
+ return {
35
+ [accessRuleApiPaths.INSERT_MANY]: {
36
+ windowMs: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_INSERT_MANY_WINDOW") || defaultWindowsMs,
37
+ limit: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_INSERT_MANY_LIMIT") || defaultLimit,
38
+ },
39
+ [accessRuleApiPaths.DELETE_MANY]: {
40
+ windowMs: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_MANY_WINDOW") || defaultWindowsMs,
41
+ limit: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_MANY_LIMIT") || defaultLimit,
42
+ },
43
+ [accessRuleApiPaths.DELETE_ALL]: {
44
+ windowMs: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_ALL_WINDOW") || defaultWindowsMs,
45
+ limit: getIntEnvironmentVariable("PROSOPO_USER_ACCESS_POLICY_RULE_DELETE_ALL_LIMIT") || defaultLimit,
46
+ },
47
+ };
48
+ };
49
+ const getIntEnvironmentVariable = (variableName) => {
50
+ const variableValue = process.env[variableName];
51
+ const numericValue = variableValue
52
+ ? Number.parseInt(variableValue)
53
+ : Number.NaN;
54
+ return Number.isInteger(numericValue) ? numericValue : undefined;
55
+ };
56
+ //# sourceMappingURL=accessRuleApiRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessRuleApiRoutes.js","sourceRoot":"","sources":["../../src/api/accessRuleApiRoutes.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC7B,sFAAgE,CAAA;IAChE,sFAAgE,CAAA;IAChE,oFAA8D,CAAA;AAC/D,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAID,MAAM,OAAO,mBAAmB;IAC/B,YAAoC,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,SAAS;QACf,OAAO;YACN;gBACC,IAAI,EAAE,kBAAkB,CAAC,WAAW;gBACpC,QAAQ,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC1D;YACD;gBACC,IAAI,EAAE,kBAAkB,CAAC,WAAW;gBACpC,QAAQ,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC1D;YACD;gBACC,IAAI,EAAE,kBAAkB,CAAC,UAAU;gBACnC,QAAQ,EAAE,IAAI,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC;aAC7D;SAC8D,CAAC;IAClE,CAAC;CACD;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC;IAC/B,MAAM,YAAY,GAAG,CAAC,CAAC;IAEvB,OAAO;QACN,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;YACjC,QAAQ,EACP,yBAAyB,CACxB,oDAAoD,CACpD,IAAI,gBAAgB;YACtB,KAAK,EACJ,yBAAyB,CACxB,mDAAmD,CACnD,IAAI,YAAY;SAClB;QACD,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;YACjC,QAAQ,EACP,yBAAyB,CACxB,oDAAoD,CACpD,IAAI,gBAAgB;YACtB,KAAK,EACJ,yBAAyB,CACxB,mDAAmD,CACnD,IAAI,YAAY;SAClB;QACD,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;YAChC,QAAQ,EACP,yBAAyB,CACxB,mDAAmD,CACnD,IAAI,gBAAgB;YACtB,KAAK,EACJ,yBAAyB,CACxB,kDAAkD,CAClD,IAAI,YAAY;SAClB;KACqD,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CACjC,YAAoB,EACC,EAAE;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,aAAa;QACjC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
2
+ import { z } from "zod";
3
+ import type { AccessRulesStorage } from "#policy/accessRules.js";
4
+ export declare const deleteAllRulesEndpointSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
5
+ export type DeleteAllRulesEndpointSchema = typeof deleteAllRulesEndpointSchema;
6
+ export declare class DeleteAllRulesEndpoint implements ApiEndpoint<DeleteAllRulesEndpointSchema> {
7
+ private readonly accessRulesStorage;
8
+ constructor(accessRulesStorage: AccessRulesStorage);
9
+ processRequest(args: z.infer<DeleteAllRulesEndpointSchema>): Promise<ApiEndpointResponse>;
10
+ getRequestArgsSchema(): DeleteAllRulesEndpointSchema;
11
+ }
12
+ //# sourceMappingURL=deleteAllRulesEndpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteAllRulesEndpoint.d.ts","sourceRoot":"","sources":["../../src/api/deleteAllRulesEndpoint.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,gDAAe,CAAC;AAEzD,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAC;AAE/E,qBAAa,sBACZ,YAAW,WAAW,CAAC,4BAA4B,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAEpE,cAAc,CACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,GACzC,OAAO,CAAC,mBAAmB,CAAC;IAW/B,oBAAoB,IAAI,4BAA4B;CAGpD"}