@nrwl/workspace
Version:
73 lines • 3.46 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRootTsConfigPathInTree = exports.getRelativePathToRootTsConfig = exports.ensureTypescript = exports.resolveModuleByImport = exports.getSourceNodes = exports.findNodes = exports.compileTypeScript = void 0;
const devkit_1 = require("@nrwl/devkit");
const path_1 = require("path");
const versions_1 = require("../utils/versions");
var compilation_1 = require("./typescript/compilation");
Object.defineProperty(exports, "compileTypeScript", { enumerable: true, get: function () { return compilation_1.compileTypeScript; } });
var find_nodes_1 = require("./typescript/find-nodes"); // TODO(v16): remove this
Object.defineProperty(exports, "findNodes", { enumerable: true, get: function () { return find_nodes_1.findNodes; } });
var get_source_nodes_1 = require("./typescript/get-source-nodes");
Object.defineProperty(exports, "getSourceNodes", { enumerable: true, get: function () { return get_source_nodes_1.getSourceNodes; } });
const normalizedAppRoot = devkit_1.workspaceRoot.replace(/\\/g, '/');
let tsModule;
function readTsConfigOptions(tsConfigPath) {
if (!tsModule) {
tsModule = ensureTypescript();
}
const readResult = tsModule.readConfigFile(tsConfigPath, tsModule.sys.readFile);
// we don't need to scan the files, we only care about options
const host = {
readDirectory: () => [],
readFile: () => '',
fileExists: tsModule.sys.fileExists,
};
return tsModule.parseJsonConfigFileContent(readResult.config, host, (0, path_1.dirname)(tsConfigPath)).options;
}
let compilerHost;
/**
* Find a module based on it's import
*
* @param importExpr Import used to resolve to a module
* @param filePath
* @param tsConfigPath
*/
function resolveModuleByImport(importExpr, filePath, tsConfigPath) {
compilerHost = compilerHost || getCompilerHost(tsConfigPath);
const { options, host, moduleResolutionCache } = compilerHost;
const { resolvedModule } = tsModule.resolveModuleName(importExpr, filePath, options, host, moduleResolutionCache);
if (!resolvedModule) {
return;
}
else {
return resolvedModule.resolvedFileName.replace(`${normalizedAppRoot}/`, '');
}
}
exports.resolveModuleByImport = resolveModuleByImport;
function getCompilerHost(tsConfigPath) {
const options = readTsConfigOptions(tsConfigPath);
const host = tsModule.createCompilerHost(options, true);
const moduleResolutionCache = tsModule.createModuleResolutionCache(devkit_1.workspaceRoot, host.getCanonicalFileName);
return { options, host, moduleResolutionCache };
}
function ensureTypescript() {
return (0, devkit_1.ensurePackage)('typescript', versions_1.typescriptVersion);
}
exports.ensureTypescript = ensureTypescript;
const ts_config_1 = require("./ts-config");
/**
* @deprecated Please import this from @nrwl/js instead. This function will be removed in v17
*/
function getRelativePathToRootTsConfig(tree, targetPath) {
return (0, ts_config_1.getRelativePathToRootTsConfig)(tree, targetPath);
}
exports.getRelativePathToRootTsConfig = getRelativePathToRootTsConfig;
/**
* @deprecated Please import this from @nrwl/js instead. This function will be removed in v17
*/
function getRootTsConfigPathInTree(tree) {
return (0, ts_config_1.getRootTsConfigPathInTree)(tree);
}
exports.getRootTsConfigPathInTree = getRootTsConfigPathInTree;
//# sourceMappingURL=typescript.js.map
;