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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +362 -0
  3. package/configs/hhra-compat.json +168 -0
  4. package/dist/analyzers/analyzerUtils.d.ts +69 -0
  5. package/dist/analyzers/analyzerUtils.d.ts.map +1 -0
  6. package/dist/analyzers/analyzerUtils.js +188 -0
  7. package/dist/analyzers/analyzerUtils.js.map +1 -0
  8. package/dist/analyzers/dataAccessAnalyzer.d.ts +46 -0
  9. package/dist/analyzers/dataAccessAnalyzer.d.ts.map +1 -0
  10. package/dist/analyzers/dataAccessAnalyzer.js +448 -0
  11. package/dist/analyzers/dataAccessAnalyzer.js.map +1 -0
  12. package/dist/analyzers/dryAnalyzer.d.ts +30 -0
  13. package/dist/analyzers/dryAnalyzer.d.ts.map +1 -0
  14. package/dist/analyzers/dryAnalyzer.js +537 -0
  15. package/dist/analyzers/dryAnalyzer.js.map +1 -0
  16. package/dist/analyzers/solidAnalyzer.d.ts +23 -0
  17. package/dist/analyzers/solidAnalyzer.d.ts.map +1 -0
  18. package/dist/analyzers/solidAnalyzer.js +355 -0
  19. package/dist/analyzers/solidAnalyzer.js.map +1 -0
  20. package/dist/auditRunner.d.ts +20 -0
  21. package/dist/auditRunner.d.ts.map +1 -0
  22. package/dist/auditRunner.js +214 -0
  23. package/dist/auditRunner.js.map +1 -0
  24. package/dist/cli.d.ts +6 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +38 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/config/configLoader.d.ts +19 -0
  29. package/dist/config/configLoader.d.ts.map +1 -0
  30. package/dist/config/configLoader.js +124 -0
  31. package/dist/config/configLoader.js.map +1 -0
  32. package/dist/config/defaults.d.ts +69 -0
  33. package/dist/config/defaults.d.ts.map +1 -0
  34. package/dist/config/defaults.js +142 -0
  35. package/dist/config/defaults.js.map +1 -0
  36. package/dist/index.d.ts +44 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +66 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/mcp-standalone.d.ts +3 -0
  41. package/dist/mcp-standalone.d.ts.map +1 -0
  42. package/dist/mcp-standalone.js +171 -0
  43. package/dist/mcp-standalone.js.map +1 -0
  44. package/dist/mcp.d.ts +3 -0
  45. package/dist/mcp.d.ts.map +1 -0
  46. package/dist/mcp.js +340 -0
  47. package/dist/mcp.js.map +1 -0
  48. package/dist/reporting/csvReportGenerator.d.ts +29 -0
  49. package/dist/reporting/csvReportGenerator.d.ts.map +1 -0
  50. package/dist/reporting/csvReportGenerator.js +182 -0
  51. package/dist/reporting/csvReportGenerator.js.map +1 -0
  52. package/dist/reporting/htmlReportGenerator.d.ts +18 -0
  53. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -0
  54. package/dist/reporting/htmlReportGenerator.js +352 -0
  55. package/dist/reporting/htmlReportGenerator.js.map +1 -0
  56. package/dist/reporting/jsonReportGenerator.d.ts +23 -0
  57. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -0
  58. package/dist/reporting/jsonReportGenerator.js +103 -0
  59. package/dist/reporting/jsonReportGenerator.js.map +1 -0
  60. package/dist/reporting/reportGenerator.d.ts +21 -0
  61. package/dist/reporting/reportGenerator.d.ts.map +1 -0
  62. package/dist/reporting/reportGenerator.js +53 -0
  63. package/dist/reporting/reportGenerator.js.map +1 -0
  64. package/dist/types.d.ts +246 -0
  65. package/dist/types.d.ts.map +1 -0
  66. package/dist/types.js +6 -0
  67. package/dist/types.js.map +1 -0
  68. package/dist/utils/astParser.d.ts +71 -0
  69. package/dist/utils/astParser.d.ts.map +1 -0
  70. package/dist/utils/astParser.js +244 -0
  71. package/dist/utils/astParser.js.map +1 -0
  72. package/dist/utils/astUtils.d.ts +89 -0
  73. package/dist/utils/astUtils.d.ts.map +1 -0
  74. package/dist/utils/astUtils.js +289 -0
  75. package/dist/utils/astUtils.js.map +1 -0
  76. package/dist/utils/fileDiscovery.d.ts +58 -0
  77. package/dist/utils/fileDiscovery.d.ts.map +1 -0
  78. package/dist/utils/fileDiscovery.js +203 -0
  79. package/dist/utils/fileDiscovery.js.map +1 -0
  80. package/examples/.auditrc.example.json +61 -0
  81. package/examples/.auditrc.json +201 -0
  82. package/examples/nextjs.auditrc.json +65 -0
  83. package/examples/node-api.auditrc.json +82 -0
  84. package/examples/react.auditrc.json +59 -0
  85. 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"}
@@ -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":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Type definitions for the code auditor
3
+ * Generic types that work with any TypeScript/JavaScript project
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -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"}