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 CHANGED
@@ -1,9 +1,9 @@
1
1
  # Imports Detector
2
2
 
3
- [![npm version](https://badge.fury.io/js/imports-detector.svg)](https://www.npmjs.com/package/imports-detector)
4
- [![npm downloads](https://img.shields.io/npm/dm/imports-detector.svg)](https://www.npmjs.com/package/imports-detector)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
- [![GitHub stars](https://img.shields.io/github/stars/al-maqdi/imports-detector?style=social)](https://github.com/al-maqdi/imports-detector)
3
+ [![npm](https://img.shields.io/npm/v/imports-detector)](https://www.npmjs.com/package/imports-detector)
4
+ [![npm dm](https://img.shields.io/npm/dm/imports-detector)](https://www.npmjs.com/package/imports-detector)
5
+ [![npm](https://img.shields.io/npm/l/imports-detector)](https://www.npmjs.com/package/imports-detector)
6
+ [![GitHub stars](https://img.shields.io/github/stars/al-maqdi/imports-detector?style=social)](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
 
@@ -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
- * Handles both named imports and file paths
30
- * If modulePath is specified in options, also filters by import path
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
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,cAAc,EACd,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAkB;gBAErB,OAAO,GAAE,eAAoB;IAqBzC;;;;OAIG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAqC5B;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmDlE;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAc1C;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkD3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
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
- // Filter imports that match the module name
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
- * Handles both named imports and file paths
139
- * If modulePath is specified in options, also filters by import path
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
- // If modulePath is specified, check if the import module matches the path
144
- if (this.options.modulePath) {
145
- return this.doesImportMatchPath(imp.module, this.options.modulePath, moduleName);
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
@@ -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;AASjD;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,aAAa,CAAgB;IAC7B,MAAM,CAAa;IACnB,SAAS,CAAkB;IAC3B,OAAO,CAAkB;IAEjC,YAAY,UAA2B,EAAE;QACvC,IAAI,CAAC,OAAO,GAAG;YACb,YAAY,EAAE,OAAO,CAAC,YAAY,KAAK,KAAK;YAC5C,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;YAC9C,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;YACxC,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,KAAK;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACrC,eAAe,EAAE,OAAO,CAAC,iBAAiB;gBACxC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;gBACtD,CAAC,CAAC,SAAS;YACb,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CACtB,UAAkB,EAClB,UAAkB;QAElB,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;YACxD,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAErD,4CAA4C;oBAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBAE3E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,eAAe;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACzB,OAAO,CAAC,KAAK,CAAC,iBAAiB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAgC,EAAE,CAAC;YAEjD,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE;wBACjD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;wBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;wBACnC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;qBACpC,CAAC,CAAC;oBAEH,QAAQ,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;oBAEjC,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzC,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC3C,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;oBACrC,YAAY,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC7C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;wBACzB,OAAO,CAAC,KAAK,CAAC,iBAAiB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;YAE3E,OAAO;gBACL,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;gBACxC,YAAY;gBACZ,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,YAAY;oBACrB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,YAAY;iBACtB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE;gBACpC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;gBACjC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;gBACnC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,OAAiB,EAAE,UAAkB;QACjE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,0EAA0E;YAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACnF,CAAC;YAED,uCAAuC;YACvC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,uDAAuD;YACvD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,iDAAiD;YACjD,8CAA8C;YAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;YACnF,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,YAAoB,EAAE,UAAkB,EAAE,UAAkB;QACtF,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAE9D,qDAAqD;QACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAEvD,eAAe;QACf,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2DAA2D;QAC3D,2BAA2B;QAC3B,oDAAoD;QACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2DAA2D;QAC3D,2BAA2B;QAC3B,yEAAyE;QACzE,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wDAAwD;QACxD,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjE,+CAA+C;QAC/C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,kEAAkE;YAClE,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBAC3C,IAAI,aAAa,KAAK,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;oBAClD,WAAW,EAAE,CAAC;oBACd,IAAI,WAAW,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;wBAC1C,8BAA8B;wBAC9B,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,UAAkB;QAC5C,OAAO,UAAU;aACd,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,+BAA+B;aACtD,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,yBAAyB;aAChE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,4BAA4B;IACtD,CAAC;CACF"}
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":"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"}
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
@@ -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;CACd;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;CACrB;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"}
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.1.1",
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",