@prosopo/user-access-policy 3.12.13 → 3.12.15

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 (32) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +5 -4
  2. package/.turbo/turbo-build$colon$tsc.log +14 -14
  3. package/.turbo/turbo-build.log +6 -5
  4. package/CHANGELOG.md +47 -0
  5. package/dist/.export.d.ts +1 -0
  6. package/dist/.export.d.ts.map +1 -1
  7. package/dist/.export.js +3 -2
  8. package/dist/.export.js.map +1 -1
  9. package/dist/cjs/.export.cjs +3 -1
  10. package/dist/cjs/matchedRule.cjs +59 -0
  11. package/dist/matchedRule.d.ts +4 -0
  12. package/dist/matchedRule.d.ts.map +1 -0
  13. package/dist/matchedRule.js +59 -0
  14. package/dist/matchedRule.js.map +1 -0
  15. package/dist/tests/matchedRule.unit.test.d.ts +2 -0
  16. package/dist/tests/matchedRule.unit.test.d.ts.map +1 -0
  17. package/dist/tests/matchedRule.unit.test.js +142 -0
  18. package/dist/tests/matchedRule.unit.test.js.map +1 -0
  19. package/dist/tests/redis/redisRulesReaderLoad.benchmark.integration.test.js +1 -1
  20. package/dist/tests/redis/redisRulesReaderLoad.benchmark.integration.test.js.map +1 -1
  21. package/dist/tests/redis/redisRulesReaderRank.benchmark.integration.test.js +1 -1
  22. package/dist/tests/redis/redisRulesReaderRank.benchmark.integration.test.js.map +1 -1
  23. package/dist/tests/redis/redisRulesStorage.integration.test.js +1 -1
  24. package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
  25. package/package.json +10 -10
  26. package/src/.export.ts +2 -0
  27. package/src/matchedRule.ts +99 -0
  28. package/src/tests/matchedRule.unit.test.ts +184 -0
  29. package/src/tests/redis/redisRulesReaderLoad.benchmark.integration.test.ts +5 -1
  30. package/src/tests/redis/redisRulesReaderRank.benchmark.integration.test.ts +5 -1
  31. package/src/tests/redis/redisRulesStorage.integration.test.ts +5 -1
  32. package/tsconfig.tsbuildinfo +1 -1
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/user-access-policy@3.12.13 build:cjs
2
+ > @prosopo/user-access-policy@3.12.15 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -33,7 +33,7 @@ ViteCommonJSConfig: .
33
33
  vite v8.1.5 building ssr environment for production...
34
34
  Bundle build started
35
35
  
36
- ✓ 37 modules transformed.
36
+ ✓ 38 modules transformed.
37
37
  rendering chunks...
38
38
  computing gzip size...
39
39
  dist/cjs/api/accessRulesApiClient.cjs 0.00 kB │ gzip: 0.02 kB
@@ -56,12 +56,13 @@ dist/cjs/api/delete/deleteRuleGroups.cjs 1.43 kB │ gzip: 0.65 kB
56
56
  dist/cjs/api/write/rehashRules.cjs 1.48 kB │ gzip: 0.56 kB
57
57
  dist/cjs/api/delete/deleteRules.cjs 1.52 kB │ gzip: 0.65 kB
58
58
  dist/cjs/mongoose/mongooseRuleSchema.cjs 1.52 kB │ gzip: 0.42 kB
59
- dist/cjs/.export.cjs 1.55 kB │ gzip: 0.39 kB
60
59
  dist/cjs/api/read/findRuleIds.cjs 1.58 kB │ gzip: 0.66 kB
60
+ dist/cjs/.export.cjs 1.68 kB │ gzip: 0.42 kB
61
61
  dist/cjs/redis/redisClient.cjs 1.92 kB │ gzip: 0.72 kB
62
62
  dist/cjs/classifyOs.cjs 2.04 kB │ gzip: 1.05 kB
63
63
  dist/cjs/ruleInput/policyInput.cjs 2.09 kB │ gzip: 0.79 kB
64
64
  dist/cjs/ruleInput/ruleInput.cjs 2.24 kB │ gzip: 0.67 kB
