@prosopo/user-access-policy 3.6.0 → 3.7.12

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 (145) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +21 -19
  2. package/.turbo/turbo-build$colon$tsc.log +16 -13
  3. package/.turbo/turbo-build.log +22 -20
  4. package/CHANGELOG.md +339 -0
  5. package/dist/api/delete/deleteAllRules.d.ts +2 -2
  6. package/dist/api/delete/deleteAllRules.d.ts.map +1 -1
  7. package/dist/api/delete/deleteAllRules.js +3 -2
  8. package/dist/api/delete/deleteAllRules.js.map +1 -1
  9. package/dist/api/delete/deleteRuleGroups.d.ts +2 -2
  10. package/dist/api/delete/deleteRuleGroups.d.ts.map +1 -1
  11. package/dist/api/delete/deleteRuleGroups.js +3 -2
  12. package/dist/api/delete/deleteRuleGroups.js.map +1 -1
  13. package/dist/api/delete/deleteRules.d.ts +2 -2
  14. package/dist/api/delete/deleteRules.d.ts.map +1 -1
  15. package/dist/api/delete/deleteRules.js +3 -2
  16. package/dist/api/delete/deleteRules.js.map +1 -1
  17. package/dist/api/read/fetchRules.d.ts +2 -2
  18. package/dist/api/read/fetchRules.d.ts.map +1 -1
  19. package/dist/api/read/fetchRules.js +4 -3
  20. package/dist/api/read/fetchRules.js.map +1 -1
  21. package/dist/api/read/findRuleIds.d.ts +2 -2
  22. package/dist/api/read/findRuleIds.d.ts.map +1 -1
  23. package/dist/api/read/findRuleIds.js +3 -2
  24. package/dist/api/read/findRuleIds.js.map +1 -1
  25. package/dist/api/read/getMissingIds.d.ts +2 -2
  26. package/dist/api/read/getMissingIds.d.ts.map +1 -1
  27. package/dist/api/read/getMissingIds.js +4 -3
  28. package/dist/api/read/getMissingIds.js.map +1 -1
  29. package/dist/api/ruleApiRoutes.d.ts +1 -1
  30. package/dist/api/ruleApiRoutes.d.ts.map +1 -1
  31. package/dist/api/ruleApiRoutes.js.map +1 -1
  32. package/dist/api/rulesApiClient.d.ts +9 -9
  33. package/dist/api/rulesApiClient.d.ts.map +1 -1
  34. package/dist/api/rulesApiClient.js +18 -19
  35. package/dist/api/rulesApiClient.js.map +1 -1
  36. package/dist/api/write/insertRules.d.ts +2 -2
  37. package/dist/api/write/insertRules.d.ts.map +1 -1
  38. package/dist/api/write/insertRules.js +7 -6
  39. package/dist/api/write/insertRules.js.map +1 -1
  40. package/dist/api/write/rehashRules.d.ts +2 -2
  41. package/dist/api/write/rehashRules.d.ts.map +1 -1
  42. package/dist/api/write/rehashRules.js +7 -6
  43. package/dist/api/write/rehashRules.js.map +1 -1
  44. package/dist/cjs/api/delete/deleteAllRules.cjs +3 -2
  45. package/dist/cjs/api/delete/deleteRuleGroups.cjs +3 -2
  46. package/dist/cjs/api/delete/deleteRules.cjs +3 -2
  47. package/dist/cjs/api/read/fetchRules.cjs +4 -3
  48. package/dist/cjs/api/read/findRuleIds.cjs +3 -2
  49. package/dist/cjs/api/read/getMissingIds.cjs +4 -3
  50. package/dist/cjs/api/rulesApiClient.cjs +18 -19
  51. package/dist/cjs/api/write/insertRules.cjs +9 -8
  52. package/dist/cjs/api/write/rehashRules.cjs +7 -6
  53. package/dist/cjs/mongoose/mongooseRuleSchema.cjs +2 -1
  54. package/dist/cjs/redis/reader/redisRulesQuery.cjs +6 -0
  55. package/dist/cjs/redis/reader/redisRulesReader.cjs +13 -4
  56. package/dist/cjs/redis/redisRuleIndex.cjs +2 -1
  57. package/dist/cjs/ruleInput/userScopeInput.cjs +2 -1
  58. package/dist/cjs/ruleRecord.cjs +2 -1
  59. package/dist/mongoose/mongooseRuleSchema.d.ts.map +1 -1
  60. package/dist/mongoose/mongooseRuleSchema.js +2 -1
  61. package/dist/mongoose/mongooseRuleSchema.js.map +1 -1
  62. package/dist/redis/reader/redisAggregate.d.ts +1 -1
  63. package/dist/redis/reader/redisRulesQuery.d.ts.map +1 -1
  64. package/dist/redis/reader/redisRulesQuery.js +6 -0
  65. package/dist/redis/reader/redisRulesQuery.js.map +1 -1
  66. package/dist/redis/reader/redisRulesReader.d.ts +1 -1
  67. package/dist/redis/reader/redisRulesReader.d.ts.map +1 -1
  68. package/dist/redis/reader/redisRulesReader.js +14 -5
  69. package/dist/redis/reader/redisRulesReader.js.map +1 -1
  70. package/dist/redis/redisClient.d.ts +1 -1
  71. package/dist/redis/redisRuleIndex.d.ts.map +1 -1
  72. package/dist/redis/redisRuleIndex.js +2 -1
  73. package/dist/redis/redisRuleIndex.js.map +1 -1
  74. package/dist/redis/redisRulesStorage.d.ts +1 -1
  75. package/dist/redis/redisRulesWriter.d.ts +1 -1
  76. package/dist/redis/redisRulesWriter.d.ts.map +1 -1
  77. package/dist/redis/redisRulesWriter.js.map +1 -1
  78. package/dist/rule.d.ts +1 -0
  79. package/dist/rule.d.ts.map +1 -1
  80. package/dist/ruleInput/ruleInput.d.ts +6 -0
  81. package/dist/ruleInput/ruleInput.d.ts.map +1 -1
  82. package/dist/ruleInput/userScopeInput.d.ts +8 -0
  83. package/dist/ruleInput/userScopeInput.d.ts.map +1 -1
  84. package/dist/ruleInput/userScopeInput.js +2 -1
  85. package/dist/ruleInput/userScopeInput.js.map +1 -1
  86. package/dist/ruleRecord.d.ts +2 -2
  87. package/dist/ruleRecord.d.ts.map +1 -1
  88. package/dist/ruleRecord.js +2 -1
  89. package/dist/ruleRecord.js.map +1 -1
  90. package/dist/tests/insertRulesEndpoint.unit.test.d.ts +2 -0
  91. package/dist/tests/insertRulesEndpoint.unit.test.d.ts.map +1 -0
  92. package/dist/tests/insertRulesEndpoint.unit.test.js +57 -0
  93. package/dist/tests/insertRulesEndpoint.unit.test.js.map +1 -0
  94. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js +42 -3
  95. package/dist/tests/redis/reader/redisRulesQuery.unit.test.js.map +1 -1
  96. package/dist/tests/redis/redisRulesStorage.integration.test.js +126 -1
  97. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
  98. package/dist/tests/testLogger.d.ts +1 -1
  99. package/dist/tests/transformRule.unit.test.js +1 -0
  100. package/dist/tests/transformRule.unit.test.js.map +1 -1
  101. package/package.json +15 -10
  102. package/src/.export.ts +44 -0
  103. package/src/api/.export.ts +25 -0
  104. package/src/api/accessRulesApiClient.ts +13 -0
  105. package/src/api/delete/.export.ts +18 -0
  106. package/src/api/delete/deleteAllRules.ts +47 -0
  107. package/src/api/delete/deleteRuleGroups.ts +96 -0
  108. package/src/api/delete/deleteRules.ts +81 -0
  109. package/src/api/read/.export.ts +25 -0
  110. package/src/api/read/fetchRules.ts +88 -0
  111. package/src/api/read/findRuleIds.ts +95 -0
  112. package/src/api/read/getMissingIds.ts +81 -0
  113. package/src/api/ruleApiRoutes.ts +146 -0
  114. package/src/api/rulesApiClient.ts +154 -0
  115. package/src/api/write/.export.ts +15 -0
  116. package/src/api/write/insertRules.ts +183 -0
  117. package/src/api/write/rehashRules.ts +85 -0
  118. package/src/mongoose/.export.ts +15 -0
  119. package/src/mongoose/mongooseRuleSchema.ts +65 -0
  120. package/src/redis/.export.ts +17 -0
  121. package/src/redis/reader/redisAggregate.ts +103 -0
  122. package/src/redis/reader/redisRulesQuery.ts +217 -0
  123. package/src/redis/reader/redisRulesReader.ts +318 -0
  124. package/src/redis/redisClient.ts +120 -0
  125. package/src/redis/redisRuleIndex.ts +85 -0
  126. package/src/redis/redisRulesStorage.ts +68 -0
  127. package/src/redis/redisRulesWriter.ts +158 -0
  128. package/src/rule.ts +59 -0
  129. package/src/ruleInput/.export.ts +19 -0
  130. package/src/ruleInput/policyInput.ts +51 -0
  131. package/src/ruleInput/ruleInput.ts +103 -0
  132. package/src/ruleInput/userScopeInput.ts +108 -0
  133. package/src/ruleRecord.ts +69 -0
  134. package/src/rulesStorage.ts +72 -0
  135. package/src/tests/insertRulesEndpoint.unit.test.ts +89 -0
  136. package/src/tests/policyInput.unit.test.ts +150 -0
  137. package/src/tests/redis/reader/redisRulesQuery.unit.test.ts +284 -0
  138. package/src/tests/redis/redisRulesStorage.integration.test.ts +1156 -0
  139. package/src/tests/testLogger.ts +38 -0
  140. package/src/tests/transformRule.unit.test.ts +255 -0
  141. package/src/transformRule.ts +128 -0
  142. package/tsconfig.cjs.json +41 -0
  143. package/tsconfig.json +47 -0
  144. package/tsconfig.tsbuildinfo +1 -0
  145. package/tsconfig.types.json +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"redisRulesWriter.js","sourceRoot":"","sources":["../../src/redis/redisRulesWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redisRulesWriter.js","sourceRoot":"","sources":["../../src/redis/redisRulesWriter.ts"],"names":[],"mappings":"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"}
