@prosopo/user-access-policy 3.12.8 → 3.12.9

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 (84) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +45 -41
  2. package/.turbo/turbo-build$colon$tsc.log +14 -14
  3. package/.turbo/turbo-build.log +46 -42
  4. package/CHANGELOG.md +18 -0
  5. package/dist/.export.js +7 -21
  6. package/dist/_virtual/_rolldown/runtime.js +3 -0
  7. package/dist/api/.export.js +2 -9
  8. package/dist/api/accessRulesApiClient.js +1 -1
  9. package/dist/api/delete/.export.js +2 -1
  10. package/dist/api/delete/deleteAllRules.js +22 -24
  11. package/dist/api/delete/deleteRuleGroups.js +39 -51
  12. package/dist/api/delete/deleteRules.js +37 -41
  13. package/dist/api/read/.export.js +2 -1
  14. package/dist/api/read/fetchRules.js +34 -42
  15. package/dist/api/read/findRuleIds.js +35 -48
  16. package/dist/api/read/getMissingIds.js +36 -40
  17. package/dist/api/ruleApiRoutes.js +62 -120
  18. package/dist/api/rulesApiClient.js +51 -87
  19. package/dist/api/write/.export.js +2 -1
  20. package/dist/api/write/insertRules.js +84 -102
  21. package/dist/api/write/rehashRules.js +48 -56
  22. package/dist/cjs/.export.cjs +21 -23
  23. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  24. package/dist/cjs/api/.export.cjs +6 -10
  25. package/dist/cjs/api/accessRulesApiClient.cjs +0 -0
  26. package/dist/cjs/api/delete/.export.cjs +0 -1
  27. package/dist/cjs/api/delete/deleteAllRules.cjs +22 -24
  28. package/dist/cjs/api/delete/deleteRuleGroups.cjs +39 -51
  29. package/dist/cjs/api/delete/deleteRules.cjs +41 -42
  30. package/dist/cjs/api/read/.export.cjs +0 -1
  31. package/dist/cjs/api/read/fetchRules.cjs +34 -41
  32. package/dist/cjs/api/read/findRuleIds.cjs +37 -48
  33. package/dist/cjs/api/read/getMissingIds.cjs +36 -39
  34. package/dist/cjs/api/ruleApiRoutes.cjs +69 -125
  35. package/dist/cjs/api/rulesApiClient.cjs +54 -90
  36. package/dist/cjs/api/write/.export.cjs +0 -1
  37. package/dist/cjs/api/write/insertRules.cjs +85 -103
  38. package/dist/cjs/api/write/rehashRules.cjs +48 -56
  39. package/dist/cjs/classifyOs.cjs +46 -26
  40. package/dist/cjs/mongoose/.export.cjs +2 -3
  41. package/dist/cjs/mongoose/mongooseRuleSchema.cjs +97 -36
  42. package/dist/cjs/redis/.export.cjs +4 -5
  43. package/dist/cjs/redis/reader/redisAggregate.cjs +59 -84
  44. package/dist/cjs/redis/reader/redisRulesQuery.cjs +74 -116
  45. package/dist/cjs/redis/reader/redisRulesReader.cjs +322 -503
  46. package/dist/cjs/redis/reader/redisRulesSplitQuery.cjs +94 -72
  47. package/dist/cjs/redis/redisClient.cjs +53 -58
  48. package/dist/cjs/redis/redisRuleIndex.cjs +93 -49
  49. package/dist/cjs/redis/redisRulesStorage.cjs +21 -30
  50. package/dist/cjs/redis/redisRulesWriter.cjs +86 -112
  51. package/dist/cjs/rule.cjs +8 -7
  52. package/dist/cjs/ruleInput/.export.cjs +7 -8
  53. package/dist/cjs/ruleInput/policyInput.cjs +35 -58
  54. package/dist/cjs/ruleInput/ruleInput.cjs +37 -42
  55. package/dist/cjs/ruleInput/userScopeInput.cjs +47 -55
  56. package/dist/cjs/ruleRecord.cjs +15 -22
  57. package/dist/cjs/rulesStorage.cjs +7 -6
  58. package/dist/cjs/transformRule.cjs +36 -70
  59. package/dist/classifyOs.js +48 -29
  60. package/dist/mongoose/.export.js +2 -3
  61. package/dist/mongoose/mongooseRuleSchema.js +99 -38
  62. package/dist/redis/.export.js +3 -5
  63. package/dist/redis/reader/redisAggregate.js +60 -86
  64. package/dist/redis/reader/redisRulesQuery.js +75 -118
  65. package/dist/redis/reader/redisRulesReader.js +312 -487
  66. package/dist/redis/reader/redisRulesSplitQuery.js +96 -75
  67. package/dist/redis/redisClient.js +54 -62
  68. package/dist/redis/redisRuleIndex.js +93 -58
  69. package/dist/redis/redisRulesStorage.js +21 -30
  70. package/dist/redis/redisRulesWriter.js +82 -113
  71. package/dist/rule.js +10 -10
  72. package/dist/ruleInput/.export.js +3 -7
  73. package/dist/ruleInput/policyInput.js +35 -61
  74. package/dist/ruleInput/ruleInput.js +36 -44
  75. package/dist/ruleInput/userScopeInput.js +44 -55
  76. package/dist/ruleRecord.js +17 -27
  77. package/dist/rulesStorage.js +9 -8
  78. package/dist/tests/redis/redisRulesStorage.integration.test.js +1 -3
  79. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
  80. package/dist/transformRule.js +34 -73
  81. package/entries.ts +25 -6
  82. package/package.json +13 -12
  83. package/src/tests/redis/redisRulesStorage.integration.test.ts +191 -195
  84. package/tsconfig.tsbuildinfo +1 -1
