@@ -211,6 +211,7 @@ public class AutoBuild {
211211 private volatile boolean seenCode = false ;
212212 private boolean installDependencies = false ;
213213 private int installDependenciesTimeout ;
214+ private final VirtualSourceRoot virtualSourceRoot ;
214215
215216 /** The default timeout when running <code>yarn</code>, in milliseconds. */
216217 public static final int INSTALL_DEPENDENCIES_DEFAULT_TIMEOUT = 10 * 60 * 1000 ; // 10 minutes
@@ -228,6 +229,7 @@ public AutoBuild() {
228229 Env .systemEnv ()
229230 .getInt (
230231 "LGTM_INDEX_TYPESCRIPT_INSTALL_DEPS_TIMEOUT" , INSTALL_DEPENDENCIES_DEFAULT_TIMEOUT );
232+ this .virtualSourceRoot = new VirtualSourceRoot (LGTM_SRC , toRealPath (Paths .get (EnvironmentVariables .getScratchDir ())));
231233 setupFileTypes ();
232234 setupXmlMode ();
233235 setupMatchers ();
@@ -758,7 +760,6 @@ public static Path tryRelativize(Path from, Path to) {
758760 */
759761protected DependencyInstallationResult preparePackagesAndDependencies (Set <Path > filesToExtract ) {
760762 final Path sourceRoot = LGTM_SRC ;
761- final Path virtualSourceRoot = toRealPath (Paths .get (EnvironmentVariables .getScratchDir ()));
762763
763764 // Read all package.json files and index them by name.
764765 Map <Path , JsonObject > packageJsonFiles = new LinkedHashMap <>();
@@ -845,8 +846,7 @@ protected DependencyInstallationResult preparePackagesAndDependencies(Set<Path>
845846
846847 // Write the new package.json files to disk
847848 for (Path file : packageJsonFiles .keySet ()) {
848- Path relativePath = sourceRoot .relativize (file );
849- Path virtualFile = virtualSourceRoot .resolve (relativePath );
849+ Path virtualFile = virtualSourceRoot .toVirtualFile (file );
850850
851851 try {
852852 Files .createDirectories (virtualFile .getParent ());
@@ -861,7 +861,7 @@ protected DependencyInstallationResult preparePackagesAndDependencies(Set<Path>
861861 // Install dependencies
862862 if (this .installDependencies && verifyYarnInstallation ()) {
863863 for (Path file : packageJsonFiles .keySet ()) {
864- Path virtualFile = virtualSourceRoot .resolve ( sourceRoot . relativize ( file ) );
864+ Path virtualFile = virtualSourceRoot .toVirtualFile ( file );
865865 System .out .println ("Installing dependencies from " + virtualFile );
866866 ProcessBuilder pb =
867867 new ProcessBuilder (
@@ -887,7 +887,7 @@ protected DependencyInstallationResult preparePackagesAndDependencies(Set<Path>
887887 }
888888 }
889889
890- return new DependencyInstallationResult (sourceRoot , virtualSourceRoot , packageMainFile , packagesInRepo );
890+ return new DependencyInstallationResult (packageMainFile , packagesInRepo );
891891 }
892892
893893 /**
@@ -958,6 +958,7 @@ private ExtractorConfig mkExtractorConfig() {
958958 ExtractorConfig config = new ExtractorConfig (true );
959959 config = config .withSourceType (getSourceType ());
960960 config = config .withTypeScriptMode (typeScriptMode );
961+ config = config .withVirtualSourceRoot (virtualSourceRoot );
961962 if (defaultEncoding != null ) config = config .withDefaultEncoding (defaultEncoding );
962963 return config ;
963964 }
@@ -979,15 +980,15 @@ private Set<Path> extractTypeScript(
979980 Set <File > explicitlyIncludedFiles = new LinkedHashSet <>();
980981 if (tsconfig .size () > 1 ) { // No prioritization needed if there's only one tsconfig.
981982 for (Path projectPath : tsconfig ) {
982- explicitlyIncludedFiles .addAll (tsParser .getOwnFiles (projectPath .toFile (), deps ));
983+ explicitlyIncludedFiles .addAll (tsParser .getOwnFiles (projectPath .toFile (), deps , virtualSourceRoot ));
983984 }
984985 }
985986
986987 // Extract TypeScript projects
987988 for (Path projectPath : tsconfig ) {
988989 File projectFile = projectPath .toFile ();
989990 long start = logBeginProcess ("Opening project " + projectFile );
990- ParsedProject project = tsParser .openProject (projectFile , deps );
991+ ParsedProject project = tsParser .openProject (projectFile , deps , virtualSourceRoot );
991992 logEndProcess (start , "Done opening project " + projectFile );
992993 // Extract all files belonging to this project which are also matched
993994 // by our include/exclude filters.
0 commit comments