1
1
import fs from "fs" ;
2
2
import Parser from "tree-sitter" ;
3
- import {
4
- extractJavascriptFileImports ,
5
- removeInvalidJavascriptFileImports ,
6
- removeJavascriptAnnotations ,
7
- removeJavascriptDeletedImportUsage ,
8
- removeUnusedJavascriptImports ,
9
- } from "./languages/javascript" ;
3
+ import { cleanupJavascriptFile } from "./languages/javascript/cleanup" ;
4
+ import { extractJavascriptFileImports } from "./languages/javascript/imports" ;
5
+
10
6
import { getParserLanguageFromFile , resolveFilePath } from "./file" ;
11
7
import { Dependencies , Group } from "./types" ;
12
8
@@ -28,11 +24,10 @@ export function getDependencyTree(filePath: string): Dependencies {
28
24
parser . setLanguage ( language ) ;
29
25
30
26
const sourceCode = fs . readFileSync ( currentFilePath , "utf8" ) ;
31
- const tree = parser . parse ( sourceCode ) ;
32
27
33
28
let imports : string [ ] = [ ] ;
34
29
if ( [ "javascript" , "typescript" ] . includes ( language . name ) ) {
35
- imports = extractJavascriptFileImports ( tree . rootNode ) ;
30
+ imports = extractJavascriptFileImports ( parser , sourceCode ) ;
36
31
} else {
37
32
throw new Error ( `Unsupported language: ${ language . name } ` ) ;
38
33
}
@@ -61,51 +56,31 @@ export function cleanupFile(filePath: string, group: Group) {
61
56
parser . setLanguage ( language ) ;
62
57
63
58
const sourceCode = fs . readFileSync ( filePath , "utf8" ) ;
64
- let tree = parser . parse ( sourceCode ) ;
65
59
66
60
let dependencies : string [ ] = [ ] ;
67
61
if ( [ "javascript" , "typescript" ] . includes ( language . name ) ) {
68
- dependencies = extractJavascriptFileImports ( tree . rootNode ) ;
62
+ dependencies = extractJavascriptFileImports ( parser , sourceCode ) ;
69
63
} else {
70
64
throw new Error ( `Unsupported language: ${ language . language } ` ) ;
71
65
}
72
66
73
- // Check if we can resolve the path for each dependency
74
- // If we cannot, we need to remove it
67
+ // Check if we can resolve the path for each dependency. If we cannot, we need to remove it
75
68
const invalidDependencies = dependencies . filter (
76
69
( dep ) => ! resolveFilePath ( dep , filePath ) ,
77
70
) ;
78
71
72
+ let updatedSourceCode : string ;
73
+
79
74
if ( [ "javascript" , "typescript" ] . includes ( language . name ) ) {
80
- const newSourceCode = removeJavascriptAnnotations (
81
- tree . rootNode ,
75
+ updatedSourceCode = cleanupJavascriptFile (
76
+ parser ,
82
77
sourceCode ,
83
78
group ,
79
+ invalidDependencies ,
84
80
) ;
85
- tree = parser . parse ( newSourceCode ) ;
86
-
87
- const { updatedSourceCode, removedImportsNames } =
88
- removeInvalidJavascriptFileImports (
89
- tree . rootNode ,
90
- newSourceCode ,
91
- invalidDependencies ,
92
- ) ;
93
- tree = parser . parse ( updatedSourceCode ) ;
94
-
95
- let finalUpdatedSourceCode = removeJavascriptDeletedImportUsage (
96
- tree . rootNode ,
97
- updatedSourceCode ,
98
- removedImportsNames ,
99
- ) ;
100
- tree = parser . parse ( finalUpdatedSourceCode ) ;
101
-
102
- finalUpdatedSourceCode = removeUnusedJavascriptImports (
103
- tree . rootNode ,
104
- finalUpdatedSourceCode ,
105
- ) ;
106
-
107
- fs . writeFileSync ( filePath , finalUpdatedSourceCode , "utf8" ) ;
108
81
} else {
109
82
throw new Error ( `Unsupported language: ${ language . language } ` ) ;
110
83
}
84
+
85
+ fs . writeFileSync ( filePath , updatedSourceCode , "utf8" ) ;
111
86
}
0 commit comments