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.
Files changed (37) hide show
  1. package/dist/index.d.ts +8 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +24 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/java/index.d.ts +8 -0
  6. package/dist/java/index.d.ts.map +1 -0
  7. package/dist/java/index.js +7 -0
  8. package/dist/java/index.js.map +1 -0
  9. package/dist/java/java-analyzer.d.ts +142 -0
  10. package/dist/java/java-analyzer.d.ts.map +1 -0
  11. package/dist/java/java-analyzer.js +515 -0
  12. package/dist/java/java-analyzer.js.map +1 -0
  13. package/dist/php/index.d.ts +8 -0
  14. package/dist/php/index.d.ts.map +1 -0
  15. package/dist/php/index.js +7 -0
  16. package/dist/php/index.js.map +1 -0
  17. package/dist/php/php-analyzer.d.ts +149 -0
  18. package/dist/php/php-analyzer.d.ts.map +1 -0
  19. package/dist/php/php-analyzer.js +546 -0
  20. package/dist/php/php-analyzer.js.map +1 -0
  21. package/dist/python/index.d.ts +8 -0
  22. package/dist/python/index.d.ts.map +1 -0
  23. package/dist/python/index.js +7 -0
  24. package/dist/python/index.js.map +1 -0
  25. package/dist/python/python-analyzer.d.ts +156 -0
  26. package/dist/python/python-analyzer.d.ts.map +1 -0
  27. package/dist/python/python-analyzer.js +535 -0
  28. package/dist/python/python-analyzer.js.map +1 -0
  29. package/dist/typescript/index.d.ts +13 -0
  30. package/dist/typescript/index.d.ts.map +1 -0
  31. package/dist/typescript/index.js +12 -0
  32. package/dist/typescript/index.js.map +1 -0
  33. package/dist/typescript/typescript-analyzer.d.ts +194 -0
  34. package/dist/typescript/typescript-analyzer.d.ts.map +1 -0
  35. package/dist/typescript/typescript-analyzer.js +762 -0
  36. package/dist/typescript/typescript-analyzer.js.map +1 -0
  37. 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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"}