UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

35 lines (34 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ts = require("typescript"); var errors_1 = require("./../errors"); var fileSystem_1 = require("./../fileSystem"); var FileUtils_1 = require("./FileUtils"); /** * Gets the compiler options from a specified tsconfig.json * @param filePath - File path to the tsconfig.json. * @param fileSystemHost - Optional file system host. */ function getCompilerOptionsFromTsConfig(filePath, fileSystemHost) { fileSystemHost = fileSystemHost || new fileSystem_1.DefaultFileSystemHost(); var absoluteFilePath = FileUtils_1.FileUtils.getStandardizedAbsolutePath(fileSystemHost, filePath); verifyFileExists(fileSystemHost, absoluteFilePath); var result = ts.parseConfigFileTextToJson(absoluteFilePath, fileSystemHost.readFileSync(absoluteFilePath)); if (result.error != null) throw new Error(result.error.messageText.toString()); var settings = ts.convertCompilerOptionsFromJson(result.config.compilerOptions, FileUtils_1.FileUtils.getDirPath(filePath)); if (!settings.options) throw new Error(getErrorMessage(settings.errors)); return settings.options; } exports.getCompilerOptionsFromTsConfig = getCompilerOptionsFromTsConfig; function getErrorMessage(errors) { var message = ""; errors.forEach(function (err) { return message += err.messageText + "\n"; }); return message; } function verifyFileExists(fileSystemHost, filePath) { // unfortunately the ts compiler doesn't do things asynchronously so for now we won't either if (!fileSystemHost.fileExistsSync(filePath)) throw new errors_1.FileNotFoundError(filePath); }