package/dist/rule.d.ts CHANGED
@@ -28,6 +28,7 @@ export type UserAttributes = {
28
28
  userAgentHash?: string;
29
29
  headHash?: string;
30
30
  coords?: string;
31
+ countryCode?: string;
31
32
  };
32
33
  export type UserScope = UserAttributes & UserIp;
33
34
  export type AccessRule = AccessPolicy & PolicyScope & UserScope & {
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,oBAAY,gBAAgB;IAC3B,KAAK,UAAU;IACf,QAAQ,aAAa;CACrB;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,YAAY,GACpC,WAAW,GACX,SAAS,GAAG;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../src/rule.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,oBAAY,gBAAgB;IAC3B,KAAK,UAAU;IACf,QAAQ,aAAa;CACrB;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;AAGhD,MAAM,MAAM,UAAU,GAAG,YAAY,GACpC,WAAW,GACX,SAAS,GAAG;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -74,6 +74,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
74
74
  userAgentHash: z.ZodOptional<z.ZodString>;
75
75
  headHash: z.ZodOptional<z.ZodString>;
76
76
  coords: z.ZodOptional<z.ZodString>;
77
+ countryCode: z.ZodOptional<z.ZodString>;
77
78
  }, "strip", z.ZodTypeAny, {
78
79
  userAgentHash?: string | undefined;
79
80
  userId?: string | undefined;
@@ -81,6 +82,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
81
82
  headersHash?: string | undefined;
82
83
  headHash?: string | undefined;
83
84
  coords?: string | undefined;
85
+ countryCode?: string | undefined;
84
86
  userAgent?: string | undefined;
85
87
  }, {
86
88
  userAgentHash?: string | undefined;
@@ -89,6 +91,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
89
91
  headersHash?: string | undefined;
90
92
  headHash?: string | undefined;
91
93
  coords?: string | undefined;
94
+ countryCode?: string | undefined;
92
95
  userAgent?: string | undefined;
93
96
  }>, import("#policy/rule.js").UserAttributes, {
94
97
  userAgentHash?: string | undefined;
@@ -97,6 +100,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
97
100
  headersHash?: string | undefined;
98
101
  headHash?: string | undefined;
99
102
  coords?: string | undefined;
103
+ countryCode?: string | undefined;
100
104
  userAgent?: string | undefined;
101
105
  }>>, UserScopeInput, {} & {
102
106
  ip?: string | undefined;
@@ -111,6 +115,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
111
115
  headersHash?: string | undefined;
112
116
  headHash?: string | undefined;
113
117
  coords?: string | undefined;
118
+ countryCode?: string | undefined;
114
119
  userAgent?: string | undefined;
115
120
  }>>;
