driftdetect-core 0.4.0 → 0.4.2

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 (237) hide show
  1. package/dist/boundaries/boundary-scanner.d.ts +76 -0
  2. package/dist/boundaries/boundary-scanner.d.ts.map +1 -0
  3. package/dist/boundaries/boundary-scanner.js +801 -0
  4. package/dist/boundaries/boundary-scanner.js.map +1 -0
  5. package/dist/boundaries/data-access-learner.d.ts +126 -0
  6. package/dist/boundaries/data-access-learner.d.ts.map +1 -0
  7. package/dist/boundaries/data-access-learner.js +486 -0
  8. package/dist/boundaries/data-access-learner.js.map +1 -0
  9. package/dist/boundaries/index.d.ts +6 -0
  10. package/dist/boundaries/index.d.ts.map +1 -1
  11. package/dist/boundaries/index.js +6 -0
  12. package/dist/boundaries/index.js.map +1 -1
  13. package/dist/boundaries/security-prioritizer.d.ts +118 -0
  14. package/dist/boundaries/security-prioritizer.d.ts.map +1 -0
  15. package/dist/boundaries/security-prioritizer.js +316 -0
  16. package/dist/boundaries/security-prioritizer.js.map +1 -0
  17. package/dist/call-graph/analysis/coverage-analyzer.d.ts +201 -0
  18. package/dist/call-graph/analysis/coverage-analyzer.d.ts.map +1 -0
  19. package/dist/call-graph/analysis/coverage-analyzer.js +553 -0
  20. package/dist/call-graph/analysis/coverage-analyzer.js.map +1 -0
  21. package/dist/call-graph/analysis/dead-code-detector.d.ts +145 -0
  22. package/dist/call-graph/analysis/dead-code-detector.d.ts.map +1 -0
  23. package/dist/call-graph/analysis/dead-code-detector.js +391 -0
  24. package/dist/call-graph/analysis/dead-code-detector.js.map +1 -0
  25. package/dist/call-graph/analysis/graph-builder.d.ts +142 -0
  26. package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -0
  27. package/dist/call-graph/analysis/graph-builder.js +624 -0
  28. package/dist/call-graph/analysis/graph-builder.js.map +1 -0
  29. package/dist/call-graph/analysis/impact-analyzer.d.ts +150 -0
  30. package/dist/call-graph/analysis/impact-analyzer.d.ts.map +1 -0
  31. package/dist/call-graph/analysis/impact-analyzer.js +329 -0
  32. package/dist/call-graph/analysis/impact-analyzer.js.map +1 -0
  33. package/dist/call-graph/analysis/index.d.ts +11 -0
  34. package/dist/call-graph/analysis/index.d.ts.map +1 -0
  35. package/dist/call-graph/analysis/index.js +9 -0
  36. package/dist/call-graph/analysis/index.js.map +1 -0
  37. package/dist/call-graph/analysis/path-finder.d.ts +117 -0
  38. package/dist/call-graph/analysis/path-finder.d.ts.map +1 -0
  39. package/dist/call-graph/analysis/path-finder.js +360 -0
  40. package/dist/call-graph/analysis/path-finder.js.map +1 -0
  41. package/dist/call-graph/analysis/reachability.d.ts +56 -0
  42. package/dist/call-graph/analysis/reachability.d.ts.map +1 -0
  43. package/dist/call-graph/analysis/reachability.js +357 -0
  44. package/dist/call-graph/analysis/reachability.js.map +1 -0
  45. package/dist/call-graph/demo.d.ts +11 -0
  46. package/dist/call-graph/demo.d.ts.map +1 -0
  47. package/dist/call-graph/demo.js +339 -0
  48. package/dist/call-graph/demo.js.map +1 -0
  49. package/dist/call-graph/enrichment/enrichment-engine.d.ts +126 -0
  50. package/dist/call-graph/enrichment/enrichment-engine.d.ts.map +1 -0
  51. package/dist/call-graph/enrichment/enrichment-engine.js +760 -0
  52. package/dist/call-graph/enrichment/enrichment-engine.js.map +1 -0
  53. package/dist/call-graph/enrichment/impact-scorer.d.ts +59 -0
  54. package/dist/call-graph/enrichment/impact-scorer.d.ts.map +1 -0
  55. package/dist/call-graph/enrichment/impact-scorer.js +328 -0
  56. package/dist/call-graph/enrichment/impact-scorer.js.map +1 -0
  57. package/dist/call-graph/enrichment/index.d.ts +12 -0
  58. package/dist/call-graph/enrichment/index.d.ts.map +1 -0
  59. package/dist/call-graph/enrichment/index.js +15 -0
  60. package/dist/call-graph/enrichment/index.js.map +1 -0
  61. package/dist/call-graph/enrichment/remediation-generator.d.ts +41 -0
  62. package/dist/call-graph/enrichment/remediation-generator.d.ts.map +1 -0
  63. package/dist/call-graph/enrichment/remediation-generator.js +609 -0
  64. package/dist/call-graph/enrichment/remediation-generator.js.map +1 -0
  65. package/dist/call-graph/enrichment/sensitivity-classifier.d.ts +71 -0
  66. package/dist/call-graph/enrichment/sensitivity-classifier.d.ts.map +1 -0
  67. package/dist/call-graph/enrichment/sensitivity-classifier.js +454 -0
  68. package/dist/call-graph/enrichment/sensitivity-classifier.js.map +1 -0
  69. package/dist/call-graph/enrichment/types.d.ts +402 -0
  70. package/dist/call-graph/enrichment/types.d.ts.map +1 -0
  71. package/dist/call-graph/enrichment/types.js +9 -0
  72. package/dist/call-graph/enrichment/types.js.map +1 -0
  73. package/dist/call-graph/extractors/base-extractor.d.ts +112 -0
  74. package/dist/call-graph/extractors/base-extractor.d.ts.map +1 -0
  75. package/dist/call-graph/extractors/base-extractor.js +140 -0
  76. package/dist/call-graph/extractors/base-extractor.js.map +1 -0
  77. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts +76 -0
  78. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts.map +1 -0
  79. package/dist/call-graph/extractors/csharp-data-access-extractor.js +387 -0
  80. package/dist/call-graph/extractors/csharp-data-access-extractor.js.map +1 -0
  81. package/dist/call-graph/extractors/csharp-extractor.d.ts +87 -0
  82. package/dist/call-graph/extractors/csharp-extractor.d.ts.map +1 -0
  83. package/dist/call-graph/extractors/csharp-extractor.js +470 -0
  84. package/dist/call-graph/extractors/csharp-extractor.js.map +1 -0
  85. package/dist/call-graph/extractors/data-access-extractor.d.ts +76 -0
  86. package/dist/call-graph/extractors/data-access-extractor.d.ts.map +1 -0
  87. package/dist/call-graph/extractors/data-access-extractor.js +234 -0
  88. package/dist/call-graph/extractors/data-access-extractor.js.map +1 -0
  89. package/dist/call-graph/extractors/index.d.ts +26 -0
  90. package/dist/call-graph/extractors/index.d.ts.map +1 -0
  91. package/dist/call-graph/extractors/index.js +36 -0
  92. package/dist/call-graph/extractors/index.js.map +1 -0
  93. package/dist/call-graph/extractors/java-data-access-extractor.d.ts +101 -0
  94. package/dist/call-graph/extractors/java-data-access-extractor.d.ts.map +1 -0
  95. package/dist/call-graph/extractors/java-data-access-extractor.js +611 -0
  96. package/dist/call-graph/extractors/java-data-access-extractor.js.map +1 -0
  97. package/dist/call-graph/extractors/java-extractor.d.ts +87 -0
  98. package/dist/call-graph/extractors/java-extractor.d.ts.map +1 -0
  99. package/dist/call-graph/extractors/java-extractor.js +510 -0
  100. package/dist/call-graph/extractors/java-extractor.js.map +1 -0
  101. package/dist/call-graph/extractors/php-data-access-extractor.d.ts +93 -0
  102. package/dist/call-graph/extractors/php-data-access-extractor.d.ts.map +1 -0
  103. package/dist/call-graph/extractors/php-data-access-extractor.js +589 -0
  104. package/dist/call-graph/extractors/php-data-access-extractor.js.map +1 -0
  105. package/dist/call-graph/extractors/php-extractor.d.ts +104 -0
  106. package/dist/call-graph/extractors/php-extractor.d.ts.map +1 -0
  107. package/dist/call-graph/extractors/php-extractor.js +619 -0
  108. package/dist/call-graph/extractors/php-extractor.js.map +1 -0
  109. package/dist/call-graph/extractors/python-data-access-extractor.d.ts +90 -0
  110. package/dist/call-graph/extractors/python-data-access-extractor.d.ts.map +1 -0
  111. package/dist/call-graph/extractors/python-data-access-extractor.js +537 -0
  112. package/dist/call-graph/extractors/python-data-access-extractor.js.map +1 -0
  113. package/dist/call-graph/extractors/python-extractor.d.ts +98 -0
  114. package/dist/call-graph/extractors/python-extractor.d.ts.map +1 -0
  115. package/dist/call-graph/extractors/python-extractor.js +681 -0
  116. package/dist/call-graph/extractors/python-extractor.js.map +1 -0
  117. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts +91 -0
  118. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts.map +1 -0
  119. package/dist/call-graph/extractors/semantic-data-access-scanner.js +498 -0
  120. package/dist/call-graph/extractors/semantic-data-access-scanner.js.map +1 -0
  121. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts +122 -0
  122. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts.map +1 -0
  123. package/dist/call-graph/extractors/typescript-data-access-extractor.js +788 -0
  124. package/dist/call-graph/extractors/typescript-data-access-extractor.js.map +1 -0
  125. package/dist/call-graph/extractors/typescript-extractor.d.ts +145 -0
  126. package/dist/call-graph/extractors/typescript-extractor.d.ts.map +1 -0
  127. package/dist/call-graph/extractors/typescript-extractor.js +904 -0
  128. package/dist/call-graph/extractors/typescript-extractor.js.map +1 -0
  129. package/dist/call-graph/index.d.ts +127 -0
  130. package/dist/call-graph/index.d.ts.map +1 -0
  131. package/dist/call-graph/index.js +247 -0
  132. package/dist/call-graph/index.js.map +1 -0
  133. package/dist/call-graph/store/call-graph-store.d.ts +70 -0
  134. package/dist/call-graph/store/call-graph-store.d.ts.map +1 -0
  135. package/dist/call-graph/store/call-graph-store.js +210 -0
  136. package/dist/call-graph/store/call-graph-store.js.map +1 -0
  137. package/dist/call-graph/store/index.d.ts +7 -0
  138. package/dist/call-graph/store/index.d.ts.map +1 -0
  139. package/dist/call-graph/store/index.js +7 -0
  140. package/dist/call-graph/store/index.js.map +1 -0
  141. package/dist/call-graph/types.d.ts +376 -0
  142. package/dist/call-graph/types.d.ts.map +1 -0
  143. package/dist/call-graph/types.js +8 -0
  144. package/dist/call-graph/types.js.map +1 -0
  145. package/dist/index.d.ts +8 -0
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +12 -0
  148. package/dist/index.js.map +1 -1
  149. package/dist/lake/callgraph-shard-store.d.ts +168 -0
  150. package/dist/lake/callgraph-shard-store.d.ts.map +1 -0
  151. package/dist/lake/callgraph-shard-store.js +466 -0
  152. package/dist/lake/callgraph-shard-store.js.map +1 -0
  153. package/dist/lake/examples-store.d.ts +127 -0
  154. package/dist/lake/examples-store.d.ts.map +1 -0
  155. package/dist/lake/examples-store.js +389 -0
  156. package/dist/lake/examples-store.js.map +1 -0
  157. package/dist/lake/index-store.d.ts +82 -0
  158. package/dist/lake/index-store.d.ts.map +1 -0
  159. package/dist/lake/index-store.js +359 -0
  160. package/dist/lake/index-store.js.map +1 -0
  161. package/dist/lake/index.d.ts +93 -0
  162. package/dist/lake/index.d.ts.map +1 -0
  163. package/dist/lake/index.js +138 -0
  164. package/dist/lake/index.js.map +1 -0
  165. package/dist/lake/lake.bak/index-store.d.ts +82 -0
  166. package/dist/lake/lake.bak/index-store.d.ts.map +1 -0
  167. package/dist/lake/lake.bak/index-store.js +357 -0
  168. package/dist/lake/lake.bak/index-store.js.map +1 -0
  169. package/dist/lake/lake.bak/index.d.ts +81 -0
  170. package/dist/lake/lake.bak/index.d.ts.map +1 -0
  171. package/dist/lake/lake.bak/index.js +114 -0
  172. package/dist/lake/lake.bak/index.js.map +1 -0
  173. package/dist/lake/lake.bak/manifest-store.d.ts +51 -0
  174. package/dist/lake/lake.bak/manifest-store.d.ts.map +1 -0
  175. package/dist/lake/lake.bak/manifest-store.js +347 -0
  176. package/dist/lake/lake.bak/manifest-store.js.map +1 -0
  177. package/dist/lake/lake.bak/query-engine.d.ts +112 -0
  178. package/dist/lake/lake.bak/query-engine.d.ts.map +1 -0
  179. package/dist/lake/lake.bak/query-engine.js +370 -0
  180. package/dist/lake/lake.bak/query-engine.js.map +1 -0
  181. package/dist/lake/lake.bak/types.d.ts +428 -0
  182. package/dist/lake/lake.bak/types.d.ts.map +1 -0
  183. package/dist/lake/lake.bak/types.js +46 -0
  184. package/dist/lake/lake.bak/types.js.map +1 -0
  185. package/dist/lake/lake.bak/view-materializer.d.ts +70 -0
  186. package/dist/lake/lake.bak/view-materializer.d.ts.map +1 -0
  187. package/dist/lake/lake.bak/view-materializer.js +314 -0
  188. package/dist/lake/lake.bak/view-materializer.js.map +1 -0
  189. package/dist/lake/lake.bak/view-store.d.ts +57 -0
  190. package/dist/lake/lake.bak/view-store.d.ts.map +1 -0
  191. package/dist/lake/lake.bak/view-store.js +348 -0
  192. package/dist/lake/lake.bak/view-store.js.map +1 -0
  193. package/dist/lake/manifest-store.d.ts +51 -0
  194. package/dist/lake/manifest-store.d.ts.map +1 -0
  195. package/dist/lake/manifest-store.js +348 -0
  196. package/dist/lake/manifest-store.js.map +1 -0
  197. package/dist/lake/pattern-shard-store.d.ts +87 -0
  198. package/dist/lake/pattern-shard-store.d.ts.map +1 -0
  199. package/dist/lake/pattern-shard-store.js +347 -0
  200. package/dist/lake/pattern-shard-store.js.map +1 -0
  201. package/dist/lake/query-engine.d.ts +124 -0
  202. package/dist/lake/query-engine.d.ts.map +1 -0
  203. package/dist/lake/query-engine.js +453 -0
  204. package/dist/lake/query-engine.js.map +1 -0
  205. package/dist/lake/security-shard-store.d.ts +156 -0
  206. package/dist/lake/security-shard-store.d.ts.map +1 -0
  207. package/dist/lake/security-shard-store.js +498 -0
  208. package/dist/lake/security-shard-store.js.map +1 -0
  209. package/dist/lake/types.d.ts +428 -0
  210. package/dist/lake/types.d.ts.map +1 -0
  211. package/dist/lake/types.js +46 -0
  212. package/dist/lake/types.js.map +1 -0
  213. package/dist/lake/view-materializer.d.ts +70 -0
  214. package/dist/lake/view-materializer.d.ts.map +1 -0
  215. package/dist/lake/view-materializer.js +314 -0
  216. package/dist/lake/view-materializer.js.map +1 -0
  217. package/dist/lake/view-store.d.ts +57 -0
  218. package/dist/lake/view-store.d.ts.map +1 -0
  219. package/dist/lake/view-store.js +348 -0
  220. package/dist/lake/view-store.js.map +1 -0
  221. package/dist/parsers/tree-sitter/index.d.ts +1 -0
  222. package/dist/parsers/tree-sitter/index.d.ts.map +1 -1
  223. package/dist/parsers/tree-sitter/index.js +4 -0
  224. package/dist/parsers/tree-sitter/index.js.map +1 -1
  225. package/dist/parsers/tree-sitter/typescript-loader.d.ts +58 -0
  226. package/dist/parsers/tree-sitter/typescript-loader.d.ts.map +1 -0
  227. package/dist/parsers/tree-sitter/typescript-loader.js +250 -0
  228. package/dist/parsers/tree-sitter/typescript-loader.js.map +1 -0
  229. package/dist/store/project-config.d.ts +154 -0
  230. package/dist/store/project-config.d.ts.map +1 -0
  231. package/dist/store/project-config.js +235 -0
  232. package/dist/store/project-config.js.map +1 -0
  233. package/dist/store/project-registry.d.ts +241 -0
  234. package/dist/store/project-registry.d.ts.map +1 -0
  235. package/dist/store/project-registry.js +557 -0
  236. package/dist/store/project-registry.js.map +1 -0
  237. package/package.json +7 -7