@@ -1,105 +1,87 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const apiRoute = require("@prosopo/api-route");
4
- const logger = require("@prosopo/logger");
5
- const zod = require("zod");
6
- const policyInput = require("../../ruleInput/policyInput.cjs");
7
- const userScopeInput = require("../../ruleInput/userScopeInput.cjs");
8
- class InsertRulesEndpoint {
9
- constructor(accessRulesWriter, logger2) {
10
- this.accessRulesWriter = accessRulesWriter;
11
- this.logger = logger2;
12
- }
13
- getRequestArgsSchema() {
14
- return zod.z.array(
15
- zod.z.object({
16
- accessPolicy: policyInput.accessPolicyInput,
17
- policyScopes: zod.z.array(policyInput.policyScopeInput).optional(),
18
- groupId: zod.z.string().optional(),
19
- userScopes: zod.z.array(userScopeInput.userScopeInput),
20
- expiresUnixTimestamp: zod.z.number().optional()
21
- })
22
- );
23
- }
24
- async processRequest(args, logger$1) {
25
- const log = logger$1 ?? this.logger;
26
- const timeoutPromise = new Promise((resolve) => {
27
- setTimeout(() => {
28
- resolve({
29
- status: apiRoute.ApiEndpointResponseStatus.PROCESSING
30
- });
31
- }, 5e3);
32
- });
33
- const userScopesCount = args.reduce(
34
- (userScopesCount2, group) => userScopesCount2 + group.userScopes.length,
35
- 0
36
- );
37
- const createRulesPromise = this.createRuleGroups(args).then((insertedIds) => {
38
- log.info(() => ({
39
- msg: "Endpoint inserted access rules",
40
- data: {
41
- userScopesCount,
42
- insertedCount: insertedIds.length,
43
- uniqueIdsCount: new Set(insertedIds).size
44
- }
45
- }));
46
- log.debug(() => ({
47
- msg: "Inserted access rules details",
48
- data: {
49
- insertedIds,
50
- input: args
51
- }
52
- }));
53
- return {
54
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS
55
- };
56
- }).catch((error) => {
57
- if (logger.LogLevel.enum.debug === log.getLogLevel()) {
58
- log.error(() => ({
59
- err: error,
60
- data: { args },
61
- msg: "Failed to insert access rules"
62
- }));
63
- }
64
- return {
65
- status: apiRoute.ApiEndpointResponseStatus.FAIL
66
- };
67
- });
68
- return Promise.race([timeoutPromise, createRulesPromise]);
69
- }
70
- async createRuleGroups(groups) {
71
- const ruleIdPromises = groups.map((group) => this.createRulesGroup(group));
72
- const ruleIdSets = await Promise.all(ruleIdPromises);
73
- return ruleIdSets.flat();
74
- }
75
- async createRulesGroup(group) {
76
- const ruleEntries = [];
77
- const policyScopes = group.policyScopes || [];
78
- const sanitizedPolicy = policyInput.sanitizeAccessPolicy(group.accessPolicy);
79
- for (const userScope of group.userScopes) {
80
- const ruleBase = {
81
- ...sanitizedPolicy,
82
- ...userScope,
83
- ...group.groupId ? { groupId: group.groupId } : {}
84
- };
85
- if (policyScopes.length > 0) {
86
- for (const policyScope of policyScopes) {
87
- ruleEntries.push({
88
- rule: {
89
- ...ruleBase,
90
- ...policyScope
91
- },
92
- expiresUnixTimestamp: group.expiresUnixTimestamp
93
- });
94
- }
95
- } else {
96
- ruleEntries.push({
97
- rule: ruleBase,
98
- expiresUnixTimestamp: group.expiresUnixTimestamp
99
- });
100
- }
101
- }
102
- return this.accessRulesWriter.insertRules(ruleEntries);
103
- }
104
- }
2
+ const require_ruleInput_policyInput = require("../../ruleInput/policyInput.cjs");
3
+ const require_ruleInput_userScopeInput = require("../../ruleInput/userScopeInput.cjs");
4
+ let zod = require("zod");
5
+ let _prosopo_api_route = require("@prosopo/api-route");
6
+ let _prosopo_logger = require("@prosopo/logger");
7
+ //#region src/api/write/insertRules.ts
8
+ var InsertRulesEndpoint = class {
9
+ constructor(accessRulesWriter, logger) {
10
+ this.accessRulesWriter = accessRulesWriter;
11
+ this.logger = logger;
12
+ }
13
+ getRequestArgsSchema() {
14
+ return zod.z.array(zod.z.object({
15
+ accessPolicy: require_ruleInput_policyInput.accessPolicyInput,
16
+ policyScopes: zod.z.array(require_ruleInput_policyInput.policyScopeInput).optional(),
17
+ groupId: zod.z.string().optional(),
18
+ userScopes: zod.z.array(require_ruleInput_userScopeInput.userScopeInput),
19
+ expiresUnixTimestamp: zod.z.number().optional()
20
+ }));
21
+ }
22
+ async processRequest(args, logger) {
23
+ const log = logger ?? this.logger;
24
+ const timeoutPromise = new Promise((resolve) => {
25
+ setTimeout(() => {
26
+ resolve({ status: _prosopo_api_route.ApiEndpointResponseStatus.PROCESSING });
27
+ }, 5e3);
28
+ });
29
+ const userScopesCount = args.reduce((userScopesCount, group) => userScopesCount + group.userScopes.length, 0);
30
+ const createRulesPromise = this.createRuleGroups(args).then((insertedIds) => {
31
+ log.info(() => ({
32
+ msg: "Endpoint inserted access rules",
33
+ data: {
34
+ userScopesCount,
35
+ insertedCount: insertedIds.length,
36
+ uniqueIdsCount: new Set(insertedIds).size
37
+ }
38
+ }));
39
+ log.debug(() => ({
40
+ msg: "Inserted access rules details",
41
+ data: {
42
+ insertedIds,
43
+ input: args
44
+ }
45
+ }));
46
+ return { status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS };
47
+ }).catch((error) => {
48
+ if (_prosopo_logger.LogLevel.enum.debug === log.getLogLevel()) log.error(() => ({
49
+ err: error,
50
+ data: { args },
51
+ msg: "Failed to insert access rules"
52
+ }));
53
+ return { status: _prosopo_api_route.ApiEndpointResponseStatus.FAIL };
54
+ });
55
+ return Promise.race([timeoutPromise, createRulesPromise]);
56
+ }
57
+ async createRuleGroups(groups) {
58
+ const ruleIdPromises = groups.map((group) => this.createRulesGroup(group));
59
+ return (await Promise.all(ruleIdPromises)).flat();
60
+ }
61
+ async createRulesGroup(group) {
62
+ const ruleEntries = [];
63
+ const policyScopes = group.policyScopes || [];
64
+ const sanitizedPolicy = require_ruleInput_policyInput.sanitizeAccessPolicy(group.accessPolicy);
65
+ for (const userScope of group.userScopes) {
66
+ const ruleBase = {
67
+ ...sanitizedPolicy,
68
+ ...userScope,
69
+ ...group.groupId ? { groupId: group.groupId } : {}
70
+ };
71
+ if (policyScopes.length > 0) for (const policyScope of policyScopes) ruleEntries.push({
72
+ rule: {
73
+ ...ruleBase,
74
+ ...policyScope
75
+ },
76
+ expiresUnixTimestamp: group.expiresUnixTimestamp
77
+ });
78
+ else ruleEntries.push({
79
+ rule: ruleBase,
80
+ expiresUnixTimestamp: group.expiresUnixTimestamp
81
+ });
82
+ }
83
+ return this.accessRulesWriter.insertRules(ruleEntries);
84
+ }
85
+ };
86
+ //#endregion
105
87
  exports.InsertRulesEndpoint = InsertRulesEndpoint;
