@prosopo/user-access-policy 2.3.2

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 (263) hide show
  1. package/dist/blacklistInspector.d.ts +6 -0
  2. package/dist/blacklistInspector.d.ts.map +1 -0
  3. package/dist/blacklistInspector.js +2 -0
  4. package/dist/blacklistInspector.js.map +1 -0
  5. package/dist/imageCaptchaConfigResolver.d.ts +7 -0
  6. package/dist/imageCaptchaConfigResolver.d.ts.map +1 -0
  7. package/dist/imageCaptchaConfigResolver.js +2 -0
  8. package/dist/imageCaptchaConfigResolver.js.map +1 -0
  9. package/dist/index.d.ts +15 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +20 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/rules/api/apiRulePaths.d.ts +6 -0
  14. package/dist/rules/api/apiRulePaths.d.ts.map +1 -0
  15. package/dist/rules/api/apiRulePaths.js +6 -0
  16. package/dist/rules/api/apiRulePaths.js.map +1 -0
  17. package/dist/rules/api/apiRuleRoutesProvider.d.ts +9 -0
  18. package/dist/rules/api/apiRuleRoutesProvider.d.ts.map +1 -0
  19. package/dist/rules/api/apiRuleRoutesProvider.js +22 -0
  20. package/dist/rules/api/apiRuleRoutesProvider.js.map +1 -0
  21. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts +159 -0
  22. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts.map +1 -0
  23. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js +9 -0
  24. package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js.map +1 -0
  25. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts +12 -0
  26. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts.map +1 -0
  27. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js +18 -0
  28. package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js.map +1 -0
  29. package/dist/rules/api/getExpressApiRuleRateLimits.d.ts +8 -0
  30. package/dist/rules/api/getExpressApiRuleRateLimits.d.ts.map +1 -0
  31. package/dist/rules/api/getExpressApiRuleRateLimits.js +21 -0
  32. package/dist/rules/api/getExpressApiRuleRateLimits.js.map +1 -0
  33. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts +199 -0
  34. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts.map +1 -0
  35. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js +13 -0
  36. package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js.map +1 -0
  37. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts +15 -0
  38. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts.map +1 -0
  39. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js +50 -0
  40. package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js.map +1 -0
  41. package/dist/rules/blacklistRulesInspector.d.ts +12 -0
  42. package/dist/rules/blacklistRulesInspector.d.ts.map +1 -0
  43. package/dist/rules/blacklistRulesInspector.js +29 -0
  44. package/dist/rules/blacklistRulesInspector.js.map +1 -0
  45. package/dist/rules/imageCaptchaConfigRulesResolver.d.ts +19 -0
  46. package/dist/rules/imageCaptchaConfigRulesResolver.d.ts.map +1 -0
  47. package/dist/rules/imageCaptchaConfigRulesResolver.js +82 -0
  48. package/dist/rules/imageCaptchaConfigRulesResolver.js.map +1 -0
  49. package/dist/rules/mongoose/indexes/mongooseIndex.d.ts +7 -0
  50. package/dist/rules/mongoose/indexes/mongooseIndex.d.ts.map +1 -0
  51. package/dist/rules/mongoose/indexes/mongooseIndex.js +2 -0
  52. package/dist/rules/mongoose/indexes/mongooseIndex.js.map +1 -0
  53. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts +4 -0
  54. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts.map +1 -0
  55. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js +49 -0
  56. package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js.map +1 -0
  57. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts +4 -0
  58. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts.map +1 -0
  59. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js +136 -0
  60. package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js.map +1 -0
  61. package/dist/rules/mongoose/ruleMongooseRecord.d.ts +7 -0
  62. package/dist/rules/mongoose/ruleMongooseRecord.d.ts.map +1 -0
  63. package/dist/rules/mongoose/ruleMongooseRecord.js +2 -0
  64. package/dist/rules/mongoose/ruleMongooseRecord.js.map +1 -0
  65. package/dist/rules/mongoose/rulesMongooseStorage.d.ts +30 -0
  66. package/dist/rules/mongoose/rulesMongooseStorage.d.ts.map +1 -0
  67. package/dist/rules/mongoose/rulesMongooseStorage.js +143 -0
  68. package/dist/rules/mongoose/rulesMongooseStorage.js.map +1 -0
  69. package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts +43 -0
  70. package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts.map +1 -0
  71. package/dist/rules/mongoose/schemas/config/configMongooseSchema.js +10 -0
  72. package/dist/rules/mongoose/schemas/config/configMongooseSchema.js.map +1 -0
  73. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts +29 -0
  74. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts.map +1 -0
  75. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js +13 -0
  76. package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js.map +1 -0
  77. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts +5 -0
  78. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts.map +1 -0
  79. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js +15 -0
  80. package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js.map +1 -0
  81. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts +141 -0
  82. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts.map +1 -0
  83. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js +25 -0
  84. package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js.map +1 -0
  85. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts +36 -0
  86. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts.map +1 -0
  87. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js +8 -0
  88. package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js.map +1 -0
  89. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts +64 -0
  90. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts.map +1 -0
  91. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js +12 -0
  92. package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js.map +1 -0
  93. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts +36 -0
  94. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts.map +1 -0
  95. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js +17 -0
  96. package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js.map +1 -0
  97. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts +64 -0
  98. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts.map +1 -0
  99. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js +17 -0
  100. package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js.map +1 -0
  101. package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts +9 -0
  102. package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts.map +1 -0
  103. package/dist/rules/mongoose/schemas/ruleMongooseSchema.js +32 -0
  104. package/dist/rules/mongoose/schemas/ruleMongooseSchema.js.map +1 -0
  105. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts +5 -0
  106. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts.map +1 -0
  107. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js +2 -0
  108. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js.map +1 -0
  109. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts +12 -0
  110. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts.map +1 -0
  111. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js +7 -0
  112. package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js.map +1 -0
  113. package/dist/rules/rule/config/ruleConfig.d.ts +5 -0
  114. package/dist/rules/rule/config/ruleConfig.d.ts.map +1 -0
  115. package/dist/rules/rule/config/ruleConfig.js +2 -0
  116. package/dist/rules/rule/config/ruleConfig.js.map +1 -0
  117. package/dist/rules/rule/config/ruleConfigSchema.d.ts +24 -0
  118. package/dist/rules/rule/config/ruleConfigSchema.d.ts.map +1 -0
  119. package/dist/rules/rule/config/ruleConfigSchema.js +7 -0
  120. package/dist/rules/rule/config/ruleConfigSchema.js.map +1 -0
  121. package/dist/rules/rule/ip/ruleIp.d.ts +5 -0
  122. package/dist/rules/rule/ip/ruleIp.d.ts.map +1 -0
  123. package/dist/rules/rule/ip/ruleIp.js +2 -0
  124. package/dist/rules/rule/ip/ruleIp.js.map +1 -0
  125. package/dist/rules/rule/ip/ruleIpSchema.d.ts +108 -0
  126. package/dist/rules/rule/ip/ruleIpSchema.d.ts.map +1 -0
  127. package/dist/rules/rule/ip/ruleIpSchema.js +9 -0
  128. package/dist/rules/rule/ip/ruleIpSchema.js.map +1 -0
  129. package/dist/rules/rule/ip/ruleIpVersion.d.ts +6 -0
  130. package/dist/rules/rule/ip/ruleIpVersion.d.ts.map +1 -0
  131. package/dist/rules/rule/ip/ruleIpVersion.js +7 -0
  132. package/dist/rules/rule/ip/ruleIpVersion.js.map +1 -0
  133. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts +5 -0
  134. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts.map +1 -0
  135. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js +2 -0
  136. package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js.map +1 -0
  137. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts +15 -0
  138. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts.map +1 -0
  139. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js +8 -0
  140. package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js.map +1 -0
  141. package/dist/rules/rule/ip/v4/ruleIpV4.d.ts +5 -0
  142. package/dist/rules/rule/ip/v4/ruleIpV4.d.ts.map +1 -0
  143. package/dist/rules/rule/ip/v4/ruleIpV4.js +2 -0
  144. package/dist/rules/rule/ip/v4/ruleIpV4.js.map +1 -0
  145. package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts +35 -0
  146. package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts.map +1 -0
  147. package/dist/rules/rule/ip/v4/ruleIpV4Schema.js +9 -0
  148. package/dist/rules/rule/ip/v4/ruleIpV4Schema.js.map +1 -0
  149. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts +5 -0
  150. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts.map +1 -0
  151. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js +2 -0
  152. package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js.map +1 -0
  153. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts +15 -0
  154. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts.map +1 -0
  155. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js +8 -0
  156. package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js.map +1 -0
  157. package/dist/rules/rule/ip/v6/ruleIpV6.d.ts +5 -0
  158. package/dist/rules/rule/ip/v6/ruleIpV6.d.ts.map +1 -0
  159. package/dist/rules/rule/ip/v6/ruleIpV6.js +2 -0
  160. package/dist/rules/rule/ip/v6/ruleIpV6.js.map +1 -0
  161. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts +3 -0
  162. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts.map +1 -0
  163. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js +3 -0
  164. package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js.map +1 -0
  165. package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts +35 -0
  166. package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts.map +1 -0
  167. package/dist/rules/rule/ip/v6/ruleIpV6Schema.js +9 -0
  168. package/dist/rules/rule/ip/v6/ruleIpV6Schema.js.map +1 -0
  169. package/dist/rules/rule/rule.d.ts +12 -0
  170. package/dist/rules/rule/rule.d.ts.map +1 -0
  171. package/dist/rules/rule/rule.js +2 -0
  172. package/dist/rules/rule/rule.js.map +1 -0
  173. package/dist/rules/storage/filters/deleteRuleFilters.d.ts +8 -0
  174. package/dist/rules/storage/filters/deleteRuleFilters.d.ts.map +1 -0
  175. package/dist/rules/storage/filters/deleteRuleFilters.js +2 -0
  176. package/dist/rules/storage/filters/deleteRuleFilters.js.map +1 -0
  177. package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts +6 -0
  178. package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts.map +1 -0
  179. package/dist/rules/storage/filters/search/searchRuleFilterSettings.js +2 -0
  180. package/dist/rules/storage/filters/search/searchRuleFilterSettings.js.map +1 -0
  181. package/dist/rules/storage/filters/search/searchRuleFilters.d.ts +8 -0
  182. package/dist/rules/storage/filters/search/searchRuleFilters.d.ts.map +1 -0
  183. package/dist/rules/storage/filters/search/searchRuleFilters.js +2 -0
  184. package/dist/rules/storage/filters/search/searchRuleFilters.js.map +1 -0
  185. package/dist/rules/storage/ruleRecord.d.ts +6 -0
  186. package/dist/rules/storage/ruleRecord.d.ts.map +1 -0
  187. package/dist/rules/storage/ruleRecord.js +2 -0
  188. package/dist/rules/storage/ruleRecord.js.map +1 -0
  189. package/dist/rules/storage/rulesStorage.d.ts +14 -0
  190. package/dist/rules/storage/rulesStorage.d.ts.map +1 -0
  191. package/dist/rules/storage/rulesStorage.js +2 -0
  192. package/dist/rules/storage/rulesStorage.js.map +1 -0
  193. package/dist/tests/benchmark/commands/commandBase.d.ts +14 -0
  194. package/dist/tests/benchmark/commands/commandBase.d.ts.map +1 -0
  195. package/dist/tests/benchmark/commands/commandBase.js +22 -0
  196. package/dist/tests/benchmark/commands/commandBase.js.map +1 -0
  197. package/dist/tests/benchmark/commands/measureFindCommand.d.ts +14 -0
  198. package/dist/tests/benchmark/commands/measureFindCommand.d.ts.map +1 -0
  199. package/dist/tests/benchmark/commands/measureFindCommand.js +60 -0
  200. package/dist/tests/benchmark/commands/measureFindCommand.js.map +1 -0
  201. package/dist/tests/benchmark/commands/populateCommand.d.ts +18 -0
  202. package/dist/tests/benchmark/commands/populateCommand.d.ts.map +1 -0
  203. package/dist/tests/benchmark/commands/populateCommand.js +97 -0
  204. package/dist/tests/benchmark/commands/populateCommand.js.map +1 -0
  205. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts +5 -0
  206. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts.map +1 -0
  207. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js +2 -0
  208. package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js.map +1 -0
  209. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts +6 -0
  210. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts.map +1 -0
  211. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js +8 -0
  212. package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js.map +1 -0
  213. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts +2 -0
  214. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts.map +1 -0
  215. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js +8 -0
  216. package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js.map +1 -0
  217. package/dist/tests/benchmark/rulesStorageBenchmark.d.ts +12 -0
  218. package/dist/tests/benchmark/rulesStorageBenchmark.d.ts.map +1 -0
  219. package/dist/tests/benchmark/rulesStorageBenchmark.js +30 -0
  220. package/dist/tests/benchmark/rulesStorageBenchmark.js.map +1 -0
  221. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts +10 -0
  222. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts.map +1 -0
  223. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js +16 -0
  224. package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js.map +1 -0
  225. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts +6 -0
  226. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts.map +1 -0
  227. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js +2 -0
  228. package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js.map +1 -0
  229. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts +2 -0
  230. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts.map +1 -0
  231. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js +75 -0
  232. package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js.map +1 -0
  233. package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts +2 -0
  234. package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts.map +1 -0
  235. package/dist/tests/rules/blacklistRulesInspector.unit.test.js +58 -0
  236. package/dist/tests/rules/blacklistRulesInspector.unit.test.js.map +1 -0
  237. package/dist/tests/rules/loggerMockedInstance.d.ts +13 -0
  238. package/dist/tests/rules/loggerMockedInstance.d.ts.map +1 -0
  239. package/dist/tests/rules/loggerMockedInstance.js +14 -0
  240. package/dist/tests/rules/loggerMockedInstance.js.map +1 -0
  241. package/dist/tests/rules/mongoose/find.unit.test.d.ts +2 -0
  242. package/dist/tests/rules/mongoose/find.unit.test.d.ts.map +1 -0
  243. package/dist/tests/rules/mongoose/find.unit.test.js +202 -0
  244. package/dist/tests/rules/mongoose/find.unit.test.js.map +1 -0
  245. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts +2 -0
  246. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts.map +1 -0
  247. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js +131 -0
  248. package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js.map +1 -0
  249. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts +2 -0
  250. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts.map +1 -0
  251. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js +101 -0
  252. package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js.map +1 -0
  253. package/dist/tests/rules/mongoose/ip.unit.test.d.ts +2 -0
  254. package/dist/tests/rules/mongoose/ip.unit.test.d.ts.map +1 -0
  255. package/dist/tests/rules/mongoose/ip.unit.test.js +392 -0
  256. package/dist/tests/rules/mongoose/ip.unit.test.js.map +1 -0
  257. package/dist/tests/rules/storage/testRulesStorage.d.ts +17 -0
  258. package/dist/tests/rules/storage/testRulesStorage.d.ts.map +1 -0
  259. package/dist/tests/rules/storage/testRulesStorage.js +25 -0
  260. package/dist/tests/rules/storage/testRulesStorage.js.map +1 -0
  261. package/package.json +47 -0
  262. package/vite.cjs.config.ts +23 -0
  263. package/vite.test.config.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertValidation.unit.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/rules/mongoose/insert/insertValidation.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import { MongoMemoryServer } from "mongodb-memory-server";
