@@ -48,14 +48,16 @@ interface ParseCommand {
48
48
command : "parse" ;
49
49
filename : string ;
50
50
}
51
- interface OpenProjectCommand {
52
- command : "open-project" ;
51
+ interface LoadCommand {
53
52
tsConfig : string ;
54
53
sourceRoot : string | null ;
55
54
virtualSourceRoot : string | null ;
56
55
packageEntryPoints : [ string , string ] [ ] ;
57
56
packageJsonFiles : [ string , string ] [ ] ;
58
57
}
58
+ interface OpenProjectCommand extends LoadCommand {
59
+ command : "open-project" ;
60
+ }
59
61
interface CloseProjectCommand {
60
62
command : "close-project" ;
61
63
tsConfig : string ;
@@ -366,10 +368,17 @@ function parseSingleFile(filename: string): {ast: ts.SourceFile, code: string} {
366
368
*/
367
369
const nodeModulesRex = / [ / \\ ] n o d e _ m o d u l e s [ / \\ ] ( (?: @ [ \w . - ] + [ / \\ ] ) ? \w [ \w . - ] * ) [ / \\ ] ( .* ) / ;
368
370
369
- function handleOpenProjectCommand ( command : OpenProjectCommand ) {
370
- let tsConfigFilename = String ( command . tsConfig ) ;
371
- let tsConfig = ts . readConfigFile ( tsConfigFilename , ts . sys . readFile ) ;
372
- let basePath = pathlib . dirname ( tsConfigFilename ) ;
371
+ interface LoadedConfig {
372
+ config : ts . ParsedCommandLine ;
373
+ basePath : string ;
374
+ packageEntryPoints : Map < string , string > ;
375
+ packageJsonFiles : Map < string , string > ;
376
+ virtualSourceRoot : VirtualSourceRoot ;
377
+ }
378
+
379
+ function loadTsConfig ( command : LoadCommand ) : LoadedConfig {
380
+ let tsConfig = ts . readConfigFile ( command . tsConfig , ts . sys . readFile ) ;
381
+ let basePath = pathlib . dirname ( command . tsConfig ) ;
373
382
374
383
let packageEntryPoints = new Map ( command . packageEntryPoints ) ;
375
384
let packageJsonFiles = new Map ( command . packageJsonFiles ) ;
@@ -418,7 +427,14 @@ function handleOpenProjectCommand(command: OpenProjectCommand) {
418
427
}
419
428
} ;
420
429
let config = ts . parseJsonConfigFileContent ( tsConfig . config , parseConfigHost , basePath ) ;
421
- let project = new Project ( tsConfigFilename , config , state . typeTable , packageEntryPoints , virtualSourceRoot ) ;
430
+
431
+ return { config, basePath, packageJsonFiles, packageEntryPoints, virtualSourceRoot } ;
432
+ }
433
+
434
+ function handleOpenProjectCommand ( command : OpenProjectCommand ) {
435
+ let { config, packageEntryPoints, virtualSourceRoot, basePath } = loadTsConfig ( command ) ;
436
+
437
+ let project = new Project ( command . tsConfig , config , state . typeTable , packageEntryPoints , virtualSourceRoot ) ;
422
438
project . load ( ) ;
423
439
424
440
state . project = project ;
0 commit comments