imports-detector 0.1.1 → 0.2.1
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/README.md +69 -4
- package/dist/analyzer.d.ts +18 -13
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +63 -65
- package/dist/analyzer.js.map +1 -1
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/module-resolver.d.ts +77 -0
- package/dist/module-resolver.d.ts.map +1 -0
- package/dist/module-resolver.js +219 -0
- package/dist/module-resolver.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Imports Detector
|
|
2
2
|
|
|
3
|
-
[](https://github.com/
|
|
3
|
+
[](https://www.npmjs.com/package/imports-detector)
|
|
4
|
+
[](https://www.npmjs.com/package/imports-detector)
|
|
5
|
+
[](https://www.npmjs.com/package/imports-detector)
|
|
6
|
+
[](https://github.com/almaqdi/imports-detector)
|
|
7
7
|
|
|
8
8
|
A powerful package for detecting and analyzing imports in JavaScript/TypeScript applications. Find files importing specific modules, list all imports, and generate comprehensive dependency reports.
|
|
9
9
|
|
|
@@ -277,6 +277,8 @@ Global options:
|
|
|
277
277
|
|
|
278
278
|
- `--path <path>` - Root directory to analyze
|
|
279
279
|
- `--module-path <path>` - Specific module path to match (e.g., `admin/Dashboard`)
|
|
280
|
+
- `--base-url <url>` - Base URL for module resolution (overrides tsconfig)
|
|
281
|
+
- `--tsconfig <path>` - Path to tsconfig.json for automatic baseUrl detection
|
|
280
282
|
- `--include <patterns>` - File extensions to include (comma-separated)
|
|
281
283
|
- `--exclude <patterns>` - Patterns to exclude (comma-separated)
|
|
282
284
|
- `--format <format>` - Output format: json or text (default: text)
|
|
@@ -296,10 +298,69 @@ imports-detector find React --path ./src
|
|
|
296
298
|
# Find files importing Dashboard from admin folder only
|
|
297
299
|
imports-detector find Dashboard --module-path admin/Dashboard --path ./src
|
|
298
300
|
|
|
301
|
+
# Find files using TypeScript baseUrl (auto-detected from tsconfig.json)
|
|
302
|
+
imports-detector find ImportBulkSchedulers --path ./src
|
|
303
|
+
|
|
304
|
+
# Manually specify baseUrl if tsconfig is not available
|
|
305
|
+
imports-detector find Button --base-url ./src --path ./src
|
|
306
|
+
|
|
299
307
|
# Export results to JSON
|
|
300
308
|
imports-detector find React --path ./src --include "**/*.tsx" --format json --output results.json
|
|
301
309
|
```
|
|
302
310
|
|
|
311
|
+
## TypeScript baseUrl Support
|
|
312
|
+
|
|
313
|
+
The tool automatically detects and uses the `baseUrl` configuration from your `tsconfig.json` to resolve absolute imports.
|
|
314
|
+
|
|
315
|
+
### How It Works
|
|
316
|
+
|
|
317
|
+
If your `tsconfig.json` contains:
|
|
318
|
+
```json
|
|
319
|
+
{
|
|
320
|
+
"compilerOptions": {
|
|
321
|
+
"baseUrl": "./src"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
The tool will automatically resolve imports like:
|
|
327
|
+
```typescript
|
|
328
|
+
import { Button } from 'components/Button';
|
|
329
|
+
import { Utils } from 'utils/helpers';
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Manual Configuration
|
|
333
|
+
|
|
334
|
+
If your project doesn't have a `tsconfig.json` or you want to override the detected baseUrl:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Specify baseUrl manually
|
|
338
|
+
imports-detector find Button --base-url ./src ./src
|
|
339
|
+
|
|
340
|
+
# Specify a custom tsconfig path
|
|
341
|
+
imports-detector find Button --tsconfig ./configs/tsconfig.base.json ./src
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Supported Import Styles
|
|
345
|
+
|
|
346
|
+
✅ **Relative imports** (always supported):
|
|
347
|
+
```typescript
|
|
348
|
+
import { X } from './components/X'
|
|
349
|
+
import { Y } from '../utils/Y'
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
✅ **Absolute imports with baseUrl** (auto-detected):
|
|
353
|
+
```typescript
|
|
354
|
+
import { X } from 'components/X'
|
|
355
|
+
import { Y } from 'utils/Y'
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
✅ **Bare modules** (always supported):
|
|
359
|
+
```typescript
|
|
360
|
+
import React from 'react'
|
|
361
|
+
import _ from 'lodash'
|
|
362
|
+
```
|
|
363
|
+
|
|
303
364
|
## Library API
|
|
304
365
|
|
|
305
366
|
### Basic Usage
|
|
@@ -332,6 +393,8 @@ const analyzer = new ImportAnalyzer({
|
|
|
332
393
|
excludePatterns: ['**/node_modules/**'],
|
|
333
394
|
verbose: true,
|
|
334
395
|
modulePath: 'admin/Dashboard', // Optional: filter by specific path
|
|
396
|
+
baseUrl: './src', // Optional: specify baseUrl manually
|
|
397
|
+
tsconfigPath: './tsconfig.json', // Optional: path to tsconfig for baseUrl detection
|
|
335
398
|
});
|
|
336
399
|
|
|
337
400
|
// Find files importing a specific module
|
|
@@ -426,6 +489,8 @@ interface DetectorOptions {
|
|
|
426
489
|
detectRequire?: boolean; // Detect require calls (default: true)
|
|
427
490
|
verbose?: boolean; // Enable verbose logging
|
|
428
491
|
modulePath?: string; // Specific module path to match (for path-specific filtering)
|
|
492
|
+
baseUrl?: string; // Base URL for module resolution (overrides tsconfig)
|
|
493
|
+
tsconfigPath?: string; // Path to tsconfig.json for automatic baseUrl detection
|
|
429
494
|
}
|
|
430
495
|
```
|
|
431
496
|
|
package/dist/analyzer.d.ts
CHANGED
|
@@ -2,19 +2,30 @@ import type { DetectorOptions, FileImports, ImporterResult, ProjectAnalysis } fr
|
|
|
2
2
|
/**
|
|
3
3
|
* Main Analyzer Class
|
|
4
4
|
* Orchestrates file discovery, parsing, and import extraction
|
|
5
|
+
* Uses module resolution to match imports like IDEs do
|
|
5
6
|
*/
|
|
6
7
|
export declare class ImportAnalyzer {
|
|
7
8
|
private fileDiscovery;
|
|
8
9
|
private parser;
|
|
9
10
|
private extractor;
|
|
11
|
+
private resolver;
|
|
10
12
|
private options;
|
|
11
13
|
constructor(options?: DetectorOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Create a resolver with searchPath for baseUrl auto-detection
|
|
16
|
+
*/
|
|
17
|
+
private createResolver;
|
|
12
18
|
/**
|
|
13
19
|
* Find all files that import a specific module
|
|
14
20
|
* @param moduleName - Name of the module to search for (e.g., 'Test', 'react')
|
|
15
21
|
* @param searchPath - Root directory to search
|
|
16
22
|
*/
|
|
17
23
|
findFilesImporting(moduleName: string, searchPath: string): Promise<ImporterResult[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the target path for module matching
|
|
26
|
+
* If modulePath is specified, resolve it to an absolute path
|
|
27
|
+
*/
|
|
28
|
+
private resolveTargetPath;
|
|
18
29
|
/**
|
|
19
30
|
* Analyze all imports in a project
|
|
20
31
|
* @param searchPath - Root directory to analyze
|
|
@@ -25,20 +36,14 @@ export declare class ImportAnalyzer {
|
|
|
25
36
|
*/
|
|
26
37
|
analyzeFile(filePath: string): FileImports;
|
|
27
38
|
/**
|
|
28
|
-
* Filter imports by module name
|
|
29
|
-
*
|
|
30
|
-
*
|
|
39
|
+
* Filter imports by module name using proper module resolution
|
|
40
|
+
* This mimics how IDEs resolve imports (like "command + click")
|
|
41
|
+
* @param imports - All imports from a file
|
|
42
|
+
* @param moduleName - Name of the module to match
|
|
43
|
+
* @param filePath - Path of the file containing the imports
|
|
44
|
+
* @param targetPath - Optional resolved target path for path-specific matching
|
|
45
|
+
* @param resolver - Module resolver instance
|
|
31
46
|
*/
|
|
32
47
|
private filterImportsByModule;
|
|
33
|
-
/**
|
|
34
|
-
* Check if an import module matches a specific path
|
|
35
|
-
* Supports both relative and absolute path matching
|
|
36
|
-
*/
|
|
37
|
-
private doesImportMatchPath;
|
|
38
|
-
/**
|
|
39
|
-
* Normalize module path for comparison
|
|
40
|
-
* Removes file extensions, leading ./ or ../, and normalizes separators
|
|
41
|
-
*/
|
|
42
|
-
private normalizeModulePath;
|
|
43
48
|
}
|
|
44
49
|
//# sourceMappingURL=analyzer.d.ts.map
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAkB;gBAErB,OAAO,GAAE,eAAoB;IA2BzC;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;;;OAIG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAiD5B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmDlE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAc1C;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;CAkD9B"}
|
package/dist/analyzer.js
CHANGED
|
@@ -2,14 +2,17 @@ import path from 'path';
|
|
|
2
2
|
import { FileDiscovery } from './file-discovery.js';
|
|
3
3
|
import { CodeParser } from './parser.js';
|
|
4
4
|
import { ImportExtractor } from './extractor.js';
|
|
5
|
+
import { ModuleResolver } from './module-resolver.js';
|
|
5
6
|
/**
|
|
6
7
|
* Main Analyzer Class
|
|
7
8
|
* Orchestrates file discovery, parsing, and import extraction
|
|
9
|
+
* Uses module resolution to match imports like IDEs do
|
|
8
10
|
*/
|
|
9
11
|
export class ImportAnalyzer {
|
|
10
12
|
fileDiscovery;
|
|
11
13
|
parser;
|
|
12
14
|
extractor;
|
|
15
|
+
resolver;
|
|
13
16
|
options;
|
|
14
17
|
constructor(options = {}) {
|
|
15
18
|
this.options = {
|
|
@@ -19,6 +22,8 @@ export class ImportAnalyzer {
|
|
|
19
22
|
detectRequire: options.detectRequire !== false,
|
|
20
23
|
verbose: options.verbose || false,
|
|
21
24
|
modulePath: options.modulePath,
|
|
25
|
+
baseUrl: options.baseUrl,
|
|
26
|
+
tsconfigPath: options.tsconfigPath,
|
|
22
27
|
};
|
|
23
28
|
this.fileDiscovery = new FileDiscovery({
|
|
24
29
|
includePatterns: options.includeExtensions
|
|
@@ -28,6 +33,21 @@ export class ImportAnalyzer {
|
|
|
28
33
|
});
|
|
29
34
|
this.parser = new CodeParser();
|
|
30
35
|
this.extractor = new ImportExtractor();
|
|
36
|
+
// Create a default resolver - will be recreated with searchPath in findFilesImporting
|
|
37
|
+
this.resolver = new ModuleResolver({
|
|
38
|
+
extensions: options.includeExtensions,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a resolver with searchPath for baseUrl auto-detection
|
|
43
|
+
*/
|
|
44
|
+
createResolver(searchPath) {
|
|
45
|
+
return new ModuleResolver({
|
|
46
|
+
extensions: this.options.includeExtensions,
|
|
47
|
+
baseUrl: this.options.baseUrl,
|
|
48
|
+
tsconfigPath: this.options.tsconfigPath,
|
|
49
|
+
searchPath: searchPath, // Auto-detect tsconfig from this path
|
|
50
|
+
});
|
|
31
51
|
}
|
|
32
52
|
/**
|
|
33
53
|
* Find all files that import a specific module
|
|
@@ -36,17 +56,21 @@ export class ImportAnalyzer {
|
|
|
36
56
|
*/
|
|
37
57
|
async findFilesImporting(moduleName, searchPath) {
|
|
38
58
|
const results = [];
|
|
59
|
+
// Create resolver with searchPath for baseUrl auto-detection
|
|
60
|
+
const resolver = this.createResolver(searchPath);
|
|
39
61
|
try {
|
|
40
62
|
const files = await this.fileDiscovery.findFiles(searchPath);
|
|
41
63
|
if (this.options.verbose) {
|
|
42
64
|
console.log(`Found ${files.length} files to analyze`);
|
|
43
65
|
}
|
|
66
|
+
// Resolve the target module path if provided
|
|
67
|
+
const targetPath = this.resolveTargetPath(searchPath, moduleName, resolver);
|
|
44
68
|
for (const filePath of files) {
|
|
45
69
|
try {
|
|
46
70
|
const ast = this.parser.parseFile(filePath);
|
|
47
71
|
const allImports = this.extractor.getAllImports(ast);
|
|
48
|
-
//
|
|
49
|
-
const matchingImports = this.filterImportsByModule(allImports, moduleName);
|
|
72
|
+
// Resolve imports and filter by module name
|
|
73
|
+
const matchingImports = this.filterImportsByModule(allImports, moduleName, filePath, targetPath, resolver);
|
|
50
74
|
if (matchingImports.length > 0) {
|
|
51
75
|
results.push({
|
|
52
76
|
file: filePath,
|
|
@@ -66,6 +90,19 @@ export class ImportAnalyzer {
|
|
|
66
90
|
throw new Error(`Failed to find files importing "${moduleName}": ${error}`);
|
|
67
91
|
}
|
|
68
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve the target path for module matching
|
|
95
|
+
* If modulePath is specified, resolve it to an absolute path
|
|
96
|
+
*/
|
|
97
|
+
resolveTargetPath(searchPath, moduleName, resolver) {
|
|
98
|
+
if (!this.options.modulePath) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
// Resolve the module path relative to search path
|
|
102
|
+
const resolved = resolver.resolveImport(this.options.modulePath, searchPath + '/dummy.ts' // Dummy file for relative resolution
|
|
103
|
+
);
|
|
104
|
+
return resolved;
|
|
105
|
+
}
|
|
69
106
|
/**
|
|
70
107
|
* Analyze all imports in a project
|
|
71
108
|
* @param searchPath - Root directory to analyze
|
|
@@ -134,16 +171,28 @@ export class ImportAnalyzer {
|
|
|
134
171
|
}
|
|
135
172
|
}
|
|
136
173
|
/**
|
|
137
|
-
* Filter imports by module name
|
|
138
|
-
*
|
|
139
|
-
*
|
|
174
|
+
* Filter imports by module name using proper module resolution
|
|
175
|
+
* This mimics how IDEs resolve imports (like "command + click")
|
|
176
|
+
* @param imports - All imports from a file
|
|
177
|
+
* @param moduleName - Name of the module to match
|
|
178
|
+
* @param filePath - Path of the file containing the imports
|
|
179
|
+
* @param targetPath - Optional resolved target path for path-specific matching
|
|
180
|
+
* @param resolver - Module resolver instance
|
|
140
181
|
*/
|
|
141
|
-
filterImportsByModule(imports, moduleName) {
|
|
182
|
+
filterImportsByModule(imports, moduleName, filePath, targetPath, resolver) {
|
|
142
183
|
return imports.filter((imp) => {
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
184
|
+
// Resolve the import to an absolute path
|
|
185
|
+
const resolved = resolver.resolveImport(imp.module, filePath);
|
|
186
|
+
if (!resolved) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
// Store the resolved path for reference
|
|
190
|
+
imp.resolvedPath = resolved;
|
|
191
|
+
// If targetPath is provided, use exact path matching
|
|
192
|
+
if (targetPath) {
|
|
193
|
+
return resolver.pathsMatch(resolved, targetPath);
|
|
146
194
|
}
|
|
195
|
+
// Otherwise, match by module name (backward compatibility)
|
|
147
196
|
// Check if module name matches exactly
|
|
148
197
|
if (imp.module === moduleName) {
|
|
149
198
|
return true;
|
|
@@ -152,6 +201,11 @@ export class ImportAnalyzer {
|
|
|
152
201
|
if (imp.specifiers && imp.specifiers.includes(moduleName)) {
|
|
153
202
|
return true;
|
|
154
203
|
}
|
|
204
|
+
// Check if resolved path basename matches module name
|
|
205
|
+
const resolvedBasename = path.basename(resolved).replace(/\.(js|jsx|ts|tsx)$/, '');
|
|
206
|
+
if (resolvedBasename === moduleName) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
155
209
|
// Check if module path ends with the module name
|
|
156
210
|
// This handles cases like './components/Test'
|
|
157
211
|
const moduleBasename = path.basename(imp.module).replace(/\.(js|jsx|ts|tsx)$/, '');
|
|
@@ -161,61 +215,5 @@ export class ImportAnalyzer {
|
|
|
161
215
|
return false;
|
|
162
216
|
});
|
|
163
217
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Check if an import module matches a specific path
|
|
166
|
-
* Supports both relative and absolute path matching
|
|
167
|
-
*/
|
|
168
|
-
doesImportMatchPath(importModule, targetPath, moduleName) {
|
|
169
|
-
// Normalize paths for comparison
|
|
170
|
-
const normalizedImport = this.normalizeModulePath(importModule);
|
|
171
|
-
const normalizedTarget = this.normalizeModulePath(targetPath);
|
|
172
|
-
// Check if paths match (handle various path formats)
|
|
173
|
-
const importPath = normalizedImport.toLowerCase();
|
|
174
|
-
const targetPathLower = normalizedTarget.toLowerCase();
|
|
175
|
-
// Direct match
|
|
176
|
-
if (importPath === targetPathLower) {
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
// Check if the target path is contained in the import path
|
|
180
|
-
// This handles cases like:
|
|
181
|
-
// - "admin/dashboard" matches "src/admin/dashboard"
|
|
182
|
-
if (importPath.includes(targetPathLower)) {
|
|
183
|
-
return true;
|
|
184
|
-
}
|
|
185
|
-
// Check if the import path is contained in the target path
|
|
186
|
-
// This handles cases like:
|
|
187
|
-
// - "../admin/dashboard" matches "admin/dashboard" (after normalization)
|
|
188
|
-
if (targetPathLower.includes(importPath)) {
|
|
189
|
-
return true;
|
|
190
|
-
}
|
|
191
|
-
// Check if path segments match (more strict comparison)
|
|
192
|
-
const importSegments = importPath.split('/').filter(s => s);
|
|
193
|
-
const targetSegments = targetPathLower.split('/').filter(s => s);
|
|
194
|
-
// Must match at least the target path segments
|
|
195
|
-
if (targetSegments.length > 0) {
|
|
196
|
-
// Check if all target segments appear in order in the import path
|
|
197
|
-
let targetIndex = 0;
|
|
198
|
-
for (const importSegment of importSegments) {
|
|
199
|
-
if (importSegment === targetSegments[targetIndex]) {
|
|
200
|
-
targetIndex++;
|
|
201
|
-
if (targetIndex === targetSegments.length) {
|
|
202
|
-
// All target segments matched
|
|
203
|
-
return true;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Normalize module path for comparison
|
|
212
|
-
* Removes file extensions, leading ./ or ../, and normalizes separators
|
|
213
|
-
*/
|
|
214
|
-
normalizeModulePath(modulePath) {
|
|
215
|
-
return modulePath
|
|
216
|
-
.replace(/^\.+\//g, '') // Remove leading ./, ../, etc.
|
|
217
|
-
.replace(/\.(js|jsx|ts|tsx|json)$/, '') // Remove file extensions
|
|
218
|
-
.replace(/\\/g, '/'); // Normalize path separators
|
|
219
|
-
}
|
|
220
218
|
}
|
|
221
219
|
//# sourceMappingURL=analyzer.js.map
|
package/dist/analyzer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -22,6 +22,8 @@ function parseDetectorOptions(options) {
|
|
|
22
22
|
includeExtensions: options.include ? options.include.split(',') : undefined,
|
|
23
23
|
excludePatterns: options.exclude ? options.exclude.split(',') : undefined,
|
|
24
24
|
modulePath: options.modulePath,
|
|
25
|
+
baseUrl: options.baseUrl,
|
|
26
|
+
tsconfigPath: options.tsconfig,
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
@@ -36,6 +38,8 @@ program
|
|
|
36
38
|
.option('-o, --output <file>', 'Output file path')
|
|
37
39
|
.option('-f, --format <format>', 'Output format: json or text (default: text)')
|
|
38
40
|
.option('--module-path <path>', 'Specific module path to match (e.g., ./admin/Dashboard)')
|
|
41
|
+
.option('--base-url <url>', 'Base URL for module resolution (overrides tsconfig)')
|
|
42
|
+
.option('--tsconfig <path>', 'Path to tsconfig.json for automatic baseUrl detection')
|
|
39
43
|
.option('--include <patterns>', 'File extensions to include (comma-separated)')
|
|
40
44
|
.option('--exclude <patterns>', 'Patterns to exclude (comma-separated)')
|
|
41
45
|
.option('--no-static', 'Exclude static imports')
|
|
@@ -86,6 +90,8 @@ program
|
|
|
86
90
|
.option('-p, --path <path>', 'Root directory to analyze')
|
|
87
91
|
.option('-o, --output <file>', 'Output file path')
|
|
88
92
|
.option('-f, --format <format>', 'Output format: json or text (default: text)')
|
|
93
|
+
.option('--base-url <url>', 'Base URL for module resolution (overrides tsconfig)')
|
|
94
|
+
.option('--tsconfig <path>', 'Path to tsconfig.json for automatic baseUrl detection')
|
|
89
95
|
.option('--include <patterns>', 'File extensions to include (comma-separated)')
|
|
90
96
|
.option('--exclude <patterns>', 'Patterns to exclude (comma-separated)')
|
|
91
97
|
.option('--no-static', 'Exclude static imports')
|
|
@@ -136,6 +142,8 @@ program
|
|
|
136
142
|
.option('-p, --path <path>', 'Root directory to analyze')
|
|
137
143
|
.option('-o, --output <file>', 'Output file path (required)')
|
|
138
144
|
.option('-f, --format <format>', 'Output format: json or text (default: text)')
|
|
145
|
+
.option('--base-url <url>', 'Base URL for module resolution (overrides tsconfig)')
|
|
146
|
+
.option('--tsconfig <path>', 'Path to tsconfig.json for automatic baseUrl detection')
|
|
139
147
|
.option('--include <patterns>', 'File extensions to include (comma-separated)')
|
|
140
148
|
.option('--exclude <patterns>', 'Patterns to exclude (comma-separated)')
|
|
141
149
|
.option('--no-static', 'Exclude static imports')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module Resolver
|
|
3
|
+
* Mimics TypeScript/Node.js module resolution to properly resolve import paths
|
|
4
|
+
* to absolute file paths, just like IDEs do when you "command + click"
|
|
5
|
+
*/
|
|
6
|
+
export declare class ModuleResolver {
|
|
7
|
+
private extensions;
|
|
8
|
+
private baseUrl?;
|
|
9
|
+
constructor(options?: {
|
|
10
|
+
extensions?: string[];
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
tsconfigPath?: string;
|
|
13
|
+
searchPath?: string;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Load baseUrl from tsconfig.json
|
|
17
|
+
*/
|
|
18
|
+
private loadBaseUrlFromTSConfig;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve an import specifier to an absolute file path
|
|
21
|
+
* @param specifier - The import specifier (e.g., './components/Test')
|
|
22
|
+
* @param fromFile - The absolute path of the file containing the import
|
|
23
|
+
* @returns Resolved absolute path, or null if not found
|
|
24
|
+
*/
|
|
25
|
+
resolveImport(specifier: string, fromFile: string): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Determine if an import should use baseUrl resolution
|
|
28
|
+
*/
|
|
29
|
+
private shouldUseBaseUrlResolution;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve import using baseUrl
|
|
32
|
+
*/
|
|
33
|
+
private resolveWithBaseUrl;
|
|
34
|
+
/**
|
|
35
|
+
* Resolve relative import paths
|
|
36
|
+
* e.g., './components/Test' from '/src/App.tsx' → '/src/components/Test.ts'
|
|
37
|
+
*/
|
|
38
|
+
private resolveRelative;
|
|
39
|
+
/**
|
|
40
|
+
* Resolve absolute import paths
|
|
41
|
+
* e.g., '/src/components/Test' or 'src/components/Test'
|
|
42
|
+
*/
|
|
43
|
+
private resolveAbsolute;
|
|
44
|
+
/**
|
|
45
|
+
* Try different file extensions
|
|
46
|
+
* e.g., '/path/to/Test' → '/path/to/Test.ts', '/path/to/Test.tsx', etc.
|
|
47
|
+
*/
|
|
48
|
+
private tryExtensions;
|
|
49
|
+
/**
|
|
50
|
+
* Try to find an index file
|
|
51
|
+
* e.g., '/path/to/components' → '/path/to/components/index.ts'
|
|
52
|
+
*/
|
|
53
|
+
private tryIndex;
|
|
54
|
+
/**
|
|
55
|
+
* Normalize path for comparison
|
|
56
|
+
* - Convert backslashes to forward slashes
|
|
57
|
+
* - Remove duplicate slashes
|
|
58
|
+
* - Remove leading ./
|
|
59
|
+
*/
|
|
60
|
+
normalizePath(filePath: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a file exists
|
|
63
|
+
*/
|
|
64
|
+
private fileExists;
|
|
65
|
+
/**
|
|
66
|
+
* Compare two paths for equality, handling:
|
|
67
|
+
* - Different separators (\ vs /)
|
|
68
|
+
* - Extension variations (.ts vs .js)
|
|
69
|
+
* - Case sensitivity (platform-dependent)
|
|
70
|
+
*/
|
|
71
|
+
pathsMatch(path1: string, path2: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Remove file extension from path
|
|
74
|
+
*/
|
|
75
|
+
private removeExtension;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=module-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-resolver.d.ts","sourceRoot":"","sources":["../src/module-resolver.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,OAAO,CAAC,EAAE;QACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAaD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuB/B;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAmCjE;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAOvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAehB;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAejD;;OAEG;IACH,OAAO,CAAC,eAAe;CASxB"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { getTsconfig } from 'get-tsconfig';
|
|
4
|
+
/**
|
|
5
|
+
* Module Resolver
|
|
6
|
+
* Mimics TypeScript/Node.js module resolution to properly resolve import paths
|
|
7
|
+
* to absolute file paths, just like IDEs do when you "command + click"
|
|
8
|
+
*/
|
|
9
|
+
export class ModuleResolver {
|
|
10
|
+
extensions;
|
|
11
|
+
baseUrl;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.extensions = options?.extensions || ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
14
|
+
// Load baseUrl from options or tsconfig
|
|
15
|
+
if (options?.baseUrl) {
|
|
16
|
+
// Manual override takes precedence
|
|
17
|
+
this.baseUrl = path.resolve(options.baseUrl);
|
|
18
|
+
}
|
|
19
|
+
else if (options?.searchPath || options?.tsconfigPath) {
|
|
20
|
+
// Try to read from tsconfig.json
|
|
21
|
+
this.loadBaseUrlFromTSConfig(options.tsconfigPath, options.searchPath);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load baseUrl from tsconfig.json
|
|
26
|
+
*/
|
|
27
|
+
loadBaseUrlFromTSConfig(tsconfigPath, searchPath) {
|
|
28
|
+
try {
|
|
29
|
+
const result = tsconfigPath
|
|
30
|
+
? getTsconfig(tsconfigPath)
|
|
31
|
+
: searchPath
|
|
32
|
+
? getTsconfig(searchPath)
|
|
33
|
+
: null;
|
|
34
|
+
if (result && result.config.compilerOptions?.baseUrl) {
|
|
35
|
+
const configDir = path.dirname(result.path);
|
|
36
|
+
this.baseUrl = path.resolve(configDir, result.config.compilerOptions.baseUrl);
|
|
37
|
+
if (this.baseUrl) {
|
|
38
|
+
// Log that we found and are using baseUrl
|
|
39
|
+
console.warn(`Using baseUrl from tsconfig: ${this.baseUrl}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// Silently fall back if config reading fails
|
|
45
|
+
// This allows the tool to work even without tsconfig.json
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve an import specifier to an absolute file path
|
|
50
|
+
* @param specifier - The import specifier (e.g., './components/Test')
|
|
51
|
+
* @param fromFile - The absolute path of the file containing the import
|
|
52
|
+
* @returns Resolved absolute path, or null if not found
|
|
53
|
+
*/
|
|
54
|
+
resolveImport(specifier, fromFile) {
|
|
55
|
+
try {
|
|
56
|
+
// Normalize the specifier
|
|
57
|
+
const normalized = this.normalizePath(specifier);
|
|
58
|
+
// 1. Handle relative imports (priority)
|
|
59
|
+
if (normalized.startsWith('./') || normalized.startsWith('../')) {
|
|
60
|
+
return this.resolveRelative(normalized, fromFile);
|
|
61
|
+
}
|
|
62
|
+
// 2. Handle absolute imports (src/components/Test)
|
|
63
|
+
if (path.isAbsolute(normalized)) {
|
|
64
|
+
return this.resolveAbsolute(normalized);
|
|
65
|
+
}
|
|
66
|
+
// 3. Handle bare imports (react, lodash) - return as-is
|
|
67
|
+
if (!normalized.includes('/') && !normalized.startsWith('.')) {
|
|
68
|
+
return normalized;
|
|
69
|
+
}
|
|
70
|
+
// 4. Handle baseUrl imports (NEW!)
|
|
71
|
+
if (this.baseUrl && this.shouldUseBaseUrlResolution(normalized)) {
|
|
72
|
+
const baseUrlResolved = this.resolveWithBaseUrl(normalized);
|
|
73
|
+
if (baseUrlResolved) {
|
|
74
|
+
return baseUrlResolved;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// 5. Fallback: Try relative resolution
|
|
78
|
+
return this.resolveRelative(normalized, fromFile);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Determine if an import should use baseUrl resolution
|
|
86
|
+
*/
|
|
87
|
+
shouldUseBaseUrlResolution(specifier) {
|
|
88
|
+
// Use baseUrl for non-relative, non-bare imports
|
|
89
|
+
const isRelative = specifier.startsWith('./') || specifier.startsWith('../');
|
|
90
|
+
const isBare = !specifier.includes('/');
|
|
91
|
+
const isNodeModule = specifier.includes('node_modules');
|
|
92
|
+
return !isRelative && !isBare && !isNodeModule;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Resolve import using baseUrl
|
|
96
|
+
*/
|
|
97
|
+
resolveWithBaseUrl(specifier) {
|
|
98
|
+
if (!this.baseUrl)
|
|
99
|
+
return null;
|
|
100
|
+
// Try baseUrl + specifier
|
|
101
|
+
const resolvedPath = path.resolve(this.baseUrl, specifier);
|
|
102
|
+
// Try extensions
|
|
103
|
+
const withExtension = this.tryExtensions(resolvedPath);
|
|
104
|
+
if (withExtension)
|
|
105
|
+
return withExtension;
|
|
106
|
+
// Try index
|
|
107
|
+
const withIndex = this.tryIndex(resolvedPath);
|
|
108
|
+
if (withIndex)
|
|
109
|
+
return withIndex;
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Resolve relative import paths
|
|
114
|
+
* e.g., './components/Test' from '/src/App.tsx' → '/src/components/Test.ts'
|
|
115
|
+
*/
|
|
116
|
+
resolveRelative(specifier, fromFile) {
|
|
117
|
+
const fromDir = path.dirname(fromFile);
|
|
118
|
+
const resolved = path.resolve(fromDir, specifier);
|
|
119
|
+
return this.tryExtensions(resolved) || this.tryIndex(resolved);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Resolve absolute import paths
|
|
123
|
+
* e.g., '/src/components/Test' or 'src/components/Test'
|
|
124
|
+
*/
|
|
125
|
+
resolveAbsolute(specifier) {
|
|
126
|
+
const absolute = path.isAbsolute(specifier) ? specifier : path.resolve(specifier);
|
|
127
|
+
return this.tryExtensions(absolute) || this.tryIndex(absolute);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Try different file extensions
|
|
131
|
+
* e.g., '/path/to/Test' → '/path/to/Test.ts', '/path/to/Test.tsx', etc.
|
|
132
|
+
*/
|
|
133
|
+
tryExtensions(filePath) {
|
|
134
|
+
// First, check if file already has an extension
|
|
135
|
+
const ext = path.extname(filePath);
|
|
136
|
+
if (ext && this.extensions.includes(ext)) {
|
|
137
|
+
if (this.fileExists(filePath)) {
|
|
138
|
+
return filePath;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Try adding each extension
|
|
142
|
+
for (const ext of this.extensions) {
|
|
143
|
+
const withExt = filePath + ext;
|
|
144
|
+
if (this.fileExists(withExt)) {
|
|
145
|
+
return withExt;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Try to find an index file
|
|
152
|
+
* e.g., '/path/to/components' → '/path/to/components/index.ts'
|
|
153
|
+
*/
|
|
154
|
+
tryIndex(dirPath) {
|
|
155
|
+
// Remove trailing slash if present
|
|
156
|
+
const normalized = dirPath.replace(/\/$/, '');
|
|
157
|
+
// Try index files with different extensions
|
|
158
|
+
for (const ext of this.extensions) {
|
|
159
|
+
const indexPath = path.join(normalized, `index${ext}`);
|
|
160
|
+
if (this.fileExists(indexPath)) {
|
|
161
|
+
return indexPath;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Normalize path for comparison
|
|
168
|
+
* - Convert backslashes to forward slashes
|
|
169
|
+
* - Remove duplicate slashes
|
|
170
|
+
* - Remove leading ./
|
|
171
|
+
*/
|
|
172
|
+
normalizePath(filePath) {
|
|
173
|
+
return filePath
|
|
174
|
+
.replace(/\\/g, '/') // Windows → Unix separators
|
|
175
|
+
.replace(/\/+/g, '/') // Multiple slashes → single
|
|
176
|
+
.replace(/^\.\//, ''); // Remove leading ./
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check if a file exists
|
|
180
|
+
*/
|
|
181
|
+
fileExists(filePath) {
|
|
182
|
+
try {
|
|
183
|
+
return fs.statSync(filePath).isFile();
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Compare two paths for equality, handling:
|
|
191
|
+
* - Different separators (\ vs /)
|
|
192
|
+
* - Extension variations (.ts vs .js)
|
|
193
|
+
* - Case sensitivity (platform-dependent)
|
|
194
|
+
*/
|
|
195
|
+
pathsMatch(path1, path2) {
|
|
196
|
+
const normalized1 = this.normalizePath(path1);
|
|
197
|
+
const normalized2 = this.normalizePath(path2);
|
|
198
|
+
// On Windows, use case-insensitive comparison
|
|
199
|
+
const compare1 = process.platform === 'win32' ? normalized1.toLowerCase() : normalized1;
|
|
200
|
+
const compare2 = process.platform === 'win32' ? normalized2.toLowerCase() : normalized2;
|
|
201
|
+
// Remove extensions for comparison (.ts should match .js)
|
|
202
|
+
const base1 = this.removeExtension(compare1);
|
|
203
|
+
const base2 = this.removeExtension(compare2);
|
|
204
|
+
return base1 === base2;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Remove file extension from path
|
|
208
|
+
*/
|
|
209
|
+
removeExtension(filePath) {
|
|
210
|
+
const extensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
211
|
+
for (const ext of extensions) {
|
|
212
|
+
if (filePath.endsWith(ext)) {
|
|
213
|
+
return filePath.slice(0, -ext.length);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return filePath;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=module-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["../src/module-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,CAAW;IACrB,OAAO,CAAU;IAEzB,YAAY,OAKX;QACC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAExF,wCAAwC;QACxC,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,mCAAmC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YACxD,iCAAiC;YACjC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,YAAqB,EAAE,UAAmB;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY;gBACzB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC;gBAC3B,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;oBACzB,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAE9E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,0CAA0C;oBAC1C,OAAO,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;YAC7C,0DAA0D;QAC5D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,SAAiB,EAAE,QAAgB;QAC/C,IAAI,CAAC;YACH,0BAA0B;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAEjD,wCAAwC;YACxC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;YAED,mDAAmD;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;YAED,wDAAwD;YACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7D,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC5D,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAO,eAAe,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B,CAAC,SAAiB;QAClD,iDAAiD;QACjD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAExD,OAAO,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAiB;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE/B,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE3D,iBAAiB;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QAExC,YAAY;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,SAAiB,EAAE,QAAgB;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,QAAgB;QACpC,gDAAgD;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,QAAQ,CAAC,OAAe;QAC9B,mCAAmC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE9C,4CAA4C;QAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAgB;QAC5B,OAAO,QAAQ;aACZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,4BAA4B;aAChD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,4BAA4B;aACjD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC/C,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,QAAgB;QACjC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAa,EAAE,KAAa;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAExF,0DAA0D;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE7C,OAAO,KAAK,KAAK,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB;QACtC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export interface Import {
|
|
|
25
25
|
kind?: 'named' | 'default' | 'namespace';
|
|
26
26
|
/** Raw import statement for display */
|
|
27
27
|
raw?: string;
|
|
28
|
+
/** Resolved absolute path (computed during analysis) */
|
|
29
|
+
resolvedPath?: string;
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
32
|
* All imports found in a single file
|
|
@@ -88,6 +90,10 @@ export interface DetectorOptions {
|
|
|
88
90
|
verbose?: boolean;
|
|
89
91
|
/** Specific module path to match (for path-specific filtering) */
|
|
90
92
|
modulePath?: string;
|
|
93
|
+
/** Base URL for module resolution (overrides tsconfig) */
|
|
94
|
+
baseUrl?: string;
|
|
95
|
+
/** Path to tsconfig.json for automatic baseUrl detection */
|
|
96
|
+
tsconfigPath?: string;
|
|
91
97
|
}
|
|
92
98
|
/**
|
|
93
99
|
* Output format options
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACzC,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+BAA+B;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,yBAAyB;IACzB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imports-detector",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Detect and analyze imports in JavaScript/TypeScript applications. Find files importing specific modules, list all imports, and generate dependency reports.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"@babel/types": "^7.25.4",
|
|
38
38
|
"chalk": "^5.3.0",
|
|
39
39
|
"commander": "^12.1.0",
|
|
40
|
-
"fast-glob": "^3.3.2"
|
|
40
|
+
"fast-glob": "^3.3.2",
|
|
41
|
+
"get-tsconfig": "^4.13.1"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@types/babel__traverse": "^7.28.0",
|