@@ -0,0 +1,402 @@
1
+ /**
2
+ * Enrichment Engine Types
3
+ *
4
+ * Enterprise-grade types for security finding enrichment.
5
+ * Transforms raw vulnerability findings into actionable intelligence
6
+ * by connecting them to their actual data impact through call graph analysis.
7
+ */
8
+ import type { DataAccessPoint, SensitiveField, SensitivityType, DataOperation } from '../../boundaries/types.js';
9
+ import type { CallPathNode } from '../types.js';
10
+ /**
11
+ * Severity levels following CVSS-like classification
12
+ */
13
+ export type FindingSeverity = 'critical' | 'high' | 'medium' | 'low' | 'info';
14
+ /**
15
+ * Finding categories aligned with CWE/OWASP
16
+ */
17
+ export type FindingCategory = 'injection' | 'broken-auth' | 'sensitive-exposure' | 'xxe' | 'broken-access' | 'misconfig' | 'xss' | 'deserialization' | 'components' | 'logging' | 'ssrf' | 'other';
18
+ /**
19
+ * A security finding from any scanner (SAST, DAST, SCA, etc.)
20
+ * Designed to be scanner-agnostic - can ingest from Semgrep, CodeQL, Snyk, etc.
21
+ */
22
+ export interface SecurityFinding {
23
+ /** Unique finding identifier */
24
+ id: string;
25
+ /** Rule/check that triggered this finding */
26
+ ruleId: string;
27
+ /** Human-readable title */
28
+ title: string;
29
+ /** Detailed description */
30
+ description: string;
31
+ /** Finding category */
32
+ category: FindingCategory;
33
+ /** Severity level */
34
+ severity: FindingSeverity;
35
+ /** Source file */
36
+ file: string;
37
+ /** Line number */
38
+ line: number;
39
+ /** Column number */
40
+ column?: number | undefined;
41
+ /** End line (for multi-line findings) */
42
+ endLine?: number | undefined;
43
+ /** End column */
44
+ endColumn?: number | undefined;
45
+ /** Code snippet at the finding location */
46
+ snippet?: string | undefined;
47
+ /** CWE identifiers */
48
+ cwe?: string[] | undefined;
49
+ /** OWASP category */
50
+ owasp?: string[] | undefined;
51
+ /** CVE if applicable (for dependency vulnerabilities) */
52
+ cve?: string | undefined;
53
+ /** CVSS score if available */
54
+ cvss?: number | undefined;
55
+ /** Scanner that produced this finding */
56
+ scanner?: string | undefined;
57
+ /** Scanner-specific metadata */
58
+ metadata?: Record<string, unknown> | undefined;
59
+ }
60
+ /**
61
+ * Classification of data sensitivity for impact scoring
62
+ */
63
+ export interface DataSensitivityProfile {
64
+ /** Sensitivity type */
65
+ type: SensitivityType;
66
+ /** Regulatory implications */
67
+ regulations: DataRegulation[];
68
+ /** Base impact score (0-100) */
69
+ baseScore: number;
70
+ /** Description of why this is sensitive */
71
+ rationale: string;
72
+ }
73
+ /**
74
+ * Regulatory frameworks that may apply
75
+ */
76
+ export type DataRegulation = 'gdpr' | 'ccpa' | 'hipaa' | 'pci-dss' | 'sox' | 'ferpa' | 'glba' | 'coppa' | 'lgpd' | 'pipeda';
77
+ /**
78
+ * A single data access that can be reached from a vulnerability
79
+ */
80
+ export interface ReachableData {
81
+ /** The data access point */
82
+ access: DataAccessPoint;
83
+ /** Call path from vulnerability to this access */
84
+ callPath: CallPathNode[];
85
+ /** Depth in call graph */
86
+ depth: number;
87
+ /** Sensitive fields accessed */
88
+ sensitiveFields: SensitiveField[];
89
+ /** Operations performed */
90
+ operations: DataOperation[];
91
+ /** Impact score for this specific access (0-100) */
92
+ impactScore: number;
93
+ /** Why this access matters */
94
+ impactRationale: string;
95
+ }
96
+ /**
97
+ * Aggregated data impact from a vulnerability
98
+ */
99
+ export interface DataImpact {
100
+ /** All tables that can be reached */
101
+ tables: string[];
102
+ /** All sensitive fields that can be reached */
103
+ sensitiveFields: SensitiveFieldImpact[];
104
+ /** Detailed reachable data with paths */
105
+ reachableData: ReachableData[];
106
+ /** Maximum call depth to reach data */
107
+ maxDepth: number;
108
+ /** Total functions in attack surface */
109
+ attackSurfaceSize: number;
110
+ /** Regulatory implications */
111
+ regulations: DataRegulation[];
112
+ /** Overall data impact score (0-100) */
113
+ score: number;
114
+ /** Impact classification */
115
+ classification: ImpactClassification;
116
+ }
117
+ /**
118
+ * Sensitive field with impact analysis
119
+ */
120
+ export interface SensitiveFieldImpact {
121
+ /** Field information */
122
+ field: SensitiveField;
123
+ /** Number of paths to reach this field */
124
+ pathCount: number;
125
+ /** Shortest path depth */
126
+ shortestPath: number;
127
+ /** Operations that can be performed */
128
+ operations: DataOperation[];
129
+ /** Regulatory implications for this field */
130
+ regulations: DataRegulation[];
131
+ /** Impact score for this field (0-100) */
132
+ impactScore: number;
133
+ }
134
+ /**
135
+ * Impact classification levels
136
+ */
137
+ export type ImpactClassification = 'catastrophic' | 'severe' | 'significant' | 'moderate' | 'minimal' | 'none';
138
+ /**
139
+ * Blast radius - what else could be affected by exploiting this vulnerability
140
+ */
141
+ export interface BlastRadius {
142
+ /** Entry points that can reach this vulnerability */
143
+ entryPoints: EntryPointInfo[];
144
+ /** Other vulnerabilities that share code paths */
145
+ relatedVulnerabilities: string[];
146
+ /** Functions in the blast radius */
147
+ affectedFunctions: AffectedFunction[];
148
+ /** Total lines of code in blast radius */
149
+ linesOfCode: number;
150
+ /** Blast radius score (0-100) */
151
+ score: number;
152
+ /** Classification */
153
+ classification: BlastRadiusClassification;
154
+ }
155
+ /**
156
+ * Entry point information
157
+ */
158
+ export interface EntryPointInfo {
159
+ /** Function ID */
160
+ functionId: string;
161
+ /** Function name */
162
+ name: string;
163
+ /** File path */
164
+ file: string;
165
+ /** Line number */
166
+ line: number;
167
+ /** Entry point type */
168
+ type: EntryPointType;
169
+ /** Is this publicly accessible? */
170
+ isPublic: boolean;
171
+ /** Authentication required? */
172
+ requiresAuth: boolean;
173
+ /** Path to vulnerability */
174
+ pathToVulnerability: CallPathNode[];
175
+ }
176
+ /**
177
+ * Entry point types
178
+ */
179
+ export type EntryPointType = 'api-endpoint' | 'web-route' | 'message-handler' | 'scheduled-job' | 'cli-command' | 'exported-function' | 'main';
180
+ /**
181
+ * A function affected by the vulnerability
182
+ */
183
+ export interface AffectedFunction {
184
+ /** Function ID */
185
+ functionId: string;
186
+ /** Function name */
187
+ name: string;
188
+ /** File path */
189
+ file: string;
190
+ /** Line number */
191
+ line: number;
192
+ /** How this function is affected */
193
+ affectedBy: 'direct' | 'caller' | 'callee';
194
+ /** Distance from vulnerability */
195
+ distance: number;
196
+ }
197
+ /**
198
+ * Blast radius classification
199
+ */
200
+ export type BlastRadiusClassification = 'critical' | 'high' | 'medium' | 'low' | 'contained';
201
+ /**
202
+ * Priority score components
203
+ */
204
+ export interface PriorityScore {
205
+ /** Overall priority score (0-100) */
206
+ overall: number;
207
+ /** Severity component */
208
+ severityScore: number;
209
+ /** Data impact component */
210
+ dataImpactScore: number;
211
+ /** Blast radius component */
212
+ blastRadiusScore: number;
213
+ /** Exploitability component */
214
+ exploitabilityScore: number;
215
+ /** Priority tier */
216
+ tier: PriorityTier;
217
+ /** Factors that increased priority */
218
+ increasingFactors: string[];
219
+ /** Factors that decreased priority */
220
+ decreasingFactors: string[];
221
+ }
222
+ /**
223
+ * Priority tiers for remediation
224
+ */
225
+ export type PriorityTier = 'P0' | 'P1' | 'P2' | 'P3' | 'P4';
226
+ /**
227
+ * Remediation guidance
228
+ */
229
+ export interface RemediationGuidance {
230
+ /** Short summary of what to fix */
231
+ summary: string;
232
+ /** Detailed steps */
233
+ steps: RemediationStep[];
234
+ /** Code examples */
235
+ codeExamples: CodeExample[];
236
+ /** Estimated effort */
237
+ effort: RemediationEffort;
238
+ /** Related documentation */
239
+ references: Reference[];
240
+ }
241
+ /**
242
+ * A remediation step
243
+ */
244
+ export interface RemediationStep {
245
+ /** Step number */
246
+ order: number;
247
+ /** Step description */
248
+ description: string;
249
+ /** File to modify (if applicable) */
250
+ file?: string | undefined;
251
+ /** Line to modify (if applicable) */
252
+ line?: number | undefined;
253
+ }
254
+ /**
255
+ * Code example for remediation
256
+ */
257
+ export interface CodeExample {
258
+ /** Description of the example */
259
+ description: string;
260
+ /** Language */
261
+ language: string;
262
+ /** The vulnerable code */
263
+ vulnerable: string;
264
+ /** The fixed code */
265
+ fixed: string;
266
+ }
267
+ /**
268
+ * Remediation effort estimate
269
+ */
270
+ export interface RemediationEffort {
271
+ /** Estimated time */
272
+ time: 'minutes' | 'hours' | 'days' | 'weeks';
273
+ /** Complexity */
274
+ complexity: 'trivial' | 'simple' | 'moderate' | 'complex' | 'architectural';
275
+ /** Risk of regression */
276
+ regressionRisk: 'low' | 'medium' | 'high';
277
+ }
278
+ /**
279
+ * Reference documentation
280
+ */
281
+ export interface Reference {
282
+ /** Reference title */
283
+ title: string;
284
+ /** URL */
285
+ url: string;
286
+ /** Reference type */
287
+ type: 'documentation' | 'cwe' | 'owasp' | 'blog' | 'advisory';
288
+ }
289
+ /**
290
+ * The fully enriched security finding
291
+ */
292
+ export interface EnrichedFinding {
293
+ /** Original finding */
294
+ finding: SecurityFinding;
295
+ /** Data impact analysis */
296
+ dataImpact: DataImpact;
297
+ /** Blast radius analysis */
298
+ blastRadius: BlastRadius;
299
+ /** Priority score */
300
+ priority: PriorityScore;
301
+ /** Remediation guidance */
302
+ remediation: RemediationGuidance;
303
+ /** Enrichment metadata */
304
+ enrichment: EnrichmentMetadata;
305
+ }
306
+ /**
307
+ * Metadata about the enrichment process
308
+ */
309
+ export interface EnrichmentMetadata {
310
+ /** When enrichment was performed */
311
+ enrichedAt: string;
312
+ /** Enrichment engine version */
313
+ engineVersion: string;
314
+ /** Call graph version used */
315
+ callGraphVersion: string;
316
+ /** Confidence in the enrichment (0-1) */
317
+ confidence: number;
318
+ /** Warnings or limitations */
319
+ warnings: string[];
320
+ /** Processing time in ms */
321
+ processingTimeMs: number;
322
+ }
323
+ /**
324
+ * Options for batch enrichment
325
+ */
326
+ export interface EnrichmentOptions {
327
+ /** Maximum call depth to traverse */
328
+ maxDepth?: number | undefined;
329
+ /** Include unresolved calls in analysis */
330
+ includeUnresolved?: boolean | undefined;
331
+ /** Minimum confidence for data access */
332
+ minConfidence?: number | undefined;
333
+ /** Custom sensitivity mappings */
334
+ sensitivityOverrides?: Record<string, SensitivityType> | undefined;
335
+ /** Custom regulation mappings */
336
+ regulationOverrides?: Record<string, DataRegulation[]> | undefined;
337
+ /** Skip blast radius analysis (faster) */
338
+ skipBlastRadius?: boolean | undefined;
339
+ /** Skip remediation guidance (faster) */
340
+ skipRemediation?: boolean | undefined;
341
+ /** Parallel processing limit */
342
+ parallelLimit?: number | undefined;
343
+ }
344
+ /**
345
+ * Result of batch enrichment
346
+ */
347
+ export interface EnrichmentResult {
348
+ /** Enriched findings */
349
+ findings: EnrichedFinding[];
350
+ /** Summary statistics */
351
+ summary: EnrichmentSummary;
352
+ /** Processing metadata */
353
+ metadata: BatchMetadata;
354
+ }
355
+ /**
356
+ * Summary of enrichment results
357
+ */
358
+ export interface EnrichmentSummary {
359
+ /** Total findings processed */
360
+ totalFindings: number;
361
+ /** Findings by priority tier */
362
+ byPriority: Record<PriorityTier, number>;
363
+ /** Findings by impact classification */
364
+ byImpact: Record<ImpactClassification, number>;
365
+ /** Findings by category */
366
+ byCategory: Record<FindingCategory, number>;
367
+ /** Total sensitive fields at risk */
368
+ sensitiveFieldsAtRisk: number;
369
+ /** Total tables at risk */
370
+ tablesAtRisk: number;
371
+ /** Regulations implicated */
372
+ regulationsImplicated: DataRegulation[];
373
+ /** Top priority findings */
374
+ topPriority: EnrichedFinding[];
375
+ }
376
+ /**
377
+ * Batch processing metadata
378
+ */
379
+ export interface BatchMetadata {
380
+ /** Processing start time */
381
+ startedAt: string;
382
+ /** Processing end time */
383
+ completedAt: string;
384
+ /** Total processing time in ms */
385
+ totalTimeMs: number;
386
+ /** Average time per finding in ms */
387
+ avgTimePerFindingMs: number;
388
+ /** Findings that failed enrichment */
389
+ failures: EnrichmentFailure[];
390
+ }
391
+ /**
392
+ * Enrichment failure information
393
+ */
394
+ export interface EnrichmentFailure {
395
+ /** Finding ID */
396
+ findingId: string;
397
+ /** Error message */
398
+ error: string;
399
+ /** Error type */
400
+ type: 'not-found' | 'parse-error' | 'timeout' | 'unknown';
401
+ }
402
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/call-graph/enrichment/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Enrichment Engine Types
3
+ *
4
+ * Enterprise-grade types for security finding enrichment.
5
+ * Transforms raw vulnerability findings into actionable intelligence
6
+ * by connecting them to their actual data impact through call graph analysis.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/call-graph/enrichment/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Base Call Graph Extractor
3
+ *
4
+ * Abstract base class for language-specific extractors.
5
+ * Provides common utilities and defines the extraction interface.
6
+ */
7
+ import type { CallGraphLanguage, FileExtractionResult, FunctionExtraction, CallExtraction, ImportExtraction, ExportExtraction, ClassExtraction, ParameterInfo } from '../types.js';
8
+ /**
9
+ * Abstract base class for call graph extractors
10
+ */
11
+ export declare abstract class BaseCallGraphExtractor {
12
+ /** Language this extractor handles */
13
+ abstract readonly language: CallGraphLanguage;
14
+ /** File extensions this extractor handles */
15
+ abstract readonly extensions: string[];
16
+ /**
17
+ * Extract functions, calls, imports, and exports from source code
18
+ */
19
+ abstract extract(source: string, filePath: string): FileExtractionResult;
20
+ /**
21
+ * Check if this extractor can handle a file
22
+ */
23
+ canHandle(filePath: string): boolean;
24
+ /**
25
+ * Get file extension
26
+ */
27
+ protected getExtension(filePath: string): string;
28
+ /**
29
+ * Generate a unique function ID
30
+ */
31
+ protected generateFunctionId(file: string, name: string, line: number): string;
32
+ /**
33
+ * Create an empty extraction result
34
+ */
35
+ protected createEmptyResult(file: string): FileExtractionResult;
36
+ /**
37
+ * Create a function extraction
38
+ */
39
+ protected createFunction(opts: {
40
+ name: string;
41
+ qualifiedName?: string;
42
+ startLine: number;
43
+ endLine: number;
44
+ startColumn?: number;
45
+ endColumn?: number;
46
+ parameters?: ParameterInfo[];
47
+ returnType?: string | undefined;
48
+ isMethod?: boolean;
49
+ isStatic?: boolean;
50
+ isExported?: boolean;
51
+ isConstructor?: boolean;
52
+ isAsync?: boolean;
53
+ className?: string | undefined;
54
+ moduleName?: string | undefined;
55
+ decorators?: string[];
56
+ bodyStartLine?: number;
57
+ bodyEndLine?: number;
58
+ }): FunctionExtraction;
59
+ /**
60
+ * Create a call extraction
61
+ */
62
+ protected createCall(opts: {
63
+ calleeName: string;
64
+ receiver?: string | undefined;
65
+ fullExpression?: string;
66
+ line: number;
67
+ column?: number;
68
+ argumentCount?: number;
69
+ isMethodCall?: boolean;
70
+ isConstructorCall?: boolean;
71
+ }): CallExtraction;
72
+ /**
73
+ * Create an import extraction
74
+ */
75
+ protected createImport(opts: {
76
+ source: string;
77
+ names: Array<{
78
+ imported: string;
79
+ local?: string;
80
+ isDefault?: boolean;
81
+ isNamespace?: boolean;
82
+ }>;
83
+ line: number;
84
+ isTypeOnly?: boolean;
85
+ }): ImportExtraction;
86
+ /**
87
+ * Create an export extraction
88
+ */
89
+ protected createExport(opts: {
90
+ name: string;
91
+ isDefault?: boolean;
92
+ isReExport?: boolean;
93
+ source?: string | undefined;
94
+ line: number;
95
+ }): ExportExtraction;
96
+ /**
97
+ * Create a class extraction
98
+ */
99
+ protected createClass(opts: {
100
+ name: string;
101
+ startLine: number;
102
+ endLine: number;
103
+ baseClasses?: string[];
104
+ methods?: string[];
105
+ isExported?: boolean;
106
+ }): ClassExtraction;
107
+ /**
108
+ * Parse parameter string into ParameterInfo
109
+ */
110
+ protected parseParameter(name: string, type?: string, hasDefault?: boolean, isRest?: boolean): ParameterInfo;
111
+ }
112
+ //# sourceMappingURL=base-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-extractor.d.ts","sourceRoot":"","sources":["../../../src/call-graph/extractors/base-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Base Call Graph Extractor
3
+ *
4
+ * Abstract base class for language-specific extractors.
5
+ * Provides common utilities and defines the extraction interface.
6
+ */
7
+ /**
8
+ * Abstract base class for call graph extractors
9
+ */
10
+ export class BaseCallGraphExtractor {
11
+ /**
12
+ * Check if this extractor can handle a file
13
+ */
14
+ canHandle(filePath) {
15
+ const ext = this.getExtension(filePath);
16
+ return this.extensions.includes(ext);
17
+ }
18
+ /**
19
+ * Get file extension
20
+ */
21
+ getExtension(filePath) {
22
+ const lastDot = filePath.lastIndexOf('.');
23
+ return lastDot >= 0 ? filePath.slice(lastDot) : '';
24
+ }
25
+ /**
26
+ * Generate a unique function ID
27
+ */
28
+ generateFunctionId(file, name, line) {
29
+ return `${file}:${name}:${line}`;
30
+ }
31
+ /**
32
+ * Create an empty extraction result
33
+ */
34
+ createEmptyResult(file) {
35
+ return {
36
+ file,
37
+ language: this.language,
38
+ functions: [],
39
+ calls: [],
40
+ imports: [],
41
+ exports: [],
42
+ classes: [],
43
+ errors: [],
44
+ };
45
+ }
46
+ /**
47
+ * Create a function extraction
48
+ */
49
+ createFunction(opts) {
50
+ // Use provided qualifiedName or compute from className/moduleName
51
+ const qualifiedName = opts.qualifiedName ?? (opts.className
52
+ ? `${opts.className}.${opts.name}`
53
+ : opts.moduleName
54
+ ? `${opts.moduleName}.${opts.name}`
55
+ : opts.name);
56
+ return {
57
+ name: opts.name,
58
+ qualifiedName,
59
+ startLine: opts.startLine,
60
+ endLine: opts.endLine,
61
+ startColumn: opts.startColumn ?? 0,
62
+ endColumn: opts.endColumn ?? 0,
63
+ parameters: opts.parameters ?? [],
64
+ returnType: opts.returnType,
65
+ isMethod: opts.isMethod ?? false,
66
+ isStatic: opts.isStatic ?? false,
67
+ isExported: opts.isExported ?? false,
68
+ isConstructor: opts.isConstructor ?? false,
69
+ isAsync: opts.isAsync ?? false,
70
+ className: opts.className,
71
+ moduleName: opts.moduleName,
72
+ decorators: opts.decorators ?? [],
73
+ bodyStartLine: opts.bodyStartLine ?? opts.startLine,
74
+ bodyEndLine: opts.bodyEndLine ?? opts.endLine,
75
+ };
76
+ }
77
+ /**
78
+ * Create a call extraction
79
+ */
80
+ createCall(opts) {
81
+ return {
82
+ calleeName: opts.calleeName,
83
+ receiver: opts.receiver,
84
+ fullExpression: opts.fullExpression ?? opts.calleeName,
85
+ line: opts.line,
86
+ column: opts.column ?? 0,
87
+ argumentCount: opts.argumentCount ?? 0,
88
+ isMethodCall: opts.isMethodCall ?? !!opts.receiver,
89
+ isConstructorCall: opts.isConstructorCall ?? false,
90
+ };
91
+ }
92
+ /**
93
+ * Create an import extraction
94
+ */
95
+ createImport(opts) {
96
+ return {
97
+ source: opts.source,
98
+ names: opts.names.map((n) => ({
99
+ imported: n.imported,
100
+ local: n.local ?? n.imported,
101
+ isDefault: n.isDefault ?? false,
102
+ isNamespace: n.isNamespace ?? false,
103
+ })),
104
+ line: opts.line,
105
+ isTypeOnly: opts.isTypeOnly ?? false,
106
+ };
107
+ }
108
+ /**
109
+ * Create an export extraction
110
+ */
111
+ createExport(opts) {
112
+ return {
113
+ name: opts.name,
114
+ isDefault: opts.isDefault ?? false,
115
+ isReExport: opts.isReExport ?? false,
116
+ source: opts.source,
117
+ line: opts.line,
118
+ };
119
+ }
120
+ /**
121
+ * Create a class extraction
122
+ */
123
+ createClass(opts) {
124
+ return {
125
+ name: opts.name,
126
+ startLine: opts.startLine,
127
+ endLine: opts.endLine,
128
+ baseClasses: opts.baseClasses ?? [],
129
+ methods: opts.methods ?? [],
130
+ isExported: opts.isExported ?? false,
131
+ };
132
+ }
133
+ /**
134
+ * Parse parameter string into ParameterInfo
135
+ */
136
+ parseParameter(name, type, hasDefault = false, isRest = false) {
137
+ return { name, type, hasDefault, isRest };
138
+ }
139
+ }
140
+ //# sourceMappingURL=base-extractor.js.map