@@ -1,58 +1,50 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const apiRoute = require("@prosopo/api-route");
4
- class RehashRulesEndpoint {
5
- constructor(accessRulesStorage, logger) {
6
- this.accessRulesStorage = accessRulesStorage;
7
- this.logger = logger;
8
- }
9
- getRequestArgsSchema() {
10
- }
11
- async processRequest(logger) {
12
- const log = logger ?? this.logger;
13
- await this.accessRulesStorage.fetchAllRuleIds(async (ruleIds) => {
14
- log.info(() => ({
15
- msg: "Fetched rule ids batch",
16
- data: {
17
- count: ruleIds.length,
18
- ruleIds
19
- }
20
- }));
21
- const ruleEntries = await this.accessRulesStorage.fetchRules(ruleIds);
22
- log.info(() => ({
23
- msg: "Fetched rules",
24
- data: {
25
- count: ruleEntries.length
26
- }
27
- }));
28
- if (ruleEntries.length !== ruleIds.length) {
29
- log.warn(() => ({
30
- msg: "Fetched rules count is not equal to the requested count",
31
- data: {
32
- fetchedCount: ruleEntries.length,
33
- requestedCount: ruleIds.length
34
- }
35
- }));
36
- }
37
- await this.accessRulesStorage.deleteRules(ruleIds);
38
- log.info(() => ({
39
- msg: "Deleted rules",
40
- data: {
41
- count: ruleIds.length
42
- }
43
- }));
44
- await this.accessRulesStorage.insertRules(ruleEntries);
45
- log.info(() => ({
46
- msg: "Inserted rules",
47
- data: {
48
- count: ruleEntries.length
49
- }
50
- }));
51
- });
52
- return {
53
- status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
54
- data: {}
55
- };
56
- }
57
- }
2
+ let _prosopo_api_route = require("@prosopo/api-route");
3
+ //#region src/api/write/rehashRules.ts
4
+ var RehashRulesEndpoint = class {
5
+ constructor(accessRulesStorage, logger) {
6
+ this.accessRulesStorage = accessRulesStorage;
7
+ this.logger = logger;
8
+ }
9
+ getRequestArgsSchema() {}
10
+ async processRequest(logger) {
11
+ const log = logger ?? this.logger;
12
+ await this.accessRulesStorage.fetchAllRuleIds(async (ruleIds) => {
13
+ log.info(() => ({
14
+ msg: "Fetched rule ids batch",
15
+ data: {
16
+ count: ruleIds.length,
17
+ ruleIds
18
+ }
19
+ }));
20
+ const ruleEntries = await this.accessRulesStorage.fetchRules(ruleIds);
21
+ log.info(() => ({
22
+ msg: "Fetched rules",
23
+ data: { count: ruleEntries.length }
24
+ }));
25
+ if (ruleEntries.length !== ruleIds.length) log.warn(() => ({
26
+ msg: "Fetched rules count is not equal to the requested count",
27
+ data: {
28
+ fetchedCount: ruleEntries.length,
29
+ requestedCount: ruleIds.length
30
+ }
31
+ }));
32
+ await this.accessRulesStorage.deleteRules(ruleIds);
33
+ log.info(() => ({
34
+ msg: "Deleted rules",
35
+ data: { count: ruleIds.length }
36
+ }));
37
+ await this.accessRulesStorage.insertRules(ruleEntries);
38
+ log.info(() => ({
39
+ msg: "Inserted rules",
40
+ data: { count: ruleEntries.length }
41
+ }));
42
+ });
43
+ return {
44
+ status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
45
+ data: {}
46
+ };
47
+ }
48
+ };
49
+ //#endregion
58
50
  exports.RehashRulesEndpoint = RehashRulesEndpoint;