116
121
  userScopeMatch: z.ZodDefault<z.ZodNativeEnum<typeof FilterScopeMatch>>;
@@ -140,6 +145,7 @@ export declare const accessRulesFilterInput: z.ZodObject<{
140
145
  headersHash?: string | undefined;
141
146
  headHash?: string | undefined;
142
147
  coords?: string | undefined;
148
+ countryCode?: string | undefined;
143
149
  userAgent?: string | undefined;
144
150
  }) | undefined;
145
151
  groupId?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ruleInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/ruleInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAEN,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AAE1E,KAAK,cAAc,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GACzC,WAAW,GACX,cAAc,GACd,cAAc,CAAC;AAiBhB,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,UAAU,CAQkB,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAG6C,CAAC;AAEzE,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWmD,CAAC;AAEvF,eAAO,MAAM,6BAA6B,gBAC5B,sBAAsB,KACjC,iBAAiB,EAiBnB,CAAC"}
1
+ {"version":3,"file":"ruleInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/ruleInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAEN,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AAE1E,KAAK,cAAc,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GACzC,WAAW,GACX,cAAc,GACd,cAAc,CAAC;AAiBhB,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,UAAU,CAQkB,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAG6C,CAAC;AAEzE,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWmD,CAAC;AAEvF,eAAO,MAAM,6BAA6B,gBAC5B,sBAAsB,KACjC,iBAAiB,EAiBnB,CAAC"}
@@ -11,6 +11,7 @@ export declare const userScopeSchema: z.ZodObject<{
11
11
  userAgentHash: z.ZodOptional<z.ZodString>;
12
12
  headHash: z.ZodOptional<z.ZodString>;
13
13
  coords: z.ZodOptional<z.ZodString>;
14
+ countryCode: z.ZodOptional<z.ZodString>;
14
15
  numericIp: z.ZodOptional<z.ZodBigInt>;
15
16
  numericIpMaskMin: z.ZodOptional<z.ZodBigInt>;
16
17
  numericIpMaskMax: z.ZodOptional<z.ZodBigInt>;
@@ -21,6 +22,7 @@ export declare const userScopeSchema: z.ZodObject<{
21
22
  headersHash?: string | undefined;
22
23
  headHash?: string | undefined;
23
24
  coords?: string | undefined;
25
+ countryCode?: string | undefined;
24
26
  numericIp?: bigint | undefined;
25
27
  numericIpMaskMin?: bigint | undefined;
26
28
  numericIpMaskMax?: bigint | undefined;
@@ -31,6 +33,7 @@ export declare const userScopeSchema: z.ZodObject<{
31
33
  headersHash?: string | undefined;
32
34
  headHash?: string | undefined;
33
35
  coords?: string | undefined;
36
+ countryCode?: string | undefined;
34
37
  numericIp?: bigint | undefined;
35
38
  numericIpMaskMin?: bigint | undefined;
36
39
  numericIpMaskMax?: bigint | undefined;
@@ -67,6 +70,7 @@ export declare const userScopeInput: z.ZodEffects<z.ZodIntersection<z.ZodInterse
67
70
  userAgentHash: z.ZodOptional<z.ZodString>;
68
71
  headHash: z.ZodOptional<z.ZodString>;
69
72
  coords: z.ZodOptional<z.ZodString>;
73
+ countryCode: z.ZodOptional<z.ZodString>;
70
74
  }, "strip", z.ZodTypeAny, {
71
75
  userAgentHash?: string | undefined;
72
76
  userId?: string | undefined;
@@ -74,6 +78,7 @@ export declare const userScopeInput: z.ZodEffects<z.ZodIntersection<z.ZodInterse
74
78
  headersHash?: string | undefined;
75
79
  headHash?: string | undefined;
76
80
  coords?: string | undefined;
81
+ countryCode?: string | undefined;
77
82
  userAgent?: string | undefined;
78
83
  }, {
79
84
  userAgentHash?: string | undefined;
@@ -82,6 +87,7 @@ export declare const userScopeInput: z.ZodEffects<z.ZodIntersection<z.ZodInterse
82
87
  headersHash?: string | undefined;
83
88
  headHash?: string | undefined;
84
89
  coords?: string | undefined;
90
+ countryCode?: string | undefined;
85
91
  userAgent?: string | undefined;
86
92
  }>, UserAttributes, {
87
93
  userAgentHash?: string | undefined;
@@ -90,6 +96,7 @@ export declare const userScopeInput: z.ZodEffects<z.ZodIntersection<z.ZodInterse
90
96
  headersHash?: string | undefined;
91
97
  headHash?: string | undefined;
92
98
  coords?: string | undefined;
99
+ countryCode?: string | undefined;
93
100
  userAgent?: string | undefined;
94
101
  }>>, UserScopeInput, {} & {
95
102
  ip?: string | undefined;
@@ -104,6 +111,7 @@ export declare const userScopeInput: z.ZodEffects<z.ZodIntersection<z.ZodInterse
104
111
  headersHash?: string | undefined;
105
112
  headHash?: string | undefined;
106
113
  coords?: string | undefined;
114
+ countryCode?: string | undefined;
107
115
  userAgent?: string | undefined;
108
116
  }>;
109
117
  //# sourceMappingURL=userScopeInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userScopeInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,oBAAoB,CAAC;AA+BxE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC;AAsChD,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGgC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC"}
1
+ {"version":3,"file":"userScopeInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhF,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,oBAAoB,CAAC;AAgCxE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC;AAsChD,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGgC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC"}
@@ -9,7 +9,8 @@ const userAttributesSchema = z.object({
9
9
  headersHash: z.coerce.string().optional(),
10
10
  userAgentHash: z.coerce.string().optional(),
11
11
  headHash: z.coerce.string().optional(),
12
- coords: z.coerce.string().optional()
12
+ coords: z.coerce.string().optional(),
13
+ countryCode: z.coerce.string().optional()
13
14
  });
14
15
  const userAttributesInput = z.object({
15
16
  ...userAttributesSchema.shape,
@@ -1 +1 @@
1
- {"version":3,"file":"userScopeInput.js","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userScopeInput.js","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,14 @@ import type { AccessPolicy, PolicyScope, UserAttributes } from "#policy/rule.js"
2
2
  export type UserAttributesRecord = Omit<UserAttributes, "userAgentHash"> & {
3
3
  userAgent?: string;
4
4
  };
5
- export declare const userAttributesRecordFields: ["userId", "ja4Hash", "headersHash", "userAgent", "headHash", "coords"];
5
+ export declare const userAttributesRecordFields: ["userId", "ja4Hash", "headersHash", "userAgent", "headHash", "coords", "countryCode"];
6
6
  export type UserIpRecord = {
7
7
  ip?: string;
8
8
  ipMask?: string;
9
9
  };
10
10
  export declare const userIpRecordFields: ["ip", "ipMask"];
11
11
  export type UserScopeRecord = UserAttributesRecord & UserIpRecord;
12
- export declare const userScopeRecordFields: ["userId", "ja4Hash", "headersHash", "userAgent", "headHash", "coords", "ip", "ipMask"];
12
+ export declare const userScopeRecordFields: ["userId", "ja4Hash", "headersHash", "userAgent", "headHash", "coords", "countryCode", "ip", "ipMask"];
13
13
  export type UserScopeRecordField = (typeof userScopeRecordFields)[number];
14
14
  export type AccessRuleRecord = AccessPolicy & PolicyScope & UserScopeRecord & {
15
15
  ruleGroupId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ruleRecord.d.ts","sourceRoot":"","sources":["../src/ruleRecord.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,0BAA0B,yEAOY,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IAE1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB,kBAGY,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,YAAY,CAAC;AAElE,eAAO,MAAM,qBAAqB,yFAGY,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAC1C,WAAW,GACX,eAAe,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEH,eAAO,MAAM,sCAAsC,eACtC,gBAAgB,KAC1B,eAKD,CAAC"}
1
+ {"version":3,"file":"ruleRecord.d.ts","sourceRoot":"","sources":["../src/ruleRecord.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,0BAA0B,wFAQY,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IAE1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,kBAAkB,kBAGY,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,YAAY,CAAC;AAElE,eAAO,MAAM,qBAAqB,wGAGY,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAC1C,WAAW,GACX,eAAe,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEH,eAAO,MAAM,sCAAsC,eACtC,gBAAgB,KAC1B,eAKD,CAAC"}
@@ -4,7 +4,8 @@ const userAttributesRecordFields = [
4
4
  "headersHash",
5
5
  "userAgent",
6
6
  "headHash",
7
- "coords"
7
+ "coords",
8
+ "countryCode"
8
9
  ];
9
10
  const userIpRecordFields = [
10
11
  "ip",
@@ -1 +1 @@
1
- {"version":3,"file":"ruleRecord.js","sourceRoot":"","sources":["../src/ruleRecord.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,QAAQ;IACR,SAAS;IACT,aAAa;IACb,WAAW;IACX,UAAU;IACV,QAAQ;CAC0C,CAAC;AASpD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,IAAI;IACJ,QAAQ;CACkC,CAAC;AAI5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,GAAG,0BAA0B;IAC7B,GAAG,kBAAkB;CACwB,CAAC;AAU/C,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACrD,UAA4B,EACV,EAAE,CACpB,MAAM,CAAC,WAAW,CACjB,qBAAqB;KACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC5C,CAAC"}
1
+ {"version":3,"file":"ruleRecord.js","sourceRoot":"","sources":["../src/ruleRecord.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,QAAQ;IACR,SAAS;IACT,aAAa;IACb,WAAW;IACX,UAAU;IACV,QAAQ;IACR,aAAa;CACqC,CAAC;AASpD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,IAAI;IACJ,QAAQ;CACkC,CAAC;AAI5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,GAAG,0BAA0B;IAC7B,GAAG,kBAAkB;CACwB,CAAC;AAU/C,MAAM,CAAC,MAAM,sCAAsC,GAAG,CACrD,UAA4B,EACV,EAAE,CACpB,MAAM,CAAC,WAAW,CACjB,qBAAqB;KACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC5C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=insertRulesEndpoint.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertRulesEndpoint.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/insertRulesEndpoint.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { InsertRulesEndpoint } from "#policy/api/write/insertRules.js";
3
+ import { AccessPolicyType } from "#policy/rule.js";
4
+ const makeMockLogger = () => ({
5
+ trace: vi.fn(),
6
+ debug: vi.fn(),
7
+ info: vi.fn(),
8
+ warn: vi.fn(),
9
+ error: vi.fn(),
10
+ fatal: vi.fn(),
11
+ log: vi.fn(),
12
+ setLogLevel: vi.fn(),
13
+ getLogLevel: vi.fn().mockReturnValue("info"),
14
+ with: vi.fn().mockReturnThis(),
15
+ getScope: vi.fn().mockReturnValue("test"),
16
+ getPretty: vi.fn().mockReturnValue(false),
17
+ setPretty: vi.fn(),
18
+ getPrintStack: vi.fn().mockReturnValue(false),
19
+ setPrintStack: vi.fn(),
20
+ getFormat: vi.fn().mockReturnValue("json"),
21
+ setFormat: vi.fn(),
22
+ });
23
+ const makeWriter = () => ({
24
+ insertRules: vi.fn().mockResolvedValue(["rule-1", "rule-2"]),
25
+ deleteRules: vi.fn().mockResolvedValue(undefined),
26
+ deleteAllRules: vi.fn().mockResolvedValue(0),
27
+ });
28
+ const sampleArgs = [
29
+ {
30
+ accessPolicy: { type: AccessPolicyType.Block },
31
+ userScopes: [{ userId: "user-1" }, { userId: "user-2" }],
32
+ },
33
+ ];
34
+ describe("InsertRulesEndpoint logger selection", () => {
35
+ it("uses the per-request logger when one is provided to processRequest", async () => {
36
+ const ctorLogger = makeMockLogger();
37
+ const requestLogger = makeMockLogger();
38
+ const endpoint = new InsertRulesEndpoint(makeWriter(), ctorLogger);
39
+ await endpoint.processRequest(sampleArgs, requestLogger);
40
+ await new Promise((r) => setImmediate(r));
41
+ expect(requestLogger.info).toHaveBeenCalled();
42
+ const calls = requestLogger.info.mock.calls;
43
+ const msgs = calls.map(([fn]) => fn().msg);
44
+ expect(msgs).toContain("Endpoint inserted access rules");
45
+ expect(ctorLogger.info).not.toHaveBeenCalled();
46
+ });
47
+ it("falls back to the constructor logger when no request logger is provided", async () => {
48
+ const ctorLogger = makeMockLogger();
49
+ const endpoint = new InsertRulesEndpoint(makeWriter(), ctorLogger);
50
+ await endpoint.processRequest(sampleArgs);
51
+ await new Promise((r) => setImmediate(r));
52
+ expect(ctorLogger.info).toHaveBeenCalled();
53
+ const msgs = ctorLogger.info.mock.calls.map(([fn]) => fn().msg);
54
+ expect(msgs).toContain("Endpoint inserted access rules");
55
+ });
56
+ });
57
+ //# sourceMappingURL=insertRulesEndpoint.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertRulesEndpoint.unit.test.js","sourceRoot":"","sources":["../../src/tests/insertRulesEndpoint.unit.test.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ describe("getRulesRedisQuery", () => {
24
24
  userScopeMatch: FilterScopeMatch.Exact,
25
25
  };
26
26
  const query = getRulesRedisQuery(filter, true);
27
- expect(query).toBe("( ( @numericIp:[100 100] | ( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[100 +inf] ) ) @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@userId) ismissing(@headersHash) ismissing(@headHash) ismissing(@coords) )");
27
+ expect(query).toBe("( ( @numericIp:[100 100] | ( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[100 +inf] ) ) @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@userId) ismissing(@headersHash) ismissing(@headHash) ismissing(@coords) ismissing(@countryCode) )");
28
28
  });
29
29
  it("puts ismissing(x) for multiple fields passed in as `undefined` when user scope match is exact", () => {
30
30
  const filter = {
@@ -80,7 +80,7 @@ describe("getRulesRedisQuery", () => {
80
80
  userScopeMatch: FilterScopeMatch.Exact,
81
81
  };
82
82
  const query = getRulesRedisQuery(filter, true);
83
- expect(query).toBe("( ( @numericIp:[100 100] | ( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[100 +inf] ) ) @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@headersHash) ismissing(@userId) ismissing(@headHash) ismissing(@coords) )");
83
+ expect(query).toBe("( ( @numericIp:[100 100] | ( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[100 +inf] ) ) @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@headersHash) ismissing(@userId) ismissing(@headHash) ismissing(@coords) ismissing(@countryCode) )");
84
84
  });
85
85
  it("does not put ismissing(numericIp) when numericIpMaskMin and numericIpMaskMax are passed in", () => {
86
86
  const filter = {
@@ -95,7 +95,46 @@ describe("getRulesRedisQuery", () => {
95
95
  userScopeMatch: FilterScopeMatch.Exact,
96
96
  };
97
97
  const query = getRulesRedisQuery(filter, true);
98
- expect(query).toBe("( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[200 +inf] @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@headersHash) ismissing(@userId) ismissing(@headHash) ismissing(@coords) )");
98
+ expect(query).toBe("( @numericIpMaskMin:[-inf 100] @numericIpMaskMax:[200 +inf] @ja4Hash:{ja4Hash} ismissing(@userAgentHash) ismissing(@headersHash) ismissing(@userId) ismissing(@headHash) ismissing(@coords) ismissing(@countryCode) )");
99
+ });
100
+ it("does not duplicate ismissing for numericIpMaskMin and numericIpMaskMax when matchingFieldsOnly is true and all IP fields are undefined", () => {
101
+ const filter = {
102
+ userScope: {
103
+ userId: "user123",
104
+ },
105
+ userScopeMatch: FilterScopeMatch.Exact,
106
+ };
107
+ const query = getRulesRedisQuery(filter, true);
108
+ const numericIpMaskMinMatches = query.match(/ismissing\(@numericIpMaskMin\)/g);
109
+ const numericIpMaskMaxMatches = query.match(/ismissing\(@numericIpMaskMax\)/g);
110
+ expect(numericIpMaskMinMatches).toHaveLength(1);
111
+ expect(numericIpMaskMaxMatches).toHaveLength(1);
112
+ expect(query).toContain("ismissing(@numericIp)");
113
+ expect(query).toContain("@userId:{user123}");
114
+ });
115
+ it("emits ismissing for numericIpMaskMin when numericIpMaskMax is defined but numericIpMaskMin is not", () => {
116
+ const filter = {
117
+ userScope: {
118
+ numericIpMaskMax: BigInt(200),
119
+ },
120
+ userScopeMatch: FilterScopeMatch.Exact,
121
+ };
122
+ const query = getRulesRedisQuery(filter, true);
123
+ expect(query).toContain("ismissing(@numericIpMaskMin)");
124
+ expect(query).toContain("@numericIpMaskMax:[200 +inf]");
125
+ expect(query).not.toContain("ismissing(@numericIpMaskMax)");
126
+ });
127
+ it("emits ismissing for numericIpMaskMax when numericIpMaskMin is defined but numericIpMaskMax is not", () => {
128
+ const filter = {
129
+ userScope: {
130
+ numericIpMaskMin: BigInt(100),
131
+ },
132
+ userScopeMatch: FilterScopeMatch.Exact,
133
+ };
134
+ const query = getRulesRedisQuery(filter, true);
135
+ expect(query).toContain("@numericIpMaskMin:[-inf 100]");
136
+ expect(query).toContain("ismissing(@numericIpMaskMax)");
137
+ expect(query).not.toContain("ismissing(@numericIpMaskMin)");
99
138
  });
100
139
  it("includes headHash in query when provided", () => {
101
140
  const filter = {
@@ -1 +1 @@
1
- {"version":3,"file":"redisRulesQuery.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/redis/reader/redisRulesQuery.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redisRulesQuery.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/redis/reader/redisRulesQuery.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { LogLevel, chunkIntoBatches, executeBatchesSequentially, getLogger, } from "@prosopo/common";
1
+ import { chunkIntoBatches, executeBatchesSequentially } from "@prosopo/common";
2
+ import { LogLevel, getLogger } from "@prosopo/logger";
2
3
  import { createTestRedisConnection, setupRedisIndex, } from "@prosopo/redis-client";
3
4
  import { randomAsHex } from "@prosopo/util-crypto";
4
5
  import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test, } from "vitest";
@@ -698,6 +699,130 @@ describe("redisAccessRulesStorage", () => {
698
699
  });
699
700
  expect(foundAccessRules).toEqual([combinedAccessRule]);
700
701
  });
702
+ test("finds rules by countryCode with exact match", async () => {
703
+ const countryCode1 = "US";
704
+ const countryCode2 = "GB";
705
+ const countryCodeAccessRule = {
706
+ type: AccessPolicyType.Block,
707
+ clientId: "clientId",
708
+ countryCode: countryCode1,
709
+ };
710
+ const otherCountryCodeAccessRule = {
711
+ type: AccessPolicyType.Block,
712
+ clientId: "clientId",
713
+ countryCode: countryCode2,
714
+ };
715
+ await insertRules([countryCodeAccessRule, otherCountryCodeAccessRule]);
716
+ const foundAccessRules = await accessRulesReader.findRules({
717
+ policyScope: {
718
+ clientId: "clientId",
719
+ },
720
+ policyScopeMatch: FilterScopeMatch.Exact,
721
+ userScope: {
722
+ countryCode: countryCode1,
723
+ },
724
+ userScopeMatch: FilterScopeMatch.Exact,
725
+ });
726
+ expect(foundAccessRules).toEqual([countryCodeAccessRule]);
727
+ });
728
+ test("finds rules by combined countryCode and userId with exact match", async () => {
729
+ const countryCode1 = "US";
730
+ const userId1 = "user123";
731
+ const combinedAccessRule = {
732
+ type: AccessPolicyType.Block,
733
+ clientId: "clientId",
734
+ countryCode: countryCode1,
735
+ userId: userId1,
736
+ };
737
+ const countryCodeOnlyAccessRule = {
738
+ type: AccessPolicyType.Restrict,
739
+ clientId: "clientId",
740
+ countryCode: countryCode1,
741
+ };
742
+ await insertRules([combinedAccessRule, countryCodeOnlyAccessRule]);
743
+ const foundAccessRules = await accessRulesReader.findRules({
744
+ policyScope: {
745
+ clientId: "clientId",
746
+ },
747
+ policyScopeMatch: FilterScopeMatch.Exact,
748
+ userScope: {
749
+ countryCode: countryCode1,
750
+ userId: userId1,
751
+ },
752
+ userScopeMatch: FilterScopeMatch.Exact,
753
+ });
754
+ expect(foundAccessRules).toEqual([combinedAccessRule]);
755
+ });
756
+ test("returns remaining rules when a matched document's hash key has been deleted", async () => {
757
+ const clientId = getUniqueString();
758
+ const survivingRule = {
759
+ type: AccessPolicyType.Block,
760
+ clientId: clientId,
761
+ userId: "user1",
762
+ };
763
+ const deletedRule = {
764
+ type: AccessPolicyType.Block,
765
+ clientId: clientId,
766
+ userId: "user2",
767
+ };
768
+ await insertRules([survivingRule, deletedRule]);
769
+ const deletedRuleKey = getAccessRuleRedisKey(deletedRule);
770
+ await redisClient.del(deletedRuleKey);
771
+ const foundAccessRules = await accessRulesReader.findRules({
772
+ policyScope: {
773
+ clientId: clientId,
774
+ },
775
+ policyScopeMatch: FilterScopeMatch.Exact,
776
+ userScope: {
777
+ userId: "user1",
778
+ },
779
+ userScopeMatch: FilterScopeMatch.Greedy,
780
+ });
781
+ expect(foundAccessRules).toEqual([survivingRule]);
782
+ });
783
+ test("returns empty array without throwing when all matched documents have been deleted", async () => {
784
+ const clientId = getUniqueString();
785
+ const rule = {
786
+ type: AccessPolicyType.Block,
787
+ clientId: clientId,
788
+ userId: "user1",
789
+ };
790
+ await insertRules([rule]);
791
+ const ruleKey = getAccessRuleRedisKey(rule);
792
+ await redisClient.del(ruleKey);
793
+ const foundAccessRules = await accessRulesReader.findRules({
794
+ policyScope: {
795
+ clientId: clientId,
796
+ },
797
+ policyScopeMatch: FilterScopeMatch.Exact,
798
+ userScope: {
799
+ userId: "user1",
800
+ },
801
+ userScopeMatch: FilterScopeMatch.Greedy,
802
+ });
803
+ expect(foundAccessRules).toEqual([]);
804
+ });
805
+ test("finds rules with matchingFieldsOnly when only userId is set and all IP fields are missing", async () => {
806
+ const clientId = getUniqueString();
807
+ const userId = getUniqueString();
808
+ const accessRule = {
809
+ type: AccessPolicyType.Block,
810
+ clientId: clientId,
811
+ userId: userId,
812
+ };
813
+ await insertRules([accessRule]);
814
+ const foundAccessRules = await accessRulesReader.findRules({
815
+ policyScope: {
816
+ clientId: clientId,
817
+ },
818
+ policyScopeMatch: FilterScopeMatch.Exact,
819
+ userScope: {
820
+ userId: userId,
821
+ },
822
+ userScopeMatch: FilterScopeMatch.Exact,
823
+ }, true);
824
+ expect(foundAccessRules).toEqual([accessRule]);
825
+ });
701
826
  });
702
827
  afterAll(async () => {
703
828
  await redisClient.flushAll();