pentest-distro-builder/filesystem/root/.vscode/extensions/ms-python.python-2018.8.0/out/client/extension.js

203 lines
13 KiB
JavaScript
Raw Normal View History

2018-10-17 14:11:16 -06:00
'use strict';
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
// This line should always be right on top.
// tslint:disable-next-line:no-any
if (Reflect.metadata === undefined) {
// tslint:disable-next-line:no-require-imports no-var-requires
require('reflect-metadata');
}
const stopWatch_1 = require("./common/stopWatch");
// Do not move this linne of code (used to measure extension load times).
const stopWatch = new stopWatch_1.StopWatch();
const inversify_1 = require("inversify");
const vscode_1 = require("vscode");
const serviceRegistry_1 = require("./activation/serviceRegistry");
const types_1 = require("./activation/types");
const serviceRegistry_2 = require("./application/serviceRegistry");
const types_2 = require("./application/types");
const types_3 = require("./common/application/types");
const configSettings_1 = require("./common/configSettings");
const constants_1 = require("./common/constants");
const helpers_1 = require("./common/helpers");
const pythonInstallation_1 = require("./common/installer/pythonInstallation");
const serviceRegistry_3 = require("./common/installer/serviceRegistry");
const serviceRegistry_4 = require("./common/platform/serviceRegistry");
const serviceRegistry_5 = require("./common/process/serviceRegistry");
const serviceRegistry_6 = require("./common/serviceRegistry");
const types_4 = require("./common/terminal/types");
const types_5 = require("./common/types");
const serviceRegistry_7 = require("./common/variables/serviceRegistry");
const serviceRegistry_8 = require("./debugger/configProviders/serviceRegistry");
const serviceRegistry_9 = require("./debugger/serviceRegistry");
const types_6 = require("./debugger/types");
const serviceRegistry_10 = require("./formatters/serviceRegistry");
const types_7 = require("./interpreter/configuration/types");
const contracts_1 = require("./interpreter/contracts");
const serviceRegistry_11 = require("./interpreter/serviceRegistry");
const container_1 = require("./ioc/container");
const serviceManager_1 = require("./ioc/serviceManager");
const types_8 = require("./ioc/types");
const linterCommands_1 = require("./linters/linterCommands");
const serviceRegistry_12 = require("./linters/serviceRegistry");
const types_9 = require("./linters/types");
const codeActionsProvider_1 = require("./providers/codeActionsProvider");
const formatProvider_1 = require("./providers/formatProvider");
const linterProvider_1 = require("./providers/linterProvider");
const renameProvider_1 = require("./providers/renameProvider");
const replProvider_1 = require("./providers/replProvider");
const simpleRefactorProvider_1 = require("./providers/simpleRefactorProvider");
const terminalProvider_1 = require("./providers/terminalProvider");
const updateSparkLibraryProvider_1 = require("./providers/updateSparkLibraryProvider");
const sortImports = require("./sortImports");
const telemetry_1 = require("./telemetry");
const constants_2 = require("./telemetry/constants");
const serviceRegistry_13 = require("./terminals/serviceRegistry");
const types_10 = require("./terminals/types");
const blockFormatProvider_1 = require("./typeFormatters/blockFormatProvider");
const onEnterFormatter_1 = require("./typeFormatters/onEnterFormatter");
const constants_3 = require("./unittests/common/constants");
const serviceRegistry_14 = require("./unittests/serviceRegistry");
const activationDeferred = helpers_1.createDeferred();
exports.activated = activationDeferred.promise;
// tslint:disable-next-line:max-func-body-length
function activate(context) {
return __awaiter(this, void 0, void 0, function* () {
const cont = new inversify_1.Container();
const serviceManager = new serviceManager_1.ServiceManager(cont);
const serviceContainer = new container_1.ServiceContainer(cont);
registerServices(context, serviceManager, serviceContainer);
const appDiagnostics = serviceContainer.get(types_2.IApplicationDiagnostics);
yield appDiagnostics.performPreStartupHealthCheck();
const interpreterManager = serviceContainer.get(contracts_1.IInterpreterService);
// This must be completed before we can continue as language server needs the interpreter path.
interpreterManager.initialize();
yield interpreterManager.autoSetInterpreter();
const configuration = serviceManager.get(types_5.IConfigurationService);
const pythonSettings = configuration.getSettings();
const standardOutputChannel = serviceManager.get(types_5.IOutputChannel, constants_1.STANDARD_OUTPUT_CHANNEL);
context.subscriptions.push(vscode_1.languages.registerRenameProvider(constants_1.PYTHON, new renameProvider_1.PythonRenameProvider(serviceManager)));
simpleRefactorProvider_1.activateSimplePythonRefactorProvider(context, standardOutputChannel, serviceManager);
const activationService = serviceContainer.get(types_1.IExtensionActivationService);
yield activationService.activate();
sortImports.activate(context, standardOutputChannel, serviceManager);
serviceManager.get(types_10.ICodeExecutionManager).registerCommands();
sendStartupTelemetry(exports.activated, serviceContainer).ignoreErrors();
const pythonInstaller = new pythonInstallation_1.PythonInstaller(serviceContainer);
pythonInstaller.checkPythonInstallation(configSettings_1.PythonSettings.getInstance())
.catch(ex => console.error('Python Extension: pythonInstaller.checkPythonInstallation', ex));
interpreterManager.refresh()
.catch(ex => console.error('Python Extension: interpreterManager.refresh', ex));
const jupyterExtension = vscode_1.extensions.getExtension('donjayamanne.jupyter');
const lintingEngine = serviceManager.get(types_9.ILintingEngine);
lintingEngine.linkJupiterExtension(jupyterExtension).ignoreErrors();
context.subscriptions.push(new linterCommands_1.LinterCommands(serviceManager));
const linterProvider = new linterProvider_1.LinterProvider(context, serviceManager);
context.subscriptions.push(linterProvider);
// Enable indentAction
// tslint:disable-next-line:no-non-null-assertion
vscode_1.languages.setLanguageConfiguration(constants_1.PYTHON_LANGUAGE, {
onEnterRules: [
{
beforeText: /^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async)\b.*:\s*/,
action: { indentAction: vscode_1.IndentAction.Indent }
},
{
beforeText: /^\s*#.*/,
afterText: /.+$/,
action: { indentAction: vscode_1.IndentAction.None, appendText: '# ' }
},
{
beforeText: /^\s+(continue|break|return)\b.*/,
afterText: /\s+$/,
action: { indentAction: vscode_1.IndentAction.Outdent }
}
]
});
if (pythonSettings && pythonSettings.formatting && pythonSettings.formatting.provider !== 'none') {
const formatProvider = new formatProvider_1.PythonFormattingEditProvider(context, serviceContainer);
context.subscriptions.push(vscode_1.languages.registerDocumentFormattingEditProvider(constants_1.PYTHON, formatProvider));
context.subscriptions.push(vscode_1.languages.registerDocumentRangeFormattingEditProvider(constants_1.PYTHON, formatProvider));
}
context.subscriptions.push(vscode_1.languages.registerOnTypeFormattingEditProvider(constants_1.PYTHON, new blockFormatProvider_1.BlockFormatProviders(), ':'));
context.subscriptions.push(vscode_1.languages.registerOnTypeFormattingEditProvider(constants_1.PYTHON, new onEnterFormatter_1.OnEnterFormatter(), '\n'));
const deprecationMgr = serviceContainer.get(types_5.IFeatureDeprecationManager);
deprecationMgr.initialize();
context.subscriptions.push(deprecationMgr);
context.subscriptions.push(serviceContainer.get(types_7.IInterpreterSelector));
context.subscriptions.push(updateSparkLibraryProvider_1.activateUpdateSparkLibraryProvider());
context.subscriptions.push(new replProvider_1.ReplProvider(serviceContainer));
context.subscriptions.push(new terminalProvider_1.TerminalProvider(serviceContainer));
context.subscriptions.push(vscode_1.languages.registerCodeActionsProvider(constants_1.PYTHON, new codeActionsProvider_1.PythonCodeActionProvider(), { providedCodeActionKinds: [vscode_1.CodeActionKind.SourceOrganizeImports] }));
serviceContainer.getAll(types_6.IDebugConfigurationProvider).forEach(debugConfig => {
context.subscriptions.push(vscode_1.debug.registerDebugConfigurationProvider(debugConfig.debugType, debugConfig));
});
serviceContainer.get(types_6.IDebuggerBanner).initialize();
activationDeferred.resolve();
});
}
exports.activate = activate;
function registerServices(context, serviceManager, serviceContainer) {
serviceManager.addSingletonInstance(types_8.IServiceContainer, serviceContainer);
serviceManager.addSingletonInstance(types_8.IServiceManager, serviceManager);
serviceManager.addSingletonInstance(types_5.IDisposableRegistry, context.subscriptions);
serviceManager.addSingletonInstance(types_5.IMemento, context.globalState, types_5.GLOBAL_MEMENTO);
serviceManager.addSingletonInstance(types_5.IMemento, context.workspaceState, types_5.WORKSPACE_MEMENTO);
serviceManager.addSingletonInstance(types_5.IExtensionContext, context);
const standardOutputChannel = vscode_1.window.createOutputChannel('Python');
const unitTestOutChannel = vscode_1.window.createOutputChannel('Python Test Log');
serviceManager.addSingletonInstance(types_5.IOutputChannel, standardOutputChannel, constants_1.STANDARD_OUTPUT_CHANNEL);
serviceManager.addSingletonInstance(types_5.IOutputChannel, unitTestOutChannel, constants_3.TEST_OUTPUT_CHANNEL);
serviceRegistry_1.registerTypes(serviceManager);
serviceRegistry_6.registerTypes(serviceManager);
serviceRegistry_5.registerTypes(serviceManager);
serviceRegistry_7.registerTypes(serviceManager);
serviceRegistry_14.registerTypes(serviceManager);
serviceRegistry_12.registerTypes(serviceManager);
serviceRegistry_11.registerTypes(serviceManager);
serviceRegistry_10.registerTypes(serviceManager);
serviceRegistry_4.registerTypes(serviceManager);
serviceRegistry_3.registerTypes(serviceManager);
serviceRegistry_13.registerTypes(serviceManager);
serviceRegistry_8.registerTypes(serviceManager);
serviceRegistry_9.registerTypes(serviceManager);
serviceRegistry_2.registerTypes(serviceManager);
}
function sendStartupTelemetry(activatedPromise, serviceContainer) {
return __awaiter(this, void 0, void 0, function* () {
const logger = serviceContainer.get(types_5.ILogger);
try {
yield activatedPromise;
const terminalHelper = serviceContainer.get(types_4.ITerminalHelper);
const terminalShellType = terminalHelper.identifyTerminalShell(terminalHelper.getTerminalShellPath());
const duration = stopWatch.elapsedTime;
const condaLocator = serviceContainer.get(contracts_1.ICondaService);
const interpreterService = serviceContainer.get(contracts_1.IInterpreterService);
const [condaVersion, interpreter, interpreters] = yield Promise.all([
condaLocator.getCondaVersion().catch(() => undefined),
interpreterService.getActiveInterpreter().catch(() => undefined),
interpreterService.getInterpreters().catch(() => [])
]);
const workspaceService = serviceContainer.get(types_3.IWorkspaceService);
const workspaceFolderCount = workspaceService.hasWorkspaceFolders ? workspaceService.workspaceFolders.length : 0;
const pythonVersion = interpreter ? interpreter.version_info.join('.') : undefined;
const interpreterType = interpreter ? interpreter.type : undefined;
const hasPython3 = interpreters
.filter(item => item && Array.isArray(item.version_info) ? item.version_info[0] === 3 : false)
.length > 0;
const props = { condaVersion, terminal: terminalShellType, pythonVersion, interpreterType, workspaceFolderCount, hasPython3 };
telemetry_1.sendTelemetryEvent(constants_2.EDITOR_LOAD, duration, props);
}
catch (ex) {
logger.logError('sendStartupTelemetry failed.', ex);
}
});
}
//# sourceMappingURL=extension.js.map