65
+ dist/cjs/matchedRule.cjs 2.29 kB │ gzip: 1.03 kB
65
66
  dist/cjs/ruleInput/userScopeInput.cjs 2.44 kB │ gzip: 0.77 kB
66
67
  dist/cjs/api/rulesApiClient.cjs 2.53 kB │ gzip: 0.68 kB
67
68
  dist/cjs/redis/reader/redisAggregate.cjs 2.57 kB │ gzip: 1.04 kB
@@ -74,4 +75,4 @@ dist/cjs/redis/reader/redisRulesSplitQuery.cjs 4.27 kB │ gzip: 1.92 kB
74
75
  dist/cjs/redis/reader/redisRulesQuery.cjs 4.49 kB │ gzip: 1.51 kB
75
76
  dist/cjs/redis/reader/redisRulesReader.cjs 11.61 kB │ gzip: 2.81 kB
76
77
 
77
- ✓ built in 109ms
78
+ ✓ built in 102ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/user-access-policy@3.12.13 build:tsc
2
+ > @prosopo/user-access-policy@3.12.15 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 5:53:13 PM - Projects in this build:
5
+ 3:31:10 PM - 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
- 5:53:13 PM - 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'
18
+ 3:31:10 PM - 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
- 5:53:13 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
20
+ 3:31:10 PM - 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
- 5:53:13 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
22
+ 3:31:10 PM - 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
- 5:53:13 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
24
+ 3:31:10 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
25
25
 
26
- 5:53:13 PM - 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'
26
+ 3:31:10 PM - 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
- 5:53:13 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
28
+ 3:31:10 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
29
29
 
30
- 5:53:13 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
30
+ 3:31:10 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/index.ts' is older than output '../common/tsconfig.tsbuildinfo'
31
31
 
32
- 5:53:13 PM - 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'
32
+ 3:31:10 PM - 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
- 5:53:13 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/redisClient.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
34
+ 3:31:10 PM - Project '../redis-client/tsconfig.json' is up to date because newest input '../redis-client/src/index.ts' is older than output '../redis-client/tsconfig.tsbuildinfo'
35
35
 
36
- 5:53:13 PM - Project '../api/tsconfig.json' is up to date because newest input '../api/src/index.ts' is older than output '../api/tsconfig.tsbuildinfo'
36
+ 3:31:10 PM - 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
- 5:53:13 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
38
+ 3:31:10 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
39
39
 
40
- 5:53:13 PM - Building project '/home/runner/work/captcha/captcha/packages/user-access-policy/tsconfig.json'...
40
+ 3:31:10 PM - Building project '/home/runner/work/captcha/captcha/packages/user-access-policy/tsconfig.json'...
41
41
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/user-access-policy@3.12.13 build
2
+ > @prosopo/user-access-policy@3.12.15 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/user-access-policy@3.12.13 build:cross-env
6
+ > @prosopo/user-access-policy@3.12.15 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -37,7 +37,7 @@ ViteEsmConfig: .
37
37
  vite v8.1.5 building ssr environment for production...
38
38
  Bundle build started
39
39
  
40
- ✓ 37 modules transformed.
40
+ ✓ 38 modules transformed.
41
41
  rendering chunks...
42
42
  computing gzip size...
43
43
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
@@ -53,7 +53,7 @@ dist/api/.export.js 0.31 kB │ gzip: 0.16 kB
53
53
  dist/rule.js 0.36 kB │ gzip: 0.23 kB
54
54
  dist/ruleRecord.js 0.66 kB │ gzip: 0.33 kB
55
55
  dist/api/delete/deleteAllRules.js 0.73 kB │ gzip: 0.37 kB
56
- dist/.export.js 0.91 kB │ gzip: 0.29 kB
56
+ dist/.export.js 0.98 kB │ gzip: 0.31 kB
57
57
  dist/api/read/getMissingIds.js 1.02 kB │ gzip: 0.48 kB
58
58
  dist/api/read/fetchRules.js 1.07 kB │ gzip: 0.49 kB