@@ -1,31 +1,51 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const OS_NAMES = [
4
- "windows",
5
- "macos",
6
- "ios",
7
- "android",
8
- "linux",
9
- "unknown"
2
+ //#region src/classifyOs.ts
3
+ /**
4
+ * The operating systems the classifier can resolve a request to. Kept
5
+ * deliberately in step with the OS vocabulary in
6
+ * `@prosopo/decision-machines`' `uaClassify` (so a routing-rule `osNameIn` and
7
+ * an access-rule `os` agree on the same names), but defined here because the
8
+ * provider / user-access-policy request path cannot depend on the
9
+ * decision-machines package.
10
+ *
11
+ * `unknown` is the catch-all when no signature matches. It is a first-class
12
+ * value so an allow-list ("only let Windows through") can block unrecognised
13
+ * User-Agents instead of silently passing them.
14
+ */
15
+ var OS_NAMES = [
16
+ "windows",
17
+ "macos",
18
+ "ios",
19
+ "android",
20
+ "linux",
21
+ "unknown"
10
22
  ];
11
- const classifyOs = (userAgent) => {
12
- const ua = (userAgent || "").toLowerCase();
13
- if (/iphone|ipad|ipod/.test(ua)) {
14
- return "ios";
15
- }
16
- if (/android/.test(ua)) {
17
- return "android";
18
- }
19
- if (/windows/.test(ua)) {
20
- return "windows";
21
- }
22
- if (/macintosh|mac os/.test(ua)) {
23
- return "macos";
24
- }
25
- if (/linux/.test(ua)) {
26
- return "linux";
27
- }
28
- return "unknown";
23
+ /**
24
+ * Classify the operating system from a raw User-Agent string. Pure — no
25
+ * navigator/window/DOM dependence — so it is safe to call on the provider's
26
+ * server-side request path.
27
+ *
28
+ * Detection order matches `uaClassify.classifyUserAgent`: iOS (iphone/ipad/
29
+ * ipod) is tested before the generic mac signature, and Android before Linux,
30
+ * because those User-Agents contain the more general token too. Detection is
31
+ * conservative — anything unrecognised returns `unknown` rather than guessing,
32
+ * so an `os === "ios"` rule never fires on a UA we don't understand.
33
+ *
34
+ * The classification is driven off the full User-Agent rather than the
35
+ * `sec-ch-ua-platform` client hint on purpose: a client can simply omit client
36
+ * hints, but stripping the User-Agent breaks far more, so the UA is the more
37
+ * reliable signal for an OS-restriction rule that is meant to be hard to
38
+ * bypass.
39
+ */
40
+ var classifyOs = (userAgent) => {
41
+ const ua = (userAgent || "").toLowerCase();
42
+ if (/iphone|ipad|ipod/.test(ua)) return "ios";
43
+ if (/android/.test(ua)) return "android";
44
+ if (/windows/.test(ua)) return "windows";
45
+ if (/macintosh|mac os/.test(ua)) return "macos";
46
+ if (/linux/.test(ua)) return "linux";
47
+ return "unknown";
29
48
  };
49
+ //#endregion
30
50
  exports.OS_NAMES = OS_NAMES;
31
51
  exports.classifyOs = classifyOs;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const mongooseRuleSchema = require("./mongooseRuleSchema.cjs");
4
- exports.accessRuleMongooseSchema = mongooseRuleSchema.accessRuleMongooseSchema;
2
+ const require_mongoose_mongooseRuleSchema = require("./mongooseRuleSchema.cjs");
3
+ exports.accessRuleMongooseSchema = require_mongoose_mongooseRuleSchema.accessRuleMongooseSchema;
@@ -1,42 +1,103 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const userAttributesSchema = {
4
- userId: { type: String, required: false },
5
- ja4Hash: { type: String, required: false },
6
- userAgent: { type: String, required: false },
7
- headersHash: { type: String, required: false },
8
- headHash: { type: String, required: false },
9
- coords: { type: String, required: false },
10
- countryCode: { type: String, required: false },
11
- asn: { type: Number, required: false },
12
- os: { type: String, required: false }
2
+ //#region src/mongoose/mongooseRuleSchema.ts
3
+ var userAttributesSchema = {
4
+ userId: {
5
+ type: String,
6
+ required: false
7
+ },
8
+ ja4Hash: {
9
+ type: String,
10
+ required: false
11
+ },
12
+ userAgent: {
13
+ type: String,
14
+ required: false
15
+ },
16
+ headersHash: {
17
+ type: String,
18
+ required: false
19
+ },
20
+ headHash: {
21
+ type: String,
22
+ required: false
23
+ },
24
+ coords: {
25
+ type: String,
26
+ required: false
27
+ },
28
+ countryCode: {
29
+ type: String,
30
+ required: false
31
+ },
32
+ asn: {
33
+ type: Number,
34
+ required: false
35
+ },
36
+ os: {
37
+ type: String,
38
+ required: false
39
+ }
13
40
  };
14
- const userIpSchema = {
15
- ip: { type: String, required: false },
16
- ipMask: { type: String, required: false }
41
+ var userIpSchema = {
42
+ ip: {
43
+ type: String,
44
+ required: false
45
+ },
46
+ ipMask: {
47
+ type: String,
48
+ required: false
49
+ }
17
50
  };
18
- const userScopeSchema = {
19
- ...userAttributesSchema,
20
- ...userIpSchema
51
+ var userScopeSchema = {
52
+ ...userAttributesSchema,
53
+ ...userIpSchema
21
54
  };
22
- const policyScopeSchema = {
23
- clientId: { type: String, required: false }
24
- };
25
- const accessPolicySchema = {
26
- type: { type: String, required: true },
27
- captchaType: { type: String, required: false },
28
- description: { type: String, required: false },
29
- solvedImagesCount: { type: Number, required: false },
30
- imageThreshold: { type: Number, required: false },
31
- powDifficulty: { type: Number, required: false },
32
- unsolvedImagesCount: { type: Number, required: false },
33
- frictionlessScore: { type: Number, required: false },
34
- deferToVerify: { type: Boolean, required: false }
35
- };
36
- const accessRuleMongooseSchema = {
37
- ...accessPolicySchema,
38
- ...policyScopeSchema,
39
- ...userScopeSchema,
40
- ruleGroupId: { type: String, required: false }
55
+ var accessRuleMongooseSchema = {
56
+ type: {
57
+ type: String,
58
+ required: true
59
+ },
60
+ captchaType: {
61
+ type: String,
62
+ required: false
63
+ },
64
+ description: {
65
+ type: String,
66
+ required: false
67
+ },
68
+ solvedImagesCount: {
69
+ type: Number,
70
+ required: false
71
+ },
72
+ imageThreshold: {
73
+ type: Number,
74
+ required: false
75
+ },
76
+ powDifficulty: {
77
+ type: Number,
78
+ required: false
79
+ },
80
+ unsolvedImagesCount: {
81
+ type: Number,
82
+ required: false
83
+ },
84
+ frictionlessScore: {
85
+ type: Number,
86
+ required: false
87
+ },
88
+ deferToVerify: {
89
+ type: Boolean,
90
+ required: false
91
+ },
92
+ clientId: {
93
+ type: String,
94
+ required: false
95
+ },
96
+ ...userScopeSchema,
97
+ ruleGroupId: {
98
+ type: String,
99
+ required: false
100
+ }
41
101
  };
102
+ //#endregion
42
103
  exports.accessRuleMongooseSchema = accessRuleMongooseSchema;
@@ -1,6 +1,5 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const redisRulesStorage = require("./redisRulesStorage.cjs");
4
- const redisRuleIndex = require("./redisRuleIndex.cjs");
5
- exports.createRedisAccessRulesStorage = redisRulesStorage.createRedisAccessRulesStorage;
6
- exports.accessRulesRedisIndex = redisRuleIndex.accessRulesRedisIndex;
2
+ const require_redis_redisRuleIndex = require("./redisRuleIndex.cjs");
3
+ const require_redis_redisRulesStorage = require("./redisRulesStorage.cjs");
4
+ exports.accessRulesRedisIndex = require_redis_redisRuleIndex.accessRulesRedisIndex;
5
+ exports.createRedisAccessRulesStorage = require_redis_redisRulesStorage.createRedisAccessRulesStorage;