code-auditor-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +362 -0
- package/configs/hhra-compat.json +168 -0
- package/dist/analyzers/analyzerUtils.d.ts +69 -0
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -0
- package/dist/analyzers/analyzerUtils.js +188 -0
- package/dist/analyzers/analyzerUtils.js.map +1 -0
- package/dist/analyzers/dataAccessAnalyzer.d.ts +46 -0
- package/dist/analyzers/dataAccessAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/dataAccessAnalyzer.js +448 -0
- package/dist/analyzers/dataAccessAnalyzer.js.map +1 -0
- package/dist/analyzers/dryAnalyzer.d.ts +30 -0
- package/dist/analyzers/dryAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/dryAnalyzer.js +537 -0
- package/dist/analyzers/dryAnalyzer.js.map +1 -0
- package/dist/analyzers/solidAnalyzer.d.ts +23 -0
- package/dist/analyzers/solidAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/solidAnalyzer.js +355 -0
- package/dist/analyzers/solidAnalyzer.js.map +1 -0
- package/dist/auditRunner.d.ts +20 -0
- package/dist/auditRunner.d.ts.map +1 -0
- package/dist/auditRunner.js +214 -0
- package/dist/auditRunner.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/configLoader.d.ts +19 -0
- package/dist/config/configLoader.d.ts.map +1 -0
- package/dist/config/configLoader.js +124 -0
- package/dist/config/configLoader.js.map +1 -0
- package/dist/config/defaults.d.ts +69 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +142 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-standalone.d.ts +3 -0
- package/dist/mcp-standalone.d.ts.map +1 -0
- package/dist/mcp-standalone.js +171 -0
- package/dist/mcp-standalone.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +340 -0
- package/dist/mcp.js.map +1 -0
- package/dist/reporting/csvReportGenerator.d.ts +29 -0
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -0
- package/dist/reporting/csvReportGenerator.js +182 -0
- package/dist/reporting/csvReportGenerator.js.map +1 -0
- package/dist/reporting/htmlReportGenerator.d.ts +18 -0
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -0
- package/dist/reporting/htmlReportGenerator.js +352 -0
- package/dist/reporting/htmlReportGenerator.js.map +1 -0
- package/dist/reporting/jsonReportGenerator.d.ts +23 -0
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -0
- package/dist/reporting/jsonReportGenerator.js +103 -0
- package/dist/reporting/jsonReportGenerator.js.map +1 -0
- package/dist/reporting/reportGenerator.d.ts +21 -0
- package/dist/reporting/reportGenerator.d.ts.map +1 -0
- package/dist/reporting/reportGenerator.js +53 -0
- package/dist/reporting/reportGenerator.js.map +1 -0
- package/dist/types.d.ts +246 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/astParser.d.ts +71 -0
- package/dist/utils/astParser.d.ts.map +1 -0
- package/dist/utils/astParser.js +244 -0
- package/dist/utils/astParser.js.map +1 -0
- package/dist/utils/astUtils.d.ts +89 -0
- package/dist/utils/astUtils.d.ts.map +1 -0
- package/dist/utils/astUtils.js +289 -0
- package/dist/utils/astUtils.js.map +1 -0
- package/dist/utils/fileDiscovery.d.ts +58 -0
- package/dist/utils/fileDiscovery.d.ts.map +1 -0
- package/dist/utils/fileDiscovery.js +203 -0
- package/dist/utils/fileDiscovery.js.map +1 -0
- package/examples/.auditrc.example.json +61 -0
- package/examples/.auditrc.json +201 -0
- package/examples/nextjs.auditrc.json +65 -0
- package/examples/node-api.auditrc.json +82 -0
- package/examples/react.auditrc.json +59 -0
- package/package.json +62 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Report Generator (Functional)
|
|
3
|
+
* Generates JSON formatted audit reports
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate a JSON report from audit results
|
|
7
|
+
*/
|
|
8
|
+
export function generateJSONReport(result, config) {
|
|
9
|
+
const pretty = config?.pretty ?? true;
|
|
10
|
+
const includeMetadata = config?.includeMetadata ?? true;
|
|
11
|
+
const includeRecommendations = config?.includeRecommendations ?? true;
|
|
12
|
+
const report = createReportObject(result, {
|
|
13
|
+
includeMetadata,
|
|
14
|
+
includeRecommendations,
|
|
15
|
+
customFields: config?.customFields
|
|
16
|
+
});
|
|
17
|
+
return JSON.stringify(report, null, pretty ? 2 : 0);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create the report object structure
|
|
21
|
+
*/
|
|
22
|
+
function createReportObject(result, options) {
|
|
23
|
+
const report = {
|
|
24
|
+
timestamp: result.timestamp,
|
|
25
|
+
summary: result.summary,
|
|
26
|
+
analyzerResults: transformAnalyzerResults(result.analyzerResults)
|
|
27
|
+
};
|
|
28
|
+
if (options.includeRecommendations && result.recommendations) {
|
|
29
|
+
report.recommendations = result.recommendations;
|
|
30
|
+
}
|
|
31
|
+
if (options.includeMetadata && result.metadata) {
|
|
32
|
+
report.metadata = result.metadata;
|
|
33
|
+
}
|
|
34
|
+
if (options.customFields) {
|
|
35
|
+
Object.assign(report, options.customFields);
|
|
36
|
+
}
|
|
37
|
+
return report;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Transform analyzer results for better JSON structure
|
|
41
|
+
*/
|
|
42
|
+
function transformAnalyzerResults(analyzerResults) {
|
|
43
|
+
const transformed = {};
|
|
44
|
+
for (const [analyzer, result] of Object.entries(analyzerResults)) {
|
|
45
|
+
transformed[analyzer] = {
|
|
46
|
+
summary: {
|
|
47
|
+
totalViolations: result.violations.length,
|
|
48
|
+
bySeverity: countBySeverity(result.violations),
|
|
49
|
+
filesProcessed: result.filesProcessed,
|
|
50
|
+
executionTime: result.executionTime
|
|
51
|
+
},
|
|
52
|
+
violations: result.violations.map(violation => ({
|
|
53
|
+
file: violation.file,
|
|
54
|
+
line: violation.line,
|
|
55
|
+
column: violation.column,
|
|
56
|
+
severity: violation.severity,
|
|
57
|
+
message: violation.message,
|
|
58
|
+
type: violation.type,
|
|
59
|
+
...(violation.recommendation && { recommendation: violation.recommendation }),
|
|
60
|
+
...(violation.estimatedEffort && { estimatedEffort: violation.estimatedEffort }),
|
|
61
|
+
...(violation.snippet && { snippet: violation.snippet })
|
|
62
|
+
})),
|
|
63
|
+
...(result.errors && { errors: result.errors })
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return transformed;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Count violations by severity
|
|
70
|
+
*/
|
|
71
|
+
function countBySeverity(violations) {
|
|
72
|
+
return violations.reduce((acc, violation) => {
|
|
73
|
+
acc[violation.severity] = (acc[violation.severity] || 0) + 1;
|
|
74
|
+
return acc;
|
|
75
|
+
}, {});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate a compact JSON report (minimal size)
|
|
79
|
+
*/
|
|
80
|
+
export function generateCompactJSONReport(result) {
|
|
81
|
+
const compactReport = {
|
|
82
|
+
t: result.timestamp,
|
|
83
|
+
s: {
|
|
84
|
+
tv: result.summary.totalViolations,
|
|
85
|
+
c: result.summary.criticalIssues,
|
|
86
|
+
w: result.summary.warnings,
|
|
87
|
+
s: result.summary.suggestions
|
|
88
|
+
},
|
|
89
|
+
v: Object.entries(result.analyzerResults).flatMap(([analyzer, data]) => data.violations.map(v => ({
|
|
90
|
+
a: analyzer,
|
|
91
|
+
f: v.file,
|
|
92
|
+
l: v.line,
|
|
93
|
+
s: v.severity.charAt(0), // c, w, s
|
|
94
|
+
m: v.message
|
|
95
|
+
})))
|
|
96
|
+
};
|
|
97
|
+
return JSON.stringify(compactReport);
|
|
98
|
+
}
|
|
99
|
+
// Backwards compatibility export
|
|
100
|
+
export const JSONReportGenerator = {
|
|
101
|
+
generate: generateJSONReport
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=jsonReportGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonReportGenerator.js","sourceRoot":"","sources":["../../src/reporting/jsonReportGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Generator (Functional)
|
|
3
|
+
* Orchestrates report generation in various formats
|
|
4
|
+
*/
|
|
5
|
+
import { AuditResult, ReportFormat } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate a report in the specified format
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateReport(result: AuditResult, format: ReportFormat): string;
|
|
10
|
+
/**
|
|
11
|
+
* Create a report generator with custom formatters
|
|
12
|
+
*/
|
|
13
|
+
export declare function createReportGenerator(customFormatters?: Record<string, (result: AuditResult) => string>): {
|
|
14
|
+
generate(result: AuditResult, format: string): string;
|
|
15
|
+
registerFormatter(format: string, formatter: (result: AuditResult) => string): void;
|
|
16
|
+
getAvailableFormats(): string[];
|
|
17
|
+
};
|
|
18
|
+
export declare const ReportGenerator: {
|
|
19
|
+
generate: typeof generateReport;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=reportGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKxD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAWhF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;qBASnF,WAAW,UAAU,MAAM,GAAG,MAAM;8BAQ3B,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM;2BAIrD,MAAM,EAAE;EAIlC;AAGD,eAAO,MAAM,eAAe;;CAE3B,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Generator (Functional)
|
|
3
|
+
* Orchestrates report generation in various formats
|
|
4
|
+
*/
|
|
5
|
+
import { generateHTMLReport } from './htmlReportGenerator.js';
|
|
6
|
+
import { generateJSONReport } from './jsonReportGenerator.js';
|
|
7
|
+
import { generateCSVReport } from './csvReportGenerator.js';
|
|
8
|
+
/**
|
|
9
|
+
* Generate a report in the specified format
|
|
10
|
+
*/
|
|
11
|
+
export function generateReport(result, format) {
|
|
12
|
+
switch (format) {
|
|
13
|
+
case 'html':
|
|
14
|
+
return generateHTMLReport(result);
|
|
15
|
+
case 'json':
|
|
16
|
+
return generateJSONReport(result);
|
|
17
|
+
case 'csv':
|
|
18
|
+
return generateCSVReport(result);
|
|
19
|
+
default:
|
|
20
|
+
throw new Error(`Unknown report format: ${format}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a report generator with custom formatters
|
|
25
|
+
*/
|
|
26
|
+
export function createReportGenerator(customFormatters) {
|
|
27
|
+
const formatters = {
|
|
28
|
+
html: generateHTMLReport,
|
|
29
|
+
json: generateJSONReport,
|
|
30
|
+
csv: generateCSVReport,
|
|
31
|
+
...customFormatters
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
generate(result, format) {
|
|
35
|
+
const formatter = formatters[format];
|
|
36
|
+
if (!formatter) {
|
|
37
|
+
throw new Error(`Unknown report format: ${format}`);
|
|
38
|
+
}
|
|
39
|
+
return formatter(result);
|
|
40
|
+
},
|
|
41
|
+
registerFormatter(format, formatter) {
|
|
42
|
+
formatters[format] = formatter;
|
|
43
|
+
},
|
|
44
|
+
getAvailableFormats() {
|
|
45
|
+
return Object.keys(formatters);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// For backwards compatibility - will be used by auditRunner
|
|
50
|
+
export const ReportGenerator = {
|
|
51
|
+
generate: generateReport
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=reportGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportGenerator.js","sourceRoot":"","sources":["../../src/reporting/reportGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,MAAoB;IACtE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,KAAK;YACR,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,gBAAkE;IACtG,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,iBAAiB;QACtB,GAAG,gBAAgB;KACpB,CAAC;IAEF,OAAO;QACL,QAAQ,CAAC,MAAmB,EAAE,MAAc;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,iBAAiB,CAAC,MAAc,EAAE,SAA0C;YAC1E,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,mBAAmB;YACjB,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the code auditor
|
|
3
|
+
* Generic types that work with any TypeScript/JavaScript project
|
|
4
|
+
*/
|
|
5
|
+
export type Severity = 'critical' | 'warning' | 'suggestion';
|
|
6
|
+
export type ReportFormat = 'html' | 'json' | 'csv';
|
|
7
|
+
export type RenderType = 'client' | 'server' | 'unknown';
|
|
8
|
+
export type DataFetchingMethod = 'server' | 'client' | 'none';
|
|
9
|
+
export interface QueryInfo {
|
|
10
|
+
type: string;
|
|
11
|
+
tables: string[];
|
|
12
|
+
line: number;
|
|
13
|
+
hasJoins?: boolean;
|
|
14
|
+
complexity?: 'simple' | 'moderate' | 'complex';
|
|
15
|
+
hasOrganizationFilter?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface SecurityViolation extends Violation {
|
|
18
|
+
type: 'security';
|
|
19
|
+
category: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ArchitectureViolation extends Violation {
|
|
22
|
+
type: 'architecture';
|
|
23
|
+
category: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Violation {
|
|
26
|
+
file: string;
|
|
27
|
+
line?: number;
|
|
28
|
+
column?: number;
|
|
29
|
+
severity: Severity;
|
|
30
|
+
message: string;
|
|
31
|
+
details?: string | Record<string, any>;
|
|
32
|
+
snippet?: string;
|
|
33
|
+
suggestion?: string;
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
}
|
|
36
|
+
export interface AnalyzerResult {
|
|
37
|
+
violations: Violation[];
|
|
38
|
+
filesProcessed: number;
|
|
39
|
+
executionTime: number;
|
|
40
|
+
errors?: Array<{
|
|
41
|
+
file: string;
|
|
42
|
+
error: string;
|
|
43
|
+
}>;
|
|
44
|
+
analyzerName?: string;
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}
|
|
47
|
+
export interface AuditOptions {
|
|
48
|
+
includePaths?: string[];
|
|
49
|
+
excludePaths?: string[];
|
|
50
|
+
minSeverity?: Severity;
|
|
51
|
+
enabledAnalyzers?: string[];
|
|
52
|
+
outputFormats?: ReportFormat[];
|
|
53
|
+
outputDir?: string;
|
|
54
|
+
failOnCritical?: boolean;
|
|
55
|
+
duplicateThreshold?: number;
|
|
56
|
+
verbose?: boolean;
|
|
57
|
+
configFile?: string;
|
|
58
|
+
thresholds?: {
|
|
59
|
+
maxCritical?: number;
|
|
60
|
+
maxWarnings?: number;
|
|
61
|
+
maxSuggestions?: number;
|
|
62
|
+
minHealthScore?: number;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export interface ProgressCallback {
|
|
66
|
+
(progress: {
|
|
67
|
+
current: number;
|
|
68
|
+
total: number;
|
|
69
|
+
analyzer: string;
|
|
70
|
+
file?: string;
|
|
71
|
+
phase?: string;
|
|
72
|
+
}): void;
|
|
73
|
+
}
|
|
74
|
+
export type AnalyzerFunction = (files: string[], config: any, options?: AuditOptions, progressCallback?: ProgressCallback) => Promise<AnalyzerResult>;
|
|
75
|
+
export interface AnalyzerDefinition {
|
|
76
|
+
name: string;
|
|
77
|
+
analyze: AnalyzerFunction;
|
|
78
|
+
defaultConfig: any;
|
|
79
|
+
}
|
|
80
|
+
export interface AuditSummary {
|
|
81
|
+
totalFiles: number;
|
|
82
|
+
totalViolations: number;
|
|
83
|
+
criticalIssues: number;
|
|
84
|
+
warnings: number;
|
|
85
|
+
suggestions: number;
|
|
86
|
+
violationsByCategory: Record<string, number>;
|
|
87
|
+
topIssues: Array<{
|
|
88
|
+
type: string;
|
|
89
|
+
count: number;
|
|
90
|
+
}>;
|
|
91
|
+
}
|
|
92
|
+
export interface AuditResult {
|
|
93
|
+
timestamp: Date;
|
|
94
|
+
summary: AuditSummary;
|
|
95
|
+
analyzerResults: Record<string, AnalyzerResult>;
|
|
96
|
+
recommendations: Recommendation[];
|
|
97
|
+
metadata: {
|
|
98
|
+
auditDuration: number;
|
|
99
|
+
filesAnalyzed: number;
|
|
100
|
+
analyzersRun: string[];
|
|
101
|
+
configUsed?: AuditOptions;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export interface ComponentAnalysis {
|
|
105
|
+
filePath: string;
|
|
106
|
+
renderType: RenderType;
|
|
107
|
+
hasErrorBoundary: boolean;
|
|
108
|
+
dataFetchingMethod?: DataFetchingMethod;
|
|
109
|
+
violations: Violation[];
|
|
110
|
+
suggestions: string[];
|
|
111
|
+
imports: string[];
|
|
112
|
+
exports: string[];
|
|
113
|
+
hasAppShell?: boolean;
|
|
114
|
+
hasPageHeader?: boolean;
|
|
115
|
+
}
|
|
116
|
+
export interface SecurityAnalysis {
|
|
117
|
+
filePath: string;
|
|
118
|
+
httpMethods: string[];
|
|
119
|
+
authPattern?: string;
|
|
120
|
+
authWrapper?: string;
|
|
121
|
+
rateLimiting?: boolean;
|
|
122
|
+
hasErrorHandling: boolean;
|
|
123
|
+
usesStandardResponses?: boolean;
|
|
124
|
+
organizationFiltering?: boolean;
|
|
125
|
+
violations: Violation[];
|
|
126
|
+
}
|
|
127
|
+
export interface SOLIDViolation extends Violation {
|
|
128
|
+
principle: 'single-responsibility' | 'open-closed' | 'liskov-substitution' | 'interface-segregation' | 'dependency-inversion';
|
|
129
|
+
className?: string;
|
|
130
|
+
methodName?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface DRYViolation extends Violation {
|
|
133
|
+
type: 'exact-duplicate' | 'pattern-duplication' | 'similar-logic';
|
|
134
|
+
similarity?: number;
|
|
135
|
+
locations?: Array<{
|
|
136
|
+
file: string;
|
|
137
|
+
line: number;
|
|
138
|
+
}>;
|
|
139
|
+
metrics?: {
|
|
140
|
+
duplicateLines: number;
|
|
141
|
+
totalLines: number;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export interface DataAccessPattern {
|
|
145
|
+
source: 'component' | 'api' | 'service';
|
|
146
|
+
filePath: string;
|
|
147
|
+
database?: string;
|
|
148
|
+
databaseType?: string;
|
|
149
|
+
tables: string[];
|
|
150
|
+
queries: QueryInfo[];
|
|
151
|
+
performanceRisk: 'low' | 'medium' | 'high';
|
|
152
|
+
hasOrganizationFilter?: boolean;
|
|
153
|
+
hasSqlInjectionRisk?: boolean;
|
|
154
|
+
}
|
|
155
|
+
export interface DataAccessViolation extends Violation {
|
|
156
|
+
pattern: 'raw-sql' | 'missing-validation' | 'no-pooling' | 'performance-issue';
|
|
157
|
+
query?: string;
|
|
158
|
+
risk?: 'sql-injection' | 'performance' | 'security' | 'data-leak';
|
|
159
|
+
}
|
|
160
|
+
export interface SecurityPatternIssue extends Violation {
|
|
161
|
+
pattern: 'missing-auth' | 'inconsistent-auth' | 'missing-validation' | 'security-bypass';
|
|
162
|
+
expectedPattern?: string;
|
|
163
|
+
}
|
|
164
|
+
export interface ReportGenerator {
|
|
165
|
+
generate(result: AuditResult, format: ReportFormat): string;
|
|
166
|
+
}
|
|
167
|
+
export interface Recommendation {
|
|
168
|
+
title: string;
|
|
169
|
+
description: string;
|
|
170
|
+
priority: 'high' | 'medium' | 'low';
|
|
171
|
+
effort: 'small' | 'medium' | 'large';
|
|
172
|
+
category: string;
|
|
173
|
+
affectedFiles: string[];
|
|
174
|
+
exampleImplementation?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface AuditConfig {
|
|
177
|
+
includePaths?: string[];
|
|
178
|
+
excludePaths?: string[];
|
|
179
|
+
enabledAnalyzers?: string[];
|
|
180
|
+
outputFormats?: ReportFormat[];
|
|
181
|
+
outputDir?: string;
|
|
182
|
+
outputDirectory?: string;
|
|
183
|
+
minSeverity?: Severity;
|
|
184
|
+
failOnCritical?: boolean;
|
|
185
|
+
showProgress?: boolean;
|
|
186
|
+
parallel?: boolean;
|
|
187
|
+
thresholds?: {
|
|
188
|
+
maxCritical?: number;
|
|
189
|
+
maxWarnings?: number;
|
|
190
|
+
maxSuggestions?: number;
|
|
191
|
+
minHealthScore?: number;
|
|
192
|
+
};
|
|
193
|
+
analyzerOptions?: Record<string, any>;
|
|
194
|
+
}
|
|
195
|
+
export type PageAnalysis = ComponentAnalysis;
|
|
196
|
+
export type RouteAnalysis = SecurityAnalysis;
|
|
197
|
+
export type AuthWrapper = string;
|
|
198
|
+
export type AuthPatternIssue = SecurityPatternIssue;
|
|
199
|
+
export type DatabaseType = string;
|
|
200
|
+
export type SeverityLevel = Severity;
|
|
201
|
+
export type RecommendationPriority = 'high' | 'medium' | 'low';
|
|
202
|
+
export interface AuditMetadata {
|
|
203
|
+
auditDuration: number;
|
|
204
|
+
filesAnalyzed: number;
|
|
205
|
+
analyzersRun: string[];
|
|
206
|
+
configUsed?: AuditOptions;
|
|
207
|
+
reports?: string[];
|
|
208
|
+
}
|
|
209
|
+
export interface BaseAnalyzerOptions {
|
|
210
|
+
verbose?: boolean;
|
|
211
|
+
configFile?: string;
|
|
212
|
+
}
|
|
213
|
+
export interface FileInfo {
|
|
214
|
+
path: string;
|
|
215
|
+
size: number;
|
|
216
|
+
lastModified: Date;
|
|
217
|
+
}
|
|
218
|
+
export interface ImportInfo {
|
|
219
|
+
moduleSpecifier: string;
|
|
220
|
+
importedNames: string[];
|
|
221
|
+
isTypeOnly: boolean;
|
|
222
|
+
line: number;
|
|
223
|
+
}
|
|
224
|
+
export interface ExportInfo {
|
|
225
|
+
name: string;
|
|
226
|
+
isDefault: boolean;
|
|
227
|
+
isTypeOnly: boolean;
|
|
228
|
+
line: number;
|
|
229
|
+
}
|
|
230
|
+
export interface AuditProgress {
|
|
231
|
+
current: number;
|
|
232
|
+
total: number;
|
|
233
|
+
analyzer: string;
|
|
234
|
+
file?: string;
|
|
235
|
+
phase?: string;
|
|
236
|
+
message?: string;
|
|
237
|
+
}
|
|
238
|
+
export interface AuditRunnerOptions extends AuditOptions {
|
|
239
|
+
progressCallback?: (progress: AuditProgress) => void;
|
|
240
|
+
errorCallback?: (error: Error, context: string) => void;
|
|
241
|
+
outputDirectory?: string;
|
|
242
|
+
configName?: string;
|
|
243
|
+
projectRoot?: string;
|
|
244
|
+
analyzerConfigs?: Record<string, any>;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,QAAQ,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;CACV;AAGD,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,GAAG,EACX,OAAO,CAAC,EAAE,YAAY,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,KAChC,OAAO,CAAC,cAAc,CAAC,CAAC;AAG7B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,YAAY,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,SAAS,EAAE,uBAAuB,GAAG,aAAa,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;IAC9H,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,eAAe,CAAC;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,OAAO,EAAE,SAAS,GAAG,oBAAoB,GAAG,YAAY,GAAG,mBAAmB,CAAC;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC;CACnE;AAED,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,OAAO,EAAE,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;IACzF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;CAC7D;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAGD,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC7C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AACrC,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IACrD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST Parser Utilities
|
|
3
|
+
* Provides TypeScript AST parsing and analysis utilities
|
|
4
|
+
*
|
|
5
|
+
* Core functionality for parsing TypeScript/JavaScript files and
|
|
6
|
+
* extracting information for code analysis
|
|
7
|
+
*/
|
|
8
|
+
import * as ts from 'typescript';
|
|
9
|
+
/**
|
|
10
|
+
* AST parse result
|
|
11
|
+
*/
|
|
12
|
+
export interface ParseResult {
|
|
13
|
+
sourceFile: ts.SourceFile;
|
|
14
|
+
program?: ts.Program;
|
|
15
|
+
errors: ts.Diagnostic[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Import information
|
|
19
|
+
*/
|
|
20
|
+
export interface ImportInfo {
|
|
21
|
+
moduleSpecifier: string;
|
|
22
|
+
importedNames: string[];
|
|
23
|
+
isDefaultImport: boolean;
|
|
24
|
+
isNamespaceImport: boolean;
|
|
25
|
+
line: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Export information
|
|
29
|
+
*/
|
|
30
|
+
export interface ExportInfo {
|
|
31
|
+
name: string;
|
|
32
|
+
type: 'function' | 'class' | 'interface' | 'type' | 'const' | 'let' | 'var' | 'enum';
|
|
33
|
+
isDefault: boolean;
|
|
34
|
+
line: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse a TypeScript file and return AST
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseTypeScriptFile(filePath: string): Promise<ParseResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Extract import statements from AST
|
|
42
|
+
*/
|
|
43
|
+
export declare function getImports(sourceFile: ts.SourceFile): ImportInfo[];
|
|
44
|
+
/**
|
|
45
|
+
* Extract export statements from AST
|
|
46
|
+
*/
|
|
47
|
+
export declare function getExports(sourceFile: ts.SourceFile): ExportInfo[];
|
|
48
|
+
/**
|
|
49
|
+
* Find nodes by kind in AST
|
|
50
|
+
*/
|
|
51
|
+
export declare function findNodesByKind<T extends ts.Node>(sourceFile: ts.SourceFile, kind: ts.SyntaxKind): T[];
|
|
52
|
+
/**
|
|
53
|
+
* Get the text content of a node
|
|
54
|
+
*/
|
|
55
|
+
export declare function getNodeText(node: ts.Node, sourceFile: ts.SourceFile): string;
|
|
56
|
+
/**
|
|
57
|
+
* Get line and column for a position
|
|
58
|
+
*/
|
|
59
|
+
export declare function getLineAndColumn(sourceFile: ts.SourceFile, position: number): {
|
|
60
|
+
line: number;
|
|
61
|
+
column: number;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Check if a node has a specific modifier
|
|
65
|
+
*/
|
|
66
|
+
export declare function hasModifier(node: ts.Node, modifier: ts.SyntaxKind): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Get function/method complexity (simplified cyclomatic complexity)
|
|
69
|
+
*/
|
|
70
|
+
export declare function calculateComplexity(node: ts.FunctionLikeDeclaration): number;
|
|
71
|
+
//# sourceMappingURL=astParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astParser.d.ts","sourceRoot":"","sources":["../../src/utils/astParser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAqBjC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAC1B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACrF,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuDhF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,UAAU,EAAE,CA6ClE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,UAAU,EAAE,CA6DlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,EAC/C,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,IAAI,EAAE,EAAE,CAAC,UAAU,GAClB,CAAC,EAAE,CAYL;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAGlC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CAG3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,GAAG,MAAM,CA8B5E"}
|