TS: Pass virtual source root explicitly to Node.js process

This commit is contained in:
Asger Feldthaus
2020-02-03 10:24:57 +00:00
parent b88cc50cdb
commit 3c1cbcefa5
4 changed files with 21 additions and 3 deletions

View File

@@ -784,7 +784,7 @@ public class AutoBuild {
}
}
return new DependencyInstallationResult(packageMainFile, packagesInRepo);
return new DependencyInstallationResult(virtualSourceRoot, packageMainFile, packagesInRepo);
}
/**

View File

@@ -6,19 +6,31 @@ import java.util.Map;
/** Contains the results of installing dependencies. */
public class DependencyInstallationResult {
private Path virtualSourceRoot;
private Map<String, Path> packageEntryPoints;
private Map<String, Path> packageJsonFiles;
public static final DependencyInstallationResult empty =
new DependencyInstallationResult(Collections.emptyMap(), Collections.emptyMap());
new DependencyInstallationResult(null, Collections.emptyMap(), Collections.emptyMap());
public DependencyInstallationResult(
Path virtualSourceRoot,
Map<String, Path> packageEntryPoints,
Map<String, Path> packageJsonFiles) {
this.packageEntryPoints = packageEntryPoints;
this.packageJsonFiles = packageJsonFiles;
}
/**
* Returns the virtual source root or <code>null</code> if no virtual source root exists.
*
* The virtual source root is a directory hierarchy that mirrors the real source
* root, where dependencies are installed.
*/
public Path getVirtualSourceRoot() {
return virtualSourceRoot;
}
/**
* Returns the mapping from package names to the TypeScript file that should
* act as its main entry point.

View File

@@ -20,6 +20,7 @@ import java.util.Map;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
@@ -435,6 +436,9 @@ public class TypeScriptParser {
request.add("tsConfig", new JsonPrimitive(tsConfigFile.getPath()));
request.add("packageEntryPoints", mapToArray(deps.getPackageEntryPoints()));
request.add("packageJsonFiles", mapToArray(deps.getPackageJsonFiles()));
request.add("virtualSourceRoot", deps.getVirtualSourceRoot() == null
? JsonNull.INSTANCE
: new JsonPrimitive(deps.getVirtualSourceRoot().toString()));
JsonObject response = talkToParserWrapper(request);
try {
checkResponseType(response, "project-opened");