59
59
  dist/redis/redisRulesStorage.js 1.22 kB │ gzip: 0.45 kB
@@ -68,6 +68,7 @@ dist/ruleInput/policyInput.js 1.84 kB │ gzip: 0.73 kB
68
68
  dist/classifyOs.js 1.98 kB │ gzip: 1.03 kB
69
69
  dist/ruleInput/userScopeInput.js 2.09 kB │ gzip: 0.67 kB
70
70
  dist/api/rulesApiClient.js 2.12 kB │ gzip: 0.62 kB
71
+ dist/matchedRule.js 2.22 kB │ gzip: 1.00 kB
71
72
  dist/redis/reader/redisAggregate.js 2.35 kB │ gzip: 0.99 kB
72
73
  dist/transformRule.js 2.40 kB │ gzip: 0.94 kB
73
74
  dist/redis/redisRuleIndex.js 2.44 kB │ gzip: 0.73 kB
@@ -78,4 +79,4 @@ dist/redis/reader/redisRulesSplitQuery.js 4.18 kB │ gzip: 1.89 kB
78
79
  dist/redis/reader/redisRulesQuery.js 4.30 kB │ gzip: 1.47 kB
79
80
  dist/redis/reader/redisRulesReader.js 10.19 kB │ gzip: 2.68 kB
80
81
 
81
- ✓ built in 126ms
82
+ ✓ built in 112ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # @prosopo/user-access-policy
2
2
 
3
+ ## 3.12.15
4
+ ### Patch Changes
5
+
6
+ - 216f8cd: Record the access rule that actually fired on the record it acted on, so the
7
+ audit page can name the exact policy behind a block rather than echoing its
8
+ optional free-text description.
9
+
10
+ Access rules are ephemeral — client rules carry a TTL and are reaped by
11
+ Mongo's `expiry` index — so an audit row can't answer "which policy blocked
12
+ me?" by joining to the live rules collection: by the time anyone looks, the
13
+ rule is usually gone. `describeMatchedRule` snapshots the matched rule (policy
14
+ type, captcha type, `deferToVerify`, description, rule group, and its scope
15
+ conditions in record form) onto `Session.matchedRule` at enforcement time.
16
+
17
+ Previously only the request-time block middleware recorded any rule identity,
18
+ and only as a hash, a field-name list and a description. It is now written by
19
+ every access-policy path: the block middleware, the frictionless entry (block,
20
+ auto-ban, forced captcha type, and score-only restrict alike), and the
21
+ verify-time hard-block check in the PoW / image / puzzle flows — which is where
22
+ `deferToVerify` rules land, and where "why was I rejected?" was least obvious.
23
+
24
+ `checkForHardBlock` now returns the whole `AccessRule` rather than just its
25
+ policy half; the runtime value was always the full rule.
26
+ - Updated dependencies [216f8cd]
27
+ - @prosopo/types@5.0.4
28
+ - @prosopo/api@4.0.4
29
+
30
+ ## 3.12.14
31
+ ### Patch Changes
32
+
33
+ - 16dbab0: chore(deps): bump ip-address from 10.0.1 to 10.5.0
34
+
35
+ The @angular/core and @angular/common bumps in the angular integration demo are
36
+ not listed here: that demo sits below the root `integration/*` workspace glob, so
37
+ changesets does not know it and errors on a changeset naming it.
38
+ - Updated dependencies [16dbab0]
39
+ - Updated dependencies [9ec6cc4]
40
+ - Updated dependencies [d5e104b]
41
+ - Updated dependencies [063e69d]
42
+ - @prosopo/types@5.0.3
43
+ - @prosopo/util@3.3.6
44
+ - @prosopo/redis-client@1.0.32
45
+ - @prosopo/api@4.0.3
46
+ - @prosopo/common@3.1.50
47
+ - @prosopo/logger@2.0.6
48
+ - @prosopo/api-route@2.6.55
49
+
3
50
  ## 3.12.13
4
51
  ### Patch Changes
5
52
 
package/dist/.export.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from "./ruleInput/.export.js";
2
2
  export { makeAccessRuleHash, transformAccessRuleRecordIntoRule, transformAccessRuleIntoRecord, } from "./transformRule.js";
