@@ -6,9 +6,18 @@ import { Logger } from "../infrastructure/logger/logger";
66
77export class FileService {
88 readonly logger : Logger ;
9+ private static instance : FileService ;
910 constructor ( ) {
1011 this . logger = new Logger ( "FileSystemService" ) ;
1112 }
13+
14+ static getInstance ( ) {
15+ if ( ! FileService . instance ) {
16+ FileService . instance = new FileService ( ) ;
17+ }
18+ return FileService . instance ;
19+ }
20+
1221 getWorkspaceInfo ( dir : string ) : IWorkspaceInfo | undefined {
1322 try {
1423 const workspaceFolder = vscode . workspace . workspaceFolders ?. [ 0 ] ;
@@ -35,25 +44,29 @@ export class FileService {
3544 const directories = await vscode . workspace . fs . readDirectory (
3645 workSpaceInfo . root ,
3746 ) ;
47+ const tsFilePaths : string [ ] = [ ] ;
48+ for ( const [ name , type ] of directories ) {
49+ if ( type === vscode . FileType . Directory ) {
50+ const dirUri = vscode . Uri . joinPath ( workSpaceInfo . root , name ) ;
51+ const tsConfigUrl = vscode . Uri . joinPath (
52+ dirUri ,
53+ FSPROPS . TSCONFIG_FILE ,
54+ ) ;
3855
39- const directory = directories . filter (
40- ( [ name , type ] ) => type === vscode . FileType . Directory && name === dir ,
41- ) ;
42-
43- if ( ! directory ) {
44- throw Error ( `${ dir } does not exist within this workspace` ) ;
56+ const tsConfigExists =
57+ ( await Promise . resolve ( vscode . workspace . fs . stat ( tsConfigUrl ) ) . catch (
58+ ( ) => null ,
59+ ) ) !== null ;
60+ if ( tsConfigExists ) {
61+ const tsFiles = await vscode . workspace . findFiles (
62+ new vscode . RelativePattern ( dirUri , pattern ) ,
63+ FSPROPS . NODE_MODULES_PATTERN ,
64+ ) ;
65+ tsFilePaths . push ( ...tsFiles . map ( ( file ) => file . fsPath ) ) ;
66+ }
67+ }
4568 }
46-
47- const directoryFiles = directory . map ( async ( [ file ] ) => {
48- const srcUri = vscode . Uri . joinPath ( workSpaceInfo . root , file ) ;
49- const srcFiles = await vscode . workspace . findFiles (
50- new vscode . RelativePattern ( srcUri , pattern ) ,
51- ) ;
52- return srcFiles . map ( ( file ) => file . fsPath ) ;
53- } ) ;
54-
55- const srcFilePaths = await Promise . all ( directoryFiles ) ;
56- return srcFilePaths . flat ( ) ;
69+ return tsFilePaths ;
5770 } catch ( error ) {
5871 handleError (
5972 error ,
0 commit comments