@nestjs/cli
Version:
Nest - modern, fast, powerful node.js web framework (@cli)
64 lines (63 loc) • 2.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const ui_1 = require("../../ui");
const base_compiler_1 = require("../base-compiler");
const plugin_metadata_generator_1 = require("../plugins/plugin-metadata-generator");
const plugins_loader_1 = require("../plugins/plugins-loader");
const constants_1 = require("./constants");
const type_checker_host_1 = require("./type-checker-host");
const [tsConfigPath, appName, sourceRoot, plugins] = process.argv.slice(2);
class ForkedTypeChecker extends base_compiler_1.BaseCompiler {
constructor() {
super(...arguments);
this.pluginMetadataGenerator = new plugin_metadata_generator_1.PluginMetadataGenerator();
this.typeCheckerHost = new type_checker_host_1.TypeCheckerHost();
}
async run(configuration, tsConfigPath, appName, extras) {
const { readonlyVisitors } = this.loadPlugins(configuration, tsConfigPath, appName);
const outputDir = this.getPathToSource(configuration, tsConfigPath, appName);
try {
const onTypeCheckOrProgramInit = (program) => {
if (readonlyVisitors.length > 0) {
console.log(constants_1.FOUND_NO_ISSUES_GENERATING_METADATA);
this.pluginMetadataGenerator.generate({
outputDir,
visitors: readonlyVisitors,
tsProgramRef: program,
});
}
else {
console.log(constants_1.FOUND_NO_ISSUES_METADATA_GENERATION_SKIPPED);
}
};
this.typeCheckerHost.run(tsConfigPath, {
watch: extras.watch,
onTypeCheck: onTypeCheckOrProgramInit,
onProgramInit: onTypeCheckOrProgramInit,
});
}
catch (err) {
console.log(ui_1.ERROR_PREFIX, err.message);
}
}
}
const pluginsLoader = new plugins_loader_1.PluginsLoader();
const forkedTypeChecker = new ForkedTypeChecker(pluginsLoader);
const applicationName = appName === 'undefined' ? '' : appName;
const options = {
sourceRoot,
};
if (applicationName) {
options.projects = {};
options.projects[applicationName] = {
compilerOptions: {
plugins: JSON.parse(plugins),
},
};
}
else {
options.compilerOptions = {
plugins: JSON.parse(plugins),
};
}
forkedTypeChecker.run(options, tsConfigPath, applicationName, { watch: true, typeCheck: true });
;