3
3
  export { type AccessRule, type AccessPolicy, type PolicyScope, type UserScope, AccessPolicyType, } from "./rule.js";
4
+ export { describeMatchedRule } from "./matchedRule.js";
4
5
  export { classifyOs, OS_NAMES, type OsName } from "./classifyOs.js";
5
6
  export { type AccessRulesFilter, type AccessRulesStorage, type AccessRuleEntry, FilterScopeMatch, } from "./rulesStorage.js";
6
7
  export { type AccessRuleRecord, type UserScopeRecord, type UserScopeRecordField, userScopeRecordFields, getUserScopeRecordFromAccessRuleRecord, } from "./ruleRecord.js";
@@ -1 +1 @@
1
- {"version":3,"file":".export.d.ts","sourceRoot":"","sources":["../src/.export.ts"],"names":[],"mappings":"AAcA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACN,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,sCAAsC,GACtC,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":".export.d.ts","sourceRoot":"","sources":["../src/.export.ts"],"names":[],"mappings":"AAcA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACN,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,sCAAsC,GACtC,MAAM,iBAAiB,CAAC"}
package/dist/.export.js CHANGED
@@ -5,6 +5,7 @@ import { accessPolicyInput, policyScopeInput } from "./ruleInput/policyInput.js"
5
5
  import { userScopeInput } from "./ruleInput/userScopeInput.js";
6
6
  import { accessRuleInput } from "./ruleInput/ruleInput.js";
7
7
  import { makeAccessRuleHash, transformAccessRuleIntoRecord, transformAccessRuleRecordIntoRule } from "./transformRule.js";
8
- import { OS_NAMES, classifyOs } from "./classifyOs.js";
9
8
  import { getUserScopeRecordFromAccessRuleRecord, userScopeRecordFields } from "./ruleRecord.js";
10
- export { AccessPolicyType, FilterScopeMatch, OS_NAMES, accessPolicyInput, accessRuleInput, classifyOs, getUserScopeRecordFromAccessRuleRecord, makeAccessRuleHash, policyScopeInput, transformAccessRuleIntoRecord, transformAccessRuleRecordIntoRule, userScopeInput, userScopeRecordFields };
9
+ import { describeMatchedRule } from "./matchedRule.js";
10
+ import { OS_NAMES, classifyOs } from "./classifyOs.js";
11
+ export { AccessPolicyType, FilterScopeMatch, OS_NAMES, accessPolicyInput, accessRuleInput, classifyOs, describeMatchedRule, getUserScopeRecordFromAccessRuleRecord, makeAccessRuleHash, policyScopeInput, transformAccessRuleIntoRecord, transformAccessRuleRecordIntoRule, userScopeInput, userScopeRecordFields };
@@ -1 +1 @@
1
- {"version":3,"file":".export.js","sourceRoot":"","sources":["../src/.export.ts"],"names":[],"mappings":"AAcA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACN,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAKN,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAIN,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAIN,qBAAqB,EACrB,sCAAsC,GACtC,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":".export.js","sourceRoot":"","sources":["../src/.export.ts"],"names":[],"mappings":"AAcA,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACN,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAKN,gBAAgB,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAIN,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAIN,qBAAqB,EACrB,sCAAsC,GACtC,MAAM,iBAAiB,CAAC"}
@@ -5,14 +5,16 @@ const require_ruleInput_policyInput = require("./ruleInput/policyInput.cjs");
5
5
  const require_ruleInput_userScopeInput = require("./ruleInput/userScopeInput.cjs");
6
6
  const require_ruleInput_ruleInput = require("./ruleInput/ruleInput.cjs");
7
7
  const require_transformRule = require("./transformRule.cjs");
8
- const require_classifyOs = require("./classifyOs.cjs");
9
8
  const require_ruleRecord = require("./ruleRecord.cjs");
9
+ const require_matchedRule = require("./matchedRule.cjs");
10
+ const require_classifyOs = require("./classifyOs.cjs");
10
11
  exports.AccessPolicyType = require_rule.AccessPolicyType;
