@securecode-ai/mcp 0.4.0 → 0.4.1

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 (56) hide show
  1. package/README.md +107 -13
  2. package/dist/api/client.d.ts +1 -1
  3. package/dist/api/client.js +2 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/attack/agentScanExecutor.js +159 -5
  6. package/dist/attack/agentScanExecutor.js.map +1 -1
  7. package/dist/attack/agentScanLoop.js +157 -3
  8. package/dist/attack/agentScanLoop.js.map +1 -1
  9. package/dist/attack/agentScanProtocol.d.ts +47 -5
  10. package/dist/attack/agentScanProtocol.js +3 -3
  11. package/dist/index.js +218 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp/server.js +5 -0
  14. package/dist/mcp/server.js.map +1 -1
  15. package/dist/mcp/tools.js +80 -3
  16. package/dist/mcp/tools.js.map +1 -1
  17. package/dist/project-map/agentMemory.d.ts +75 -0
  18. package/dist/project-map/agentMemory.js +230 -0
  19. package/dist/project-map/agentMemory.js.map +1 -0
  20. package/dist/project-map/crossFileTaintTracker.d.ts +51 -0
  21. package/dist/project-map/crossFileTaintTracker.js +429 -0
  22. package/dist/project-map/crossFileTaintTracker.js.map +1 -0
  23. package/dist/project-map/endpointDiscovery.d.ts +24 -0
  24. package/dist/project-map/endpointDiscovery.js +101 -0
  25. package/dist/project-map/endpointDiscovery.js.map +1 -0
  26. package/dist/project-map/guardEvaluator.js +37 -0
  27. package/dist/project-map/guardEvaluator.js.map +1 -1
  28. package/dist/project-map/guardPatterns.js +16 -5
  29. package/dist/project-map/guardPatterns.js.map +1 -1
  30. package/dist/project-map/sanitizers.js +10 -0
  31. package/dist/project-map/sanitizers.js.map +1 -1
  32. package/dist/project-map/scanCache.d.ts +67 -0
  33. package/dist/project-map/scanCache.js +169 -0
  34. package/dist/project-map/scanCache.js.map +1 -0
  35. package/dist/project-map/sinkRegistry.js +165 -0
  36. package/dist/project-map/sinkRegistry.js.map +1 -1
  37. package/dist/project-map/taintSources.d.ts +19 -1
  38. package/dist/project-map/taintSources.js +69 -2
  39. package/dist/project-map/taintSources.js.map +1 -1
  40. package/dist/project-map/taintTracker.d.ts +4 -1
  41. package/dist/project-map/taintTracker.js +188 -5
  42. package/dist/project-map/taintTracker.js.map +1 -1
  43. package/dist/tools/agentMemoryTools.d.ts +18 -0
  44. package/dist/tools/agentMemoryTools.js +107 -0
  45. package/dist/tools/agentMemoryTools.js.map +1 -0
  46. package/dist/tools/agentScan.js +206 -33
  47. package/dist/tools/agentScan.js.map +1 -1
  48. package/dist/utils/files.js +19 -2
  49. package/dist/utils/files.js.map +1 -1
  50. package/dist/utils/listFiles.d.ts +17 -0
  51. package/dist/utils/listFiles.js +126 -0
  52. package/dist/utils/listFiles.js.map +1 -0
  53. package/dist/utils/listImports.d.ts +15 -0
  54. package/dist/utils/listImports.js +164 -0
  55. package/dist/utils/listImports.js.map +1 -0
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"guardEvaluator.js","sourceRoot":"","sources":["../../src/project-map/guardEvaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guardEvaluator.js","sourceRoot":"","sources":["../../src/project-map/guardEvaluator.ts"],"names":[],"mappings":"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"}
@@ -76,16 +76,16 @@ exports.GUARD_EFFECTIVENESS = {
76
76
  ssrf: false,
77
77
  },
78
78
  'auth-jwt-verify': {
79
- broken_access_control: true, // verified JWT = authenticated
79
+ broken_access_control: false, // JWT verifies identity, NOT authorization to a specific resource
80
80
  },
81
81
  'auth-jwt-verify-noalg': {
82
82
  broken_access_control: false, // algorithm confusion bypass
83
83
  },
84
84
  'auth-session': {
85
- broken_access_control: true,
85
+ broken_access_control: false, // Session checks identity, NOT resource-level authorization
86
86
  },
