@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.
- package/CHANGELOG.md +80 -0
- package/dist/accessPolicy.d.ts +169 -0
- package/dist/accessPolicy.d.ts.map +1 -0
- package/dist/accessPolicy.js +65 -0
- package/dist/accessPolicy.js.map +1 -0
- package/dist/accessPolicyResolver.d.ts +115 -0
- package/dist/accessPolicyResolver.d.ts.map +1 -0
- package/dist/accessPolicyResolver.js +44 -0
- package/dist/accessPolicyResolver.js.map +1 -0
- package/dist/accessRules.d.ts +16 -0
- package/dist/accessRules.d.ts.map +1 -0
- package/dist/accessRules.js +8 -0
- package/dist/accessRules.js.map +1 -0
- package/dist/api/accessRuleApiRoutes.d.ts +27 -0
- package/dist/api/accessRuleApiRoutes.d.ts.map +1 -0
- package/dist/api/accessRuleApiRoutes.js +56 -0
- package/dist/api/accessRuleApiRoutes.js.map +1 -0
- package/dist/api/deleteAllRulesEndpoint.d.ts +12 -0
- package/dist/api/deleteAllRulesEndpoint.d.ts.map +1 -0
- package/dist/api/deleteAllRulesEndpoint.js +21 -0
- package/dist/api/deleteAllRulesEndpoint.js.map +1 -0
- package/dist/api/deleteRulesEndpoint.d.ts +116 -0
- package/dist/api/deleteRulesEndpoint.d.ts.map +1 -0
- package/dist/api/deleteRulesEndpoint.js +31 -0
- package/dist/api/deleteRulesEndpoint.js.map +1 -0
- package/dist/api/insertRulesEndpoint.d.ts +22 -0
- package/dist/api/insertRulesEndpoint.d.ts.map +1 -0
- package/dist/api/insertRulesEndpoint.js +62 -0
- package/dist/api/insertRulesEndpoint.js.map +1 -0
- package/dist/cjs/accessPolicy.cjs +79 -0
- package/dist/cjs/accessPolicyResolver.cjs +87 -0
- package/dist/cjs/accessRules.cjs +11 -0
- package/dist/cjs/api/accessRuleApiRoutes.cjs +79 -0
- package/dist/cjs/api/deleteAllRulesEndpoint.cjs +24 -0
- package/dist/cjs/api/deleteRulesEndpoint.cjs +34 -0
- package/dist/cjs/api/insertRulesEndpoint.cjs +65 -0
- package/dist/cjs/index.cjs +22 -23
- package/dist/cjs/redis/redisAccessRules.cjs +140 -0
- package/dist/cjs/redis/redisAccessRulesIndex.cjs +103 -0
- package/dist/cjs/redis/redisIndex.cjs +22 -0
- package/dist/cjs/util.cjs +5 -0
- package/dist/index.d.ts +13 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -20
- package/dist/index.js.map +1 -1
- package/dist/redis/redisAccessRules.d.ts +7 -0
- package/dist/redis/redisAccessRules.d.ts.map +1 -0
- package/dist/redis/redisAccessRules.js +105 -0
- package/dist/redis/redisAccessRules.js.map +1 -0
- package/dist/redis/redisAccessRulesIndex.d.ts +12 -0
- package/dist/redis/redisAccessRulesIndex.d.ts.map +1 -0
- package/dist/redis/redisAccessRulesIndex.js +81 -0
- package/dist/redis/redisAccessRulesIndex.js.map +1 -0
- package/dist/redis/redisIndex.d.ts +9 -0
- package/dist/redis/redisIndex.d.ts.map +1 -0
- package/dist/redis/redisIndex.js +23 -0
- package/dist/redis/redisIndex.js.map +1 -0
- package/dist/tests/accessPolicy.test.d.ts +2 -0
- package/dist/tests/accessPolicy.test.d.ts.map +1 -0
- package/dist/tests/accessPolicy.test.js +27 -0
- package/dist/tests/accessPolicy.test.js.map +1 -0
- package/dist/tests/redis/redisAccessRules.test.d.ts +2 -0
- package/dist/tests/redis/redisAccessRules.test.d.ts.map +1 -0
- package/dist/tests/redis/redisAccessRules.test.js +398 -0
- package/dist/tests/redis/redisAccessRules.test.js.map +1 -0
- package/dist/tests/redis/redisIndex.test.d.ts +2 -0
- package/dist/tests/redis/redisIndex.test.d.ts.map +1 -0
- package/dist/tests/redis/redisIndex.test.js +84 -0
- package/dist/tests/redis/redisIndex.test.js.map +1 -0
- package/dist/tests/redis/testRedisClient.d.ts +3 -0
- package/dist/tests/redis/testRedisClient.d.ts.map +1 -0
- package/dist/tests/redis/testRedisClient.js +8 -0
- package/dist/tests/redis/testRedisClient.js.map +1 -0
- package/dist/tests/testLogger.d.ts +4 -0
- package/dist/tests/testLogger.d.ts.map +1 -0
- package/dist/tests/testLogger.js +22 -0
- package/dist/tests/testLogger.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +3 -0
- package/dist/util.js.map +1 -0
- package/package.json +16 -14
- package/vite.cjs.config.ts +4 -6
- package/vite.config.ts +39 -0
- package/vite.test.config.ts +2 -1
- package/dist/blacklistInspector.d.ts +0 -6
- package/dist/blacklistInspector.d.ts.map +0 -1
- package/dist/blacklistInspector.js +0 -2
- package/dist/blacklistInspector.js.map +0 -1
- package/dist/cjs/rules/api/apiRulePaths.cjs +0 -7
- package/dist/cjs/rules/api/apiRuleRoutesProvider.cjs +0 -23
- package/dist/cjs/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.cjs +0 -13
- package/dist/cjs/rules/api/deleteMany/apiDeleteManyRulesEndpoint.cjs +0 -19
- package/dist/cjs/rules/api/getExpressApiRuleRateLimits.cjs +0 -18
- package/dist/cjs/rules/api/insertMany/apiInsertManyRulesArgsSchema.cjs +0 -39
- package/dist/cjs/rules/api/insertMany/apiInsertManyRulesEndpoint.cjs +0 -193
- package/dist/cjs/rules/blacklistRulesInspector.cjs +0 -44
- package/dist/cjs/rules/imageCaptchaConfigRulesResolver.cjs +0 -115
- package/dist/cjs/rules/mongoose/indexes/rulePerformanceMongooseIndexes.cjs +0 -75
- package/dist/cjs/rules/mongoose/indexes/ruleUniqueMongooseIndexes.cjs +0 -137
- package/dist/cjs/rules/mongoose/rulesMongooseStorage.cjs +0 -177
- package/dist/cjs/rules/mongoose/schemas/config/configMongooseSchema.cjs +0 -14
- package/dist/cjs/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.cjs +0 -17
- package/dist/cjs/rules/mongoose/schemas/getRuleMongooseSchema.cjs +0 -19
- package/dist/cjs/rules/mongoose/schemas/ip/ipMongooseSchema.cjs +0 -29
- package/dist/cjs/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.cjs +0 -14
- package/dist/cjs/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.cjs +0 -18
- package/dist/cjs/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.cjs +0 -34
- package/dist/cjs/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.cjs +0 -33
- package/dist/cjs/rules/mongoose/schemas/ruleMongooseSchema.cjs +0 -43
- package/dist/cjs/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.cjs +0 -8
- package/dist/cjs/rules/rule/config/ruleConfigSchema.cjs +0 -8
- package/dist/cjs/rules/rule/ip/ruleIpSchema.cjs +0 -10
- package/dist/cjs/rules/rule/ip/ruleIpVersion.cjs +0 -8
- package/dist/cjs/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.cjs +0 -9
- package/dist/cjs/rules/rule/ip/v4/ruleIpV4Schema.cjs +0 -10
- package/dist/cjs/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.cjs +0 -9
- package/dist/cjs/rules/rule/ip/v6/ruleIpV6NumericMaxLength.cjs +0 -4
- package/dist/cjs/rules/rule/ip/v6/ruleIpV6Schema.cjs +0 -10
- package/dist/imageCaptchaConfigResolver.d.ts +0 -7
- package/dist/imageCaptchaConfigResolver.d.ts.map +0 -1
- package/dist/imageCaptchaConfigResolver.js +0 -2
- package/dist/imageCaptchaConfigResolver.js.map +0 -1
- package/dist/rules/api/apiRulePaths.d.ts +0 -5
- package/dist/rules/api/apiRulePaths.d.ts.map +0 -1
- package/dist/rules/api/apiRulePaths.js +0 -5
- package/dist/rules/api/apiRulePaths.js.map +0 -1
- package/dist/rules/api/apiRuleRoutesProvider.d.ts +0 -9
- package/dist/rules/api/apiRuleRoutesProvider.d.ts.map +0 -1
- package/dist/rules/api/apiRuleRoutesProvider.js +0 -22
- package/dist/rules/api/apiRuleRoutesProvider.js.map +0 -1
- package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts +0 -162
- package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.d.ts.map +0 -1
- package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js +0 -10
- package/dist/rules/api/deleteMany/apiDeleteManyRulesArgsSchema.js.map +0 -1
- package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts +0 -12
- package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.d.ts.map +0 -1
- package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js +0 -18
- package/dist/rules/api/deleteMany/apiDeleteManyRulesEndpoint.js.map +0 -1
- package/dist/rules/api/getExpressApiRuleRateLimits.d.ts +0 -8
- package/dist/rules/api/getExpressApiRuleRateLimits.d.ts.map +0 -1
- package/dist/rules/api/getExpressApiRuleRateLimits.js +0 -21
- package/dist/rules/api/getExpressApiRuleRateLimits.js.map +0 -1
- package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts +0 -163
- package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.d.ts.map +0 -1
- package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js +0 -37
- package/dist/rules/api/insertMany/apiInsertManyRulesArgsSchema.js.map +0 -1
- package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts +0 -18
- package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.d.ts.map +0 -1
- package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js +0 -195
- package/dist/rules/api/insertMany/apiInsertManyRulesEndpoint.js.map +0 -1
- package/dist/rules/blacklistRulesInspector.d.ts +0 -12
- package/dist/rules/blacklistRulesInspector.d.ts.map +0 -1
- package/dist/rules/blacklistRulesInspector.js +0 -38
- package/dist/rules/blacklistRulesInspector.js.map +0 -1
- package/dist/rules/imageCaptchaConfigRulesResolver.d.ts +0 -21
- package/dist/rules/imageCaptchaConfigRulesResolver.d.ts.map +0 -1
- package/dist/rules/imageCaptchaConfigRulesResolver.js +0 -92
- package/dist/rules/imageCaptchaConfigRulesResolver.js.map +0 -1
- package/dist/rules/mongoose/indexes/mongooseIndex.d.ts +0 -7
- package/dist/rules/mongoose/indexes/mongooseIndex.d.ts.map +0 -1
- package/dist/rules/mongoose/indexes/mongooseIndex.js +0 -2
- package/dist/rules/mongoose/indexes/mongooseIndex.js.map +0 -1
- package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts +0 -4
- package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.d.ts.map +0 -1
- package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js +0 -74
- package/dist/rules/mongoose/indexes/rulePerformanceMongooseIndexes.js.map +0 -1
- package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts +0 -4
- package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.d.ts.map +0 -1
- package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js +0 -136
- package/dist/rules/mongoose/indexes/ruleUniqueMongooseIndexes.js.map +0 -1
- package/dist/rules/mongoose/ruleMongooseRecord.d.ts +0 -7
- package/dist/rules/mongoose/ruleMongooseRecord.d.ts.map +0 -1
- package/dist/rules/mongoose/ruleMongooseRecord.js +0 -2
- package/dist/rules/mongoose/ruleMongooseRecord.js.map +0 -1
- package/dist/rules/mongoose/rulesMongooseStorage.d.ts +0 -30
- package/dist/rules/mongoose/rulesMongooseStorage.d.ts.map +0 -1
- package/dist/rules/mongoose/rulesMongooseStorage.js +0 -177
- package/dist/rules/mongoose/rulesMongooseStorage.js.map +0 -1
- package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts +0 -43
- package/dist/rules/mongoose/schemas/config/configMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/config/configMongooseSchema.js +0 -10
- package/dist/rules/mongoose/schemas/config/configMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts +0 -29
- package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js +0 -13
- package/dist/rules/mongoose/schemas/config/imageCaptchaConfigMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts +0 -5
- package/dist/rules/mongoose/schemas/getRuleMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js +0 -15
- package/dist/rules/mongoose/schemas/getRuleMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts +0 -141
- package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js +0 -25
- package/dist/rules/mongoose/schemas/ip/ipMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts +0 -36
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js +0 -8
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MaskMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts +0 -64
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js +0 -12
- package/dist/rules/mongoose/schemas/ip/v4/ipV4MongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts +0 -36
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js +0 -17
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MaskMongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts +0 -64
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js +0 -17
- package/dist/rules/mongoose/schemas/ip/v6/ipV6MongooseSchema.js.map +0 -1
- package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts +0 -9
- package/dist/rules/mongoose/schemas/ruleMongooseSchema.d.ts.map +0 -1
- package/dist/rules/mongoose/schemas/ruleMongooseSchema.js +0 -42
- package/dist/rules/mongoose/schemas/ruleMongooseSchema.js.map +0 -1
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts +0 -5
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.d.ts.map +0 -1
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js +0 -2
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfig.js.map +0 -1
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts +0 -12
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.d.ts.map +0 -1
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js +0 -7
- package/dist/rules/rule/config/imageCaptcha/imageCaptchaConfigSchema.js.map +0 -1
- package/dist/rules/rule/config/ruleConfig.d.ts +0 -5
- package/dist/rules/rule/config/ruleConfig.d.ts.map +0 -1
- package/dist/rules/rule/config/ruleConfig.js +0 -2
- package/dist/rules/rule/config/ruleConfig.js.map +0 -1
- package/dist/rules/rule/config/ruleConfigSchema.d.ts +0 -24
- package/dist/rules/rule/config/ruleConfigSchema.d.ts.map +0 -1
- package/dist/rules/rule/config/ruleConfigSchema.js +0 -7
- package/dist/rules/rule/config/ruleConfigSchema.js.map +0 -1
- package/dist/rules/rule/ip/ruleIp.d.ts +0 -5
- package/dist/rules/rule/ip/ruleIp.d.ts.map +0 -1
- package/dist/rules/rule/ip/ruleIp.js +0 -2
- package/dist/rules/rule/ip/ruleIp.js.map +0 -1
- package/dist/rules/rule/ip/ruleIpSchema.d.ts +0 -108
- package/dist/rules/rule/ip/ruleIpSchema.d.ts.map +0 -1
- package/dist/rules/rule/ip/ruleIpSchema.js +0 -9
- package/dist/rules/rule/ip/ruleIpSchema.js.map +0 -1
- package/dist/rules/rule/ip/ruleIpVersion.d.ts +0 -6
- package/dist/rules/rule/ip/ruleIpVersion.d.ts.map +0 -1
- package/dist/rules/rule/ip/ruleIpVersion.js +0 -7
- package/dist/rules/rule/ip/ruleIpVersion.js.map +0 -1
- package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts +0 -5
- package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.d.ts.map +0 -1
- package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js +0 -2
- package/dist/rules/rule/ip/v4/mask/ruleIpV4Mask.js.map +0 -1
- package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts +0 -15
- package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.d.ts.map +0 -1
- package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js +0 -8
- package/dist/rules/rule/ip/v4/mask/ruleIpV4MaskSchema.js.map +0 -1
- package/dist/rules/rule/ip/v4/ruleIpV4.d.ts +0 -5
- package/dist/rules/rule/ip/v4/ruleIpV4.d.ts.map +0 -1
- package/dist/rules/rule/ip/v4/ruleIpV4.js +0 -2
- package/dist/rules/rule/ip/v4/ruleIpV4.js.map +0 -1
- package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts +0 -35
- package/dist/rules/rule/ip/v4/ruleIpV4Schema.d.ts.map +0 -1
- package/dist/rules/rule/ip/v4/ruleIpV4Schema.js +0 -9
- package/dist/rules/rule/ip/v4/ruleIpV4Schema.js.map +0 -1
- package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts +0 -5
- package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.d.ts.map +0 -1
- package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js +0 -2
- package/dist/rules/rule/ip/v6/mask/ruleIpV6Mask.js.map +0 -1
- package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts +0 -15
- package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.d.ts.map +0 -1
- package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js +0 -8
- package/dist/rules/rule/ip/v6/mask/ruleIpV6MaskSchema.js.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6.d.ts +0 -5
- package/dist/rules/rule/ip/v6/ruleIpV6.d.ts.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6.js +0 -2
- package/dist/rules/rule/ip/v6/ruleIpV6.js.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts +0 -3
- package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.d.ts.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js +0 -3
- package/dist/rules/rule/ip/v6/ruleIpV6NumericMaxLength.js.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts +0 -35
- package/dist/rules/rule/ip/v6/ruleIpV6Schema.d.ts.map +0 -1
- package/dist/rules/rule/ip/v6/ruleIpV6Schema.js +0 -9
- package/dist/rules/rule/ip/v6/ruleIpV6Schema.js.map +0 -1
- package/dist/rules/rule/rule.d.ts +0 -14
- package/dist/rules/rule/rule.d.ts.map +0 -1
- package/dist/rules/rule/rule.js +0 -2
- package/dist/rules/rule/rule.js.map +0 -1
- package/dist/rules/storage/filters/deleteRuleFilters.d.ts +0 -9
- package/dist/rules/storage/filters/deleteRuleFilters.d.ts.map +0 -1
- package/dist/rules/storage/filters/deleteRuleFilters.js +0 -2
- package/dist/rules/storage/filters/deleteRuleFilters.js.map +0 -1
- package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts +0 -6
- package/dist/rules/storage/filters/search/searchRuleFilterSettings.d.ts.map +0 -1
- package/dist/rules/storage/filters/search/searchRuleFilterSettings.js +0 -2
- package/dist/rules/storage/filters/search/searchRuleFilterSettings.js.map +0 -1
- package/dist/rules/storage/filters/search/searchRuleFilters.d.ts +0 -9
- package/dist/rules/storage/filters/search/searchRuleFilters.d.ts.map +0 -1
- package/dist/rules/storage/filters/search/searchRuleFilters.js +0 -2
- package/dist/rules/storage/filters/search/searchRuleFilters.js.map +0 -1
- package/dist/rules/storage/ruleRecord.d.ts +0 -6
- package/dist/rules/storage/ruleRecord.d.ts.map +0 -1
- package/dist/rules/storage/ruleRecord.js +0 -2
- package/dist/rules/storage/ruleRecord.js.map +0 -1
- package/dist/rules/storage/rulesStorage.d.ts +0 -14
- package/dist/rules/storage/rulesStorage.d.ts.map +0 -1
- package/dist/rules/storage/rulesStorage.js +0 -2
- package/dist/rules/storage/rulesStorage.js.map +0 -1
- package/dist/tests/benchmark/commands/commandBase.d.ts +0 -14
- package/dist/tests/benchmark/commands/commandBase.d.ts.map +0 -1
- package/dist/tests/benchmark/commands/commandBase.js +0 -22
- package/dist/tests/benchmark/commands/commandBase.js.map +0 -1
- package/dist/tests/benchmark/commands/measureFindCommand.d.ts +0 -14
- package/dist/tests/benchmark/commands/measureFindCommand.d.ts.map +0 -1
- package/dist/tests/benchmark/commands/measureFindCommand.js +0 -60
- package/dist/tests/benchmark/commands/measureFindCommand.js.map +0 -1
- package/dist/tests/benchmark/commands/populateCommand.d.ts +0 -18
- package/dist/tests/benchmark/commands/populateCommand.d.ts.map +0 -1
- package/dist/tests/benchmark/commands/populateCommand.js +0 -97
- package/dist/tests/benchmark/commands/populateCommand.js.map +0 -1
- package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts +0 -5
- package/dist/tests/benchmark/connectionCleaner/connectionCleaner.d.ts.map +0 -1
- package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js +0 -2
- package/dist/tests/benchmark/connectionCleaner/connectionCleaner.js.map +0 -1
- package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts +0 -6
- package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.d.ts.map +0 -1
- package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js +0 -8
- package/dist/tests/benchmark/connectionCleaner/mongooseConnectionCleaner.js.map +0 -1
- package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts +0 -2
- package/dist/tests/benchmark/mongooseRulesStorageBenchmark.d.ts.map +0 -1
- package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js +0 -8
- package/dist/tests/benchmark/mongooseRulesStorageBenchmark.js.map +0 -1
- package/dist/tests/benchmark/rulesStorageBenchmark.d.ts +0 -12
- package/dist/tests/benchmark/rulesStorageBenchmark.d.ts.map +0 -1
- package/dist/tests/benchmark/rulesStorageBenchmark.js +0 -30
- package/dist/tests/benchmark/rulesStorageBenchmark.js.map +0 -1
- package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts +0 -10
- package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.d.ts.map +0 -1
- package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js +0 -16
- package/dist/tests/benchmark/storageFactory/mongooseRulesStorageFactory.js.map +0 -1
- package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts +0 -6
- package/dist/tests/benchmark/storageFactory/rulesStorageFactory.d.ts.map +0 -1
- package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js +0 -2
- package/dist/tests/benchmark/storageFactory/rulesStorageFactory.js.map +0 -1
- package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts +0 -2
- package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.d.ts.map +0 -1
- package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js +0 -75
- package/dist/tests/rules/ImageCaptchaConfigRulesResolver.test.js.map +0 -1
- package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts +0 -2
- package/dist/tests/rules/blacklistRulesInspector.unit.test.d.ts.map +0 -1
- package/dist/tests/rules/blacklistRulesInspector.unit.test.js +0 -58
- package/dist/tests/rules/blacklistRulesInspector.unit.test.js.map +0 -1
- package/dist/tests/rules/loggerMockedInstance.d.ts +0 -13
- package/dist/tests/rules/loggerMockedInstance.d.ts.map +0 -1
- package/dist/tests/rules/loggerMockedInstance.js +0 -14
- package/dist/tests/rules/loggerMockedInstance.js.map +0 -1
- package/dist/tests/rules/mongoose/find.unit.test.d.ts +0 -2
- package/dist/tests/rules/mongoose/find.unit.test.d.ts.map +0 -1
- package/dist/tests/rules/mongoose/find.unit.test.js +0 -202
- package/dist/tests/rules/mongoose/find.unit.test.js.map +0 -1
- package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts +0 -2
- package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.d.ts.map +0 -1
- package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js +0 -131
- package/dist/tests/rules/mongoose/insert/insertIpV6Formatting.unit.test.js.map +0 -1
- package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts +0 -2
- package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.d.ts.map +0 -1
- package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js +0 -101
- package/dist/tests/rules/mongoose/insert/insertValidation.unit.test.js.map +0 -1
- package/dist/tests/rules/mongoose/ip.unit.test.d.ts +0 -2
- package/dist/tests/rules/mongoose/ip.unit.test.d.ts.map +0 -1
- package/dist/tests/rules/mongoose/ip.unit.test.js +0 -380
- package/dist/tests/rules/mongoose/ip.unit.test.js.map +0 -1
- package/dist/tests/rules/storage/testRulesStorage.d.ts +0 -17
- package/dist/tests/rules/storage/testRulesStorage.d.ts.map +0 -1
- package/dist/tests/rules/storage/testRulesStorage.js +0 -25
- 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;
|