typescript-tslint-plugin
Version:
TypeScript tslint language service plugin
48 lines • 2.31 kB
JavaScript
;
const plugin_1 = require("./plugin");
const logger_1 = require("./logger");
const settings_1 = require("./settings");
const mockRequire = require("mock-require");
const runner_1 = require("./runner");
const enableWorkspaceLibraryExecutionEnvVar = 'TS_TSLINT_ENABLE_WORKSPACE_LIBRARY_EXECUTION';
function isValidTypeScriptVersion(typescript) {
const [major] = typescript.version.split('.');
return +major >= 3;
}
module.exports = function init({ typescript }) {
const configManager = new settings_1.ConfigurationManager(typescript);
let logger;
let plugin;
// Make sure TS Lint imports the correct version of TS
mockRequire('typescript', typescript);
return {
create(info) {
logger = logger_1.Logger.forPlugin(info);
logger.info('Create');
configManager.setProject(info.project, logger);
configManager.updateFromPluginConfig(info.config);
if (!isValidTypeScriptVersion(typescript)) {
logger.info('Invalid typescript version detected. The TSLint plugin requires TypeScript 3.x');
return info.languageService;
}
plugin = new plugin_1.TSLintPlugin(typescript, info.languageServiceHost, logger, info.project, configManager);
// Allow clients that don't use onConfigurationChanged to still securely enable
// workspace library execution with an env var.
const workspaceLibraryFromEnv = process.env[enableWorkspaceLibraryExecutionEnvVar] ? runner_1.WorkspaceLibraryExecution.Allow : runner_1.WorkspaceLibraryExecution.Unknown;
plugin.updateWorkspaceTrust(workspaceLibraryFromEnv);
return plugin.decorate(info.languageService);
},
onConfigurationChanged(config) {
if (logger) {
logger.info('onConfigurationChanged');
}
if (plugin) {
if ('allowWorkspaceLibraryExecution' in config) {
plugin.updateWorkspaceTrust(config.allowWorkspaceLibraryExecution ? runner_1.WorkspaceLibraryExecution.Allow : runner_1.WorkspaceLibraryExecution.Disallow);
}
}
configManager.updateFromPluginConfig(config);
},
};
};
//# sourceMappingURL=index.js.map