87
87
  'auth-api-key': {
88
- broken_access_control: true,
88
+ broken_access_control: false, // API key checks identity, NOT resource-level authorization
89
89
  },
90
90
  'auth-none': {
91
91
  broken_access_control: false,
@@ -125,9 +125,18 @@ exports.GUARD_BYPASS_EXAMPLES = {
125
125
  'sanitizer-numeric': {
126
126
  insecure_deserialization: "parseInt doesn't validate serialized objects",
127
127
  },
128
+ 'auth-jwt-verify': {
129
+ broken_access_control: "JWT verifies identity (authentication) but does not check if the user is authorized to access or modify this specific resource. IDOR, privilege escalation, and missing ownership checks are not prevented.",
130
+ },
128
131
  'auth-jwt-verify-noalg': {
129
132
  broken_access_control: "Algorithm confusion: sign with HS256 using the public RSA key as the secret",
130
133
  },
134
+ 'auth-session': {
135
+ broken_access_control: "Session check verifies identity (authentication) but does not check if the user is authorized to access or modify this specific resource. Any authenticated user could access or modify other users' resources (IDOR).",
136
+ },
137
+ 'auth-api-key': {
138
+ broken_access_control: "API key verifies identity but does not check resource-level authorization",
139
+ },
131
140
  'allowlist-dynamic': {
132
141
  sql_injection: "User-controlled allowlist key: attacker sets key to their payload",
133
142
  xss: "User-controlled allowlist key: attacker sets key to <script>",
@@ -164,10 +173,12 @@ exports.GUARD_EFFECTIVE_REASONS = {
164
173
  xss: 'Literal allowlist rejects any value not in the set',
165
174
  },
166
175
  'auth-jwt-verify': {
167
- broken_access_control: 'jwt.verify with algorithm pinning rejects forged tokens',
176
+ // JWT auth is no longer marked as effective for broken_access_control
177
+ // because it only proves identity, not resource authorization.
168
178
  },
169
179
  'auth-session': {
170
- broken_access_control: 'Session check rejects unauthenticated requests',
180
+ // Session auth is no longer marked as effective for broken_access_control
181
+ // because it only proves identity, not resource authorization.
171
182
  },
172
183
  };
173
184
  //# sourceMappingURL=guardPatterns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guardPatterns.js","sourceRoot":"","sources":["../../src/project-map/guardPatterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guardPatterns.js","sourceRoot":"","sources":["../../src/project-map/guardPatterns.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,16 @@ exports.SANITIZERS = [
43
43
  { method: 'ltrim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
44
44
  { method: 'rtrim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
45
45
  { method: 'trim', receiver: 'validator', languages: ['javascript', 'typescript', 'tsx'] },
46
+ // ── JS/TS — Zod schema validation ─────────────────────────────────────
47
+ { method: 'parse', languages: ['javascript', 'typescript', 'tsx'] },
48
+ { method: 'safeParse', languages: ['javascript', 'typescript', 'tsx'] },
49
+ // ── JS/TS — Effect-TS Schema validation ──────────────────────────────
50
+ { method: 'decodeSync', languages: ['javascript', 'typescript', 'tsx'] },
51
+ { method: 'decode', languages: ['javascript', 'typescript', 'tsx'] },
52
+ { method: 'encodeSync', languages: ['javascript', 'typescript', 'tsx'] },
53
+ // ── JS/TS — Joi/express-validator ────────────────────────────────────
54
+ { method: 'validate', languages: ['javascript', 'typescript', 'tsx'] },
55
+ { method: 'assert', languages: ['javascript', 'typescript', 'tsx'] },
46
56
  // ── Python — type coercions ──────────────────────────────────────────
47
57
  { method: 'int', languages: ['python'] },
48
58
  { method: 'float', languages: ['python'] },
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/project-map/sanitizers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitizers.js","sourceRoot":"","sources":["../../src/project-map/sanitizers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Scan result cache — stores agent scan findings keyed by file content hash.
3
+ *
4
+ * Lives in `.securecode/scan-cache.json` alongside the project map cache.
5
+ * Invalidates when:
6
+ * - File content changes (hash mismatch)
7
+ * - Agent scan prompt version changes (AGENT_SCAN_CACHE_VERSION bump)
8
+ * - Cache entry expires (TTL)
9
+ *
10
+ * This makes scans deterministic: re-scanning an unchanged file returns the
11
+ * cached findings instantly without calling the LLM again.
12
+ */
13
+ /**
14
+ * Bump this when the agent scan prompt or logic changes in a way that
15
+ * would produce different findings for the same file. All cached entries
16
+ * with an older version are invalidated.
17
+ */
18
+ export declare const AGENT_SCAN_CACHE_VERSION = 19;
19
+ export interface ScanCacheEntry {
20
+ /** SHA-256 of the file content at scan time. */
21
+ fileHash: string;
22
+ /** Agent scan cache version when this entry was created. */
23
+ version: number;
24
+ /** Unix timestamp (ms) when the entry was created. */
25
+ timestamp: number;
26
+ /** The findings from the scan. */
27
+ findings: any[];
28
+ /** Scan status (completed, capped, etc.). */
29
+ status: string;
30
+ /** Summary from the agent. */
31
+ summary?: string;
32
+ /** Steps used by the agent. */
33
+ stepsUsed: number;
34
+ /** Cost in USD. */
35
+ costSpentUsd: number;
36
+ /** File path (for debugging). */
37
+ filePath: string;
38
+ }
39
+ export interface ScanCacheData {
40
+ version: number;
41
+ entries: Record<string, ScanCacheEntry>;
42
+ }
43
+ /**
44
+ * Read the scan cache. Returns null if the cache file doesn't exist
45
+ * or is corrupted.
46
+ */
47
+ export declare function readScanCache(workspaceRoot: string): ScanCacheData | null;
48
+ /**
49
+ * Look up a cached scan result by file path + content hash.
50
+ * Returns null if not found, expired, or version mismatch.
51
+ */
52
+ export declare function getCachedScan(workspaceRoot: string, filePath: string, content: string): ScanCacheEntry | null;
53
+ /**
54
+ * Write a scan result to the cache. Merges with existing entries.
55
+ */
56
+ export declare function writeCachedScan(workspaceRoot: string, filePath: string, content: string, result: {
57
+ findings: any[];
58
+ status: string;
59
+ summary?: string;
60
+ stepsUsed: number;
61
+ costSpentUsd: number;
62
+ }): void;
63
+ /**
64
+ * Clear the scan cache for a workspace (e.g., when the user requests
65
+ * a fresh scan with --no-cache).
66
+ */
67
+ export declare function clearScanCache(workspaceRoot: string): void;
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Scan result cache — stores agent scan findings keyed by file content hash.
4
+ *
5
+ * Lives in `.securecode/scan-cache.json` alongside the project map cache.
6
+ * Invalidates when:
7
+ * - File content changes (hash mismatch)
8
+ * - Agent scan prompt version changes (AGENT_SCAN_CACHE_VERSION bump)
9
+ * - Cache entry expires (TTL)
10
+ *
11
+ * This makes scans deterministic: re-scanning an unchanged file returns the
12
+ * cached findings instantly without calling the LLM again.
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.AGENT_SCAN_CACHE_VERSION = void 0;
49
+ exports.readScanCache = readScanCache;
50
+ exports.getCachedScan = getCachedScan;
51
+ exports.writeCachedScan = writeCachedScan;
52
+ exports.clearScanCache = clearScanCache;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const crypto = __importStar(require("crypto"));
56
+ const CACHE_DIR = '.securecode';
57
+ const CACHE_FILE = 'scan-cache.json';
58
+ /**
59
+ * Bump this when the agent scan prompt or logic changes in a way that
60
+ * would produce different findings for the same file. All cached entries
61
+ * with an older version are invalidated.
62
+ */
63
+ exports.AGENT_SCAN_CACHE_VERSION = 19;
64
+ /** Cache TTL: 7 days. Findings older than this are re-scanned. */
65
+ const CACHE_TTL_MS = 7 * 24 * 60 * 60 * 1000;
66
+ function cachePath(workspaceRoot) {
67
+ return path.join(workspaceRoot, CACHE_DIR, CACHE_FILE);
68
+ }
69
+ function hashContent(content) {
70
+ return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
71
+ }
72
+ /**
73
+ * Read the scan cache. Returns null if the cache file doesn't exist
74
+ * or is corrupted.
75
+ */
76
+ function readScanCache(workspaceRoot) {
77
+ const p = cachePath(workspaceRoot);
78
+ try {
79
+ if (!fs.existsSync(p))
80
+ return null;
81
+ const raw = fs.readFileSync(p, 'utf8');
82
+ const data = JSON.parse(raw);
83
+ if (!data.version || data.version > exports.AGENT_SCAN_CACHE_VERSION) {
84
+ return null;
85
+ }
86
+ return data;
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * Look up a cached scan result by file path + content hash.
94
+ * Returns null if not found, expired, or version mismatch.
95
+ */
96
+ function getCachedScan(workspaceRoot, filePath, content) {
97
+ const cache = readScanCache(workspaceRoot);
98
+ if (!cache)
99
+ return null;
100
+ const fileHash = hashContent(content);
101
+ const key = `${filePath}:${fileHash}`;
102
+ const entry = cache.entries[key];
103
+ if (!entry)
104
+ return null;
105
+ // Version check — invalidate on prompt/logic changes
106
+ if (entry.version !== exports.AGENT_SCAN_CACHE_VERSION)
107
+ return null;
108
+ // TTL check — re-scan after CACHE_TTL_MS
109
+ if (Date.now() - entry.timestamp > CACHE_TTL_MS)
110
+ return null;
111
+ return entry;
112
+ }
113
+ /**
114
+ * Write a scan result to the cache. Merges with existing entries.
115
+ */
116
+ function writeCachedScan(workspaceRoot, filePath, content, result) {
117
+ const dir = path.join(workspaceRoot, CACHE_DIR);
118
+ if (!fs.existsSync(dir)) {
119
+ fs.mkdirSync(dir, { recursive: true });
120
+ }
121
+ const fileHash = hashContent(content);
122
+ const key = `${filePath}:${fileHash}`;
123
+ // Read existing cache or create new
124
+ let cache;
125
+ const existing = readScanCache(workspaceRoot);
126
+ if (existing && existing.version === exports.AGENT_SCAN_CACHE_VERSION) {
127
+ cache = existing;
128
+ }
129
+ else {
130
+ cache = { version: exports.AGENT_SCAN_CACHE_VERSION, entries: {} };
131
+ }
132
+ // Prune expired entries (keep cache from growing unbounded)
133
+ const now = Date.now();
134
+ for (const [k, e] of Object.entries(cache.entries)) {
135
+ if (now - e.timestamp > CACHE_TTL_MS) {
136
+ delete cache.entries[k];
137
+ }
138
+ }
139
+ // Add/update the entry
140
+ cache.entries[key] = {
141
+ fileHash,
142
+ version: exports.AGENT_SCAN_CACHE_VERSION,
143
+ timestamp: now,
144
+ findings: result.findings,
145
+ status: result.status,
146
+ summary: result.summary,
147
+ stepsUsed: result.stepsUsed,
148
+ costSpentUsd: result.costSpentUsd,
149
+ filePath,
150
+ };
151
+ // Atomic write
152
+ const p = cachePath(workspaceRoot);
153
+ const tmp = p + '.tmp';
154
+ fs.writeFileSync(tmp, JSON.stringify(cache, null, 2), 'utf8');
155
+ fs.renameSync(tmp, p);
156
+ }
157
+ /**
158
+ * Clear the scan cache for a workspace (e.g., when the user requests
159
+ * a fresh scan with --no-cache).
160
+ */
161
+ function clearScanCache(workspaceRoot) {
162
+ const p = cachePath(workspaceRoot);
163
+ try {
164
+ if (fs.existsSync(p))
165
+ fs.unlinkSync(p);
166
+ }
167
+ catch { /* best effort */ }
168
+ }
169
+ //# sourceMappingURL=scanCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanCache.js","sourceRoot":"","sources":["../../src/project-map/scanCache.ts"],"names":[],"mappings":"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"}
@@ -121,6 +121,33 @@ exports.SINK_REGISTRY = [
121
121
  requireNonLiteralArg: true,
122
122
  description: 'Prisma $queryRaw with interpolation — SQL injection',
123
123
  },
124
+ {
125
+ id: 'executeRaw',
126
+ canonicalType: 'sql_injection',
127
+ severity: 'Critical',
128
+ languages: ['javascript', 'typescript', 'tsx'],
129
+ matchers: [{ kind: 'call', method: '$executeRaw', receiver: '*' }],
130
+ requireNonLiteralArg: true,
131
+ description: 'Prisma $executeRaw with interpolation — SQL injection',
132
+ },
133
+ {
134
+ id: 'queryRawUnsafe',
135
+ canonicalType: 'sql_injection',
136
+ severity: 'Critical',
137
+ languages: ['javascript', 'typescript', 'tsx'],
138
+ matchers: [{ kind: 'call', method: '$queryRawUnsafe', receiver: '*' }],
139
+ requireNonLiteralArg: true,
140
+ description: 'Prisma $queryRawUnsafe with interpolation — SQL injection',
141
+ },
142
+ {
143
+ id: 'executeRawUnsafe',
144
+ canonicalType: 'sql_injection',
145
+ severity: 'Critical',
146
+ languages: ['javascript', 'typescript', 'tsx'],
147
+ matchers: [{ kind: 'call', method: '$executeRawUnsafe', receiver: '*' }],
148
+ requireNonLiteralArg: true,
149
+ description: 'Prisma $executeRawUnsafe with interpolation — SQL injection',
150
+ },
124
151
  {
125
152
  id: 'sql-concat',
126
153
  canonicalType: 'sql_injection',
@@ -356,6 +383,144 @@ exports.SINK_REGISTRY = [
356
383
  requireUserSource: true,
357
384
  description: 'res.setHeader/append with user-controlled value — header injection',
358
385
  },
386
+ // ── SSTI (Python) ────────────────────────────────────────────────────────
387
+ {
388
+ id: 'py-render-template-string',
389
+ canonicalType: 'ssti',
390
+ severity: 'High',
391
+ languages: ['python'],
392
+ matchers: [{ kind: 'call', method: 'render_template_string' }],
393
+ requireNonLiteralArg: true,
394
+ description: 'Flask render_template_string with user-controlled template — SSTI',
395
+ },
396
+ {
397
+ id: 'py-jinja2-template',
398
+ canonicalType: 'ssti',
399
+ severity: 'High',
400
+ languages: ['python'],
401
+ matchers: [{ kind: 'call', method: 'Template' }],
402
+ requireNonLiteralArg: true,
403
+ description: 'Jinja2 Template() with user-controlled string — SSTI',
404
+ },
405
+ // ── SSRF (Python) ───────────────────────────────────────────────────────
406
+ {
407
+ id: 'py-ssrf-requests',
408
+ canonicalType: 'ssrf',
409
+ severity: 'High',
410
+ languages: ['python'],
411
+ matchers: [
412
+ { kind: 'call', method: 'get', receiver: 'requests' },
413
+ { kind: 'call', method: 'post', receiver: 'requests' },
414
+ { kind: 'call', method: 'put', receiver: 'requests' },
415
+ { kind: 'call', method: 'head', receiver: 'requests' },
416
+ { kind: 'call', method: 'delete', receiver: 'requests' },
417
+ { kind: 'call', method: 'request', receiver: 'requests' },
418
+ ],
419
+ requireUserSource: true,
420
+ description: 'requests.get/post with user-controlled URL — Server-Side Request Forgery',
421
+ },
422
+ {
423
+ id: 'py-ssrf-urllib',
424
+ canonicalType: 'ssrf',
425
+ severity: 'High',
426
+ languages: ['python'],
427
+ matchers: [
428
+ { kind: 'call', method: 'urlopen', receiver: 'urllib.request' },
429
+ { kind: 'call', method: 'urlopen', receiver: 'urllib' },
430
+ ],
431
+ requireUserSource: true,
432
+ description: 'urllib.request.urlopen with user-controlled URL — SSRF',
433
+ },
434
+ {
435
+ id: 'py-ssrf-httpx',
436
+ canonicalType: 'ssrf',
437
+ severity: 'High',
438
+ languages: ['python'],
439
+ matchers: [
440
+ { kind: 'call', method: 'get', receiver: 'httpx' },
441
+ { kind: 'call', method: 'post', receiver: 'httpx' },
442
+ ],
443
+ requireUserSource: true,
444
+ description: 'httpx.get/post with user-controlled URL — SSRF',
445
+ },
446
+ // ── Open redirect (Python) ──────────────────────────────────────────────
447
+ {
448
+ id: 'py-redirect-flask',
449
+ canonicalType: 'open_redirect',
450
+ severity: 'Medium',
451
+ languages: ['python'],
452
+ matchers: [{ kind: 'call', method: 'redirect' }],
453
+ requireUserSource: true,
454
+ description: 'flask.redirect with user-controlled URL — open redirect',
455
+ },
456
+ {
457
+ id: 'py-redirect-django',
458
+ canonicalType: 'open_redirect',
459
+ severity: 'Medium',
460
+ languages: ['python'],
461
+ matchers: [
462
+ { kind: 'call', method: 'HttpResponseRedirect' },
463
+ { kind: 'call', method: 'RedirectResponse' },
464
+ ],
465
+ requireUserSource: true,
466
+ description: 'Django/FastAPI redirect with user-controlled URL — open redirect',
467
+ },
468
+ // ── Weak crypto (Python) ────────────────────────────────────────────────
469
+ {
470
+ id: 'py-md5',
471
+ canonicalType: 'weak_crypto',
472
+ severity: 'Medium',
473
+ languages: ['python'],
474
+ matchers: [{ kind: 'call', method: 'md5', receiver: 'hashlib' }],
475
+ description: 'hashlib.md5 — weak hashing algorithm, use SHA-256+',
476
+ },
477
+ {
478
+ id: 'py-sha1',
479
+ canonicalType: 'weak_crypto',
480
+ severity: 'Medium',
481
+ languages: ['python'],
482
+ matchers: [{ kind: 'call', method: 'sha1', receiver: 'hashlib' }],
483
+ description: 'hashlib.sha1 — weak hashing algorithm, use SHA-256+',
484
+ },
485
+ {
486
+ id: 'py-random-token',
487
+ canonicalType: 'weak_crypto',
488
+ severity: 'High',
489
+ languages: ['python'],
490
+ matchers: [
491
+ { kind: 'call', method: 'random', receiver: 'random' },
492
+ { kind: 'call', method: 'randint', receiver: 'random' },
493
+ { kind: 'call', method: 'choice', receiver: 'random' },
494
+ ],
495
+ requireNonLiteralArg: true,
496
+ description: 'random module for security-sensitive token generation — use secrets module',
497
+ },
498
+ // ── Header injection (Python) ────────────────────────────────────────────
499
+ {
500
+ id: 'py-header-set',
501
+ canonicalType: 'header_injection',
502
+ severity: 'Medium',
503
+ languages: ['python'],
504
+ matchers: [
505
+ { kind: 'call', method: '__setitem__', receiver: 'response' },
506
+ { kind: 'call', method: '__setitem__', receiver: 'self' },
507
+ ],
508
+ requireUserSource: true,
509
+ description: 'Response header set with user-controlled value — header injection',
510
+ },
511
+ // ── LDAP injection (Python) ─────────────────────────────────────────────
512
+ {
513
+ id: 'py-ldap-search',
514
+ canonicalType: 'ldap_injection',
515
+ severity: 'High',
516
+ languages: ['python'],
517
+ matchers: [
518
+ { kind: 'call', method: 'search_s', receiver: '*' },
519
+ { kind: 'call', method: 'search', receiver: '*' },
520
+ ],
521
+ requireNonLiteralArg: true,
522
+ description: 'LDAP search with non-literal filter — LDAP injection',
523
+ },
359
524
  // ── SSTI (JS/TS/TSX) ────────────────────────────────────────────────────
360
525
  {
361
526
  id: 'ssti-ejs',
@@ -1 +1 @@
1
- {"version":3,"file":"sinkRegistry.js","sourceRoot":"","sources":["../../src/project-map/sinkRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAyDH;;;;;;GAMG;AACU,QAAA,aAAa,GAAqB;IAC3C,0EAA0E;IAC1E;QACI,EAAE,EAAE,MAAM;QACV,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAiB,6DAA6D;YAC9G,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE;SAC9D;QACD,WAAW,EAAE,kEAAkE;KAClF;IACD;QACI,EAAE,EAAE,OAAO;QACX,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAqB,+DAA+D;YACrH,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;SAC/D;QACD,WAAW,EAAE,wCAAwC;KACxD;IACD;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;YACpC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE;SAClE;QACD,WAAW,EAAE,yCAAyC;KACzD;IACD;QACI,EAAE,EAAE,MAAM;QACV,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE;SAC9D;QACD,WAAW,EAAE,sCAAsC;KACtD;IACD;QACI,EAAE,EAAE,MAAM;QACV,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC;QACxD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5C,WAAW,EAAE,mCAAmC;KACnD;IACD;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChD,WAAW,EAAE,qDAAqD;KACrE;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,WAAW;QACf,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9D,WAAW,EAAE,uCAAuC;KACvD;IACD;QACI,EAAE,EAAE,YAAY;QAChB,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE;YACxD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;YACvD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE;SACnE;QACD,WAAW,EAAE,kCAAkC;KAClD;IACD;QACI,EAAE,EAAE,SAAS;QACb,aAAa,EAAE,mBAAmB;QAClC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5C,WAAW,EAAE,0CAA0C;KAC1D;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChE,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,qDAAqD;KACrE;IACD;QACI,EAAE,EAAE,YAAY;QAChB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,8DAA8D;KAC9E;IACD;QACI,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC9D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,8FAA8F;KAC9G;IACD;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE;YAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE;SACrD;QACD,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,qEAAqE;KACrF;IACD;QACI,EAAE,EAAE,SAAS;QACb,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC1D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,oEAAoE;KACpF;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE;QACI,EAAE,EAAE,oBAAoB;QACxB,aAAa,EAAE,iBAAiB;QAChC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC5D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,4DAA4D;KAC5E;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,gBAAgB;QACpB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC9D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,oEAAoE;KACpF;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,yBAAyB;QAC7B,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,KAAK,CAAC;QAClB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;QACtE,WAAW,EAAE,uDAAuD;KACvE;IACD;QACI,EAAE,EAAE,WAAW;QACf,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAChE,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,+CAA+C;KAC/D;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,cAAc;QAClB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC/D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,wDAAwD;KACxE;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,eAAe;QACnB,aAAa,EAAE,gBAAgB;QAC/B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;YACxD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5D,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE;SAChE;QACD,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,8DAA8D;KAC9E;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,SAAS;QACb,aAAa,EAAE,gBAAgB;QAC/B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC5C,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,+CAA+C;KAC/D;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,cAAc;QAClB,aAAa,EAAE,iBAAiB;QAChC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC5D,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;SACjE;QACD,WAAW,EAAE,qEAAqE;KACrF;IAED,0EAA0E;IAC1E;QACI,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,qBAAqB;QACpC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE;YAChD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE;YACvD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE;YACnD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;SACpD;QACD,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,2DAA2D;KAC3E;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,cAAc;QAClB,aAAa,EAAE,0BAA0B;QACzC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACrD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;SACvD;QACD,WAAW,EAAE,8CAA8C;KAC9D;IACD;QACI,EAAE,EAAE,WAAW;QACf,aAAa,EAAE,0BAA0B;QACzC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC9D,WAAW,EAAE,yDAAyD;KACzE;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,gBAAgB;QACpB,aAAa,EAAE,0BAA0B;QACzC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACnD,WAAW,EAAE,wDAAwD;KACxE;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,gBAAgB;QAC/B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC7D,oBAAoB,EAAE,IAAI;QAC1B,WAAW,EAAE,+DAA+D;KAC/E;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,YAAY;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7C,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,gEAAgE;KAChF;IACD;QACI,EAAE,EAAE,YAAY;QAChB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;YAClD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;YACnD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;YAClD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;SACzD;QACD,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,8DAA8D;KAC9E;IACD;QACI,EAAE,EAAE,WAAW;QACf,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;YACrD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;YAClD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;SACzD;QACD,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,uEAAuE;KACvF;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,YAAY;QAChB,aAAa,EAAE,kBAAkB;QACjC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE;YAC3D,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YACnD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;SAC3D;QACD,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,oEAAoE;KACpF;IAED,2EAA2E;IAC3E;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC/D,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,2EAA2E;KAC3F;IACD;QACI,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;YACnD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1D;QACD,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,2EAA2E;KAC3F;IACD;QACI,EAAE,EAAE,iBAAiB;QACrB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC;QAC9C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QACvE,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,yDAAyD;KACzE;CACJ,CAAC"}
1
+ {"version":3,"file":"sinkRegistry.js","sourceRoot":"","sources":["../../src/project-map/sinkRegistry.ts"],"names":[],"mappings":"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"}