2
+ import mongoose from "mongoose";
3
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
4
+ import { RulesMongooseStorage } from "../../../../rules/mongoose/rulesMongooseStorage.js";
5
+ import { getRuleMongooseSchema } from "../../../../rules/mongoose/schemas/getRuleMongooseSchema.js";
6
+ import { loggerMockedInstance } from "../../loggerMockedInstance.js";
7
+ describe("recordValidation", async () => {
8
+ let mongoServer;
9
+ let mongoConnection;
10
+ let rulesStorage;
11
+ let model;
12
+ beforeAll(async () => {
13
+ mongoServer = await MongoMemoryServer.create();
14
+ mongoConnection = await mongoose.connect(mongoServer.getUri());
15
+ model = mongoConnection.model("UserAccessPolicyRules", getRuleMongooseSchema());
16
+ await model.syncIndexes();
17
+ rulesStorage = new RulesMongooseStorage(loggerMockedInstance, model);
18
+ });
19
+ beforeEach(async () => {
20
+ await model.deleteMany({});
21
+ });
22
+ afterAll(async () => {
23
+ await mongoConnection.disconnect();
24
+ await mongoServer.stop();
25
+ });
26
+ it("skippedFieldIsUndefinedInRecordObject", async () => {
27
+ const recordData = {
28
+ isUserBlocked: true,
29
+ userId: "user",
30
+ };
31
+ const insertedRule = await rulesStorage.insert(recordData);
32
+ expect(undefined === insertedRule?.userIp).toBeTruthy();
33
+ });
34
+ it("userIdIsRequiredWhenUserIpIsNotSet", async () => {
35
+ const insertRecordWithoutUserIpAndId = async () => await rulesStorage.insert({
36
+ isUserBlocked: true,
37
+ });
38
+ expect(insertRecordWithoutUserIpAndId()).rejects.toThrow();
39
+ });
40
+ it("userIdIsOptionalWhenUserIpIsSet", async () => {
41
+ const insertRecordWithUserId = async () => await rulesStorage.insert({
42
+ isUserBlocked: true,
43
+ userIp: {
44
+ v4: {
45
+ asString: "0",
46
+ asNumeric: BigInt(0),
47
+ },
48
+ },
49
+ });
50
+ const record = await insertRecordWithUserId();
51
+ expect(record).not.toBeNull();
52
+ });
53
+ it("userIpIsRequiredWhenUserIdIsNotSet", async () => {
54
+ const insertRecordWithoutUserIpAndId = async () => await rulesStorage.insert({
55
+ isUserBlocked: true,
56
+ });
57
+ expect(insertRecordWithoutUserIpAndId()).rejects.toThrow();
58
+ });
59
+ it("userIpIsOptionalWhenUserIdIsSet", async () => {
60
+ const insertRecordWithUserId = async () => await rulesStorage.insert({
61
+ isUserBlocked: true,
62
+ userId: "userId",
63
+ });
64
+ const record = await insertRecordWithUserId();
65
+ expect(record).not.toBeNull();
66
+ });
67
+ it("rejectsRecordWithoutBothV4AndV6", async () => {
68
+ const insertRecordWithoutV4AndV6 = async () => await rulesStorage.insert({
69
+ isUserBlocked: true,
70
+ userIp: {},
71
+ });
72
+ expect(insertRecordWithoutV4AndV6()).rejects.toThrow();
73
+ });
74
+ it("v4IsOptionalWhenV6IsSet", async () => {
75
+ const insertRecordWithV4 = async () => await rulesStorage.insert({
76
+ isUserBlocked: true,
77
+ userIp: {
78
+ v6: {
79
+ asNumericString: "0",
80
+ asString: "0",
81
+ },
82
+ },
83
+ });
84
+ const record = await insertRecordWithV4();
85
+ expect(record).not.toBeNull();
86
+ });
87
+ it("v6IsOptionalWhenV4IsSet", async () => {
88
+ const insertRecordWithV4 = async () => await rulesStorage.insert({
89
+ isUserBlocked: true,
90
+ userIp: {
91
+ v4: {
92
+ asNumeric: BigInt(0),
93
+ asString: "0",
94
+ },
95
+ },
96
+ });
97
+ const record = await insertRecordWithV4();
98
+ expect(record).not.toBeNull();
99
+ });
100
+ });
101
+ //# sourceMappingURL=insertValidation.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertValidation.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/rules/mongoose/insert/insertValidation.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ip.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/rules/mongoose/ip.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,392 @@
1
+ import { Address4, Address6 } from "ip-address";
2
+ import { MongoMemoryServer } from "mongodb-memory-server";
3
+ import mongoose from "mongoose";
4
+ import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
5
+ import { RulesMongooseStorage } from "../../../rules/mongoose/rulesMongooseStorage.js";
6
+ import { getRuleMongooseSchema } from "../../../rules/mongoose/schemas/getRuleMongooseSchema.js";
7
+ import { RuleIpVersion } from "../../../rules/rule/ip/ruleIpVersion.js";
8
+ import { loggerMockedInstance } from "../loggerMockedInstance.js";
9
+ describe.each([
10
+ {
11
+ version: RuleIpVersion.v4,
12
+ fieldSuffix: "asNumeric",
13
+ lessMin: new Address4("192.168.0.255"),
14
+ min: new Address4("192.168.1.0"),
15
+ middle: new Address4("192.168.1.100"),
16
+ max: new Address4("192.168.1.255"),
17
+ greaterMax: new Address4("192.168.2.0"),
18
+ },
19
+ {
20
+ version: RuleIpVersion.v6,
21
+ fieldSuffix: "asNumericString",
22
+ lessMin: new Address6("::ffff:ffff:ffff:ffff"),
23
+ min: new Address6("2001:db8::"),
24
+ middle: new Address6("2001:db8::100"),
25
+ max: new Address6("2001:db8::ffff:ffff:ffff:ffff"),
26
+ greaterMax: new Address6("2001:db9::"),
27
+ },
28
+ {
29
+ version: RuleIpVersion.v6,
30
+ fieldSuffix: "asNumericString",
31
+ lessMin: new Address6("::1"),
32
+ min: new Address6("::2"),
33
+ middle: new Address6("::3"),
34
+ max: new Address6("::4"),
35
+ greaterMax: new Address6("::5"),
36
+ },
37
+ ])("RulesMongooseStorageIps", async (ipRange) => {
38
+ function getNumericIp(ipAddress) {
39
+ return RuleIpVersion.v4 === ipRange.version
40
+ ? ipAddress.bigInt()
41
+ : ipAddress.bigInt().toString();
42
+ }
43
+ const suffixWithUcfirst = ipRange.fieldSuffix.charAt(0).toUpperCase() + ipRange.fieldSuffix.slice(1);
44
+ const rangeMinKey = `rangeMin${suffixWithUcfirst}`;
45
+ const rangeMaxKey = `rangeMax${suffixWithUcfirst}`;
46
+ let mongoServer;
47
+ let mongoConnection;
48
+ let rulesStorage;
49
+ let model;
50
+ beforeAll(async () => {
51
+ mongoServer = await MongoMemoryServer.create();
52
+ mongoConnection = await mongoose.connect(mongoServer.getUri());
53
+ model = mongoConnection.model("UserAccessPolicyRules", getRuleMongooseSchema());
54
+ await model.syncIndexes();
55
+ rulesStorage = new RulesMongooseStorage(loggerMockedInstance, model);
56
+ });
57
+ beforeEach(async () => {
58
+ await model.deleteMany({});
59
+ });
60
+ afterAll(async () => {
61
+ await mongoConnection.disconnect();
62
+ await mongoServer.stop();
63
+ });
64
+ it("findsRecordByUserIp", async () => {
65
+ const rule = {
66
+ isUserBlocked: false,
67
+ userIp: {
68
+ [ipRange.version]: {
69
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
70
+ asString: ipRange.middle.bigInt().toString(),
71
+ },
72
+ },
73
+ };
74
+ const record = await rulesStorage.insert(rule);
75
+ const rules = await rulesStorage.find({
76
+ userIpAddress: ipRange.middle,
77
+ });
78
+ expect(rules.length).toBe(1);
79
+ expect(rules[0]?._id.toString()).toBe(record._id.toString());
80
+ });
81
+ it("findIgnoresRecordWithAnotherUserIp", async () => {
82
+ const rule = {
83
+ isUserBlocked: false,
84
+ userIp: {
85
+ [ipRange.version]: {
86
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
87
+ asString: ipRange.middle.bigInt().toString(),
88
+ },
89
+ },
90
+ };
91
+ await rulesStorage.insert(rule);
92
+ const rules = await rulesStorage.find({
93
+ userIpAddress: ipRange.max,
94
+ });
95
+ expect(rules.length).toBe(0);
96
+ });
97
+ it("findIgnoresRecordByUserIpMask", async () => {
98
+ const rule = {
99
+ isUserBlocked: false,
100
+ userIp: {
101
+ [ipRange.version]: {
102
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
103
+ asString: ipRange.min.bigInt().toString(),
104
+ mask: {
105
+ [rangeMinKey]: getNumericIp(ipRange.min),
106
+ [rangeMaxKey]: getNumericIp(ipRange.max),
107
+ asNumeric: 24,
108
+ },
109
+ },
110
+ },
111
+ };
112
+ const record = await rulesStorage.insert(rule);
113
+ const rules = await rulesStorage.find({
114
+ userIpAddress: ipRange.middle,
115
+ });
116
+ expect(rules.length).toBe(1);
117
+ expect(rules[0]?._id.toString()).toBe(record._id.toString());
118
+ });
119
+ it("findsRecordByUserIpMaskInRangeMin", async () => {
120
+ const rule = {
121
+ isUserBlocked: false,
122
+ userIp: {
123
+ [ipRange.version]: {
124
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
125
+ asString: ipRange.min.bigInt().toString(),
126
+ mask: {
127
+ [rangeMinKey]: getNumericIp(ipRange.min),
128
+ [rangeMaxKey]: getNumericIp(ipRange.max),
129
+ asNumeric: 24,
130
+ },
131
+ },
132
+ },
133
+ };
134
+ const record = await rulesStorage.insert(rule);
135
+ const rules = await rulesStorage.find({
136
+ userIpAddress: ipRange.min,
137
+ });
138
+ expect(rules.length).toBe(1);
139
+ expect(rules[0]?._id.toString()).toBe(record._id.toString());
140
+ });
141
+ it("findsRecordByUserIpMaskInRangeMax", async () => {
142
+ const rule = {
143
+ isUserBlocked: false,
144
+ userIp: {
145
+ [ipRange.version]: {
146
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
147
+ asString: ipRange.min.bigInt().toString(),
148
+ mask: {
149
+ [rangeMinKey]: getNumericIp(ipRange.min),
150
+ [rangeMaxKey]: getNumericIp(ipRange.max),
151
+ asNumeric: 24,
152
+ },
153
+ },
154
+ },
155
+ };
156
+ const record = await rulesStorage.insert(rule);
157
+ const rules = await rulesStorage.find({
158
+ userIpAddress: ipRange.max,
159
+ });
160
+ expect(rules.length).toBe(1);
161
+ expect(rules[0]?._id.toString()).toBe(record._id.toString());
162
+ });
163
+ it("findIgnoresRecordWithUserIpMaskOutOfRangeMin", async () => {
164
+ const rule = {
165
+ isUserBlocked: false,
166
+ userIp: {
167
+ [ipRange.version]: {
168
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
169
+ asString: ipRange.min.bigInt().toString(),
170
+ mask: {
171
+ [rangeMinKey]: getNumericIp(ipRange.min),
172
+ [rangeMaxKey]: getNumericIp(ipRange.max),
173
+ asNumeric: 24,
174
+ },
175
+ },
176
+ },
177
+ };
178
+ await rulesStorage.insert(rule);
179
+ const rules = await rulesStorage.find({
180
+ userIpAddress: ipRange.lessMin,
181
+ });
182
+ expect(rules.length).toBe(0);
183
+ });
184
+ it("findIgnoresRecordWithUserIpMaskOutOfRangeMax", async () => {
185
+ const rule = {
186
+ isUserBlocked: false,
187
+ userIp: {
188
+ [ipRange.version]: {
189
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
190
+ asString: ipRange.min.bigInt().toString(),
191
+ mask: {
192
+ [rangeMinKey]: getNumericIp(ipRange.min),
193
+ [rangeMaxKey]: getNumericIp(ipRange.max),
194
+ asNumeric: 24,
195
+ },
196
+ },
197
+ },
198
+ };
199
+ await rulesStorage.insert(rule);
200
+ const rules = await rulesStorage.find({
201
+ userIpAddress: ipRange.greaterMax,
202
+ });
203
+ expect(rules.length).toBe(0);
204
+ });
205
+ it.each([
206
+ {
207
+ clientId: "client",
208
+ },
209
+ {},
210
+ ])("acceptsUniqueIp", async (clientIdPart) => {
211
+ await rulesStorage.insert({
212
+ ...clientIdPart,
213
+ isUserBlocked: true,
214
+ userIp: {
215
+ [ipRange.version]: {
216
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
217
+ asString: ipRange.min.bigInt().toString(),
218
+ },
219
+ },
220
+ });
221
+ const anotherRecord = await rulesStorage.insert({
222
+ ...clientIdPart,
223
+ isUserBlocked: true,
224
+ userIp: {
225
+ [ipRange.version]: {
226
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.max),
227
+ asString: ipRange.max.bigInt().toString(),
228
+ },
229
+ },
230
+ });
231
+ expect(anotherRecord).not.toBeNull();
232
+ });
233
+ it.each([
234
+ {
235
+ clientId: "client",
236
+ },
237
+ {},
238
+ ])("rejectsDuplicatedIp", async (clientIdPart) => {
239
+ await rulesStorage.insert({
240
+ ...clientIdPart,
241
+ isUserBlocked: true,
242
+ userIp: {
243
+ [ipRange.version]: {
244
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
245
+ asString: ipRange.middle.bigInt().toString(),
246
+ },
247
+ },
248
+ });
249
+ const insertDuplicate = async () => await rulesStorage.insert({
250
+ ...clientIdPart,
251
+ isUserBlocked: true,
252
+ userIp: {
253
+ [ipRange.version]: {
254
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
255
+ asString: ipRange.middle.bigInt().toString(),
256
+ },
257
+ },
258
+ });
259
+ expect(insertDuplicate()).rejects.toThrow();
260
+ });
261
+ it.each([
262
+ {
263
+ clientId: "client",
264
+ },
265
+ {},
266
+ ])("acceptsUniqueIpMask", async (clientIdPart) => {
267
+ await rulesStorage.insert({
268
+ ...clientIdPart,
269
+ isUserBlocked: true,
270
+ userIp: {
271
+ [ipRange.version]: {
272
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
273
+ asString: ipRange.min.bigInt().toString(),
274
+ mask: {
275
+ [rangeMinKey]: getNumericIp(ipRange.min),
276
+ [rangeMaxKey]: getNumericIp(ipRange.max),
277
+ asNumeric: 24,
278
+ },
279
+ },
280
+ },
281
+ });
282
+ const anotherRecord = await rulesStorage.insert({
283
+ ...clientIdPart,
284
+ isUserBlocked: true,
285
+ userIp: {
286
+ [ipRange.version]: {
287
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.max),
288
+ asString: ipRange.max.bigInt().toString(),
289
+ mask: {
290
+ [rangeMinKey]: getNumericIp(ipRange.min),
291
+ [rangeMaxKey]: getNumericIp(ipRange.max),
292
+ asNumeric: 24,
293
+ },
294
+ },
295
+ },
296
+ });
297
+ expect(anotherRecord).not.toBeNull();
298
+ });
299
+ it.each([
300
+ {
301
+ clientId: "client",
302
+ },
303
+ {},
304
+ ])("rejectsDuplicatedIpMask", async (clientIdPart) => {
305
+ await rulesStorage.insert({
306
+ ...clientIdPart,
307
+ isUserBlocked: true,
308
+ userIp: {
309
+ [ipRange.version]: {
310
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
311
+ asString: ipRange.min.bigInt().toString(),
312
+ mask: {
313
+ [rangeMinKey]: getNumericIp(ipRange.min),
314
+ [rangeMaxKey]: getNumericIp(ipRange.max),
315
+ asNumeric: 24,
316
+ },
317
+ },
318
+ },
319
+ });
320
+ const insertDuplicate = async () => await rulesStorage.insert({
321
+ ...clientIdPart,
322
+ isUserBlocked: true,
323
+ userIp: {
324
+ [ipRange.version]: {
325
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.min),
326
+ asString: ipRange.min.bigInt().toString(),
327
+ mask: {
328
+ [rangeMinKey]: getNumericIp(ipRange.min),
329
+ [rangeMaxKey]: getNumericIp(ipRange.max),
330
+ asNumeric: 24,
331
+ },
332
+ },
333
+ },
334
+ });
335
+ expect(insertDuplicate()).rejects.toThrow();
336
+ });
337
+ it("globalAndClientCanHaveSameIp", async () => {
338
+ await rulesStorage.insert({
339
+ isUserBlocked: true,
340
+ userIp: {
341
+ [ipRange.version]: {
342
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
343
+ asString: ipRange.middle.bigInt().toString(),
344
+ },
345
+ },
346
+ });
347
+ const anotherRecord = await rulesStorage.insert({
348
+ clientId: "client",
349
+ isUserBlocked: true,
350
+ userIp: {
351
+ [ipRange.version]: {
352
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
353
+ asString: ipRange.middle.bigInt().toString(),
354
+ },
355
+ },
356
+ });
357
+ expect(anotherRecord).not.toBeNull();
358
+ });
359
+ it("globalAndClientCanHaveSameIpMask", async () => {
360
+ await rulesStorage.insert({
361
+ isUserBlocked: true,
362
+ userIp: {
363
+ [ipRange.version]: {
364
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
365
+ asString: ipRange.middle.bigInt().toString(),
366
+ mask: {
367
+ [rangeMinKey]: getNumericIp(ipRange.min),
368
+ [rangeMaxKey]: getNumericIp(ipRange.max),
369
+ asNumeric: 24,
370
+ },
371
+ },
372
+ },
373
+ });
374
+ const anotherRecord = await rulesStorage.insert({
375
+ clientId: "client",
376
+ isUserBlocked: true,
377
+ userIp: {
378
+ [ipRange.version]: {
379
+ [ipRange.fieldSuffix]: getNumericIp(ipRange.middle),
380
+ asString: ipRange.middle.bigInt().toString(),
381
+ mask: {
382
+ [rangeMinKey]: getNumericIp(ipRange.min),
383
+ [rangeMaxKey]: getNumericIp(ipRange.max),
384
+ asNumeric: 24,
385
+ },
386
+ },
387
+ },
388
+ });
389
+ expect(anotherRecord).not.toBeNull();
390
+ });
391
+ });
392
+ //# sourceMappingURL=ip.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/rules/mongoose/ip.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Rule } from "../../../rules/rule/rule.js";
2
+ import type { DeleteRuleFilters } from "../../../rules/storage/filters/deleteRuleFilters.js";
3
+ import type { SearchRuleFilterSettings } from "../../../rules/storage/filters/search/searchRuleFilterSettings.js";
4
+ import type { SearchRuleFilters } from "../../../rules/storage/filters/search/searchRuleFilters.js";
5
+ import type { RuleRecord } from "../../../rules/storage/ruleRecord.js";
6
+ import type { RulesStorage } from "../../../rules/storage/rulesStorage.js";
7
+ declare class TestRulesStorage implements RulesStorage {
8
+ ruleRecords: RuleRecord[];
9
+ constructor(ruleRecords?: RuleRecord[]);
10
+ insert(record: Rule): Promise<RuleRecord>;
11
+ insertMany(records: Rule[]): Promise<RuleRecord[]>;
12
+ find(filters: SearchRuleFilters, filterSettings?: SearchRuleFilterSettings): Promise<RuleRecord[]>;
13
+ deleteMany(recordFilters: DeleteRuleFilters[]): Promise<void>;
14
+ countRecords(): Promise<number>;
15
+ }
16
+ export { TestRulesStorage };
17
+ //# sourceMappingURL=testRulesStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRulesStorage.d.ts","sourceRoot":"","sources":["../../../../src/tests/rules/storage/testRulesStorage.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAClH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAE3E,cAAM,gBAAiB,YAAW,YAAY;IAC1B,WAAW,EAAE,UAAU,EAAE;gBAAzB,WAAW,GAAE,UAAU,EAAO;IAE3C,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlD,IAAI,CACT,OAAO,EAAE,iBAAiB,EAC1B,cAAc,CAAC,EAAE,wBAAwB,GACvC,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlB,UAAU,CAAC,aAAa,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAGrC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ class TestRulesStorage {
2
+ constructor(ruleRecords = []) {
3
+ this.ruleRecords = ruleRecords;
4
+ }
5
+ async insert(record) {
6
+ return Promise.resolve({
7
+ isUserBlocked: false,
8
+ _id: "none",
9
+ });
10
+ }
11
+ async insertMany(records) {
12
+ return Promise.resolve(this.ruleRecords);
13
+ }
14
+ async find(filters, filterSettings) {
15
+ return Promise.resolve(this.ruleRecords);
16
+ }
17
+ async deleteMany(recordFilters) {
18
+ return Promise.resolve();
19
+ }
20
+ async countRecords() {
21
+ return Promise.resolve(this.ruleRecords.length);
22
+ }
23
+ }
24
+ export { TestRulesStorage };
25
+ //# sourceMappingURL=testRulesStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testRulesStorage.js","sourceRoot":"","sources":["../../../../src/tests/rules/storage/testRulesStorage.ts"],"names":[],"mappings":"AAqBA,MAAM,gBAAgB;IACrB,YAAmB,cAA4B,EAAE;QAA9B,gBAAW,GAAX,WAAW,CAAmB;IAAG,CAAC;IAErD,KAAK,CAAC,MAAM,CAAC,MAAY;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC;YACtB,aAAa,EAAE,KAAK;YACpB,GAAG,EAAE,MAAM;SACX,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CACT,OAA0B,EAC1B,cAAyC;QAEzC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,aAAkC;QAClD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;CACD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@prosopo/user-access-policy",
3
+ "version": "2.3.2",
4
+ "main": "dist/index.js",
5
+ "type": "module",
6
+ "engines": {
7
+ "node": "20",
8
+ "npm": ">=9"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/cjs/index.cjs"
14
+ }
15
+ },
16
+ "scripts": {
17
+ "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts",
18
+ "clean": "tsc --build --clean",
19
+ "build": "tsc --build --verbose",
20
+ "build:cjs": "npx vite --config vite.cjs.config.ts build",
21
+ "storage:benchmark:mongoose": "npx tsx ./src/rule/storage/benchmark/mongooseRulesStorageBenchmark.ts",
22
+ "storage:benchmark:mongoose:populate": "npm run storage:benchmark:mongoose -- populate --db-url=mongodb://localhost:27017 --entities-count-per-type=100000",
23
+ "storage:benchmark:mongoose:measure-find": "npm run storage:benchmark:mongoose -- measure-find --db-url=mongodb://localhost:27017 --target-ip-v4=0.0.136.184 --target-ip-v6=0000:0000:0000:0000:0000:0000:0000:7530"
24
+ },
25
+ "dependencies": {
26
+ "@prosopo/api-route": "2.3.2",
27
+ "@prosopo/common": "2.3.2",
28
+ "@prosopo/types": "2.3.2",
29
+ "ip-address": "10.0.1",
30
+ "mongoose": "8.6.2",
31
+ "zod": "3.23.8"
32
+ },
33
+ "devDependencies": {
34
+ "mongodb": "6.9.0",
35
+ "mongodb-memory-server": "10.0.0",
36
+ "vite": "5.4.6",
37
+ "vitest": "2.1.1",
38
+ "yargs": "17.7.2"
39
+ },
40
+ "author": "PROSOPO LIMITED <info@prosopo.io>",
41
+ "license": "Apache-2.0",
42
+ "bugs": {
43
+ "url": "https://github.com/prosopo/captcha/issues"
44
+ },
45
+ "homepage": "https://github.com/prosopo/captcha#readme",
46
+ "sideEffects": false
47
+ }
@@ -0,0 +1,23 @@
1
+ // Copyright 2021-2024 Prosopo (UK) Ltd.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ import path from "node:path";
16
+ import { ViteCommonJSConfig } from "@prosopo/config";
17
+
18
+ export default function () {
19
+ return ViteCommonJSConfig(
20
+ "user-access-policy",
21
+ path.resolve("./tsconfig.cjs.json"),
22
+ );
23
+ }