UNPKG

typescript-tslint-plugin

Version:
48 lines 2.31 kB
"use strict"; 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