|
1 | 1 | import fs from "node:fs"; |
2 | 2 | import net from "node:net"; |
3 | 3 |
|
4 | | -const DEFAULT_POLICY_PATH = "defaults/v8s-blocklist.json"; |
5 | | -const DEFAULT_CUSTOM_POLICY_PATH = "custom/v8s-blocklist.json"; |
| 4 | +const DEFAULT_POLICY_PATH = "defaults/v8s-policies.json"; |
| 5 | +const LEGACY_POLICY_PATH = "defaults/v8s-blocklist.json"; |
| 6 | +const DEFAULT_CUSTOM_POLICY_PATH = "custom/v8s-policies.json"; |
| 7 | +const LEGACY_CUSTOM_POLICY_PATH = "custom/v8s-blocklist.json"; |
6 | 8 | const DEFAULT_GENERATED_POLICY_PATH = "build/blocklist.generated.json"; |
7 | 9 |
|
8 | 10 | export function loadBlocklistPolicy(path = DEFAULT_POLICY_PATH) { |
9 | | - const raw = fs.existsSync(path) ? JSON.parse(fs.readFileSync(path, "utf8")) : {}; |
10 | | - const custom = path === DEFAULT_POLICY_PATH && fs.existsSync(DEFAULT_CUSTOM_POLICY_PATH) |
11 | | - ? JSON.parse(fs.readFileSync(DEFAULT_CUSTOM_POLICY_PATH, "utf8")) |
| 11 | + const resolvedPath = resolvePolicyPath(path, LEGACY_POLICY_PATH); |
| 12 | + const raw = fs.existsSync(resolvedPath) ? JSON.parse(fs.readFileSync(resolvedPath, "utf8")) : {}; |
| 13 | + const isDefaultPolicy = path === DEFAULT_POLICY_PATH || path === LEGACY_POLICY_PATH; |
| 14 | + const customPath = resolvePolicyPath(DEFAULT_CUSTOM_POLICY_PATH, LEGACY_CUSTOM_POLICY_PATH); |
| 15 | + const custom = isDefaultPolicy && fs.existsSync(customPath) |
| 16 | + ? JSON.parse(fs.readFileSync(customPath, "utf8")) |
12 | 17 | : {}; |
13 | | - const generated = path === DEFAULT_POLICY_PATH && fs.existsSync(DEFAULT_GENERATED_POLICY_PATH) |
| 18 | + const generated = isDefaultPolicy && fs.existsSync(DEFAULT_GENERATED_POLICY_PATH) |
14 | 19 | ? JSON.parse(fs.readFileSync(DEFAULT_GENERATED_POLICY_PATH, "utf8")) |
15 | 20 | : {}; |
16 | | - const ownerPolicy = path === DEFAULT_POLICY_PATH ? mergePolicy(custom, raw) : raw; |
| 21 | + const ownerPolicy = isDefaultPolicy ? mergePolicy(custom, raw) : raw; |
17 | 22 |
|
18 | 23 | return normalizePolicy(mergePolicy(ownerPolicy, generated)); |
19 | 24 | } |
20 | 25 |
|
| 26 | +function resolvePolicyPath(primary, legacy) { |
| 27 | + if (fs.existsSync(primary)) return primary; |
| 28 | + if (legacy && fs.existsSync(legacy)) return legacy; |
| 29 | + return primary; |
| 30 | +} |
| 31 | + |
21 | 32 | export function checkTargetUrl(target, policy = loadBlocklistPolicy()) { |
22 | 33 | const violations = []; |
23 | 34 | let url; |
|
0 commit comments