11
12
  exports.FilterScopeMatch = require_rulesStorage.FilterScopeMatch;
12
13
  exports.OS_NAMES = require_classifyOs.OS_NAMES;
13
14
  exports.accessPolicyInput = require_ruleInput_policyInput.accessPolicyInput;
14
15
  exports.accessRuleInput = require_ruleInput_ruleInput.accessRuleInput;
15
16
  exports.classifyOs = require_classifyOs.classifyOs;
17
+ exports.describeMatchedRule = require_matchedRule.describeMatchedRule;
16
18
  exports.getUserScopeRecordFromAccessRuleRecord = require_ruleRecord.getUserScopeRecordFromAccessRuleRecord;
17
19
  exports.makeAccessRuleHash = require_transformRule.makeAccessRuleHash;
18
20
  exports.policyScopeInput = require_ruleInput_policyInput.policyScopeInput;
@@ -0,0 +1,59 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_transformRule = require("./transformRule.cjs");
3
+ const require_ruleRecord = require("./ruleRecord.cjs");
4
+ //#region src/matchedRule.ts
5
+ var MAX_CONDITION_VALUE_LENGTH = 256;
6
+ var toCondition = (field, value) => {
7
+ if (value === void 0 || value === null) return void 0;
8
+ const asString = typeof value === "string" ? value : String(value);
9
+ if (asString.length === 0) return void 0;
10
+ return asString.length > MAX_CONDITION_VALUE_LENGTH ? {
11
+ field,
12
+ value: `${asString.slice(0, MAX_CONDITION_VALUE_LENGTH)}…`,
13
+ truncated: true
14
+ } : {
15
+ field,
16
+ value: asString
17
+ };
18
+ };
19
+ /**
20
+ * Derive the rule's populated scope fields in record form.
21
+ *
22
+ * Goes through `transformAccessRuleIntoRecord` so the IP triple collapses back
23
+ * to the human-readable `ip` / `ipMask` the operator originally typed, rather
24
+ * than the numeric range the matcher works in, and so the field names match
25
+ * the vocabulary the portal's Access Control page already labels conditions
26
+ * with (`ip`, `ipMask`, `userAgent`, `ja4Hash`, …).
27
+ */
28
+ var deriveConditions = (rule) => {
29
+ let scope;
30
+ try {
31
+ scope = require_ruleRecord.getUserScopeRecordFromAccessRuleRecord(require_transformRule.transformAccessRuleIntoRecord(rule));
32
+ } catch {
33
+ return [];
34
+ }
35
+ const conditions = [];
36
+ for (const field of require_ruleRecord.userScopeRecordFields) {
37
+ const condition = toCondition(field, scope[field]);
38
+ if (condition) conditions.push(condition);
39
+ }
40
+ return conditions;
41
+ };
42
+ /**
43
+ * Snapshot a matched rule for persistence alongside the request it acted on.
44
+ *
45
+ * Total function: every rule shape yields a value, so callers can inline it
46
+ * into a record literal without a try/catch of their own.
47
+ */
48
+ var describeMatchedRule = (rule) => ({
49
+ ruleHash: require_transformRule.makeAccessRuleHash(rule),
50
+ policyType: rule.type,
51
+ conditions: deriveConditions(rule),
52
+ ...rule.description !== void 0 && { description: rule.description },
53
+ ...rule.captchaType !== void 0 && { captchaType: rule.captchaType },
54
+ ...rule.deferToVerify !== void 0 && { deferToVerify: rule.deferToVerify },
55
+ ...rule.groupId !== void 0 && { ruleGroupId: rule.groupId },
56
+ ...rule.clientId !== void 0 && { clientId: rule.clientId }
57
+ });
58
+ //#endregion
59
+ exports.describeMatchedRule = describeMatchedRule;
@@ -0,0 +1,4 @@
1
+ import type { MatchedAccessRule } from "@prosopo/types";
2
+ import type { AccessRule } from "#policy/rule.js";
3
+ export declare const describeMatchedRule: (rule: AccessRule) => MatchedAccessRule;
4
+ //# sourceMappingURL=matchedRule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchedRule.d.ts","sourceRoot":"","sources":["../src/matchedRule.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAwElD,eAAO,MAAM,mBAAmB,SAAU,UAAU,KAAG,iBAWrD,CAAC"}
@@ -0,0 +1,59 @@
1
+ import "./_virtual/_rolldown/runtime.js";
2
+ import { makeAccessRuleHash, transformAccessRuleIntoRecord } from "./transformRule.js";
3
+ import { getUserScopeRecordFromAccessRuleRecord, userScopeRecordFields } from "./ruleRecord.js";
4
+ //#region src/matchedRule.ts
5
+ var MAX_CONDITION_VALUE_LENGTH = 256;
6
+ var toCondition = (field, value) => {
7
+ if (value === void 0 || value === null) return void 0;
8
+ const asString = typeof value === "string" ? value : String(value);
9
+ if (asString.length === 0) return void 0;
10
+ return asString.length > MAX_CONDITION_VALUE_LENGTH ? {
11
+ field,
12
+ value: `${asString.slice(0, MAX_CONDITION_VALUE_LENGTH)}…`,
13
+ truncated: true
14
+ } : {
15
+ field,
16
+ value: asString
17
+ };
18
+ };
19
+ /**
20
+ * Derive the rule's populated scope fields in record form.
21
+ *
22
+ * Goes through `transformAccessRuleIntoRecord` so the IP triple collapses back
23
+ * to the human-readable `ip` / `ipMask` the operator originally typed, rather
24
+ * than the numeric range the matcher works in, and so the field names match
25
+ * the vocabulary the portal's Access Control page already labels conditions
26
+ * with (`ip`, `ipMask`, `userAgent`, `ja4Hash`, …).
27
+ */
28
+ var deriveConditions = (rule) => {
29
+ let scope;
30
+ try {
31
+ scope = getUserScopeRecordFromAccessRuleRecord(transformAccessRuleIntoRecord(rule));
32
+ } catch {
33
+ return [];
34
+ }
35
+ const conditions = [];
36
+ for (const field of userScopeRecordFields) {
37
+ const condition = toCondition(field, scope[field]);
38
+ if (condition) conditions.push(condition);
39
+ }
40
+ return conditions;
41
+ };
42
+ /**
43
+ * Snapshot a matched rule for persistence alongside the request it acted on.
44
+ *
45
+ * Total function: every rule shape yields a value, so callers can inline it
46
+ * into a record literal without a try/catch of their own.
47
+ */
48
+ var describeMatchedRule = (rule) => ({
49
+ ruleHash: makeAccessRuleHash(rule),
50
+ policyType: rule.type,
51
+ conditions: deriveConditions(rule),
52
+ ...rule.description !== void 0 && { description: rule.description },
53
+ ...rule.captchaType !== void 0 && { captchaType: rule.captchaType },
54
+ ...rule.deferToVerify !== void 0 && { deferToVerify: rule.deferToVerify },
55
+ ...rule.groupId !== void 0 && { ruleGroupId: rule.groupId },
56
+ ...rule.clientId !== void 0 && { clientId: rule.clientId }
57
+ });
58
+ //#endregion
59
+ export { describeMatchedRule };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchedRule.js","sourceRoot":"","sources":["../src/matchedRule.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEN,sCAAsC,EACtC,qBAAqB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,kBAAkB,EAClB,6BAA6B,GAC7B,MAAM,0BAA0B,CAAC;AAMlC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,WAAW,GAAG,CACnB,KAA2B,EAC3B,KAAc,EACqB,EAAE;IACrC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5D,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,QAAQ,CAAC,MAAM,GAAG,0BAA0B;QAClD,CAAC,CAAC;YACA,KAAK;YACL,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,GAAG;YAC1D,SAAS,EAAE,IAAI;SACf;QACF,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC;AAWF,MAAM,gBAAgB,GAAG,CAAC,IAAgB,EAA0B,EAAE;IACrE,IAAI,KAAqD,CAAC;IAC1D,IAAI,CAAC;QACJ,KAAK,GAAG,sCAAsC,CAC7C,6BAA6B,CAAC,IAAI,CAAC,CACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAIR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAgB,EAAqB,EAAE,CAAC,CAAC;IAC5E,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC,IAAI;IACrB,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAClC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI;QACvC,aAAa,EAAE,IAAI,CAAC,aAAa;KACjC,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;CAC/D,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=matchedRule.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchedRule.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/matchedRule.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,142 @@
1
+ import { CaptchaType, MatchedAccessRuleSchema } from "@prosopo/types";
2
+ import { Address4 } from "ip-address";
3
+ import { describe, expect, it } from "vitest";
4
+ import { describeMatchedRule } from "#policy/matchedRule.js";
5
+ import { AccessPolicyType } from "#policy/rule.js";
6
+ import { userScopeRecordFields } from "#policy/ruleRecord.js";
7
+ import { makeAccessRuleHash } from "#policy/transformRule.js";
8
+ describe("describeMatchedRule", () => {
9
+ it("carries the policy half of the rule", () => {
10
+ const rule = {
11
+ type: AccessPolicyType.Restrict,
12
+ captchaType: CaptchaType.image,
13
+ description: "6 rounds for this ASN",
14
+ deferToVerify: true,
15
+ clientId: "site-key",
16
+ groupId: "group-1",
17
+ ja4Hash: "t13d1516h2_8daaf6152771_b186095e22b6",
18
+ };
19
+ expect(describeMatchedRule(rule)).toEqual({
20
+ ruleHash: makeAccessRuleHash(rule),
21
+ policyType: AccessPolicyType.Restrict,
22
+ captchaType: CaptchaType.image,
23
+ description: "6 rounds for this ASN",
24
+ deferToVerify: true,
25
+ clientId: "site-key",
26
+ ruleGroupId: "group-1",
27
+ conditions: [
28
+ {
29
+ field: "ja4Hash",
30
+ value: "t13d1516h2_8daaf6152771_b186095e22b6",
31
+ },
32
+ ],
33
+ });
34
+ });
35
+ it("omits policy fields the rule did not set rather than emitting undefined", () => {
36
+ const described = describeMatchedRule({ type: AccessPolicyType.Block });
37
+ expect(described).toEqual({
38
+ ruleHash: makeAccessRuleHash({ type: AccessPolicyType.Block }),
39
+ policyType: AccessPolicyType.Block,
40
+ conditions: [],
41
+ });
42
+ expect(Object.keys(described)).not.toContain("description");
43
+ expect(Object.keys(described)).not.toContain("ruleGroupId");
44
+ });
45
+ it("reports a single IP in the form the operator typed, not the numeric one", () => {
46
+ const { conditions } = describeMatchedRule({
47
+ type: AccessPolicyType.Block,
48
+ numericIp: new Address4("192.0.2.44").bigInt(),
49
+ });
50
+ expect(conditions).toEqual([{ field: "ip", value: "192.0.2.44" }]);
51
+ });
52
+ it("collapses an IP range back to its CIDR", () => {
53
+ const { conditions } = describeMatchedRule({
54
+ type: AccessPolicyType.Block,
55
+ numericIpMaskMin: new Address4("198.51.100.64").bigInt(),
56
+ numericIpMaskMax: new Address4("198.51.100.127").bigInt(),
57
+ });
58
+ expect(conditions).toEqual([
59
+ { field: "ipMask", value: "198.51.100.64/26" },
60
+ ]);
61
+ });
62
+ it("stringifies a numeric asn", () => {
63
+ const { conditions } = describeMatchedRule({
64
+ type: AccessPolicyType.Block,
65
+ asn: 205016,
66
+ });
67
+ expect(conditions).toEqual([{ field: "asn", value: "205016" }]);
68
+ });
69
+ it("reports every populated scope field, in record vocabulary", () => {
70
+ const { conditions } = describeMatchedRule({
71
+ type: AccessPolicyType.Block,
72
+ userId: "user",
73
+ ja4Hash: "ja4",
74
+ headersHash: "headers",
75
+ userAgentHash: "ua",
76
+ headHash: "head",
77
+ coords: "[[1,2]]",
78
+ countryCode: "GB",
79
+ asn: 1,
80
+ os: "macos",
81
+ numericIp: new Address4("203.0.113.5").bigInt(),
82
+ });
83
+ expect(conditions.map((condition) => condition.field)).toEqual([
84
+ "userId",
85
+ "ja4Hash",
86
+ "headersHash",
87
+ "userAgent",
88
+ "headHash",
89
+ "coords",
90
+ "countryCode",
91
+ "asn",
92
+ "os",
93
+ "ip",
94
+ ]);
95
+ for (const condition of conditions) {
96
+ expect(userScopeRecordFields).toContain(condition.field);
97
+ }
98
+ });
99
+ it("truncates an oversized coords polygon and flags it", () => {
100
+ const coords = JSON.stringify([Array.from({ length: 200 }, () => [1, 2])]);
101
+ const { conditions } = describeMatchedRule({
102
+ type: AccessPolicyType.Block,
103
+ coords,
104
+ });
105
+ const [condition] = conditions;
106
+ expect(condition?.truncated).toBe(true);
107
+ expect(condition?.value.length).toBe(257);
108
+ expect(coords.startsWith(condition?.value.slice(0, -1) ?? "")).toBe(true);
109
+ });
110
+ it("leaves a value at the cap untruncated", () => {
111
+ const coords = "x".repeat(256);
112
+ const { conditions } = describeMatchedRule({
113
+ type: AccessPolicyType.Block,
114
+ coords,
115
+ });
116
+ expect(conditions).toEqual([{ field: "coords", value: coords }]);
117
+ });
118
+ it("still describes a rule whose scope cannot be transformed", () => {
119
+ const rule = {
120
+ type: AccessPolicyType.Block,
121
+ description: "unrepresentable range",
122
+ numericIpMaskMin: new Address4("198.51.100.200").bigInt(),
123
+ numericIpMaskMax: new Address4("198.51.100.1").bigInt(),
124
+ };
125
+ expect(() => describeMatchedRule(rule)).not.toThrow();
126
+ expect(describeMatchedRule(rule)).toEqual({
127
+ ruleHash: makeAccessRuleHash(rule),
128
+ policyType: AccessPolicyType.Block,
129
+ description: "unrepresentable range",
130
+ conditions: [],
131
+ });
132
+ });
133
+ it("produces a value the persisted schema accepts", () => {
134
+ const described = describeMatchedRule({
135
+ type: AccessPolicyType.Restrict,
136
+ captchaType: CaptchaType.pow,
137
+ countryCode: "CN",
138
+ });
139
+ expect(MatchedAccessRuleSchema.safeParse(described).success).toBe(true);
140
+ });
141
+ });
142
+ //# sourceMappingURL=matchedRule.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchedRule.unit.test.js","sourceRoot":"","sources":["../../src/tests/matchedRule.unit.test.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,7 @@ describe("redisRulesReader load-shape benchmark (17k IP-only rules)", () => {
81
81
  let redisClient;
82
82
  let reader;
83
83
  const mockLogger = new Proxy({}, {
84
- get: () => () => { },
84
+ get: (_target, property) => property === "with" ? () => mockLogger : () => { },
85
85
  });
86
86
  const seededKeys = [];
87
87
  beforeAll(async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"redisRulesReaderLoad.benchmark.integration.test.js","sourceRoot":"","sources":["../../../src/tests/redis/redisRulesReaderLoad.benchmark.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redisRulesReaderLoad.benchmark.integration.test.js","sourceRoot":"","sources":["../../../src/tests/redis/redisRulesReaderLoad.benchmark.integration.test.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ describe("redisRulesReader ranked-path benchmark", () => {
74
74
  let redisClient;
75
75
  let reader;
76
76
  const mockLogger = new Proxy({}, {
77
- get: () => () => { },
77
+ get: (_target, property) => property === "with" ? () => mockLogger : () => { },
78
78
  });
79
79
  const seededKeys = [];
80
80
  beforeAll(async () => {