@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
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- class BlacklistRulesInspector {
4
- constructor(rulesStorage, logger) {
5
- this.rulesStorage = rulesStorage;
6
- this.logger = logger;
7
- }
8
- async isUserBlacklisted(clientId, userIpAddress, ja4, userId) {
9
- this.logger.debug({
10
- clientId,
11
- userIpAddress,
12
- ja4,
13
- userId
14
- });
15
- const accessRules = await this.rulesStorage.find(
16
- {
17
- clientId,
18
- userIpAddress,
19
- ja4,
20
- userId
21
- },
22
- {
23
- includeRecordsWithPartialFilterMatches: true,
24
- includeRecordsWithoutClientId: true
25
- }
26
- );
27
- const blockingRules = accessRules.filter(
28
- (accessRule) => accessRule.isUserBlocked
29
- );
30
- const userBlacklisted = blockingRules.length > 0;
31
- if (userBlacklisted) {
32
- this.logger.info({
33
- userBlacklisted,
34
- clientId,
35
- userIpAddress: userIpAddress.address.toString(),
36
- userId,
37
- accessRules: accessRules.length,
38
- blockingRules: blockingRules.length
39
- });
40
- }
41
- return userBlacklisted;
42
- }
43
- }
44
- exports.BlacklistRulesInspector = BlacklistRulesInspector;
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- class ImageCaptchaConfigRulesResolver {
4
- constructor(rulesStorage, logger, _accessRule = null) {
5
- this.rulesStorage = rulesStorage;
6
- this.logger = logger;
7
- this._accessRule = _accessRule;
8
- }
9
- get accessRule() {
10
- return this._accessRule;
11
- }
12
- async isConfigDefined(clientId, userIpAddress, ja4, userId) {
13
- const accessRule = await this.fetchUserAccessRule(
14
- userIpAddress,
15
- ja4,
16
- userId,
17
- clientId
18
- );
19
- const imageCaptchaConfig = accessRule?.config?.imageCaptcha || null;
20
- const configDefined = null !== imageCaptchaConfig;
21
- if (configDefined) {
22
- this.logger.info({
23
- configDefined,
24
- clientId,
25
- userIpAddress: userIpAddress.toString(),
26
- userId,
27
- imageCaptchaConfig,
28
- ja4
29
- });
30
- }
31
- return configDefined;
32
- }
33
- async resolveConfig(defaults, userIpAddress, ja4, userId, clientId) {
34
- const logArgs = {
35
- userIpAddress: userIpAddress.address.toString(),
36
- userId,
37
- clientId,
38
- defaults,
39
- ja4
40
- };
41
- this._accessRule = await this.fetchUserAccessRule(
42
- userIpAddress,
43
- ja4,
44
- userId,
45
- clientId
46
- );
47
- if (null === this.accessRule) {
48
- this.logger.debug("ImageCaptchaConfigRulesResolver.resolveConfig", {
49
- configDefined: false,
50
- ...logArgs
51
- });
52
- return defaults;
53
- }
54
- const imageCaptchaConfig = this.accessRule.config?.imageCaptcha || {};
55
- const config = this.getImageCaptchaConfig(defaults, imageCaptchaConfig);
56
- this.logger.info("ImageCaptchaConfigRulesResolver.resolveConfig", {
57
- configDefined: true,
58
- imageCaptchaConfig,
59
- config,
60
- ...logArgs
61
- });
62
- return config;
63
- }
64
- async fetchUserAccessRule(userIpAddress, ja4, userId, clientId) {
65
- const accessRules = await this.queryUserAccessRules(
66
- userIpAddress,
67
- ja4,
68
- userId,
69
- clientId
70
- );
71
- this.logger.debug("ImageCaptchaConfigRulesResolver.fetchUserAccessRule", {
72
- accessRules: accessRules.length,
73
- userIpAddress: userIpAddress.address.toString(),
74
- userId,
75
- clientId,
76
- ja4
77
- });
78
- return this.selectPrimaryUserAccessRule(accessRules);
79
- }
80
- async queryUserAccessRules(ipAddress, ja4, user, clientId) {
81
- return await this.rulesStorage.find(
82
- {
83
- clientId,
84
- userId: user,
85
- userIpAddress: ipAddress,
86
- ja4
87
- },
88
- {
89
- includeRecordsWithoutClientId: true,
90
- includeRecordsWithPartialFilterMatches: true
91
- }
92
- );
93
- }
94
- selectPrimaryUserAccessRule(accessRules) {
95
- const clientRules = accessRules.filter(
96
- (accessRule2) => "string" === typeof accessRule2.clientId
97
- );
98
- const globalRules = accessRules.filter(
99
- (accessRule2) => void 0 === accessRule2.clientId
100
- );
101
- const accessRule = clientRules.length > 0 ? clientRules.shift() : globalRules.shift();
102
- return void 0 === accessRule ? null : accessRule;
103
- }
104
- getImageCaptchaConfig(defaults, imageCaptchaConfig) {
105
- return {
106
- solved: {
107
- count: imageCaptchaConfig.solvedCount || defaults.solved.count
108
- },
109
- unsolved: {
110
- count: imageCaptchaConfig.unsolvedCount || defaults.unsolved.count
111
- }
112
- };
113
- }
114
- }
115
- exports.ImageCaptchaConfigRulesResolver = ImageCaptchaConfigRulesResolver;
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const userIpIndexes = [
4
- {
5
- definition: {
6
- "userIp.v4.asNumeric": 1
7
- },
8
- options: {
9
- partialFilterExpression: {
10
- "userIp.v4.asNumeric": { $exists: true }
11
- }
12
- }
13
- },
14
- {
15
- definition: {
16
- "userIp.v6.asNumericString": 1
17
- },
18
- options: {
19
- partialFilterExpression: {
20
- "userIp.v6.asNumericString": { $exists: true }
21
- }
22
- }
23
- }
24
- ];
25
- const userIpMaskIndexes = [
26
- {
27
- definition: {
28
- "userIp.v4.mask.rangeMinAsNumeric": 1,
29
- "userIp.v4.mask.rangeMaxAsNumeric": 1,
30
- "userIp.v4.asNumeric": 1
31
- },
32
- options: {
33
- partialFilterExpression: {
34
- "userIp.v4.mask.asNumeric": { $exists: true }
35
- }
36
- }
37
- },
38
- {
39
- definition: {
40
- "userIp.v6.mask.rangeMinAsNumericString": 1,
41
- "userIp.v6.mask.rangeMaxAsNumericString": 1
42
- },
43
- options: {
44
- partialFilterExpression: {
45
- "userIp.v6.mask.asNumeric": { $exists: true }
46
- }
47
- }
48
- }
49
- ];
50
- const otherIndexes = [
51
- {
52
- definition: {
53
- userId: 1
54
- },
55
- options: {
56
- unique: true,
57
- sparse: true
58
- }
59
- },
60
- {
61
- definition: {
62
- ja4: 1
63
- },
64
- options: {
65
- unique: true,
66
- sparse: true
67
- }
68
- }
69
- ];
70
- const rulePerformanceMongooseIndexes = [
71
- ...userIpIndexes,
72
- ...userIpMaskIndexes,
73
- ...otherIndexes
74
- ];
75
- exports.rulePerformanceMongooseIndexes = rulePerformanceMongooseIndexes;
@@ -1,137 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const globalIpIndexes = [
4
- {
5
- definition: {
6
- "userIp.v4.asNumeric": 1
7
- },
8
- options: {
9
- name: "globalIpV4",
10
- unique: true,
11
- partialFilterExpression: {
12
- clientId: null,
13
- "userIp.v4.asNumeric": { $exists: true },
14
- "userIp.v4.mask.asNumeric": null
15
- }
16
- }
17
- },
18
- {
19
- definition: {
20
- "userIp.v6.asNumericString": 1
21
- },
22
- options: {
23
- name: "globalIpV6",
24
- unique: true,
25
- partialFilterExpression: {
26
- clientId: null,
27
- "userIp.v6.asNumericString": { $exists: true },
28
- "userIp.v6.mask.asNumeric": null
29
- }
30
- }
31
- }
32
- ];
33
- const globalIpMaskIndexes = [
34
- {
35
- definition: {
36
- "userIp.v4.asNumeric": 1,
37
- "userIp.v4.mask.asNumeric": 1
38
- },
39
- options: {
40
- name: "globalIpMaskV4",
41
- unique: true,
42
- partialFilterExpression: {
43
- clientId: null,
44
- "userIp.v4.asNumeric": { $exists: true },
45
- "userIp.v4.mask.asNumeric": { $exists: true }
46
- }
47
- }
48
- },
49
- {
50
- definition: {
51
- "userIp.v6.asNumericString": 1,
52
- "userIp.v6.mask.asNumeric": 1
53
- },
54
- options: {
55
- name: "globalIpMaskV6",
56
- unique: true,
57
- partialFilterExpression: {
58
- clientId: null,
59
- "userIp.v6.asNumericString": { $exists: true },
60
- "userIp.v6.mask.asNumeric": { $exists: true }
61
- }
62
- }
63
- }
64
- ];
65
- const ipPerClientIndexes = [
66
- {
67
- definition: {
68
- clientId: 1,
69
- "userIp.v4.asNumeric": 1
70
- },
71
- options: {
72
- name: "clientIpV4",
73
- unique: true,
74
- partialFilterExpression: {
75
- clientId: { $exists: true },
76
- "userIp.v4.asNumeric": { $exists: true },
77
- "userIp.v4.mask.asNumeric": null
78
- }
79
- }
80
- },
81
- {
82
- definition: {
83
- clientId: 1,
84
- "userIp.v6.asNumericString": 1
85
- },
86
- options: {
87
- name: "clientIpV6",
88
- unique: true,
89
- partialFilterExpression: {
90
- clientId: { $exists: true },
91
- "userIp.v6.asNumericString": { $exists: true },
92
- "userIp.v6.mask.asNumeric": null
93
- }
94
- }
95
- }
96
- ];
97
- const ipMaskPerClientIndexes = [
98
- {
99
- definition: {
100
- clientId: 1,
101
- "userIp.v4.asNumeric": 1,
102
- "userIp.v4.mask.asNumeric": 1
103
- },
104
- options: {
105
- name: "clientIpV4Mask",
106
- unique: true,
107
- partialFilterExpression: {
108
- clientId: { $exists: true },
109
- "userIp.v4.asNumeric": { $exists: true },
110
- "userIp.v4.mask.asNumeric": { $exists: true }
111
- }
112
- }
113
- },
114
- {
115
- definition: {
116
- clientId: 1,
117
- "userIp.v6.asNumericString": 1,
118
- "userIp.v6.mask.asNumeric": 1
119
- },
120
- options: {
121
- name: "clientIpV6Mask",
122
- unique: true,
123
- partialFilterExpression: {
124
- clientId: { $exists: true },
125
- "userIp.v6.asNumericString": { $exists: true },
126
- "userIp.v6.mask.asNumeric": { $exists: true }
127
- }
128
- }
129
- }
130
- ];
131
- const ruleUniqueMongooseIndexes = [
132
- ...globalIpIndexes,
133
- ...globalIpMaskIndexes,
134
- ...ipMaskPerClientIndexes,
135
- ...ipPerClientIndexes
136
- ];
137
- exports.ruleUniqueMongooseIndexes = ruleUniqueMongooseIndexes;
@@ -1,177 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const ipAddress = require("ip-address");
5
- const ruleIpVersion = require("../rule/ip/ruleIpVersion.cjs");
6
- const ruleIpV6NumericMaxLength = require("../rule/ip/v6/ruleIpV6NumericMaxLength.cjs");
7
- class RulesMongooseStorage {
8
- constructor(logger, readingModel, writingModel = null) {
9
- this.logger = logger;
10
- this.readingModel = readingModel;
11
- this.writingModel = writingModel;
12
- if (null === this.writingModel) {
13
- this.writingModel = this.readingModel;
14
- }
15
- }
16
- async insert(record) {
17
- if (!this.writingModel) {
18
- throw this.modelNotSetProsopoError();
19
- }
20
- const filter = {
21
- ...record.clientId && { clientId: record.clientId },
22
- ...record.userIp && { userIp: record.userIp },
23
- ...record.userId && { userId: record.userId },
24
- ...record.ja4 && { ja4: record.ja4 }
25
- };
26
- const validationError = new this.writingModel(record).validateSync();
27
- if (validationError) {
28
- throw validationError;
29
- }
30
- const document = await this.writingModel.findOneAndUpdate(
31
- filter,
32
- record,
33
- { new: true, upsert: true, runValidators: true }
34
- // 🔥 Enforce schema validation!
35
- );
36
- const ruleRecord = this.convertMongooseRecordToRuleRecord(
37
- document.toObject()
38
- );
39
- return ruleRecord;
40
- }
41
- async insertMany(records) {
42
- if (!this.writingModel) {
43
- throw this.modelNotSetProsopoError();
44
- }
45
- if (!this.readingModel) {
46
- throw this.modelNotSetProsopoError();
47
- }
48
- const beforeDelete = await this.writingModel.find({});
49
- this.logger.debug("Before deletion, DB records:", beforeDelete.length);
50
- await this.writingModel.bulkWrite(
51
- records.map((record) => {
52
- const filter = {
53
- ...record.clientId && { clientId: record.clientId },
54
- ...record.userIp && { userIp: record.userIp },
55
- ...record.userId && { userId: record.userId },
56
- ...record.ja4 && { ja4: record.ja4 }
57
- };
58
- return {
59
- deleteOne: {
60
- filter
61
- }
62
- };
63
- })
64
- );
65
- this.logger.debug("After deletion");
66
- const afterDelete = await this.readingModel.find({});
67
- this.logger.debug("After deletion, DB records:", afterDelete.length);
68
- const documents = await this.writingModel.insertMany(records);
69
- const objectDocuments = documents.map((document) => document.toObject());
70
- const ruleRecords = this.convertMongooseRecordsToRuleRecords(objectDocuments);
71
- return ruleRecords;
72
- }
73
- async find(filters, filterSettings) {
74
- if (!this.readingModel) {
75
- throw this.modelNotSetProsopoError();
76
- }
77
- const query = this.createSearchQuery(filters, filterSettings);
78
- const mongooseRecords = await this.readingModel.find(query).lean().exec();
79
- const ruleRecords = this.convertMongooseRecordsToRuleRecords(mongooseRecords);
80
- return ruleRecords;
81
- }
82
- async deleteMany(recordFilters) {
83
- if (!this.writingModel) {
84
- throw this.modelNotSetProsopoError();
85
- }
86
- for (const recordFilter of recordFilters) {
87
- await this.writingModel.deleteOne(recordFilter).exec();
88
- }
89
- }
90
- async countRecords() {
91
- if (!this.readingModel) {
92
- throw this.modelNotSetProsopoError();
93
- }
94
- const count = await this.readingModel.countDocuments().exec();
95
- return count;
96
- }
97
- modelNotSetProsopoError() {
98
- return new common.ProsopoError("USER_ACCESS_POLICY.MONGOOSE_RULE_MODEL_NOT_SET");
99
- }
100
- createSearchQuery(filters, filterSettings) {
101
- const includeRecordsWithoutClientId = filterSettings?.includeRecordsWithoutClientId || false;
102
- const includeRecordsWithPartialFilterMatches = filterSettings?.includeRecordsWithPartialFilterMatches || false;
103
- const queryParts = [
104
- this.getFilterByClientId(includeRecordsWithoutClientId, filters.clientId)
105
- ];
106
- const queryFilters = this.getSearchQueryFilters(
107
- filters,
108
- includeRecordsWithPartialFilterMatches
109
- );
110
- return {
111
- $and: queryParts.concat(queryFilters)
112
- };
113
- }
114
- getSearchQueryFilters(filters, includeRecordsWithPartialFilterMatches) {
115
- const queryFilters = [];
116
- if (filters.userId) {
117
- queryFilters.push({ userId: filters.userId });
118
- }
119
- if (filters.userIpAddress) {
120
- queryFilters.push(this.getFilterByUserIp(filters.userIpAddress));
121
- }
122
- if (filters.ja4) {
123
- queryFilters.push({ ja4: filters.ja4 });
124
- }
125
- return includeRecordsWithPartialFilterMatches && queryFilters.length > 1 ? [{ $or: queryFilters }] : queryFilters;
126
- }
127
- getFilterByClientId(includeRecordsWithoutClientId, clientId) {
128
- const clientIdValue = void 0 === clientId ? { $exists: false } : clientId;
129
- const clientIdFilter = {
130
- clientId: clientIdValue
131
- };
132
- return includeRecordsWithoutClientId ? {
133
- $or: [clientIdFilter, { clientId: { $exists: false } }]
134
- } : clientIdFilter;
135
- }
136
- getFilterByUserIp(userIpAddress) {
137
- return null !== userIpAddress ? this.getFilterByUserIpAddress(userIpAddress) : { userIp: null };
138
- }
139
- getFilterByUserIpAddress(userIpAddress) {
140
- const isIpV4 = userIpAddress instanceof ipAddress.Address4;
141
- const userIpVersion = isIpV4 ? ruleIpVersion.RuleIpVersion.v4 : ruleIpVersion.RuleIpVersion.v6;
142
- const userIpAsNumeric = isIpV4 ? userIpAddress.bigInt() : (
143
- // we must have the exact same string length to guarantee the right comparison.
144
- userIpAddress.bigInt().toString().padStart(ruleIpV6NumericMaxLength.RULE_IPV6_NUMERIC_MAX_LENGTH, "0")
145
- );
146
- const userIpKey = userIpVersion === ruleIpVersion.RuleIpVersion.v4 ? "userIp.v4.asNumeric" : "userIp.v6.asNumericString";
147
- const rangeMinKey = userIpVersion === ruleIpVersion.RuleIpVersion.v4 ? "userIp.v4.mask.rangeMinAsNumeric" : "userIp.v6.mask.rangeMinAsNumericString";
148
- const rangeMaxKey = userIpVersion === ruleIpVersion.RuleIpVersion.v4 ? "userIp.v4.mask.rangeMaxAsNumeric" : "userIp.v6.mask.rangeMaxAsNumericString";
149
- return {
150
- $or: [
151
- { [userIpKey]: userIpAsNumeric },
152
- {
153
- [rangeMinKey]: {
154
- $lte: userIpAsNumeric
155
- },
156
- [rangeMaxKey]: {
157
- $gte: userIpAsNumeric
158
- }
159
- }
160
- ]
161
- };
162
- }
163
- convertMongooseRecordsToRuleRecords(mongooseRecords) {
164
- const ruleRecords = mongooseRecords.map(
165
- (mongooseRecord) => this.convertMongooseRecordToRuleRecord(mongooseRecord)
166
- );
167
- return ruleRecords;
168
- }
169
- convertMongooseRecordToRuleRecord(mongooseRecord) {
170
- const ruleRecord = {
171
- ...mongooseRecord,
172
- _id: mongooseRecord._id.toString()
173
- };
174
- return ruleRecord;
175
- }
176
- }
177
- exports.RulesMongooseStorage = RulesMongooseStorage;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongoose = require("mongoose");
4
- const imageCaptchaConfigMongooseSchema = require("./imageCaptchaConfigMongooseSchema.cjs");
5
- const configMongooseSchema = new mongoose.Schema(
6
- {
7
- imageCaptcha: {
8
- type: imageCaptchaConfigMongooseSchema.imageCaptchaConfigMongooseSchema,
9
- required: false
10
- }
11
- },
12
- { _id: false }
13
- );
14
- exports.configMongooseSchema = configMongooseSchema;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongoose = require("mongoose");
4
- const imageCaptchaConfigMongooseSchema = new mongoose.Schema(
5
- {
6
- solvedCount: {
7
- type: Number,
8
- required: false
9
- },
10
- unsolvedCount: {
11
- type: Number,
12
- required: false
13
- }
14
- },
15
- { _id: false }
16
- );
17
- exports.imageCaptchaConfigMongooseSchema = imageCaptchaConfigMongooseSchema;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const rulePerformanceMongooseIndexes = require("../indexes/rulePerformanceMongooseIndexes.cjs");
4
- const ruleUniqueMongooseIndexes = require("../indexes/ruleUniqueMongooseIndexes.cjs");
5
- const ruleMongooseSchema = require("./ruleMongooseSchema.cjs");
6
- const getRuleMongooseSchema = () => {
7
- const ruleMongooseIndexes = [
8
- ...rulePerformanceMongooseIndexes.rulePerformanceMongooseIndexes,
9
- ...ruleUniqueMongooseIndexes.ruleUniqueMongooseIndexes
10
- ];
11
- for (const ruleMongooseIndex of ruleMongooseIndexes) {
12
- ruleMongooseSchema.ruleMongooseSchema.index(
13
- ruleMongooseIndex.definition,
14
- ruleMongooseIndex.options
15
- );
16
- }
17
- return ruleMongooseSchema.ruleMongooseSchema;
18
- };
19
- exports.getRuleMongooseSchema = getRuleMongooseSchema;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongoose = require("mongoose");
4
- const ipV4MongooseSchema = require("./v4/ipV4MongooseSchema.cjs");
5
- const ipV6MongooseSchema = require("./v6/ipV6MongooseSchema.cjs");
6
- const ipMongooseSchema = new mongoose.Schema(
7
- {
8
- v4: {
9
- type: ipV4MongooseSchema.ipV4MongooseSchema,
10
- required: [
11
- function() {
12
- return !this.v6;
13
- },
14
- "v4 is required when v6 is not set"
15
- ]
16
- },
17
- v6: {
18
- type: ipV6MongooseSchema.ipV6MongooseSchema,
19
- required: [
20
- function() {
21
- return !this.v4;
22
- },
23
- "v6 is required when v4 is not set"
24
- ]
25
- }
26
- },
27
- { _id: false }
28
- );
29
- exports.ipMongooseSchema = ipMongooseSchema;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongoose = require("mongoose");
4
- const ipV4MaskMongooseSchema = new mongoose.Schema(
5
- {
6
- // Type choice note: Int32 can't store 10 digits of the numeric presentation of ipV4,
7
- // so we use BigInt, which is supported by Mongoose and turned into Mongo's Long (Int64)
8
- rangeMinAsNumeric: { type: BigInt, required: true },
9
- rangeMaxAsNumeric: { type: BigInt, required: true },
10
- asNumeric: { type: Number, required: true }
11
- },
12
- { _id: false }
13
- );
14
- exports.ipV4MaskMongooseSchema = ipV4MaskMongooseSchema;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongoose = require("mongoose");
4
- const ipV4MaskMongooseSchema = require("./ipV4MaskMongooseSchema.cjs");
5
- const ipV4MongooseSchema = new mongoose.Schema(
6
- {
7
- // Type choice note: Int32 can't store 10 digits of the numeric presentation of ipV4,
8
- // so we use BigInt, which is supported by Mongoose and turned into Mongo's Long (Int64)
9
- asNumeric: { type: BigInt, required: true },
10
- asString: { type: String, required: true },
11
- mask: {
12
- type: ipV4MaskMongooseSchema.ipV4MaskMongooseSchema,
13
- required: false
14
- }
15
- },
16
- { _id: false }
17
- );
18
- exports.ipV4MongooseSchema = ipV4MongooseSchema;