driftdetect-core 0.8.0 → 0.8.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.
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/java/index.d.ts +8 -0
- package/dist/java/index.d.ts.map +1 -0
- package/dist/java/index.js +7 -0
- package/dist/java/index.js.map +1 -0
- package/dist/java/java-analyzer.d.ts +142 -0
- package/dist/java/java-analyzer.d.ts.map +1 -0
- package/dist/java/java-analyzer.js +515 -0
- package/dist/java/java-analyzer.js.map +1 -0
- package/dist/php/index.d.ts +8 -0
- package/dist/php/index.d.ts.map +1 -0
- package/dist/php/index.js +7 -0
- package/dist/php/index.js.map +1 -0
- package/dist/php/php-analyzer.d.ts +149 -0
- package/dist/php/php-analyzer.d.ts.map +1 -0
- package/dist/php/php-analyzer.js +546 -0
- package/dist/php/php-analyzer.js.map +1 -0
- package/dist/python/index.d.ts +8 -0
- package/dist/python/index.d.ts.map +1 -0
- package/dist/python/index.js +7 -0
- package/dist/python/index.js.map +1 -0
- package/dist/python/python-analyzer.d.ts +156 -0
- package/dist/python/python-analyzer.d.ts.map +1 -0
- package/dist/python/python-analyzer.js +535 -0
- package/dist/python/python-analyzer.js.map +1 -0
- package/dist/typescript/index.d.ts +13 -0
- package/dist/typescript/index.d.ts.map +1 -0
- package/dist/typescript/index.js +12 -0
- package/dist/typescript/index.js.map +1 -0
- package/dist/typescript/typescript-analyzer.d.ts +194 -0
- package/dist/typescript/typescript-analyzer.d.ts.map +1 -0
- package/dist/typescript/typescript-analyzer.js +762 -0
- package/dist/typescript/typescript-analyzer.js.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript/JavaScript Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Main analyzer for TypeScript/JavaScript projects. Provides comprehensive analysis of:
|
|
5
|
+
* - HTTP routes (Express, NestJS, Fastify, Next.js)
|
|
6
|
+
* - React components and hooks
|
|
7
|
+
* - Error handling patterns
|
|
8
|
+
* - Data access patterns (Prisma, TypeORM, Drizzle, Sequelize)
|
|
9
|
+
* - Async patterns
|
|
10
|
+
* - Decorators (NestJS)
|
|
11
|
+
*/
|
|
12
|
+
import type { FunctionExtraction, ClassExtraction, CallExtraction, ImportExtraction } from '../call-graph/types.js';
|
|
13
|
+
export interface TypeScriptAnalyzerConfig {
|
|
14
|
+
rootDir: string;
|
|
15
|
+
verbose?: boolean | undefined;
|
|
16
|
+
includePatterns?: string[] | undefined;
|
|
17
|
+
excludePatterns?: string[] | undefined;
|
|
18
|
+
}
|
|
19
|
+
export interface TypeScriptAnalysisResult {
|
|
20
|
+
projectInfo: {
|
|
21
|
+
name: string | null;
|
|
22
|
+
version: string | null;
|
|
23
|
+
hasTypeScript: boolean;
|
|
24
|
+
hasJavaScript: boolean;
|
|
25
|
+
files: number;
|
|
26
|
+
tsFiles: number;
|
|
27
|
+
jsFiles: number;
|
|
28
|
+
};
|
|
29
|
+
detectedFrameworks: string[];
|
|
30
|
+
stats: TypeScriptAnalysisStats;
|
|
31
|
+
functions: FunctionExtraction[];
|
|
32
|
+
classes: ClassExtraction[];
|
|
33
|
+
calls: CallExtraction[];
|
|
34
|
+
imports: ImportExtraction[];
|
|
35
|
+
}
|
|
36
|
+
export interface TypeScriptAnalysisStats {
|
|
37
|
+
fileCount: number;
|
|
38
|
+
functionCount: number;
|
|
39
|
+
classCount: number;
|
|
40
|
+
componentCount: number;
|
|
41
|
+
hookCount: number;
|
|
42
|
+
asyncFunctionCount: number;
|
|
43
|
+
decoratorCount: number;
|
|
44
|
+
linesOfCode: number;
|
|
45
|
+
testFileCount: number;
|
|
46
|
+
analysisTimeMs: number;
|
|
47
|
+
}
|
|
48
|
+
export interface TSRoute {
|
|
49
|
+
method: string;
|
|
50
|
+
path: string;
|
|
51
|
+
handler: string;
|
|
52
|
+
framework: string;
|
|
53
|
+
file: string;
|
|
54
|
+
line: number;
|
|
55
|
+
middleware: string[];
|
|
56
|
+
decorators: string[];
|
|
57
|
+
}
|
|
58
|
+
export interface TSRoutesResult {
|
|
59
|
+
routes: TSRoute[];
|
|
60
|
+
byFramework: Record<string, number>;
|
|
61
|
+
}
|
|
62
|
+
export interface TSComponent {
|
|
63
|
+
name: string;
|
|
64
|
+
type: 'functional' | 'class';
|
|
65
|
+
file: string;
|
|
66
|
+
line: number;
|
|
67
|
+
props: string[];
|
|
68
|
+
hooks: string[];
|
|
69
|
+
isExported: boolean;
|
|
70
|
+
}
|
|
71
|
+
export interface TSComponentsResult {
|
|
72
|
+
components: TSComponent[];
|
|
73
|
+
byType: Record<string, number>;
|
|
74
|
+
}
|
|
75
|
+
export interface TSHook {
|
|
76
|
+
name: string;
|
|
77
|
+
type: 'builtin' | 'custom';
|
|
78
|
+
file: string;
|
|
79
|
+
line: number;
|
|
80
|
+
dependencies: string[];
|
|
81
|
+
}
|
|
82
|
+
export interface TSHooksResult {
|
|
83
|
+
hooks: TSHook[];
|
|
84
|
+
byType: Record<string, number>;
|
|
85
|
+
customHooks: string[];
|
|
86
|
+
}
|
|
87
|
+
export interface TSErrorPattern {
|
|
88
|
+
type: 'try-catch' | 'promise-catch' | 'error-boundary' | 'throw';
|
|
89
|
+
file: string;
|
|
90
|
+
line: number;
|
|
91
|
+
context: string;
|
|
92
|
+
}
|
|
93
|
+
export interface TSErrorHandlingResult {
|
|
94
|
+
stats: {
|
|
95
|
+
tryCatchBlocks: number;
|
|
96
|
+
promiseCatches: number;
|
|
97
|
+
errorBoundaries: number;
|
|
98
|
+
throwStatements: number;
|
|
99
|
+
};
|
|
100
|
+
patterns: TSErrorPattern[];
|
|
101
|
+
issues: TSErrorIssue[];
|
|
102
|
+
}
|
|
103
|
+
export interface TSErrorIssue {
|
|
104
|
+
type: string;
|
|
105
|
+
file: string;
|
|
106
|
+
line: number;
|
|
107
|
+
message: string;
|
|
108
|
+
suggestion?: string;
|
|
109
|
+
}
|
|
110
|
+
export interface TSDataAccessResult {
|
|
111
|
+
accessPoints: TSDataAccessPoint[];
|
|
112
|
+
byFramework: Record<string, number>;
|
|
113
|
+
byOperation: Record<string, number>;
|
|
114
|
+
models: string[];
|
|
115
|
+
}
|
|
116
|
+
export interface TSDataAccessPoint {
|
|
117
|
+
model: string;
|
|
118
|
+
operation: string;
|
|
119
|
+
framework: string;
|
|
120
|
+
file: string;
|
|
121
|
+
line: number;
|
|
122
|
+
isRawSql: boolean;
|
|
123
|
+
}
|
|
124
|
+
export interface TSDecorator {
|
|
125
|
+
name: string;
|
|
126
|
+
target: 'class' | 'method' | 'property' | 'parameter';
|
|
127
|
+
file: string;
|
|
128
|
+
line: number;
|
|
129
|
+
arguments: string[];
|
|
130
|
+
}
|
|
131
|
+
export interface TSDecoratorsResult {
|
|
132
|
+
decorators: TSDecorator[];
|
|
133
|
+
byName: Record<string, number>;
|
|
134
|
+
}
|
|
135
|
+
export declare class TypeScriptAnalyzer {
|
|
136
|
+
private config;
|
|
137
|
+
private extractor;
|
|
138
|
+
constructor(config: TypeScriptAnalyzerConfig);
|
|
139
|
+
/**
|
|
140
|
+
* Full project analysis
|
|
141
|
+
*/
|
|
142
|
+
analyze(): Promise<TypeScriptAnalysisResult>;
|
|
143
|
+
/**
|
|
144
|
+
* Analyze HTTP routes
|
|
145
|
+
*/
|
|
146
|
+
analyzeRoutes(): Promise<TSRoutesResult>;
|
|
147
|
+
/**
|
|
148
|
+
* Analyze React components
|
|
149
|
+
*/
|
|
150
|
+
analyzeComponents(): Promise<TSComponentsResult>;
|
|
151
|
+
/**
|
|
152
|
+
* Analyze React hooks usage
|
|
153
|
+
*/
|
|
154
|
+
analyzeHooks(): Promise<TSHooksResult>;
|
|
155
|
+
/**
|
|
156
|
+
* Analyze error handling patterns
|
|
157
|
+
*/
|
|
158
|
+
analyzeErrorHandling(): Promise<TSErrorHandlingResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Analyze data access patterns
|
|
161
|
+
*/
|
|
162
|
+
analyzeDataAccess(): Promise<TSDataAccessResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Analyze decorators (NestJS, TypeORM, etc.)
|
|
165
|
+
*/
|
|
166
|
+
analyzeDecorators(): Promise<TSDecoratorsResult>;
|
|
167
|
+
private findFiles;
|
|
168
|
+
private parsePackageJson;
|
|
169
|
+
private detectFramework;
|
|
170
|
+
private isTestFile;
|
|
171
|
+
private countComponents;
|
|
172
|
+
private isReactComponent;
|
|
173
|
+
private countHooks;
|
|
174
|
+
private extractRoutes;
|
|
175
|
+
private extractHandler;
|
|
176
|
+
private extractMiddleware;
|
|
177
|
+
private extractNestHandler;
|
|
178
|
+
private extractNestDecorators;
|
|
179
|
+
private extractNextPath;
|
|
180
|
+
private extractComponents;
|
|
181
|
+
private extractProps;
|
|
182
|
+
private extractClassProps;
|
|
183
|
+
private extractHooksInFunction;
|
|
184
|
+
private extractHooks;
|
|
185
|
+
private extractDataAccess;
|
|
186
|
+
private normalizeOperation;
|
|
187
|
+
private extractDecorators;
|
|
188
|
+
private determineDecoratorTarget;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Factory function
|
|
192
|
+
*/
|
|
193
|
+
export declare function createTypeScriptAnalyzer(config: TypeScriptAnalyzerConfig): TypeScriptAnalyzer;
|
|
194
|
+
//# sourceMappingURL=typescript-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-analyzer.d.ts","sourceRoot":"","sources":["../../src/typescript/typescript-analyzer.ts"],"names":[],"mappings":"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"}
|