UNPKG

@codechecks/client

Version:

Open source platform for code review automation

62 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const lodash_1 = require("lodash"); const JSON5 = require("json5"); const moduleExecutor_1 = require("./moduleExecutor"); const logger_1 = require("../logger"); const errors_1 = require("../utils/errors"); async function executeTs(filePath, options) { const customModuleHandler = (module, filename) => { const compiled = transpileTypescriptModule(filename); module._compile(compiled, filename); }; require.extensions[".ts"] = customModuleHandler; require.extensions[".tsx"] = customModuleHandler; let codeChecksModule; try { codeChecksModule = require(filePath); } catch (e) { logger_1.logger.error("Error while executing CodeChecks file!"); throw e; } await moduleExecutor_1.moduleExecutor(codeChecksModule, options); } exports.executeTs = executeTs; function transpileTypescriptModule(path) { const contents = fs_1.readFileSync(path, "utf8"); const isInsideNodeModules = path.indexOf("node_modules") !== -1; const hasTypescript = !!require.resolve("typescript"); let source; if (isInsideNodeModules) { source = contents; } else { if (!hasTypescript) { throw errors_1.crash("File written in TS but typescript package is not installed."); } source = transpileTypescript(contents); } if (!source) { throw errors_1.crash(`Couldnt parse ${path}`); } return source; } exports.transpileTypescriptModule = transpileTypescriptModule; function transpileTypescript(path) { const ts = require("typescript"); let compilerOptions; if (fs_1.existsSync("tsconfig.json")) { compilerOptions = JSON5.parse(fs_1.readFileSync("tsconfig.json", "utf8")); } else { compilerOptions = ts.getDefaultCompilerOptions(); } if (lodash_1.get(compilerOptions, "compilerOptions.module")) { compilerOptions.compilerOptions.module = "commonjs"; } let result = ts.transpileModule(path, compilerOptions); return result.outputText; } //# sourceMappingURL=tsExecutor.js.map