@prosopo/user-access-policy 3.8.0 → 3.9.0
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/.turbo/turbo-build$colon$cjs.log +6 -6
- package/.turbo/turbo-build$colon$tsc.log +14 -14
- package/.turbo/turbo-build.log +7 -7
- package/CHANGELOG.md +36 -0
- package/dist/api/read/fetchRules.d.ts +1 -30
- package/dist/api/read/fetchRules.d.ts.map +1 -1
- package/dist/api/read/fetchRules.js.map +1 -1
- package/dist/api/write/insertRules.d.ts +2 -2
- package/dist/api/write/insertRules.d.ts.map +1 -1
- package/dist/api/write/insertRules.js.map +1 -1
- package/dist/cjs/mongoose/mongooseRuleSchema.cjs +2 -1
- package/dist/cjs/ruleInput/policyInput.cjs +5 -1
- package/dist/cjs/ruleInput/userScopeInput.cjs +1 -1
- package/dist/cjs/transformRule.cjs +2 -1
- package/dist/mongoose/mongooseRuleSchema.d.ts.map +1 -1
- package/dist/mongoose/mongooseRuleSchema.js +2 -1
- package/dist/mongoose/mongooseRuleSchema.js.map +1 -1
- package/dist/redis/redisClient.d.ts +2 -2
- package/dist/redis/redisClient.d.ts.map +1 -1
- package/dist/redis/redisClient.js.map +1 -1
- package/dist/rule.d.ts +1 -0
- package/dist/rule.d.ts.map +1 -1
- package/dist/ruleInput/policyInput.d.ts +3 -0
- package/dist/ruleInput/policyInput.d.ts.map +1 -1
- package/dist/ruleInput/policyInput.js +5 -1
- package/dist/ruleInput/policyInput.js.map +1 -1
- package/dist/ruleInput/ruleInput.d.ts +3 -16
- package/dist/ruleInput/ruleInput.d.ts.map +1 -1
- package/dist/ruleInput/ruleInput.js.map +1 -1
- package/dist/ruleInput/userScopeInput.js +2 -2
- package/dist/ruleInput/userScopeInput.js.map +1 -1
- package/dist/tests/transformRule.unit.test.js +45 -1
- package/dist/tests/transformRule.unit.test.js.map +1 -1
- package/dist/transformRule.d.ts.map +1 -1
- package/dist/transformRule.js +3 -2
- package/dist/transformRule.js.map +1 -1
- package/package.json +3 -3
- package/src/api/read/fetchRules.ts +10 -2
- package/src/api/write/insertRules.ts +4 -2
- package/src/mongoose/mongooseRuleSchema.ts +1 -0
- package/src/redis/redisClient.ts +7 -2
- package/src/rule.ts +12 -0
- package/src/ruleInput/policyInput.ts +12 -1
- package/src/ruleInput/ruleInput.ts +11 -6
- package/src/ruleInput/userScopeInput.ts +7 -7
- package/src/tests/transformRule.unit.test.ts +68 -1
- package/src/transformRule.ts +7 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/user-access-policy@3.
|
|
2
|
+
> @prosopo/user-access-policy@3.9.0 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -50,22 +50,22 @@ rendering chunks...
|
|
|
50
50
|
[2mdist/cjs/[22m[36mapi/read/fetchRules.cjs [39m[1m[2m1.22 kB[22m[1m[22m
|
|
51
51
|
[2mdist/cjs/[22m[36m.export.cjs [39m[1m[2m1.24 kB[22m[1m[22m
|
|
52
52
|
[2mdist/cjs/[22m[36mredis/redisRulesStorage.cjs [39m[1m[2m1.35 kB[22m[1m[22m
|
|
53
|
-
[2mdist/cjs/[22m[
|
|
54
|
-
[2mdist/cjs/[22m[36mmongoose/mongooseRuleSchema.cjs [39m[1m[2m1.42 kB[22m[1m[22m
|
|
53
|
+
[2mdist/cjs/[22m[36mmongoose/mongooseRuleSchema.cjs [39m[1m[2m1.48 kB[22m[1m[22m
|
|
55
54
|
[2mdist/cjs/[22m[36mapi/delete/deleteRules.cjs [39m[1m[2m1.51 kB[22m[1m[22m
|
|
56
55
|
[2mdist/cjs/[22m[36mapi/delete/deleteRuleGroups.cjs [39m[1m[2m1.57 kB[22m[1m[22m
|
|
57
56
|
[2mdist/cjs/[22m[36mapi/write/rehashRules.cjs [39m[1m[2m1.64 kB[22m[1m[22m
|
|
58
57
|
[2mdist/cjs/[22m[36mapi/read/findRuleIds.cjs [39m[1m[2m1.65 kB[22m[1m[22m
|
|
58
|
+
[2mdist/cjs/[22m[36mruleInput/policyInput.cjs [39m[1m[2m1.70 kB[22m[1m[22m
|
|
59
59
|
[2mdist/cjs/[22m[36mredis/reader/redisAggregate.cjs [39m[1m[2m1.95 kB[22m[1m[22m
|
|
60
60
|
[2mdist/cjs/[22m[36mruleInput/ruleInput.cjs [39m[1m[2m2.07 kB[22m[1m[22m
|
|
61
61
|
[2mdist/cjs/[22m[36mredis/redisClient.cjs [39m[1m[2m2.09 kB[22m[1m[22m
|
|
62
|
-
[2mdist/cjs/[22m[36mruleInput/userScopeInput.cjs [39m[1m[2m2.
|
|
62
|
+
[2mdist/cjs/[22m[36mruleInput/userScopeInput.cjs [39m[1m[2m2.45 kB[22m[1m[22m
|
|
63
63
|
[2mdist/cjs/[22m[36mredis/redisRuleIndex.cjs [39m[1m[2m2.46 kB[22m[1m[22m
|
|
64
64
|
[2mdist/cjs/[22m[36mapi/rulesApiClient.cjs [39m[1m[2m2.60 kB[22m[1m[22m
|
|
65
|
-
[2mdist/cjs/[22m[36mtransformRule.cjs [39m[1m[
|
|
65
|
+
[2mdist/cjs/[22m[36mtransformRule.cjs [39m[1m[2m3.05 kB[22m[1m[22m
|
|
66
66
|
[2mdist/cjs/[22m[36mapi/write/insertRules.cjs [39m[1m[2m3.38 kB[22m[1m[22m
|
|
67
67
|
[2mdist/cjs/[22m[36mredis/redisRulesWriter.cjs [39m[1m[2m3.44 kB[22m[1m[22m
|
|
68
68
|
[2mdist/cjs/[22m[36mredis/reader/redisRulesQuery.cjs [39m[1m[2m4.34 kB[22m[1m[22m
|
|
69
69
|
[2mdist/cjs/[22m[36mapi/ruleApiRoutes.cjs [39m[1m[2m4.55 kB[22m[1m[22m
|
|
70
70
|
[2mdist/cjs/[22m[36mredis/reader/redisRulesReader.cjs [39m[1m[2m7.01 kB[22m[1m[22m
|
|
71
|
-
[32m✓ built in
|
|
71
|
+
[32m✓ built in 451ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/user-access-policy@3.
|
|
2
|
+
> @prosopo/user-access-policy@3.9.0 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
11:34:14 AM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -15,27 +15,27 @@
|
|
|
15
15
|
* ../api/tsconfig.json
|
|
16
16
|
* tsconfig.json
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
11:34:14 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
11:34:14 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
11:34:14 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
11:34:14 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
11:34:14 AM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
11:34:14 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/procaptcha/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
11:34:14 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/tests/utils/batches.unit.test.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
11:34:14 AM - Project '../api-route/tsconfig.json' is up to date because newest input '../api-route/src/apiRoutes.ts' is older than output '../api-route/tsconfig.tsbuildinfo'
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
11:34:14 AM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/tests/testRedisConnection.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
11:34:14 AM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
11:34:14 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
11:34:14 AM - Building project '/home/runner/work/captcha/captcha/packages/user-access-policy/tsconfig.json'...
|
|
41
41
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/user-access-policy@3.
|
|
2
|
+
> @prosopo/user-access-policy@3.9.0 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/user-access-policy@3.
|
|
6
|
+
> @prosopo/user-access-policy@3.9.0 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -53,23 +53,23 @@ rendering chunks...
|
|
|
53
53
|
[2mdist/[22m[36m.export.js [39m[1m[2m0.85 kB[22m[1m[22m
|
|
54
54
|
[2mdist/[22m[36mapi/read/getMissingIds.js [39m[1m[2m1.01 kB[22m[1m[22m
|
|
55
55
|
[2mdist/[22m[36mapi/read/fetchRules.js [39m[1m[2m1.08 kB[22m[1m[22m
|
|
56
|
-
[2mdist/[22m[36mruleInput/policyInput.js [39m[1m[2m1.20 kB[22m[1m[22m
|
|
57
56
|
[2mdist/[22m[36mredis/redisRulesStorage.js [39m[1m[2m1.21 kB[22m[1m[22m
|
|
58
|
-
[2mdist/[22m[36mmongoose/mongooseRuleSchema.js [39m[1m[2m1.
|
|
57
|
+
[2mdist/[22m[36mmongoose/mongooseRuleSchema.js [39m[1m[2m1.37 kB[22m[1m[22m
|
|
59
58
|
[2mdist/[22m[36mapi/delete/deleteRules.js [39m[1m[2m1.44 kB[22m[1m[22m
|
|
60
59
|
[2mdist/[22m[36mapi/delete/deleteRuleGroups.js [39m[1m[2m1.44 kB[22m[1m[22m
|
|
60
|
+
[2mdist/[22m[36mruleInput/policyInput.js [39m[1m[2m1.50 kB[22m[1m[22m
|
|
61
61
|
[2mdist/[22m[36mapi/read/findRuleIds.js [39m[1m[2m1.54 kB[22m[1m[22m
|
|
62
62
|
[2mdist/[22m[36mapi/write/rehashRules.js [39m[1m[2m1.54 kB[22m[1m[22m
|
|
63
63
|
[2mdist/[22m[36mruleInput/ruleInput.js [39m[1m[2m1.72 kB[22m[1m[22m
|
|
64
64
|
[2mdist/[22m[36mredis/reader/redisAggregate.js [39m[1m[2m1.80 kB[22m[1m[22m
|
|
65
65
|
[2mdist/[22m[36mredis/redisClient.js [39m[1m[2m1.90 kB[22m[1m[22m
|
|
66
66
|
[2mdist/[22m[36mredis/redisRuleIndex.js [39m[1m[2m2.01 kB[22m[1m[22m
|
|
67
|
-
[2mdist/[22m[36mruleInput/userScopeInput.js [39m[1m[2m2.
|
|
67
|
+
[2mdist/[22m[36mruleInput/userScopeInput.js [39m[1m[2m2.22 kB[22m[1m[22m
|
|
68
68
|
[2mdist/[22m[36mapi/rulesApiClient.js [39m[1m[2m2.36 kB[22m[1m[22m
|
|
69
|
-
[2mdist/[22m[36mtransformRule.js [39m[1m[2m2.
|
|
69
|
+
[2mdist/[22m[36mtransformRule.js [39m[1m[2m2.76 kB[22m[1m[22m
|
|
70
70
|
[2mdist/[22m[36mapi/write/insertRules.js [39m[1m[2m3.22 kB[22m[1m[22m
|
|
71
71
|
[2mdist/[22m[36mredis/redisRulesWriter.js [39m[1m[2m3.22 kB[22m[1m[22m
|
|
72
72
|
[2mdist/[22m[36mredis/reader/redisRulesQuery.js [39m[1m[2m4.15 kB[22m[1m[22m
|
|
73
73
|
[2mdist/[22m[36mapi/ruleApiRoutes.js [39m[1m[2m4.33 kB[22m[1m[22m
|
|
74
74
|
[2mdist/[22m[36mredis/reader/redisRulesReader.js [39m[1m[2m6.23 kB[22m[1m[22m
|
|
75
|
-
[32m✓ built in
|
|
75
|
+
[32m✓ built in 499ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @prosopo/user-access-policy
|
|
2
2
|
|
|
3
|
+
## 3.9.0
|
|
4
|
+
### Minor Changes
|
|
5
|
+
|
|
6
|
+
- 4da8941: Add `deferToVerify` flag on `AccessPolicy` so a Block policy can skip the request-time `blockMiddleware` (no 401 at the captcha endpoint) and fire instead at the verify step. The behaviour mirrors the existing coords-rule deferral pattern: today the middleware blanks out coords from the userScope, so coords-only rules can only ever match in the verify path. `deferToVerify` is the explicit version of that for other signals (ja4Hash, headersHash, etc.) — useful when you want the attacker to pay the captcha-solving cost and the dApp to silently receive `{verified: false}` instead of the bot's frontend seeing a 401.
|
|
7
|
+
|
|
8
|
+
Wiring:
|
|
9
|
+
|
|
10
|
+
- `BlacklistRequestInspector.shouldAbortRequest` filters out matching policies that have `deferToVerify` before picking the top hit. Those policies never short-circuit the middleware.
|
|
11
|
+
- `CaptchaManager.findHardBlockPolicy` widens its matcher: a Block policy now counts as a hard block when it has either no `captchaType` (existing behaviour) **or** `deferToVerify === true`. The check is invoked from `imgCaptchaTasks.dappUserSolution`, `powTasks.serverVerifyPowCaptcha`, and `puzzleTasks.verifyPuzzleCaptchaSolution`, so the deferral applies to all three captcha types.
|
|
12
|
+
- Persistence: `deferToVerify` lands on the mongo `accessPolicySchema` (Boolean) and the zod `accessPolicyInput` (with a string→boolean preprocess so the Redis round-trip works).
|
|
13
|
+
|
|
14
|
+
Motivating use case: a set of spoofed-JA4 hard-block rules pushed 2026-06-12. Marking those `deferToVerify: true` would still reject the attacker at verify but force them to complete N image captcha rounds and surface behavioural data on the commitment record before the rejection — useful for both telemetry and operator-side friction.
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 70ef67a: Add explicit `ZodType<T, ZodTypeDef, unknown>` annotations to `accessRuleInput`, `ruleEntryInput`, and `fetchRulesResponse`. The `z.preprocess` on `deferToVerify` widens the input position to `unknown`; without an explicit annotation TS emits an unnameable inferred type and parent repos that import these schemas fail typecheck with TS2742.
|
|
19
|
+
- 4226c59: Support IPv6 in access rule input transforms.
|
|
20
|
+
|
|
21
|
+
The portal-side ticket [prosopo/captcha-private#3379](https://github.com/prosopo/captcha-private/issues/3379) enables IPv6 rule creation. The CIDR parser in `userScopeInput` and the numeric→string reverse path in `transformRule` were both IPv4-only and would crash or produce wrong addresses when an IPv6 rule reached the provider.
|
|
22
|
+
|
|
23
|
+
- `userScopeInput.ts`: dispatch CIDR parsing to `Address4` vs `Address6` via `Address4.isValid`; both expose `startAddress()/endAddress().bigInt()`.
|
|
24
|
+
- `transformRule.ts`: `getStringIpFromNumeric` now uses `Address6.fromBigInt(...).correctForm()` for numeric values above `2^32 - 1`, keeping `Address4.fromInteger(...)` for IPv4 range.
|
|
25
|
+
- Adds a round-trip unit test for `2001:db8::1` + `/32` mask, plus three IPv6 CIDR cases (`/32`, `/64`, `/10`) alongside the existing IPv4 set.
|
|
26
|
+
- Updated dependencies [f69724f]
|
|
27
|
+
- Updated dependencies [3973078]
|
|
28
|
+
- @prosopo/types@4.4.1
|
|
29
|
+
- @prosopo/api@3.4.11
|
|
30
|
+
|
|
31
|
+
## 3.8.1
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies [bc3813d]
|
|
35
|
+
- Updated dependencies [4d05e3f]
|
|
36
|
+
- @prosopo/types@4.4.0
|
|
37
|
+
- @prosopo/api@3.4.10
|
|
38
|
+
|
|
3
39
|
## 3.8.0
|
|
4
40
|
### Minor Changes
|
|
5
41
|
|
|
@@ -9,36 +9,7 @@ type FetchRulesSchema = ZodType<FetchRulesOptions>;
|
|
|
9
9
|
export type FetchRulesResponse = {
|
|
10
10
|
ruleEntries: AccessRuleEntry[];
|
|
11
11
|
};
|
|
12
|
-
export declare const fetchRulesResponse: z.
|
|
13
|
-
ruleEntries: z.ZodArray<z.ZodObject<{
|
|
14
|
-
rule: ZodType<import("../../rule.js").AccessRule, z.ZodTypeDef, import("../../rule.js").AccessRule>;
|
|
15
|
-
expiresUnixTimestamp: z.ZodOptional<z.ZodNumber>;
|
|
16
|
-
}, "strip", z.ZodTypeAny, {
|
|
17
|
-
rule: import("../../rule.js").AccessPolicy & import("../../rule.js").PolicyScope & import("../../rule.js").UserAttributes & import("../../rule.js").UserIp & {
|
|
18
|
-
groupId?: string;
|
|
19
|
-
};
|
|
20
|
-
expiresUnixTimestamp?: number | undefined;
|
|
21
|
-
}, {
|
|
22
|
-
rule: import("../../rule.js").AccessPolicy & import("../../rule.js").PolicyScope & import("../../rule.js").UserAttributes & import("../../rule.js").UserIp & {
|
|
23
|
-
groupId?: string;
|
|
24
|
-
};
|
|
25
|
-
expiresUnixTimestamp?: number | undefined;
|
|
26
|
-
}>, "many">;
|
|
27
|
-
}, "strip", z.ZodTypeAny, {
|
|
28
|
-
ruleEntries: {
|
|
29
|
-
rule: import("../../rule.js").AccessPolicy & import("../../rule.js").PolicyScope & import("../../rule.js").UserAttributes & import("../../rule.js").UserIp & {
|
|
30
|
-
groupId?: string;
|
|
31
|
-
};
|
|
32
|
-
expiresUnixTimestamp?: number | undefined;
|
|
33
|
-
}[];
|
|
34
|
-
}, {
|
|
35
|
-
ruleEntries: {
|
|
36
|
-
rule: import("../../rule.js").AccessPolicy & import("../../rule.js").PolicyScope & import("../../rule.js").UserAttributes & import("../../rule.js").UserIp & {
|
|
37
|
-
groupId?: string;
|
|
38
|
-
};
|
|
39
|
-
expiresUnixTimestamp?: number | undefined;
|
|
40
|
-
}[];
|
|
41
|
-
}>;
|
|
12
|
+
export declare const fetchRulesResponse: ZodType<FetchRulesResponse, z.ZodTypeDef, unknown>;
|
|
42
13
|
export type FetchRulesEndpointResponse = ApiEndpointResponse & {
|
|
43
14
|
data?: FetchRulesResponse;
|
|
44
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRules.d.ts","sourceRoot":"","sources":["../../../src/api/read/fetchRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,KAAK,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,GAAG,EAAE,MAAM,EAAE,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAChC,WAAW,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchRules.d.ts","sourceRoot":"","sources":["../../../src/api/read/fetchRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,KAAK,EACX,eAAe,EACf,kBAAkB,EAClB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG;IAC/B,GAAG,EAAE,MAAM,EAAE,CAAC;CACd,CAAC;AAEF,KAAK,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAChC,WAAW,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,OAAO,CACvC,kBAAkB,EAClB,CAAC,CAAC,UAAU,EACZ,OAAO,CAGgC,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG,mBAAmB,GAAG;IAC9D,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,qBAAa,kBAAmB,YAAW,WAAW,CAAC,gBAAgB,CAAC;IAEtE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM;IAGzB,oBAAoB,IAAI,gBAAgB;IAMzC,cAAc,CACnB,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,0BAA0B,CAAC;CA0BtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRules.js","sourceRoot":"","sources":["../../../src/api/read/fetchRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchRules.js","sourceRoot":"","sources":["../../../src/api/read/fetchRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAoBhE,MAAM,CAAC,MAAM,kBAAkB,GAI3B,CAAC,CAAC,MAAM,CAAC;IACZ,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE;CACG,CAAC,CAAC;AAMzC,MAAM,OAAO,kBAAkB;IAC9B,YACkB,kBAAsC,EACtC,MAAc;QADd,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAQ;IAC7B,CAAC;IAEG,oBAAoB;QAC1B,OAAO,CAAC,CAAC,MAAM,CAAC;YACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;SACc,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,IAAuB,EACvB,MAAe;QAEf,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACf,GAAG,EAAE,wBAAwB;YAC7B,IAAI,EAAE;gBACL,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBAC/B,UAAU,EAAE,WAAW,CAAC,MAAM;aAC9B;SACD,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAChB,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE;gBACL,WAAW,EAAE,WAAW;aACxB;SACD,CAAC,CAAC,CAAC;QAEJ,OAAO;YACN,MAAM,EAAE,yBAAyB,CAAC,OAAO;YACzC,IAAI,EAAE;gBACL,WAAW,EAAE,WAAW;aACxB;SACD,CAAC;IACH,CAAC;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ApiEndpoint, type ApiEndpointResponse } from "@prosopo/api-route";
|
|
2
2
|
import { type Logger } from "@prosopo/logger";
|
|
3
|
-
import { type ZodType } from "zod";
|
|
3
|
+
import { type ZodType, type ZodTypeDef } from "zod";
|
|
4
4
|
import type { AccessPolicy, PolicyScope, UserScope } from "#policy/rule.js";
|
|
5
5
|
import { type UserScopeInput } from "#policy/ruleInput/userScopeInput.js";
|
|
6
6
|
import type { AccessRulesWriter } from "#policy/rulesStorage.js";
|
|
@@ -15,7 +15,7 @@ type ParsedInsertRulesGroup = InsertRulesGroup & {
|
|
|
15
15
|
userScopes: UserScope[];
|
|
16
16
|
};
|
|
17
17
|
type ParsedInsertRuleGroups = ParsedInsertRulesGroup[];
|
|
18
|
-
type InsertRulesSchema = ZodType<InsertRulesGroup[]>;
|
|
18
|
+
type InsertRulesSchema = ZodType<InsertRulesGroup[], ZodTypeDef, unknown>;
|
|
19
19
|
export declare class InsertRulesEndpoint implements ApiEndpoint<InsertRulesSchema> {
|
|
20
20
|
private readonly accessRulesWriter;
|
|
21
21
|
private readonly logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertRules.d.ts","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"insertRules.d.ts","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAK,MAAM,KAAK,CAAC;AACvD,OAAO,KAAK,EACX,YAAY,EAEZ,WAAW,EACX,SAAS,EACT,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EACN,KAAK,cAAc,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAEX,iBAAiB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;IAG7B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,sBAAsB,GAAG,gBAAgB,GAAG;IAChD,UAAU,EAAE,SAAS,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;AAIvD,KAAK,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAE1E,qBAAa,mBAAoB,YAAW,WAAW,CAAC,iBAAiB,CAAC;IAExE,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM;IAGzB,oBAAoB,IAAI,iBAAiB;IAY1C,cAAc,CACnB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;cAwDf,gBAAgB,CAC/B,MAAM,EAAE,sBAAsB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;cAQJ,gBAAgB,CAC/B,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;CAiCpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertRules.js","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"AAcA,OAAO,EAGN,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"insertRules.js","sourceRoot":"","sources":["../../../src/api/write/insertRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,8 @@ const accessPolicySchema = {
|
|
|
29
29
|
imageThreshold: { type: Number, required: false },
|
|
30
30
|
powDifficulty: { type: Number, required: false },
|
|
31
31
|
unsolvedImagesCount: { type: Number, required: false },
|
|
32
|
-
frictionlessScore: { type: Number, required: false }
|
|
32
|
+
frictionlessScore: { type: Number, required: false },
|
|
33
|
+
deferToVerify: { type: Boolean, required: false }
|
|
33
34
|
};
|
|
34
35
|
const accessRuleMongooseSchema = {
|
|
35
36
|
...accessPolicySchema,
|
|
@@ -16,7 +16,11 @@ const accessPolicyInput = zod.z.object({
|
|
|
16
16
|
// the number of unsolved image CAPTCHA challenges to serve
|
|
17
17
|
unsolvedImagesCount: zod.z.coerce.number().optional(),
|
|
18
18
|
// used to increase the user's score
|
|
19
|
-
frictionlessScore: zod.z.coerce.number().optional()
|
|
19
|
+
frictionlessScore: zod.z.coerce.number().optional(),
|
|
20
|
+
// Skip the request-time block middleware and only fire at verify.
|
|
21
|
+
// Redis stores booleans as strings — preprocess so "true"/"false"
|
|
22
|
+
// round-trip to the JS boolean the matcher expects.
|
|
23
|
+
deferToVerify: zod.z.preprocess((v) => typeof v === "string" ? v === "true" : v, zod.z.boolean()).optional()
|
|
20
24
|
});
|
|
21
25
|
const sanitizeAccessPolicy = (policy) => {
|
|
22
26
|
if (policy.type === rule.AccessPolicyType.Block) {
|
|
@@ -41,7 +41,7 @@ const userIpInput = zod.z.object({
|
|
|
41
41
|
numericUserIp.numericIp = util.getIPAddress(ip).bigInt();
|
|
42
42
|
}
|
|
43
43
|
if ("string" === typeof ipMask) {
|
|
44
|
-
const ipObject = new ipAddress.Address4(ipMask);
|
|
44
|
+
const ipObject = ipAddress.Address4.isValid(ipMask) ? new ipAddress.Address4(ipMask) : new ipAddress.Address6(ipMask);
|
|
45
45
|
numericUserIp.numericIpMaskMin = ipObject.startAddress().bigInt();
|
|
46
46
|
numericUserIp.numericIpMaskMax = ipObject.endAddress().bigInt();
|
|
47
47
|
}
|
|
@@ -8,6 +8,7 @@ const policyInput = require("./ruleInput/policyInput.cjs");
|
|
|
8
8
|
const ruleInput = require("./ruleInput/ruleInput.cjs");
|
|
9
9
|
const userScopeInput = require("./ruleInput/userScopeInput.cjs");
|
|
10
10
|
const RULE_HASH_ALGORITHM = "md5";
|
|
11
|
+
const MAX_IPV4_NUMERIC = (1n << 32n) - 1n;
|
|
11
12
|
const makeAccessRuleHash = (rule) => {
|
|
12
13
|
const valueProperties = Object.entries(rule).filter(
|
|
13
14
|
([key, value]) => "undefined" !== typeof value
|
|
@@ -62,7 +63,7 @@ const hashObject = (object, algorithm) => crypto.createHash(algorithm).update(
|
|
|
62
63
|
)
|
|
63
64
|
)
|
|
64
65
|
).digest("hex");
|
|
65
|
-
const getStringIpFromNumeric = (numericIp) => ipAddress.Address4.fromInteger(Number(numericIp)).address;
|
|
66
|
+
const getStringIpFromNumeric = (numericIp) => numericIp > MAX_IPV4_NUMERIC ? ipAddress.Address6.fromBigInt(numericIp).correctForm() : ipAddress.Address4.fromInteger(Number(numericIp)).address;
|
|
66
67
|
const getCidrFromNumericIpRange = (startIp, endIp) => {
|
|
67
68
|
const ipRange = new cidrCalc.IpRange(
|
|
68
69
|
cidrCalc.IpAddress.of(getStringIpFromNumeric(startIp)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongooseRuleSchema.d.ts","sourceRoot":"","sources":["../../src/mongoose/mongooseRuleSchema.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mongooseRuleSchema.d.ts","sourceRoot":"","sources":["../../src/mongoose/mongooseRuleSchema.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,KAAK,EACX,gBAAgB,EAIhB,MAAM,uBAAuB,CAAC;AAuC/B,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,gBAAgB,CAKtC,CAAC"}
|
|
@@ -27,7 +27,8 @@ const accessPolicySchema = {
|
|
|
27
27
|
imageThreshold: { type: Number, required: false },
|
|
28
28
|
powDifficulty: { type: Number, required: false },
|
|
29
29
|
unsolvedImagesCount: { type: Number, required: false },
|
|
30
|
-
frictionlessScore: { type: Number, required: false }
|
|
30
|
+
frictionlessScore: { type: Number, required: false },
|
|
31
|
+
deferToVerify: { type: Boolean, required: false }
|
|
31
32
|
};
|
|
32
33
|
const accessRuleMongooseSchema = {
|
|
33
34
|
...accessPolicySchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongooseRuleSchema.js","sourceRoot":"","sources":["../../src/mongoose/mongooseRuleSchema.ts"],"names":[],"mappings":"AAwBA,MAAM,oBAAoB,GAA2C;IACpE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACE,CAAC;AAE1C,MAAM,YAAY,GAAmC;IACpD,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACT,CAAC;AAElC,MAAM,eAAe,GAAsC;IAC1D,GAAG,oBAAoB;IACvB,GAAG,YAAY;CACiB,CAAC;AAElC,MAAM,iBAAiB,GAAkC;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACZ,CAAC;AAEjC,MAAM,kBAAkB,GAAmC;IAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACtD,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"mongooseRuleSchema.js","sourceRoot":"","sources":["../../src/mongoose/mongooseRuleSchema.ts"],"names":[],"mappings":"AAwBA,MAAM,oBAAoB,GAA2C;IACpE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACE,CAAC;AAE1C,MAAM,YAAY,GAAmC;IACpD,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACrC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACT,CAAC;AAElC,MAAM,eAAe,GAAsC;IAC1D,GAAG,oBAAoB;IACvB,GAAG,YAAY;CACiB,CAAC;AAElC,MAAM,iBAAiB,GAAkC;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACZ,CAAC;AAEjC,MAAM,kBAAkB,GAAmC;IAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACjD,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAChD,mBAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACtD,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;CACjB,CAAC;AAElC,MAAM,CAAC,MAAM,wBAAwB,GAAuC;IAC3E,GAAG,kBAAkB;IACrB,GAAG,iBAAiB;IACpB,GAAG,eAAe;IAClB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CACb,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Logger } from "@prosopo/logger";
|
|
2
2
|
import type { RedisClientType } from "redis";
|
|
3
|
-
import { type ZodType } from "zod";
|
|
3
|
+
import { type ZodType, type ZodTypeDef } from "zod";
|
|
4
4
|
export declare const REDIS_BATCH_SIZE = 1000;
|
|
5
5
|
export declare const getMissingRedisKeys: (client: RedisClientType, keys: string[]) => Promise<string[]>;
|
|
6
6
|
export declare const fetchRedisHashRecords: (client: RedisClientType, keys: string[], logger: Logger) => Promise<{
|
|
7
7
|
records: object[];
|
|
8
8
|
expirations: (number | undefined)[];
|
|
9
9
|
}>;
|
|
10
|
-
export declare const parseRedisRecords: <T>(records: unknown[], recordSchema: ZodType<T>, logger: Logger) => T[];
|
|
10
|
+
export declare const parseRedisRecords: <T>(records: unknown[], recordSchema: ZodType<T, ZodTypeDef, unknown>, logger: Logger) => T[];
|
|
11
11
|
//# sourceMappingURL=redisClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisClient.d.ts","sourceRoot":"","sources":["../../src/redis/redisClient.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,KAAK,OAAO,EAAK,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"redisClient.d.ts","sourceRoot":"","sources":["../../src/redis/redisClient.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAK,MAAM,KAAK,CAAC;AAEvD,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAEtC,eAAO,MAAM,mBAAmB,WACvB,eAAe,QACjB,MAAM,EAAE,KACZ,OAAO,CAAC,MAAM,EAAE,CAsBlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,WACzB,eAAe,QACjB,MAAM,EAAE,UACN,MAAM,KACZ,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;CAAE,CAgBpE,CAAC;AAOF,eAAO,MAAM,iBAAiB,GAAI,CAAC,WACzB,OAAO,EAAE,gBACJ,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UACrC,MAAM,KACZ,CAAC,EAcD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../src/redis/redisClient.ts"],"names":[],"mappings":"AAgBA,OAAO,
|
|
1
|
+
{"version":3,"file":"redisClient.js","sourceRoot":"","sources":["../../src/redis/redisClient.ts"],"names":[],"mappings":"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"}
|
package/dist/rule.d.ts
CHANGED
package/dist/rule.d.ts.map
CHANGED
|
@@ -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;
|
|
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;IAY3B,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,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;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,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"}
|
|
@@ -9,6 +9,7 @@ export declare const accessPolicyInput: z.ZodObject<{
|
|
|
9
9
|
powDifficulty: z.ZodOptional<z.ZodNumber>;
|
|
10
10
|
unsolvedImagesCount: z.ZodOptional<z.ZodNumber>;
|
|
11
11
|
frictionlessScore: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
deferToVerify: z.ZodOptional<z.ZodEffects<z.ZodBoolean, boolean, unknown>>;
|
|
12
13
|
}, "strip", z.ZodTypeAny, {
|
|
13
14
|
type: AccessPolicyType;
|
|
14
15
|
captchaType?: import("@prosopo/types").CaptchaType | undefined;
|
|
@@ -18,6 +19,7 @@ export declare const accessPolicyInput: z.ZodObject<{
|
|
|
18
19
|
powDifficulty?: number | undefined;
|
|
19
20
|
unsolvedImagesCount?: number | undefined;
|
|
20
21
|
frictionlessScore?: number | undefined;
|
|
22
|
+
deferToVerify?: boolean | undefined;
|
|
21
23
|
}, {
|
|
22
24
|
type: AccessPolicyType;
|
|
23
25
|
captchaType?: import("@prosopo/types").CaptchaType | undefined;
|
|
@@ -27,6 +29,7 @@ export declare const accessPolicyInput: z.ZodObject<{
|
|
|
27
29
|
powDifficulty?: number | undefined;
|
|
28
30
|
unsolvedImagesCount?: number | undefined;
|
|
29
31
|
frictionlessScore?: number | undefined;
|
|
32
|
+
deferToVerify?: unknown;
|
|
30
33
|
}>;
|
|
31
34
|
export declare const sanitizeAccessPolicy: (policy: AccessPolicy) => AccessPolicy;
|
|
32
35
|
export declare const policyScopeInput: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policyInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/policyInput.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EACN,KAAK,YAAY,EACjB,gBAAgB,EAEhB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"policyInput.d.ts","sourceRoot":"","sources":["../../src/ruleInput/policyInput.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EACN,KAAK,YAAY,EACjB,gBAAgB,EAEhB,MAAM,iBAAiB,CAAC;AAOzB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBI,CAAC;AAGnC,eAAO,MAAM,oBAAoB,WAAY,YAAY,KAAG,YAM3D,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;EAEmC,CAAC"}
|
|
@@ -14,7 +14,11 @@ const accessPolicyInput = z.object({
|
|
|
14
14
|
// the number of unsolved image CAPTCHA challenges to serve
|
|
15
15
|
unsolvedImagesCount: z.coerce.number().optional(),
|
|
16
16
|
// used to increase the user's score
|
|
17
|
-
frictionlessScore: z.coerce.number().optional()
|
|
17
|
+
frictionlessScore: z.coerce.number().optional(),
|
|
18
|
+
// Skip the request-time block middleware and only fire at verify.
|
|
19
|
+
// Redis stores booleans as strings — preprocess so "true"/"false"
|
|
20
|
+
// round-trip to the JS boolean the matcher expects.
|
|
21
|
+
deferToVerify: z.preprocess((v) => typeof v === "string" ? v === "true" : v, z.boolean()).optional()
|
|
18
22
|
});
|
|
19
23
|
const sanitizeAccessPolicy = (policy) => {
|
|
20
24
|
if (policy.type === AccessPolicyType.Block) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policyInput.js","sourceRoot":"","sources":["../../src/ruleInput/policyInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAEN,gBAAgB,GAEhB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"policyInput.js","sourceRoot":"","sources":["../../src/ruleInput/policyInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAEN,gBAAgB,GAEhB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;IACpC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEzC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/C,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE5C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3C,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEjD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAI/C,aAAa,EAAE,CAAC;SACd,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1E,QAAQ,EAAE;CACoB,CAAC,CAAC;AAGnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAoB,EAAgB,EAAE;IAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC;QAClE,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACP,CAAgC,CAAC"}
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import { type ZodType, z } from "zod";
|
|
2
2
|
import type { AccessPolicy, AccessRule, PolicyScope } from "#policy/rule.js";
|
|
3
|
-
import { type AccessRulesFilter, FilterScopeMatch } from "#policy/rulesStorage.js";
|
|
3
|
+
import { type AccessRuleEntry, type AccessRulesFilter, FilterScopeMatch } from "#policy/rulesStorage.js";
|
|
4
4
|
import { type UserScopeInput } from "./userScopeInput.js";
|
|
5
5
|
type RuleGroupInput = {
|
|
6
6
|
groupId?: string;
|
|
7
7
|
ruleGroupId?: string;
|
|
8
8
|
};
|
|
9
9
|
export type AccessRuleInput = AccessPolicy & PolicyScope & UserScopeInput & RuleGroupInput;
|
|
10
|
-
export declare const accessRuleInput: ZodType<AccessRule>;
|
|
11
|
-
export declare const ruleEntryInput: z.
|
|
12
|
-
rule: ZodType<AccessRule, z.ZodTypeDef, AccessRule>;
|
|
13
|
-
expiresUnixTimestamp: z.ZodOptional<z.ZodNumber>;
|
|
14
|
-
}, "strip", z.ZodTypeAny, {
|
|
15
|
-
rule: AccessPolicy & PolicyScope & import("#policy/rule.js").UserAttributes & import("#policy/rule.js").UserIp & {
|
|
16
|
-
groupId?: string;
|
|
17
|
-
};
|
|
18
|
-
expiresUnixTimestamp?: number | undefined;
|
|
19
|
-
}, {
|
|
20
|
-
rule: AccessPolicy & PolicyScope & import("#policy/rule.js").UserAttributes & import("#policy/rule.js").UserIp & {
|
|
21
|
-
groupId?: string;
|
|
22
|
-
};
|
|
23
|
-
expiresUnixTimestamp?: number | undefined;
|
|
24
|
-
}>;
|
|
10
|
+
export declare const accessRuleInput: ZodType<AccessRule, z.ZodTypeDef, unknown>;
|
|
11
|
+
export declare const ruleEntryInput: ZodType<AccessRuleEntry, z.ZodTypeDef, unknown>;
|
|
25
12
|
export type AccessRulesFilterInput = AccessRulesFilter & {
|
|
26
13
|
userScope?: UserScopeInput;
|
|
27
14
|
policyScopes?: PolicyScope[];
|
|
@@ -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,
|
|
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,EACN,KAAK,eAAe,EACpB,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;AAsBhB,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,CAOL,CAAC;AAEnE,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,CAIrC,CAAC;AAEvC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleInput.js","sourceRoot":"","sources":["../../src/ruleInput/ruleInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,EAGN,gBAAgB,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAY1E,MAAM,cAAc,GAAG,CAAC;KACtB,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACP,CAAC;KACnC,SAAS,CAAC,CAAC,cAA8B,EAAE,EAAE;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,GAAG,cAAc,CAAC;IAErD,IAAI,QAAQ,KAAK,OAAO,WAAW,EAAE,CAAC;QACrC,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ruleInput.js","sourceRoot":"","sources":["../../src/ruleInput/ruleInput.ts"],"names":[],"mappings":"AAeA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,EAGN,gBAAgB,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAuB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAY1E,MAAM,cAAc,GAAG,CAAC;KACtB,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACP,CAAC;KACnC,SAAS,CAAC,CAAC,cAA8B,EAAE,EAAE;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,GAAG,cAAc,CAAC;IAErD,IAAI,QAAQ,KAAK,OAAO,WAAW,EAAE,CAAC;QACrC,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC,CAAC;AAOJ,MAAM,CAAC,MAAM,eAAe,GAA+C,CAAC;KAC1E,MAAM,CAAC;IACP,GAAG,iBAAiB,CAAC,KAAK;IAC1B,GAAG,gBAAgB,CAAC,KAAK;CACzB,CAAC;KACD,GAAG,CAAC,cAAc,CAAC;KACnB,GAAG,CAAC,cAAc,CAAC;KACnB,SAAS,CAAC,CAAC,SAA0B,EAAc,EAAE,CAAC,SAAS,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAC1B,CAAC,CAAC,MAAM,CAAC;IACR,IAAI,EAAE,eAAe;IACrB,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACf,CAAC,CAAC;AAOvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,WAAW,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACxC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAClD,gBAAgB,EAAE,CAAC;SACjB,UAAU,CAAC,gBAAgB,CAAC;SAC5B,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC;SACf,UAAU,CAAC,gBAAgB,CAAC;SAC5B,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACY,CAA2C,CAAC;AAEvF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC5C,WAAmC,EACb,EAAE;IACxB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,WAAW,CAAC;IAEjE,MAAM,eAAe,GAAG,YAAY,IAAI,EAAE,CAAC;IAE3C,IAAI,WAAW,EAAE,CAAC;QACjB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC5C,GAAG,UAAU;YACb,WAAW;SACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
import { getIPAddress } from "@prosopo/util";
|
|
3
|
-
import { Address4 } from "ip-address";
|
|
3
|
+
import { Address4, Address6 } from "ip-address";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
const userAttributesSchema = z.object({
|
|
6
6
|
// coerce is used for safety, as e.g., incoming userId can be digital
|
|
@@ -39,7 +39,7 @@ const userIpInput = z.object({
|
|
|
39
39
|
numericUserIp.numericIp = getIPAddress(ip).bigInt();
|
|
40
40
|
}
|
|
41
41
|
if ("string" === typeof ipMask) {
|
|
42
|
-
const ipObject = new Address4(ipMask);
|
|
42
|
+
const ipObject = Address4.isValid(ipMask) ? new Address4(ipMask) : new Address6(ipMask);
|
|
43
43
|
numericUserIp.numericIpMaskMin = ipObject.startAddress().bigInt();
|
|
44
44
|
numericUserIp.numericIpMaskMax = ipObject.endAddress().bigInt();
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userScopeInput.js","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"AAcA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"userScopeInput.js","sourceRoot":"","sources":["../../src/ruleInput/userScopeInput.ts"],"names":[],"mappings":"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"}
|