+++ /dev/null
-(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const tslib_1 = __webpack_require__(1);
-const coc_nvim_1 = __webpack_require__(2);
-const fs_1 = tslib_1.__importDefault(__webpack_require__(3));
-const path_1 = tslib_1.__importDefault(__webpack_require__(4));
-const vscode_languageserver_protocol_1 = __webpack_require__(5);
-const utils_1 = __webpack_require__(30);
-const defaultLanguages = ['javascript', 'javascriptreact'];
-var Is;
-(function (Is) {
- const toString = Object.prototype.toString;
- function boolean(value) {
- return value === true || value === false;
- }
- Is.boolean = boolean;
- function string(value) {
- return toString.call(value) === '[object String]';
- }
- Is.string = string;
-})(Is || (Is = {}));
-var OpenESLintDocRequest;
-(function (OpenESLintDocRequest) {
- OpenESLintDocRequest.type = new vscode_languageserver_protocol_1.RequestType('eslint/openDoc');
-})(OpenESLintDocRequest || (OpenESLintDocRequest = {}));
-var DirectoryItem;
-(function (DirectoryItem) {
- function is(item) {
- let candidate = item;
- return (candidate &&
- Is.string(candidate.directory) &&
- (Is.boolean(candidate.changeProcessCWD) ||
- candidate.changeProcessCWD === void 0));
- }
- DirectoryItem.is = is;
-})(DirectoryItem || (DirectoryItem = {}));
-var NoConfigRequest;
-(function (NoConfigRequest) {
- NoConfigRequest.type = new vscode_languageserver_protocol_1.RequestType('eslint/noConfig');
-})(NoConfigRequest || (NoConfigRequest = {}));
-var NoESLintLibraryRequest;
-(function (NoESLintLibraryRequest) {
- NoESLintLibraryRequest.type = new vscode_languageserver_protocol_1.RequestType('eslint/noLibrary');
-})(NoESLintLibraryRequest || (NoESLintLibraryRequest = {}));
-const exitCalled = new vscode_languageserver_protocol_1.NotificationType('eslint/exitCalled');
-function createDefaultConfiguration() {
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
- let { root } = coc_nvim_1.workspace;
- let configFiles = [
- '.eslintrc.js',
- '.eslintrc.yaml',
- '.eslintrc.yml',
- '.eslintrc',
- '.eslintrc.json'
- ];
- for (let configFile of configFiles) {
- if (fs_1.default.existsSync(path_1.default.join(root, configFile))) {
- coc_nvim_1.workspace.openResource(coc_nvim_1.Uri.file(root).toString()).catch(_e => {
- // noop
- });
- return;
- }
- }
- const eslintCommand = yield utils_1.findEslint(root);
- yield coc_nvim_1.workspace.nvim.call('coc#util#open_terminal', [{
- cmd: eslintCommand + ' --init',
- cwd: root
- }]);
- });
-}
-function shouldBeValidated(textDocument) {
- let config = coc_nvim_1.workspace.getConfiguration('eslint', textDocument.uri);
- if (!config.get('enable', true))
- return false;
- let filetypes = config.get('filetypes', defaultLanguages);
- return filetypes.indexOf(textDocument.languageId) !== -1;
-}
-function activate(context) {
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
- let { subscriptions } = context;
- const config = coc_nvim_1.workspace.getConfiguration().get('eslint', {});
- const filetypes = config.filetypes || ['javascript', 'javascriptreact'];
- const selector = filetypes.reduce((res, filetype) => {
- return res.concat([{ language: filetype, scheme: 'file' }, { language: filetype, scheme: 'untitled' }]);
- }, []);
- let serverOptions = {
- module: context.asAbsolutePath('./lib/server/index.js'),
- args: ['--node-ipc'],
- transport: coc_nvim_1.TransportKind.ipc,
- options: {
- cwd: coc_nvim_1.workspace.root,
- execArgv: config.execArgv
- }
- };
- const syncedDocuments = new Map();
- let clientOptions = {
- documentSelector: selector,
- synchronize: {
- configurationSection: 'eslint',
- fileEvents: [
- coc_nvim_1.workspace.createFileSystemWatcher('**/.eslintr{c.js,c.yaml,c.yml,c,c.json}'),
- coc_nvim_1.workspace.createFileSystemWatcher('**/.eslintignore'),
- coc_nvim_1.workspace.createFileSystemWatcher('**/package.json')
- ]
- },
- outputChannelName: 'eslint',
- initializationOptions: config.initializationOptions,
- diagnosticCollectionName: 'eslint',
- initializationFailedHandler: error => {
- coc_nvim_1.workspace.showMessage(`Eslint server initialization failed: ${error.message}.`, 'error');
- return false;
- },
- middleware: {
- didOpen: (document, next) => {
- if (shouldBeValidated(document)) {
- next(document);
- syncedDocuments.set(document.uri.toString(), document);
- return;
- }
- },
- didChange: (event, next) => {
- if (syncedDocuments.has(event.textDocument.uri)) {
- next(event);
- }
- },
- didClose: (document, next) => {
- let uri = document.uri.toString();
- if (syncedDocuments.has(uri)) {
- syncedDocuments.delete(uri);
- next(document);
- }
- },
- provideCodeActions: (document, range, context, token, next) => {
- if (!syncedDocuments.has(document.uri.toString()) || !context.diagnostics || context.diagnostics.length === 0) {
- return [];
- }
- let eslintDiagnostics = [];
- for (let diagnostic of context.diagnostics) {
- if (diagnostic.source === 'eslint') {
- eslintDiagnostics.push(diagnostic);
- }
- }
- if (eslintDiagnostics.length === 0) {
- return [];
- }
- let newContext = Object.assign({}, context, {
- diagnostics: eslintDiagnostics
- });
- return next(document, range, newContext, token);
- },
- workspace: {
- configuration: (params, _token, _next) => {
- return params.items.map(item => {
- let uri = item.scopeUri;
- let config = coc_nvim_1.workspace.getConfiguration('eslint', uri);
- let pm = config.get('packageManager', 'npm');
- let settings = {
- packageManager: pm === 'yarn' ? 'yarn' : 'npm',
- quiet: config.get('quiet', false),
- validate: config.get('validate', true),
- autoFix: config.get('autoFix', false),
- autoFixOnSave: config.get('autoFixOnSave', false),
- nodePath: config.get('nodePath', undefined),
- options: config.get('options', {}),
- run: config.get('run', 'onType'),
- workspaceFolder: coc_nvim_1.workspace.workspaceFolder,
- workingDirectory: undefined,
- codeAction: {
- disableRuleComment: config.get('codeAction.disableRuleComment', { enable: true, location: 'separateLine' }),
- showDocumentation: config.get('codeAction.showDocumentation', { enable: true })
- }
- };
- return settings;
- });
- }
- }
- }
- };
- let client = new coc_nvim_1.LanguageClient('eslint', 'eslint langserver', serverOptions, clientOptions);
- subscriptions.push(coc_nvim_1.services.registLanguageClient(client));
- function onDidChangeConfiguration(e) {
- if (!e.affectsConfiguration('eslint'))
- return;
- if (client.serviceState != coc_nvim_1.ServiceStat.Running)
- return;
- for (let textDocument of syncedDocuments.values()) {
- if (!shouldBeValidated(textDocument)) {
- syncedDocuments.delete(textDocument.uri);
- client.sendNotification(vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, { textDocument: { uri: textDocument.uri } });
- }
- }
- for (let textDocument of coc_nvim_1.workspace.textDocuments) {
- if (!syncedDocuments.has(textDocument.uri.toString()) && shouldBeValidated(textDocument)) {
- client.sendNotification(vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, {
- textDocument: {
- uri: textDocument.uri,
- languageId: textDocument.languageId,
- version: textDocument.version,
- text: textDocument.getText()
- }
- });
- syncedDocuments.set(textDocument.uri.toString(), textDocument);
- }
- }
- }
- subscriptions.push(coc_nvim_1.commands.registerCommand('eslint.createConfig', createDefaultConfiguration));
- subscriptions.push(coc_nvim_1.commands.registerCommand('eslint.executeAutofix', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
- let document = yield coc_nvim_1.workspace.document;
- let textDocument = {
- uri: document.uri,
- version: document.version
- };
- let params = {
- command: 'eslint.applyAutoFix',
- arguments: [textDocument]
- };
- client.sendRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, params)
- .then(undefined, () => {
- coc_nvim_1.workspace.showMessage('Failed to apply ESLint fixes to the document.', 'error');
- });
- })));
- client.onReady().then(() => {
- client.onNotification(exitCalled, params => {
- coc_nvim_1.workspace.showMessage(`Server process exited with code ${params[0]}. This usually indicates a misconfigured ESLint setup.`, 'error');
- });
- client.onRequest(NoConfigRequest.type, params => {
- let document = coc_nvim_1.Uri.parse(params.document.uri);
- let fileLocation = document.fsPath;
- coc_nvim_1.workspace.showMessage(`No ESLint configuration (e.g .eslintrc) found for file: ${fileLocation}`, 'warning');
- return {};
- });
- client.onRequest(NoESLintLibraryRequest.type, params => {
- let uri = coc_nvim_1.Uri.parse(params.source.uri);
- coc_nvim_1.workspace.showMessage(`Failed to load the ESLint library for the document ${uri.fsPath}`, 'warning');
- return {};
- });
- client.onRequest(OpenESLintDocRequest.type, (params) => tslib_1.__awaiter(this, void 0, void 0, function* () {
- yield coc_nvim_1.commands.executeCommand('vscode.open', coc_nvim_1.Uri.parse(params.url));
- return {};
- }));
- coc_nvim_1.workspace.onDidChangeConfiguration(onDidChangeConfiguration, null, subscriptions);
- }, _e => {
- // noop
- });
- });
-}
-exports.activate = activate;
-//# sourceMappingURL=index.js.map
-
-/***/ }),
-/* 1 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; });
-/*! *****************************************************************************\r
-Copyright (c) Microsoft Corporation. All rights reserved.\r
-Licensed under the Apache License, Version 2.0 (the "License"); you may not use\r
-this file except in compliance with the License. You may obtain a copy of the\r
-License at http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
-KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r
-WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r
-MERCHANTABLITY OR NON-INFRINGEMENT.\r
-\r
-See the Apache Version 2.0 License for specific language governing permissions\r
-and limitations under the License.\r
-***************************************************************************** */\r
-/* global Reflect, Promise */\r
-\r
-var extendStatics = function(d, b) {\r
- extendStatics = Object.setPrototypeOf ||\r
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r
- return extendStatics(d, b);\r
-};\r
-\r
-function __extends(d, b) {\r
- extendStatics(d, b);\r
- function __() { this.constructor = d; }\r
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r
-}\r
-\r
-var __assign = function() {\r
- __assign = Object.assign || function __assign(t) {\r
- for (var s, i = 1, n = arguments.length; i < n; i++) {\r
- s = arguments[i];\r
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
- }\r
- return t;\r
- }\r
- return __assign.apply(this, arguments);\r
-}\r
-\r
-function __rest(s, e) {\r
- var t = {};\r
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r
- t[p] = s[p];\r
- if (s != null && typeof Object.getOwnPropertySymbols === "function")\r
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r
- t[p[i]] = s[p[i]];\r
- return t;\r
-}\r
-\r
-function __decorate(decorators, target, key, desc) {\r
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\r
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r
- return c > 3 && r && Object.defineProperty(target, key, r), r;\r
-}\r
-\r
-function __param(paramIndex, decorator) {\r
- return function (target, key) { decorator(target, key, paramIndex); }\r
-}\r
-\r
-function __metadata(metadataKey, metadataValue) {\r
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\r
-}\r
-\r
-function __awaiter(thisArg, _arguments, P, generator) {\r
- return new (P || (P = Promise))(function (resolve, reject) {\r
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\r
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r
- step((generator = generator.apply(thisArg, _arguments || [])).next());\r
- });\r
-}\r
-\r
-function __generator(thisArg, body) {\r
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\r
- function verb(n) { return function (v) { return step([n, v]); }; }\r
- function step(op) {\r
- if (f) throw new TypeError("Generator is already executing.");\r
- while (_) try {\r
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r
- if (y = 0, t) op = [op[0] & 2, t.value];\r
- switch (op[0]) {\r
- case 0: case 1: t = op; break;\r
- case 4: _.label++; return { value: op[1], done: false };\r
- case 5: _.label++; y = op[1]; op = [0]; continue;\r
- case 7: op = _.ops.pop(); _.trys.pop(); continue;\r
- default:\r
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r
- if (t[2]) _.ops.pop();\r
- _.trys.pop(); continue;\r
- }\r
- op = body.call(thisArg, _);\r
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r
- }\r
-}\r
-\r
-function __exportStar(m, exports) {\r
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r
-}\r
-\r
-function __values(o) {\r
- var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;\r
- if (m) return m.call(o);\r
- return {\r
- next: function () {\r
- if (o && i >= o.length) o = void 0;\r
- return { value: o && o[i++], done: !o };\r
- }\r
- };\r
-}\r
-\r
-function __read(o, n) {\r
- var m = typeof Symbol === "function" && o[Symbol.iterator];\r
- if (!m) return o;\r
- var i = m.call(o), r, ar = [], e;\r
- try {\r
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r
- }\r
- catch (error) { e = { error: error }; }\r
- finally {\r
- try {\r
- if (r && !r.done && (m = i["return"])) m.call(i);\r
- }\r
- finally { if (e) throw e.error; }\r
- }\r
- return ar;\r
-}\r
-\r
-function __spread() {\r
- for (var ar = [], i = 0; i < arguments.length; i++)\r
- ar = ar.concat(__read(arguments[i]));\r
- return ar;\r
-}\r
-\r
-function __await(v) {\r
- return this instanceof __await ? (this.v = v, this) : new __await(v);\r
-}\r
-\r
-function __asyncGenerator(thisArg, _arguments, generator) {\r
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
- var g = generator.apply(thisArg, _arguments || []), i, q = [];\r
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\r
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r
- function fulfill(value) { resume("next", value); }\r
- function reject(value) { resume("throw", value); }\r
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r
-}\r
-\r
-function __asyncDelegator(o) {\r
- var i, p;\r
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\r
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }\r
-}\r
-\r
-function __asyncValues(o) {\r
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
- var m = o[Symbol.asyncIterator], i;\r
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);\r
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r
-}\r
-\r
-function __makeTemplateObject(cooked, raw) {\r
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\r
- return cooked;\r
-};\r
-\r
-function __importStar(mod) {\r
- if (mod && mod.__esModule) return mod;\r
- var result = {};\r
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r
- result.default = mod;\r
- return result;\r
-}\r
-\r
-function __importDefault(mod) {\r
- return (mod && mod.__esModule) ? mod : { default: mod };\r
-}\r
-
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports) {
-
-module.exports = require("coc.nvim");
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports) {
-
-module.exports = require("fs");
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
-module.exports = require("path");
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-function __export(m) {\r
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r
-}\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-exports.ErrorCodes = vscode_jsonrpc_1.ErrorCodes;\r
-exports.ResponseError = vscode_jsonrpc_1.ResponseError;\r
-exports.CancellationToken = vscode_jsonrpc_1.CancellationToken;\r
-exports.CancellationTokenSource = vscode_jsonrpc_1.CancellationTokenSource;\r
-exports.Disposable = vscode_jsonrpc_1.Disposable;\r
-exports.Event = vscode_jsonrpc_1.Event;\r
-exports.Emitter = vscode_jsonrpc_1.Emitter;\r
-exports.Trace = vscode_jsonrpc_1.Trace;\r
-exports.TraceFormat = vscode_jsonrpc_1.TraceFormat;\r
-exports.SetTraceNotification = vscode_jsonrpc_1.SetTraceNotification;\r
-exports.LogTraceNotification = vscode_jsonrpc_1.LogTraceNotification;\r
-exports.RequestType = vscode_jsonrpc_1.RequestType;\r
-exports.RequestType0 = vscode_jsonrpc_1.RequestType0;\r
-exports.NotificationType = vscode_jsonrpc_1.NotificationType;\r
-exports.NotificationType0 = vscode_jsonrpc_1.NotificationType0;\r
-exports.MessageReader = vscode_jsonrpc_1.MessageReader;\r
-exports.MessageWriter = vscode_jsonrpc_1.MessageWriter;\r
-exports.ConnectionStrategy = vscode_jsonrpc_1.ConnectionStrategy;\r
-exports.StreamMessageReader = vscode_jsonrpc_1.StreamMessageReader;\r
-exports.StreamMessageWriter = vscode_jsonrpc_1.StreamMessageWriter;\r
-exports.IPCMessageReader = vscode_jsonrpc_1.IPCMessageReader;\r
-exports.IPCMessageWriter = vscode_jsonrpc_1.IPCMessageWriter;\r
-exports.createClientPipeTransport = vscode_jsonrpc_1.createClientPipeTransport;\r
-exports.createServerPipeTransport = vscode_jsonrpc_1.createServerPipeTransport;\r
-exports.generateRandomPipeName = vscode_jsonrpc_1.generateRandomPipeName;\r
-exports.createClientSocketTransport = vscode_jsonrpc_1.createClientSocketTransport;\r
-exports.createServerSocketTransport = vscode_jsonrpc_1.createServerSocketTransport;\r
-__export(__webpack_require__(19));\r
-__export(__webpack_require__(20));\r
-function createProtocolConnection(reader, writer, logger, strategy) {\r
- return vscode_jsonrpc_1.createMessageConnection(reader, writer, logger, strategy);\r
-}\r
-exports.createProtocolConnection = createProtocolConnection;\r
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-/// <reference path="./thenable.ts" />\r
-\r
-function __export(m) {\r
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r
-}\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const Is = __webpack_require__(7);\r
-const messages_1 = __webpack_require__(8);\r
-exports.RequestType = messages_1.RequestType;\r
-exports.RequestType0 = messages_1.RequestType0;\r
-exports.RequestType1 = messages_1.RequestType1;\r
-exports.RequestType2 = messages_1.RequestType2;\r
-exports.RequestType3 = messages_1.RequestType3;\r
-exports.RequestType4 = messages_1.RequestType4;\r
-exports.RequestType5 = messages_1.RequestType5;\r
-exports.RequestType6 = messages_1.RequestType6;\r
-exports.RequestType7 = messages_1.RequestType7;\r
-exports.RequestType8 = messages_1.RequestType8;\r
-exports.RequestType9 = messages_1.RequestType9;\r
-exports.ResponseError = messages_1.ResponseError;\r
-exports.ErrorCodes = messages_1.ErrorCodes;\r
-exports.NotificationType = messages_1.NotificationType;\r
-exports.NotificationType0 = messages_1.NotificationType0;\r
-exports.NotificationType1 = messages_1.NotificationType1;\r
-exports.NotificationType2 = messages_1.NotificationType2;\r
-exports.NotificationType3 = messages_1.NotificationType3;\r
-exports.NotificationType4 = messages_1.NotificationType4;\r
-exports.NotificationType5 = messages_1.NotificationType5;\r
-exports.NotificationType6 = messages_1.NotificationType6;\r
-exports.NotificationType7 = messages_1.NotificationType7;\r
-exports.NotificationType8 = messages_1.NotificationType8;\r
-exports.NotificationType9 = messages_1.NotificationType9;\r
-const messageReader_1 = __webpack_require__(9);\r
-exports.MessageReader = messageReader_1.MessageReader;\r
-exports.StreamMessageReader = messageReader_1.StreamMessageReader;\r
-exports.IPCMessageReader = messageReader_1.IPCMessageReader;\r
-exports.SocketMessageReader = messageReader_1.SocketMessageReader;\r
-const messageWriter_1 = __webpack_require__(11);\r
-exports.MessageWriter = messageWriter_1.MessageWriter;\r
-exports.StreamMessageWriter = messageWriter_1.StreamMessageWriter;\r
-exports.IPCMessageWriter = messageWriter_1.IPCMessageWriter;\r
-exports.SocketMessageWriter = messageWriter_1.SocketMessageWriter;\r
-const events_1 = __webpack_require__(10);\r
-exports.Disposable = events_1.Disposable;\r
-exports.Event = events_1.Event;\r
-exports.Emitter = events_1.Emitter;\r
-const cancellation_1 = __webpack_require__(12);\r
-exports.CancellationTokenSource = cancellation_1.CancellationTokenSource;\r
-exports.CancellationToken = cancellation_1.CancellationToken;\r
-const linkedMap_1 = __webpack_require__(13);\r
-__export(__webpack_require__(14));\r
-__export(__webpack_require__(18));\r
-var CancelNotification;\r
-(function (CancelNotification) {\r
- CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\r
-})(CancelNotification || (CancelNotification = {}));\r
-exports.NullLogger = Object.freeze({\r
- error: () => { },\r
- warn: () => { },\r
- info: () => { },\r
- log: () => { }\r
-});\r
-var Trace;\r
-(function (Trace) {\r
- Trace[Trace["Off"] = 0] = "Off";\r
- Trace[Trace["Messages"] = 1] = "Messages";\r
- Trace[Trace["Verbose"] = 2] = "Verbose";\r
-})(Trace = exports.Trace || (exports.Trace = {}));\r
-(function (Trace) {\r
- function fromString(value) {\r
- value = value.toLowerCase();\r
- switch (value) {\r
- case 'off':\r
- return Trace.Off;\r
- case 'messages':\r
- return Trace.Messages;\r
- case 'verbose':\r
- return Trace.Verbose;\r
- default:\r
- return Trace.Off;\r
- }\r
- }\r
- Trace.fromString = fromString;\r
- function toString(value) {\r
- switch (value) {\r
- case Trace.Off:\r
- return 'off';\r
- case Trace.Messages:\r
- return 'messages';\r
- case Trace.Verbose:\r
- return 'verbose';\r
- default:\r
- return 'off';\r
- }\r
- }\r
- Trace.toString = toString;\r
-})(Trace = exports.Trace || (exports.Trace = {}));\r
-var TraceFormat;\r
-(function (TraceFormat) {\r
- TraceFormat["Text"] = "text";\r
- TraceFormat["JSON"] = "json";\r
-})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\r
-(function (TraceFormat) {\r
- function fromString(value) {\r
- value = value.toLowerCase();\r
- if (value === 'json') {\r
- return TraceFormat.JSON;\r
- }\r
- else {\r
- return TraceFormat.Text;\r
- }\r
- }\r
- TraceFormat.fromString = fromString;\r
-})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\r
-var SetTraceNotification;\r
-(function (SetTraceNotification) {\r
- SetTraceNotification.type = new messages_1.NotificationType('$/setTraceNotification');\r
-})(SetTraceNotification = exports.SetTraceNotification || (exports.SetTraceNotification = {}));\r
-var LogTraceNotification;\r
-(function (LogTraceNotification) {\r
- LogTraceNotification.type = new messages_1.NotificationType('$/logTraceNotification');\r
-})(LogTraceNotification = exports.LogTraceNotification || (exports.LogTraceNotification = {}));\r
-var ConnectionErrors;\r
-(function (ConnectionErrors) {\r
- /**\r
- * The connection is closed.\r
- */\r
- ConnectionErrors[ConnectionErrors["Closed"] = 1] = "Closed";\r
- /**\r
- * The connection got disposed.\r
- */\r
- ConnectionErrors[ConnectionErrors["Disposed"] = 2] = "Disposed";\r
- /**\r
- * The connection is already in listening mode.\r
- */\r
- ConnectionErrors[ConnectionErrors["AlreadyListening"] = 3] = "AlreadyListening";\r
-})(ConnectionErrors = exports.ConnectionErrors || (exports.ConnectionErrors = {}));\r
-class ConnectionError extends Error {\r
- constructor(code, message) {\r
- super(message);\r
- this.code = code;\r
- Object.setPrototypeOf(this, ConnectionError.prototype);\r
- }\r
-}\r
-exports.ConnectionError = ConnectionError;\r
-var ConnectionStrategy;\r
-(function (ConnectionStrategy) {\r
- function is(value) {\r
- let candidate = value;\r
- return candidate && Is.func(candidate.cancelUndispatched);\r
- }\r
- ConnectionStrategy.is = is;\r
-})(ConnectionStrategy = exports.ConnectionStrategy || (exports.ConnectionStrategy = {}));\r
-var ConnectionState;\r
-(function (ConnectionState) {\r
- ConnectionState[ConnectionState["New"] = 1] = "New";\r
- ConnectionState[ConnectionState["Listening"] = 2] = "Listening";\r
- ConnectionState[ConnectionState["Closed"] = 3] = "Closed";\r
- ConnectionState[ConnectionState["Disposed"] = 4] = "Disposed";\r
-})(ConnectionState || (ConnectionState = {}));\r
-function _createMessageConnection(messageReader, messageWriter, logger, strategy) {\r
- let sequenceNumber = 0;\r
- let notificationSquenceNumber = 0;\r
- let unknownResponseSquenceNumber = 0;\r
- const version = '2.0';\r
- let starRequestHandler = undefined;\r
- let requestHandlers = Object.create(null);\r
- let starNotificationHandler = undefined;\r
- let notificationHandlers = Object.create(null);\r
- let timer;\r
- let messageQueue = new linkedMap_1.LinkedMap();\r
- let responsePromises = Object.create(null);\r
- let requestTokens = Object.create(null);\r
- let trace = Trace.Off;\r
- let traceFormat = TraceFormat.Text;\r
- let tracer;\r
- let state = ConnectionState.New;\r
- let errorEmitter = new events_1.Emitter();\r
- let closeEmitter = new events_1.Emitter();\r
- let unhandledNotificationEmitter = new events_1.Emitter();\r
- let disposeEmitter = new events_1.Emitter();\r
- function createRequestQueueKey(id) {\r
- return 'req-' + id.toString();\r
- }\r
- function createResponseQueueKey(id) {\r
- if (id === null) {\r
- return 'res-unknown-' + (++unknownResponseSquenceNumber).toString();\r
- }\r
- else {\r
- return 'res-' + id.toString();\r
- }\r
- }\r
- function createNotificationQueueKey() {\r
- return 'not-' + (++notificationSquenceNumber).toString();\r
- }\r
- function addMessageToQueue(queue, message) {\r
- if (messages_1.isRequestMessage(message)) {\r
- queue.set(createRequestQueueKey(message.id), message);\r
- }\r
- else if (messages_1.isResponseMessage(message)) {\r
- queue.set(createResponseQueueKey(message.id), message);\r
- }\r
- else {\r
- queue.set(createNotificationQueueKey(), message);\r
- }\r
- }\r
- function cancelUndispatched(_message) {\r
- return undefined;\r
- }\r
- function isListening() {\r
- return state === ConnectionState.Listening;\r
- }\r
- function isClosed() {\r
- return state === ConnectionState.Closed;\r
- }\r
- function isDisposed() {\r
- return state === ConnectionState.Disposed;\r
- }\r
- function closeHandler() {\r
- if (state === ConnectionState.New || state === ConnectionState.Listening) {\r
- state = ConnectionState.Closed;\r
- closeEmitter.fire(undefined);\r
- }\r
- // If the connection is disposed don't sent close events.\r
- }\r
- ;\r
- function readErrorHandler(error) {\r
- errorEmitter.fire([error, undefined, undefined]);\r
- }\r
- function writeErrorHandler(data) {\r
- errorEmitter.fire(data);\r
- }\r
- messageReader.onClose(closeHandler);\r
- messageReader.onError(readErrorHandler);\r
- messageWriter.onClose(closeHandler);\r
- messageWriter.onError(writeErrorHandler);\r
- function triggerMessageQueue() {\r
- if (timer || messageQueue.size === 0) {\r
- return;\r
- }\r
- timer = setImmediate(() => {\r
- timer = undefined;\r
- processMessageQueue();\r
- });\r
- }\r
- function processMessageQueue() {\r
- if (messageQueue.size === 0) {\r
- return;\r
- }\r
- let message = messageQueue.shift();\r
- try {\r
- if (messages_1.isRequestMessage(message)) {\r
- handleRequest(message);\r
- }\r
- else if (messages_1.isNotificationMessage(message)) {\r
- handleNotification(message);\r
- }\r
- else if (messages_1.isResponseMessage(message)) {\r
- handleResponse(message);\r
- }\r
- else {\r
- handleInvalidMessage(message);\r
- }\r
- }\r
- finally {\r
- triggerMessageQueue();\r
- }\r
- }\r
- let callback = (message) => {\r
- try {\r
- // We have received a cancellation message. Check if the message is still in the queue\r
- // and cancel it if allowed to do so.\r
- if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) {\r
- let key = createRequestQueueKey(message.params.id);\r
- let toCancel = messageQueue.get(key);\r
- if (messages_1.isRequestMessage(toCancel)) {\r
- let response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\r
- if (response && (response.error !== void 0 || response.result !== void 0)) {\r
- messageQueue.delete(key);\r
- response.id = toCancel.id;\r
- traceSendingResponse(response, message.method, Date.now());\r
- messageWriter.write(response);\r
- return;\r
- }\r
- }\r
- }\r
- addMessageToQueue(messageQueue, message);\r
- }\r
- finally {\r
- triggerMessageQueue();\r
- }\r
- };\r
- function handleRequest(requestMessage) {\r
- if (isDisposed()) {\r
- // we return here silently since we fired an event when the\r
- // connection got disposed.\r
- return;\r
- }\r
- function reply(resultOrError, method, startTime) {\r
- let message = {\r
- jsonrpc: version,\r
- id: requestMessage.id\r
- };\r
- if (resultOrError instanceof messages_1.ResponseError) {\r
- message.error = resultOrError.toJson();\r
- }\r
- else {\r
- message.result = resultOrError === void 0 ? null : resultOrError;\r
- }\r
- traceSendingResponse(message, method, startTime);\r
- messageWriter.write(message);\r
- }\r
- function replyError(error, method, startTime) {\r
- let message = {\r
- jsonrpc: version,\r
- id: requestMessage.id,\r
- error: error.toJson()\r
- };\r
- traceSendingResponse(message, method, startTime);\r
- messageWriter.write(message);\r
- }\r
- function replySuccess(result, method, startTime) {\r
- // The JSON RPC defines that a response must either have a result or an error\r
- // So we can't treat undefined as a valid response result.\r
- if (result === void 0) {\r
- result = null;\r
- }\r
- let message = {\r
- jsonrpc: version,\r
- id: requestMessage.id,\r
- result: result\r
- };\r
- traceSendingResponse(message, method, startTime);\r
- messageWriter.write(message);\r
- }\r
- traceReceivedRequest(requestMessage);\r
- let element = requestHandlers[requestMessage.method];\r
- let type;\r
- let requestHandler;\r
- if (element) {\r
- type = element.type;\r
- requestHandler = element.handler;\r
- }\r
- let startTime = Date.now();\r
- if (requestHandler || starRequestHandler) {\r
- let cancellationSource = new cancellation_1.CancellationTokenSource();\r
- let tokenKey = String(requestMessage.id);\r
- requestTokens[tokenKey] = cancellationSource;\r
- try {\r
- let handlerResult;\r
- if (requestMessage.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) {\r
- handlerResult = requestHandler\r
- ? requestHandler(cancellationSource.token)\r
- : starRequestHandler(requestMessage.method, cancellationSource.token);\r
- }\r
- else if (Is.array(requestMessage.params) && (type === void 0 || type.numberOfParams > 1)) {\r
- handlerResult = requestHandler\r
- ? requestHandler(...requestMessage.params, cancellationSource.token)\r
- : starRequestHandler(requestMessage.method, ...requestMessage.params, cancellationSource.token);\r
- }\r
- else {\r
- handlerResult = requestHandler\r
- ? requestHandler(requestMessage.params, cancellationSource.token)\r
- : starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\r
- }\r
- let promise = handlerResult;\r
- if (!handlerResult) {\r
- delete requestTokens[tokenKey];\r
- replySuccess(handlerResult, requestMessage.method, startTime);\r
- }\r
- else if (promise.then) {\r
- promise.then((resultOrError) => {\r
- delete requestTokens[tokenKey];\r
- reply(resultOrError, requestMessage.method, startTime);\r
- }, error => {\r
- delete requestTokens[tokenKey];\r
- if (error instanceof messages_1.ResponseError) {\r
- replyError(error, requestMessage.method, startTime);\r
- }\r
- else if (error && Is.string(error.message)) {\r
- replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\r
- }\r
- else {\r
- replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\r
- }\r
- });\r
- }\r
- else {\r
- delete requestTokens[tokenKey];\r
- reply(handlerResult, requestMessage.method, startTime);\r
- }\r
- }\r
- catch (error) {\r
- delete requestTokens[tokenKey];\r
- if (error instanceof messages_1.ResponseError) {\r
- reply(error, requestMessage.method, startTime);\r
- }\r
- else if (error && Is.string(error.message)) {\r
- replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\r
- }\r
- else {\r
- replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\r
- }\r
- }\r
- }\r
- else {\r
- replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\r
- }\r
- }\r
- function handleResponse(responseMessage) {\r
- if (isDisposed()) {\r
- // See handle request.\r
- return;\r
- }\r
- if (responseMessage.id === null) {\r
- if (responseMessage.error) {\r
- logger.error(`Received response message without id: Error is: \n${JSON.stringify(responseMessage.error, undefined, 4)}`);\r
- }\r
- else {\r
- logger.error(`Received response message without id. No further error information provided.`);\r
- }\r
- }\r
- else {\r
- let key = String(responseMessage.id);\r
- let responsePromise = responsePromises[key];\r
- traceReceivedResponse(responseMessage, responsePromise);\r
- if (responsePromise) {\r
- delete responsePromises[key];\r
- try {\r
- if (responseMessage.error) {\r
- let error = responseMessage.error;\r
- responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\r
- }\r
- else if (responseMessage.result !== void 0) {\r
- responsePromise.resolve(responseMessage.result);\r
- }\r
- else {\r
- throw new Error('Should never happen.');\r
- }\r
- }\r
- catch (error) {\r
- if (error.message) {\r
- logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\r
- }\r
- else {\r
- logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\r
- }\r
- }\r
- }\r
- }\r
- }\r
- function handleNotification(message) {\r
- if (isDisposed()) {\r
- // See handle request.\r
- return;\r
- }\r
- let type = undefined;\r
- let notificationHandler;\r
- if (message.method === CancelNotification.type.method) {\r
- notificationHandler = (params) => {\r
- let id = params.id;\r
- let source = requestTokens[String(id)];\r
- if (source) {\r
- source.cancel();\r
- }\r
- };\r
- }\r
- else {\r
- let element = notificationHandlers[message.method];\r
- if (element) {\r
- notificationHandler = element.handler;\r
- type = element.type;\r
- }\r
- }\r
- if (notificationHandler || starNotificationHandler) {\r
- try {\r
- traceReceivedNotification(message);\r
- if (message.params === void 0 || (type !== void 0 && type.numberOfParams === 0)) {\r
- notificationHandler ? notificationHandler() : starNotificationHandler(message.method);\r
- }\r
- else if (Is.array(message.params) && (type === void 0 || type.numberOfParams > 1)) {\r
- notificationHandler ? notificationHandler(...message.params) : starNotificationHandler(message.method, ...message.params);\r
- }\r
- else {\r
- notificationHandler ? notificationHandler(message.params) : starNotificationHandler(message.method, message.params);\r
- }\r
- }\r
- catch (error) {\r
- if (error.message) {\r
- logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\r
- }\r
- else {\r
- logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\r
- }\r
- }\r
- }\r
- else {\r
- unhandledNotificationEmitter.fire(message);\r
- }\r
- }\r
- function handleInvalidMessage(message) {\r
- if (!message) {\r
- logger.error('Received empty message.');\r
- return;\r
- }\r
- logger.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(message, null, 4)}`);\r
- // Test whether we find an id to reject the promise\r
- let responseMessage = message;\r
- if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\r
- let key = String(responseMessage.id);\r
- let responseHandler = responsePromises[key];\r
- if (responseHandler) {\r
- responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\r
- }\r
- }\r
- }\r
- function traceSendingRequest(message) {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose && message.params) {\r
- data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`;\r
- }\r
- tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\r
- }\r
- else {\r
- logLSPMessage('send-request', message);\r
- }\r
- }\r
- function traceSendingNotification(message) {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose) {\r
- if (message.params) {\r
- data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`;\r
- }\r
- else {\r
- data = 'No parameters provided.\n\n';\r
- }\r
- }\r
- tracer.log(`Sending notification '${message.method}'.`, data);\r
- }\r
- else {\r
- logLSPMessage('send-notification', message);\r
- }\r
- }\r
- function traceSendingResponse(message, method, startTime) {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose) {\r
- if (message.error && message.error.data) {\r
- data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`;\r
- }\r
- else {\r
- if (message.result) {\r
- data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`;\r
- }\r
- else if (message.error === void 0) {\r
- data = 'No result returned.\n\n';\r
- }\r
- }\r
- }\r
- tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\r
- }\r
- else {\r
- logLSPMessage('send-response', message);\r
- }\r
- }\r
- function traceReceivedRequest(message) {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose && message.params) {\r
- data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`;\r
- }\r
- tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\r
- }\r
- else {\r
- logLSPMessage('receive-request', message);\r
- }\r
- }\r
- function traceReceivedNotification(message) {\r
- if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose) {\r
- if (message.params) {\r
- data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`;\r
- }\r
- else {\r
- data = 'No parameters provided.\n\n';\r
- }\r
- }\r
- tracer.log(`Received notification '${message.method}'.`, data);\r
- }\r
- else {\r
- logLSPMessage('receive-notification', message);\r
- }\r
- }\r
- function traceReceivedResponse(message, responsePromise) {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- if (traceFormat === TraceFormat.Text) {\r
- let data = undefined;\r
- if (trace === Trace.Verbose) {\r
- if (message.error && message.error.data) {\r
- data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`;\r
- }\r
- else {\r
- if (message.result) {\r
- data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`;\r
- }\r
- else if (message.error === void 0) {\r
- data = 'No result returned.\n\n';\r
- }\r
- }\r
- }\r
- if (responsePromise) {\r
- let error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\r
- tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\r
- }\r
- else {\r
- tracer.log(`Received response ${message.id} without active response promise.`, data);\r
- }\r
- }\r
- else {\r
- logLSPMessage('receive-response', message);\r
- }\r
- }\r
- function logLSPMessage(type, message) {\r
- if (!tracer || trace === Trace.Off) {\r
- return;\r
- }\r
- const lspMessage = {\r
- isLSPMessage: true,\r
- type,\r
- message,\r
- timestamp: Date.now()\r
- };\r
- tracer.log(lspMessage);\r
- }\r
- function throwIfClosedOrDisposed() {\r
- if (isClosed()) {\r
- throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\r
- }\r
- if (isDisposed()) {\r
- throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\r
- }\r
- }\r
- function throwIfListening() {\r
- if (isListening()) {\r
- throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\r
- }\r
- }\r
- function throwIfNotListening() {\r
- if (!isListening()) {\r
- throw new Error('Call listen() first.');\r
- }\r
- }\r
- function undefinedToNull(param) {\r
- if (param === void 0) {\r
- return null;\r
- }\r
- else {\r
- return param;\r
- }\r
- }\r
- function computeMessageParams(type, params) {\r
- let result;\r
- let numberOfParams = type.numberOfParams;\r
- switch (numberOfParams) {\r
- case 0:\r
- result = null;\r
- break;\r
- case 1:\r
- result = undefinedToNull(params[0]);\r
- break;\r
- default:\r
- result = [];\r
- for (let i = 0; i < params.length && i < numberOfParams; i++) {\r
- result.push(undefinedToNull(params[i]));\r
- }\r
- if (params.length < numberOfParams) {\r
- for (let i = params.length; i < numberOfParams; i++) {\r
- result.push(null);\r
- }\r
- }\r
- break;\r
- }\r
- return result;\r
- }\r
- let connection = {\r
- sendNotification: (type, ...params) => {\r
- throwIfClosedOrDisposed();\r
- let method;\r
- let messageParams;\r
- if (Is.string(type)) {\r
- method = type;\r
- switch (params.length) {\r
- case 0:\r
- messageParams = null;\r
- break;\r
- case 1:\r
- messageParams = params[0];\r
- break;\r
- default:\r
- messageParams = params;\r
- break;\r
- }\r
- }\r
- else {\r
- method = type.method;\r
- messageParams = computeMessageParams(type, params);\r
- }\r
- let notificationMessage = {\r
- jsonrpc: version,\r
- method: method,\r
- params: messageParams\r
- };\r
- traceSendingNotification(notificationMessage);\r
- messageWriter.write(notificationMessage);\r
- },\r
- onNotification: (type, handler) => {\r
- throwIfClosedOrDisposed();\r
- if (Is.func(type)) {\r
- starNotificationHandler = type;\r
- }\r
- else if (handler) {\r
- if (Is.string(type)) {\r
- notificationHandlers[type] = { type: undefined, handler };\r
- }\r
- else {\r
- notificationHandlers[type.method] = { type, handler };\r
- }\r
- }\r
- },\r
- sendRequest: (type, ...params) => {\r
- throwIfClosedOrDisposed();\r
- throwIfNotListening();\r
- let method;\r
- let messageParams;\r
- let token = undefined;\r
- if (Is.string(type)) {\r
- method = type;\r
- switch (params.length) {\r
- case 0:\r
- messageParams = null;\r
- break;\r
- case 1:\r
- // The cancellation token is optional so it can also be undefined.\r
- if (cancellation_1.CancellationToken.is(params[0])) {\r
- messageParams = null;\r
- token = params[0];\r
- }\r
- else {\r
- messageParams = undefinedToNull(params[0]);\r
- }\r
- break;\r
- default:\r
- const last = params.length - 1;\r
- if (cancellation_1.CancellationToken.is(params[last])) {\r
- token = params[last];\r
- if (params.length === 2) {\r
- messageParams = undefinedToNull(params[0]);\r
- }\r
- else {\r
- messageParams = params.slice(0, last).map(value => undefinedToNull(value));\r
- }\r
- }\r
- else {\r
- messageParams = params.map(value => undefinedToNull(value));\r
- }\r
- break;\r
- }\r
- }\r
- else {\r
- method = type.method;\r
- messageParams = computeMessageParams(type, params);\r
- let numberOfParams = type.numberOfParams;\r
- token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\r
- }\r
- let id = sequenceNumber++;\r
- let result = new Promise((resolve, reject) => {\r
- let requestMessage = {\r
- jsonrpc: version,\r
- id: id,\r
- method: method,\r
- params: messageParams\r
- };\r
- let responsePromise = { method: method, timerStart: Date.now(), resolve, reject };\r
- traceSendingRequest(requestMessage);\r
- try {\r
- messageWriter.write(requestMessage);\r
- }\r
- catch (e) {\r
- // Writing the message failed. So we need to reject the promise.\r
- responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, e.message ? e.message : 'Unknown reason'));\r
- responsePromise = null;\r
- }\r
- if (responsePromise) {\r
- responsePromises[String(id)] = responsePromise;\r
- }\r
- });\r
- if (token) {\r
- token.onCancellationRequested(() => {\r
- connection.sendNotification(CancelNotification.type, { id });\r
- });\r
- }\r
- return result;\r
- },\r
- onRequest: (type, handler) => {\r
- throwIfClosedOrDisposed();\r
- if (Is.func(type)) {\r
- starRequestHandler = type;\r
- }\r
- else if (handler) {\r
- if (Is.string(type)) {\r
- requestHandlers[type] = { type: undefined, handler };\r
- }\r
- else {\r
- requestHandlers[type.method] = { type, handler };\r
- }\r
- }\r
- },\r
- trace: (_value, _tracer, sendNotificationOrTraceOptions) => {\r
- let _sendNotification = false;\r
- let _traceFormat = TraceFormat.Text;\r
- if (sendNotificationOrTraceOptions !== void 0) {\r
- if (Is.boolean(sendNotificationOrTraceOptions)) {\r
- _sendNotification = sendNotificationOrTraceOptions;\r
- }\r
- else {\r
- _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\r
- _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\r
- }\r
- }\r
- trace = _value;\r
- traceFormat = _traceFormat;\r
- if (trace === Trace.Off) {\r
- tracer = undefined;\r
- }\r
- else {\r
- tracer = _tracer;\r
- }\r
- if (_sendNotification && !isClosed() && !isDisposed()) {\r
- connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\r
- }\r
- },\r
- onError: errorEmitter.event,\r
- onClose: closeEmitter.event,\r
- onUnhandledNotification: unhandledNotificationEmitter.event,\r
- onDispose: disposeEmitter.event,\r
- dispose: () => {\r
- if (isDisposed()) {\r
- return;\r
- }\r
- state = ConnectionState.Disposed;\r
- disposeEmitter.fire(undefined);\r
- let error = new Error('Connection got disposed.');\r
- Object.keys(responsePromises).forEach((key) => {\r
- responsePromises[key].reject(error);\r
- });\r
- responsePromises = Object.create(null);\r
- requestTokens = Object.create(null);\r
- messageQueue = new linkedMap_1.LinkedMap();\r
- // Test for backwards compatibility\r
- if (Is.func(messageWriter.dispose)) {\r
- messageWriter.dispose();\r
- }\r
- if (Is.func(messageReader.dispose)) {\r
- messageReader.dispose();\r
- }\r
- },\r
- listen: () => {\r
- throwIfClosedOrDisposed();\r
- throwIfListening();\r
- state = ConnectionState.Listening;\r
- messageReader.listen(callback);\r
- },\r
- inspect: () => {\r
- console.log("inspect");\r
- }\r
- };\r
- connection.onNotification(LogTraceNotification.type, (params) => {\r
- if (trace === Trace.Off || !tracer) {\r
- return;\r
- }\r
- tracer.log(params.message, trace === Trace.Verbose ? params.verbose : undefined);\r
- });\r
- return connection;\r
-}\r
-function isMessageReader(value) {\r
- return value.listen !== void 0 && value.read === void 0;\r
-}\r
-function isMessageWriter(value) {\r
- return value.write !== void 0 && value.end === void 0;\r
-}\r
-function createMessageConnection(input, output, logger, strategy) {\r
- if (!logger) {\r
- logger = exports.NullLogger;\r
- }\r
- let reader = isMessageReader(input) ? input : new messageReader_1.StreamMessageReader(input);\r
- let writer = isMessageWriter(output) ? output : new messageWriter_1.StreamMessageWriter(output);\r
- return _createMessageConnection(reader, writer, logger, strategy);\r
-}\r
-exports.createMessageConnection = createMessageConnection;\r
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-function boolean(value) {\r
- return value === true || value === false;\r
-}\r
-exports.boolean = boolean;\r
-function string(value) {\r
- return typeof value === 'string' || value instanceof String;\r
-}\r
-exports.string = string;\r
-function number(value) {\r
- return typeof value === 'number' || value instanceof Number;\r
-}\r
-exports.number = number;\r
-function error(value) {\r
- return value instanceof Error;\r
-}\r
-exports.error = error;\r
-function func(value) {\r
- return typeof value === 'function';\r
-}\r
-exports.func = func;\r
-function array(value) {\r
- return Array.isArray(value);\r
-}\r
-exports.array = array;\r
-function stringArray(value) {\r
- return array(value) && value.every(elem => string(elem));\r
-}\r
-exports.stringArray = stringArray;\r
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const is = __webpack_require__(7);\r
-/**\r
- * Predefined error codes.\r
- */\r
-var ErrorCodes;\r
-(function (ErrorCodes) {\r
- // Defined by JSON RPC\r
- ErrorCodes.ParseError = -32700;\r
- ErrorCodes.InvalidRequest = -32600;\r
- ErrorCodes.MethodNotFound = -32601;\r
- ErrorCodes.InvalidParams = -32602;\r
- ErrorCodes.InternalError = -32603;\r
- ErrorCodes.serverErrorStart = -32099;\r
- ErrorCodes.serverErrorEnd = -32000;\r
- ErrorCodes.ServerNotInitialized = -32002;\r
- ErrorCodes.UnknownErrorCode = -32001;\r
- // Defined by the protocol.\r
- ErrorCodes.RequestCancelled = -32800;\r
- // Defined by VSCode library.\r
- ErrorCodes.MessageWriteError = 1;\r
- ErrorCodes.MessageReadError = 2;\r
-})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\r
-/**\r
- * An error object return in a response in case a request\r
- * has failed.\r
- */\r
-class ResponseError extends Error {\r
- constructor(code, message, data) {\r
- super(message);\r
- this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\r
- this.data = data;\r
- Object.setPrototypeOf(this, ResponseError.prototype);\r
- }\r
- toJson() {\r
- return {\r
- code: this.code,\r
- message: this.message,\r
- data: this.data,\r
- };\r
- }\r
-}\r
-exports.ResponseError = ResponseError;\r
-/**\r
- * An abstract implementation of a MessageType.\r
- */\r
-class AbstractMessageType {\r
- constructor(_method, _numberOfParams) {\r
- this._method = _method;\r
- this._numberOfParams = _numberOfParams;\r
- }\r
- get method() {\r
- return this._method;\r
- }\r
- get numberOfParams() {\r
- return this._numberOfParams;\r
- }\r
-}\r
-exports.AbstractMessageType = AbstractMessageType;\r
-/**\r
- * Classes to type request response pairs\r
- */\r
-class RequestType0 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 0);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType0 = RequestType0;\r
-class RequestType extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 1);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType = RequestType;\r
-class RequestType1 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 1);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType1 = RequestType1;\r
-class RequestType2 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 2);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType2 = RequestType2;\r
-class RequestType3 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 3);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType3 = RequestType3;\r
-class RequestType4 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 4);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType4 = RequestType4;\r
-class RequestType5 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 5);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType5 = RequestType5;\r
-class RequestType6 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 6);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType6 = RequestType6;\r
-class RequestType7 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 7);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType7 = RequestType7;\r
-class RequestType8 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 8);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType8 = RequestType8;\r
-class RequestType9 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 9);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.RequestType9 = RequestType9;\r
-class NotificationType extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 1);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType = NotificationType;\r
-class NotificationType0 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 0);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType0 = NotificationType0;\r
-class NotificationType1 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 1);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType1 = NotificationType1;\r
-class NotificationType2 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 2);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType2 = NotificationType2;\r
-class NotificationType3 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 3);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType3 = NotificationType3;\r
-class NotificationType4 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 4);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType4 = NotificationType4;\r
-class NotificationType5 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 5);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType5 = NotificationType5;\r
-class NotificationType6 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 6);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType6 = NotificationType6;\r
-class NotificationType7 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 7);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType7 = NotificationType7;\r
-class NotificationType8 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 8);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType8 = NotificationType8;\r
-class NotificationType9 extends AbstractMessageType {\r
- constructor(method) {\r
- super(method, 9);\r
- this._ = undefined;\r
- }\r
-}\r
-exports.NotificationType9 = NotificationType9;\r
-/**\r
- * Tests if the given message is a request message\r
- */\r
-function isRequestMessage(message) {\r
- let candidate = message;\r
- return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\r
-}\r
-exports.isRequestMessage = isRequestMessage;\r
-/**\r
- * Tests if the given message is a notification message\r
- */\r
-function isNotificationMessage(message) {\r
- let candidate = message;\r
- return candidate && is.string(candidate.method) && message.id === void 0;\r
-}\r
-exports.isNotificationMessage = isNotificationMessage;\r
-/**\r
- * Tests if the given message is a response message\r
- */\r
-function isResponseMessage(message) {\r
- let candidate = message;\r
- return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\r
-}\r
-exports.isResponseMessage = isResponseMessage;\r
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const events_1 = __webpack_require__(10);\r
-const Is = __webpack_require__(7);\r
-let DefaultSize = 8192;\r
-let CR = Buffer.from('\r', 'ascii')[0];\r
-let LF = Buffer.from('\n', 'ascii')[0];\r
-let CRLF = '\r\n';\r
-class MessageBuffer {\r
- constructor(encoding = 'utf8') {\r
- this.encoding = encoding;\r
- this.index = 0;\r
- this.buffer = Buffer.allocUnsafe(DefaultSize);\r
- }\r
- append(chunk) {\r
- var toAppend = chunk;\r
- if (typeof (chunk) === 'string') {\r
- var str = chunk;\r
- var bufferLen = Buffer.byteLength(str, this.encoding);\r
- toAppend = Buffer.allocUnsafe(bufferLen);\r
- toAppend.write(str, 0, bufferLen, this.encoding);\r
- }\r
- if (this.buffer.length - this.index >= toAppend.length) {\r
- toAppend.copy(this.buffer, this.index, 0, toAppend.length);\r
- }\r
- else {\r
- var newSize = (Math.ceil((this.index + toAppend.length) / DefaultSize) + 1) * DefaultSize;\r
- if (this.index === 0) {\r
- this.buffer = Buffer.allocUnsafe(newSize);\r
- toAppend.copy(this.buffer, 0, 0, toAppend.length);\r
- }\r
- else {\r
- this.buffer = Buffer.concat([this.buffer.slice(0, this.index), toAppend], newSize);\r
- }\r
- }\r
- this.index += toAppend.length;\r
- }\r
- tryReadHeaders() {\r
- let result = undefined;\r
- let current = 0;\r
- while (current + 3 < this.index && (this.buffer[current] !== CR || this.buffer[current + 1] !== LF || this.buffer[current + 2] !== CR || this.buffer[current + 3] !== LF)) {\r
- current++;\r
- }\r
- // No header / body separator found (e.g CRLFCRLF)\r
- if (current + 3 >= this.index) {\r
- return result;\r
- }\r
- result = Object.create(null);\r
- let headers = this.buffer.toString('ascii', 0, current).split(CRLF);\r
- headers.forEach((header) => {\r
- let index = header.indexOf(':');\r
- if (index === -1) {\r
- throw new Error('Message header must separate key and value using :');\r
- }\r
- let key = header.substr(0, index);\r
- let value = header.substr(index + 1).trim();\r
- result[key] = value;\r
- });\r
- let nextStart = current + 4;\r
- this.buffer = this.buffer.slice(nextStart);\r
- this.index = this.index - nextStart;\r
- return result;\r
- }\r
- tryReadContent(length) {\r
- if (this.index < length) {\r
- return null;\r
- }\r
- let result = this.buffer.toString(this.encoding, 0, length);\r
- let nextStart = length;\r
- this.buffer.copy(this.buffer, 0, nextStart);\r
- this.index = this.index - nextStart;\r
- return result;\r
- }\r
- get numberOfBytes() {\r
- return this.index;\r
- }\r
-}\r
-var MessageReader;\r
-(function (MessageReader) {\r
- function is(value) {\r
- let candidate = value;\r
- return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\r
- Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\r
- }\r
- MessageReader.is = is;\r
-})(MessageReader = exports.MessageReader || (exports.MessageReader = {}));\r
-class AbstractMessageReader {\r
- constructor() {\r
- this.errorEmitter = new events_1.Emitter();\r
- this.closeEmitter = new events_1.Emitter();\r
- this.partialMessageEmitter = new events_1.Emitter();\r
- }\r
- dispose() {\r
- this.errorEmitter.dispose();\r
- this.closeEmitter.dispose();\r
- }\r
- get onError() {\r
- return this.errorEmitter.event;\r
- }\r
- fireError(error) {\r
- this.errorEmitter.fire(this.asError(error));\r
- }\r
- get onClose() {\r
- return this.closeEmitter.event;\r
- }\r
- fireClose() {\r
- this.closeEmitter.fire(undefined);\r
- }\r
- get onPartialMessage() {\r
- return this.partialMessageEmitter.event;\r
- }\r
- firePartialMessage(info) {\r
- this.partialMessageEmitter.fire(info);\r
- }\r
- asError(error) {\r
- if (error instanceof Error) {\r
- return error;\r
- }\r
- else {\r
- return new Error(`Reader recevied error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\r
- }\r
- }\r
-}\r
-exports.AbstractMessageReader = AbstractMessageReader;\r
-class StreamMessageReader extends AbstractMessageReader {\r
- constructor(readable, encoding = 'utf8') {\r
- super();\r
- this.readable = readable;\r
- this.buffer = new MessageBuffer(encoding);\r
- this._partialMessageTimeout = 10000;\r
- }\r
- set partialMessageTimeout(timeout) {\r
- this._partialMessageTimeout = timeout;\r
- }\r
- get partialMessageTimeout() {\r
- return this._partialMessageTimeout;\r
- }\r
- listen(callback) {\r
- this.nextMessageLength = -1;\r
- this.messageToken = 0;\r
- this.partialMessageTimer = undefined;\r
- this.callback = callback;\r
- this.readable.on('data', (data) => {\r
- this.onData(data);\r
- });\r
- this.readable.on('error', (error) => this.fireError(error));\r
- this.readable.on('close', () => this.fireClose());\r
- }\r
- onData(data) {\r
- this.buffer.append(data);\r
- while (true) {\r
- if (this.nextMessageLength === -1) {\r
- let headers = this.buffer.tryReadHeaders();\r
- if (!headers) {\r
- return;\r
- }\r
- let contentLength = headers['Content-Length'];\r
- if (!contentLength) {\r
- throw new Error('Header must provide a Content-Length property.');\r
- }\r
- let length = parseInt(contentLength);\r
- if (isNaN(length)) {\r
- throw new Error('Content-Length value must be a number.');\r
- }\r
- this.nextMessageLength = length;\r
- // Take the encoding form the header. For compatibility\r
- // treat both utf-8 and utf8 as node utf8\r
- }\r
- var msg = this.buffer.tryReadContent(this.nextMessageLength);\r
- if (msg === null) {\r
- /** We haven't recevied the full message yet. */\r
- this.setPartialMessageTimer();\r
- return;\r
- }\r
- this.clearPartialMessageTimer();\r
- this.nextMessageLength = -1;\r
- this.messageToken++;\r
- var json = JSON.parse(msg);\r
- this.callback(json);\r
- }\r
- }\r
- clearPartialMessageTimer() {\r
- if (this.partialMessageTimer) {\r
- clearTimeout(this.partialMessageTimer);\r
- this.partialMessageTimer = undefined;\r
- }\r
- }\r
- setPartialMessageTimer() {\r
- this.clearPartialMessageTimer();\r
- if (this._partialMessageTimeout <= 0) {\r
- return;\r
- }\r
- this.partialMessageTimer = setTimeout((token, timeout) => {\r
- this.partialMessageTimer = undefined;\r
- if (token === this.messageToken) {\r
- this.firePartialMessage({ messageToken: token, waitingTime: timeout });\r
- this.setPartialMessageTimer();\r
- }\r
- }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\r
- }\r
-}\r
-exports.StreamMessageReader = StreamMessageReader;\r
-class IPCMessageReader extends AbstractMessageReader {\r
- constructor(process) {\r
- super();\r
- this.process = process;\r
- let eventEmitter = this.process;\r
- eventEmitter.on('error', (error) => this.fireError(error));\r
- eventEmitter.on('close', () => this.fireClose());\r
- }\r
- listen(callback) {\r
- this.process.on('message', callback);\r
- }\r
-}\r
-exports.IPCMessageReader = IPCMessageReader;\r
-class SocketMessageReader extends StreamMessageReader {\r
- constructor(socket, encoding = 'utf-8') {\r
- super(socket, encoding);\r
- }\r
-}\r
-exports.SocketMessageReader = SocketMessageReader;\r
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-var Disposable;\r
-(function (Disposable) {\r
- function create(func) {\r
- return {\r
- dispose: func\r
- };\r
- }\r
- Disposable.create = create;\r
-})(Disposable = exports.Disposable || (exports.Disposable = {}));\r
-var Event;\r
-(function (Event) {\r
- const _disposable = { dispose() { } };\r
- Event.None = function () { return _disposable; };\r
-})(Event = exports.Event || (exports.Event = {}));\r
-class CallbackList {\r
- add(callback, context = null, bucket) {\r
- if (!this._callbacks) {\r
- this._callbacks = [];\r
- this._contexts = [];\r
- }\r
- this._callbacks.push(callback);\r
- this._contexts.push(context);\r
- if (Array.isArray(bucket)) {\r
- bucket.push({ dispose: () => this.remove(callback, context) });\r
- }\r
- }\r
- remove(callback, context = null) {\r
- if (!this._callbacks) {\r
- return;\r
- }\r
- var foundCallbackWithDifferentContext = false;\r
- for (var i = 0, len = this._callbacks.length; i < len; i++) {\r
- if (this._callbacks[i] === callback) {\r
- if (this._contexts[i] === context) {\r
- // callback & context match => remove it\r
- this._callbacks.splice(i, 1);\r
- this._contexts.splice(i, 1);\r
- return;\r
- }\r
- else {\r
- foundCallbackWithDifferentContext = true;\r
- }\r
- }\r
- }\r
- if (foundCallbackWithDifferentContext) {\r
- throw new Error('When adding a listener with a context, you should remove it with the same context');\r
- }\r
- }\r
- invoke(...args) {\r
- if (!this._callbacks) {\r
- return [];\r
- }\r
- var ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\r
- for (var i = 0, len = callbacks.length; i < len; i++) {\r
- try {\r
- ret.push(callbacks[i].apply(contexts[i], args));\r
- }\r
- catch (e) {\r
- console.error(e);\r
- }\r
- }\r
- return ret;\r
- }\r
- isEmpty() {\r
- return !this._callbacks || this._callbacks.length === 0;\r
- }\r
- dispose() {\r
- this._callbacks = undefined;\r
- this._contexts = undefined;\r
- }\r
-}\r
-class Emitter {\r
- constructor(_options) {\r
- this._options = _options;\r
- }\r
- /**\r
- * For the public to allow to subscribe\r
- * to events from this Emitter\r
- */\r
- get event() {\r
- if (!this._event) {\r
- this._event = (listener, thisArgs, disposables) => {\r
- if (!this._callbacks) {\r
- this._callbacks = new CallbackList();\r
- }\r
- if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\r
- this._options.onFirstListenerAdd(this);\r
- }\r
- this._callbacks.add(listener, thisArgs);\r
- let result;\r
- result = {\r
- dispose: () => {\r
- this._callbacks.remove(listener, thisArgs);\r
- result.dispose = Emitter._noop;\r
- if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\r
- this._options.onLastListenerRemove(this);\r
- }\r
- }\r
- };\r
- if (Array.isArray(disposables)) {\r
- disposables.push(result);\r
- }\r
- return result;\r
- };\r
- }\r
- return this._event;\r
- }\r
- /**\r
- * To be kept private to fire an event to\r
- * subscribers\r
- */\r
- fire(event) {\r
- if (this._callbacks) {\r
- this._callbacks.invoke.call(this._callbacks, event);\r
- }\r
- }\r
- dispose() {\r
- if (this._callbacks) {\r
- this._callbacks.dispose();\r
- this._callbacks = undefined;\r
- }\r
- }\r
-}\r
-Emitter._noop = function () { };\r
-exports.Emitter = Emitter;\r
-
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const events_1 = __webpack_require__(10);\r
-const Is = __webpack_require__(7);\r
-let ContentLength = 'Content-Length: ';\r
-let CRLF = '\r\n';\r
-var MessageWriter;\r
-(function (MessageWriter) {\r
- function is(value) {\r
- let candidate = value;\r
- return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\r
- Is.func(candidate.onError) && Is.func(candidate.write);\r
- }\r
- MessageWriter.is = is;\r
-})(MessageWriter = exports.MessageWriter || (exports.MessageWriter = {}));\r
-class AbstractMessageWriter {\r
- constructor() {\r
- this.errorEmitter = new events_1.Emitter();\r
- this.closeEmitter = new events_1.Emitter();\r
- }\r
- dispose() {\r
- this.errorEmitter.dispose();\r
- this.closeEmitter.dispose();\r
- }\r
- get onError() {\r
- return this.errorEmitter.event;\r
- }\r
- fireError(error, message, count) {\r
- this.errorEmitter.fire([this.asError(error), message, count]);\r
- }\r
- get onClose() {\r
- return this.closeEmitter.event;\r
- }\r
- fireClose() {\r
- this.closeEmitter.fire(undefined);\r
- }\r
- asError(error) {\r
- if (error instanceof Error) {\r
- return error;\r
- }\r
- else {\r
- return new Error(`Writer recevied error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\r
- }\r
- }\r
-}\r
-exports.AbstractMessageWriter = AbstractMessageWriter;\r
-class StreamMessageWriter extends AbstractMessageWriter {\r
- constructor(writable, encoding = 'utf8') {\r
- super();\r
- this.writable = writable;\r
- this.encoding = encoding;\r
- this.errorCount = 0;\r
- this.writable.on('error', (error) => this.fireError(error));\r
- this.writable.on('close', () => this.fireClose());\r
- }\r
- write(msg) {\r
- let json = JSON.stringify(msg);\r
- let contentLength = Buffer.byteLength(json, this.encoding);\r
- let headers = [\r
- ContentLength, contentLength.toString(), CRLF,\r
- CRLF\r
- ];\r
- try {\r
- // Header must be written in ASCII encoding\r
- this.writable.write(headers.join(''), 'ascii');\r
- // Now write the content. This can be written in any encoding\r
- this.writable.write(json, this.encoding);\r
- this.errorCount = 0;\r
- }\r
- catch (error) {\r
- this.errorCount++;\r
- this.fireError(error, msg, this.errorCount);\r
- }\r
- }\r
-}\r
-exports.StreamMessageWriter = StreamMessageWriter;\r
-class IPCMessageWriter extends AbstractMessageWriter {\r
- constructor(process) {\r
- super();\r
- this.process = process;\r
- this.errorCount = 0;\r
- this.queue = [];\r
- this.sending = false;\r
- let eventEmitter = this.process;\r
- eventEmitter.on('error', (error) => this.fireError(error));\r
- eventEmitter.on('close', () => this.fireClose);\r
- }\r
- write(msg) {\r
- if (!this.sending && this.queue.length === 0) {\r
- // See https://github.com/nodejs/node/issues/7657\r
- this.doWriteMessage(msg);\r
- }\r
- else {\r
- this.queue.push(msg);\r
- }\r
- }\r
- doWriteMessage(msg) {\r
- try {\r
- if (this.process.send) {\r
- this.sending = true;\r
- this.process.send(msg, undefined, undefined, (error) => {\r
- this.sending = false;\r
- if (error) {\r
- this.errorCount++;\r
- this.fireError(error, msg, this.errorCount);\r
- }\r
- else {\r
- this.errorCount = 0;\r
- }\r
- if (this.queue.length > 0) {\r
- this.doWriteMessage(this.queue.shift());\r
- }\r
- });\r
- }\r
- }\r
- catch (error) {\r
- this.errorCount++;\r
- this.fireError(error, msg, this.errorCount);\r
- }\r
- }\r
-}\r
-exports.IPCMessageWriter = IPCMessageWriter;\r
-class SocketMessageWriter extends AbstractMessageWriter {\r
- constructor(socket, encoding = 'utf8') {\r
- super();\r
- this.socket = socket;\r
- this.queue = [];\r
- this.sending = false;\r
- this.encoding = encoding;\r
- this.errorCount = 0;\r
- this.socket.on('error', (error) => this.fireError(error));\r
- this.socket.on('close', () => this.fireClose());\r
- }\r
- write(msg) {\r
- if (!this.sending && this.queue.length === 0) {\r
- // See https://github.com/nodejs/node/issues/7657\r
- this.doWriteMessage(msg);\r
- }\r
- else {\r
- this.queue.push(msg);\r
- }\r
- }\r
- doWriteMessage(msg) {\r
- let json = JSON.stringify(msg);\r
- let contentLength = Buffer.byteLength(json, this.encoding);\r
- let headers = [\r
- ContentLength, contentLength.toString(), CRLF,\r
- CRLF\r
- ];\r
- try {\r
- // Header must be written in ASCII encoding\r
- this.sending = true;\r
- this.socket.write(headers.join(''), 'ascii', (error) => {\r
- if (error) {\r
- this.handleError(error, msg);\r
- }\r
- try {\r
- // Now write the content. This can be written in any encoding\r
- this.socket.write(json, this.encoding, (error) => {\r
- this.sending = false;\r
- if (error) {\r
- this.handleError(error, msg);\r
- }\r
- else {\r
- this.errorCount = 0;\r
- }\r
- if (this.queue.length > 0) {\r
- this.doWriteMessage(this.queue.shift());\r
- }\r
- });\r
- }\r
- catch (error) {\r
- this.handleError(error, msg);\r
- }\r
- });\r
- }\r
- catch (error) {\r
- this.handleError(error, msg);\r
- }\r
- }\r
- handleError(error, msg) {\r
- this.errorCount++;\r
- this.fireError(error, msg, this.errorCount);\r
- }\r
-}\r
-exports.SocketMessageWriter = SocketMessageWriter;\r
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/*---------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- *--------------------------------------------------------------------------------------------*/\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const events_1 = __webpack_require__(10);\r
-const Is = __webpack_require__(7);\r
-var CancellationToken;\r
-(function (CancellationToken) {\r
- CancellationToken.None = Object.freeze({\r
- isCancellationRequested: false,\r
- onCancellationRequested: events_1.Event.None\r
- });\r
- CancellationToken.Cancelled = Object.freeze({\r
- isCancellationRequested: true,\r
- onCancellationRequested: events_1.Event.None\r
- });\r
- function is(value) {\r
- let candidate = value;\r
- return candidate && (candidate === CancellationToken.None\r
- || candidate === CancellationToken.Cancelled\r
- || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\r
- }\r
- CancellationToken.is = is;\r
-})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));\r
-const shortcutEvent = Object.freeze(function (callback, context) {\r
- let handle = setTimeout(callback.bind(context), 0);\r
- return { dispose() { clearTimeout(handle); } };\r
-});\r
-class MutableToken {\r
- constructor() {\r
- this._isCancelled = false;\r
- }\r
- cancel() {\r
- if (!this._isCancelled) {\r
- this._isCancelled = true;\r
- if (this._emitter) {\r
- this._emitter.fire(undefined);\r
- this._emitter = undefined;\r
- }\r
- }\r
- }\r
- get isCancellationRequested() {\r
- return this._isCancelled;\r
- }\r
- get onCancellationRequested() {\r
- if (this._isCancelled) {\r
- return shortcutEvent;\r
- }\r
- if (!this._emitter) {\r
- this._emitter = new events_1.Emitter();\r
- }\r
- return this._emitter.event;\r
- }\r
-}\r
-class CancellationTokenSource {\r
- get token() {\r
- if (!this._token) {\r
- // be lazy and create the token only when\r
- // actually needed\r
- this._token = new MutableToken();\r
- }\r
- return this._token;\r
- }\r
- cancel() {\r
- if (!this._token) {\r
- // save an object by returning the default\r
- // cancelled token when cancellation happens\r
- // before someone asks for the token\r
- this._token = CancellationToken.Cancelled;\r
- }\r
- else {\r
- this._token.cancel();\r
- }\r
- }\r
- dispose() {\r
- this.cancel();\r
- }\r
-}\r
-exports.CancellationTokenSource = CancellationTokenSource;\r
-
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-\r
-/*---------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- *--------------------------------------------------------------------------------------------*/\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-var Touch;\r
-(function (Touch) {\r
- Touch.None = 0;\r
- Touch.First = 1;\r
- Touch.Last = 2;\r
-})(Touch = exports.Touch || (exports.Touch = {}));\r
-class LinkedMap {\r
- constructor() {\r
- this._map = new Map();\r
- this._head = undefined;\r
- this._tail = undefined;\r
- this._size = 0;\r
- }\r
- clear() {\r
- this._map.clear();\r
- this._head = undefined;\r
- this._tail = undefined;\r
- this._size = 0;\r
- }\r
- isEmpty() {\r
- return !this._head && !this._tail;\r
- }\r
- get size() {\r
- return this._size;\r
- }\r
- has(key) {\r
- return this._map.has(key);\r
- }\r
- get(key) {\r
- const item = this._map.get(key);\r
- if (!item) {\r
- return undefined;\r
- }\r
- return item.value;\r
- }\r
- set(key, value, touch = Touch.None) {\r
- let item = this._map.get(key);\r
- if (item) {\r
- item.value = value;\r
- if (touch !== Touch.None) {\r
- this.touch(item, touch);\r
- }\r
- }\r
- else {\r
- item = { key, value, next: undefined, previous: undefined };\r
- switch (touch) {\r
- case Touch.None:\r
- this.addItemLast(item);\r
- break;\r
- case Touch.First:\r
- this.addItemFirst(item);\r
- break;\r
- case Touch.Last:\r
- this.addItemLast(item);\r
- break;\r
- default:\r
- this.addItemLast(item);\r
- break;\r
- }\r
- this._map.set(key, item);\r
- this._size++;\r
- }\r
- }\r
- delete(key) {\r
- const item = this._map.get(key);\r
- if (!item) {\r
- return false;\r
- }\r
- this._map.delete(key);\r
- this.removeItem(item);\r
- this._size--;\r
- return true;\r
- }\r
- shift() {\r
- if (!this._head && !this._tail) {\r
- return undefined;\r
- }\r
- if (!this._head || !this._tail) {\r
- throw new Error('Invalid list');\r
- }\r
- const item = this._head;\r
- this._map.delete(item.key);\r
- this.removeItem(item);\r
- this._size--;\r
- return item.value;\r
- }\r
- forEach(callbackfn, thisArg) {\r
- let current = this._head;\r
- while (current) {\r
- if (thisArg) {\r
- callbackfn.bind(thisArg)(current.value, current.key, this);\r
- }\r
- else {\r
- callbackfn(current.value, current.key, this);\r
- }\r
- current = current.next;\r
- }\r
- }\r
- forEachReverse(callbackfn, thisArg) {\r
- let current = this._tail;\r
- while (current) {\r
- if (thisArg) {\r
- callbackfn.bind(thisArg)(current.value, current.key, this);\r
- }\r
- else {\r
- callbackfn(current.value, current.key, this);\r
- }\r
- current = current.previous;\r
- }\r
- }\r
- values() {\r
- let result = [];\r
- let current = this._head;\r
- while (current) {\r
- result.push(current.value);\r
- current = current.next;\r
- }\r
- return result;\r
- }\r
- keys() {\r
- let result = [];\r
- let current = this._head;\r
- while (current) {\r
- result.push(current.key);\r
- current = current.next;\r
- }\r
- return result;\r
- }\r
- /* JSON RPC run on es5 which has no Symbol.iterator\r
- public keys(): IterableIterator<K> {\r
- let current = this._head;\r
- let iterator: IterableIterator<K> = {\r
- [Symbol.iterator]() {\r
- return iterator;\r
- },\r
- next():IteratorResult<K> {\r
- if (current) {\r
- let result = { value: current.key, done: false };\r
- current = current.next;\r
- return result;\r
- } else {\r
- return { value: undefined, done: true };\r
- }\r
- }\r
- };\r
- return iterator;\r
- }\r
-\r
- public values(): IterableIterator<V> {\r
- let current = this._head;\r
- let iterator: IterableIterator<V> = {\r
- [Symbol.iterator]() {\r
- return iterator;\r
- },\r
- next():IteratorResult<V> {\r
- if (current) {\r
- let result = { value: current.value, done: false };\r
- current = current.next;\r
- return result;\r
- } else {\r
- return { value: undefined, done: true };\r
- }\r
- }\r
- };\r
- return iterator;\r
- }\r
- */\r
- addItemFirst(item) {\r
- // First time Insert\r
- if (!this._head && !this._tail) {\r
- this._tail = item;\r
- }\r
- else if (!this._head) {\r
- throw new Error('Invalid list');\r
- }\r
- else {\r
- item.next = this._head;\r
- this._head.previous = item;\r
- }\r
- this._head = item;\r
- }\r
- addItemLast(item) {\r
- // First time Insert\r
- if (!this._head && !this._tail) {\r
- this._head = item;\r
- }\r
- else if (!this._tail) {\r
- throw new Error('Invalid list');\r
- }\r
- else {\r
- item.previous = this._tail;\r
- this._tail.next = item;\r
- }\r
- this._tail = item;\r
- }\r
- removeItem(item) {\r
- if (item === this._head && item === this._tail) {\r
- this._head = undefined;\r
- this._tail = undefined;\r
- }\r
- else if (item === this._head) {\r
- this._head = item.next;\r
- }\r
- else if (item === this._tail) {\r
- this._tail = item.previous;\r
- }\r
- else {\r
- const next = item.next;\r
- const previous = item.previous;\r
- if (!next || !previous) {\r
- throw new Error('Invalid list');\r
- }\r
- next.previous = previous;\r
- previous.next = next;\r
- }\r
- }\r
- touch(item, touch) {\r
- if (!this._head || !this._tail) {\r
- throw new Error('Invalid list');\r
- }\r
- if ((touch !== Touch.First && touch !== Touch.Last)) {\r
- return;\r
- }\r
- if (touch === Touch.First) {\r
- if (item === this._head) {\r
- return;\r
- }\r
- const next = item.next;\r
- const previous = item.previous;\r
- // Unlink the item\r
- if (item === this._tail) {\r
- // previous must be defined since item was not head but is tail\r
- // So there are more than on item in the map\r
- previous.next = undefined;\r
- this._tail = previous;\r
- }\r
- else {\r
- // Both next and previous are not undefined since item was neither head nor tail.\r
- next.previous = previous;\r
- previous.next = next;\r
- }\r
- // Insert the node at head\r
- item.previous = undefined;\r
- item.next = this._head;\r
- this._head.previous = item;\r
- this._head = item;\r
- }\r
- else if (touch === Touch.Last) {\r
- if (item === this._tail) {\r
- return;\r
- }\r
- const next = item.next;\r
- const previous = item.previous;\r
- // Unlink the item.\r
- if (item === this._head) {\r
- // next must be defined since item was not tail but is head\r
- // So there are more than on item in the map\r
- next.previous = undefined;\r
- this._head = next;\r
- }\r
- else {\r
- // Both next and previous are not undefined since item was neither head nor tail.\r
- next.previous = previous;\r
- previous.next = next;\r
- }\r
- item.next = undefined;\r
- item.previous = this._tail;\r
- this._tail.next = item;\r
- this._tail = item;\r
- }\r
- }\r
-}\r
-exports.LinkedMap = LinkedMap;\r
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const path_1 = __webpack_require__(4);\r
-const os_1 = __webpack_require__(15);\r
-const crypto_1 = __webpack_require__(16);\r
-const net_1 = __webpack_require__(17);\r
-const messageReader_1 = __webpack_require__(9);\r
-const messageWriter_1 = __webpack_require__(11);\r
-function generateRandomPipeName() {\r
- const randomSuffix = crypto_1.randomBytes(21).toString('hex');\r
- if (process.platform === 'win32') {\r
- return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`;\r
- }\r
- else {\r
- // Mac/Unix: use socket file\r
- return path_1.join(os_1.tmpdir(), `vscode-${randomSuffix}.sock`);\r
- }\r
-}\r
-exports.generateRandomPipeName = generateRandomPipeName;\r
-function createClientPipeTransport(pipeName, encoding = 'utf-8') {\r
- let connectResolve;\r
- let connected = new Promise((resolve, _reject) => {\r
- connectResolve = resolve;\r
- });\r
- return new Promise((resolve, reject) => {\r
- let server = net_1.createServer((socket) => {\r
- server.close();\r
- connectResolve([\r
- new messageReader_1.SocketMessageReader(socket, encoding),\r
- new messageWriter_1.SocketMessageWriter(socket, encoding)\r
- ]);\r
- });\r
- server.on('error', reject);\r
- server.listen(pipeName, () => {\r
- server.removeListener('error', reject);\r
- resolve({\r
- onConnected: () => { return connected; }\r
- });\r
- });\r
- });\r
-}\r
-exports.createClientPipeTransport = createClientPipeTransport;\r
-function createServerPipeTransport(pipeName, encoding = 'utf-8') {\r
- const socket = net_1.createConnection(pipeName);\r
- return [\r
- new messageReader_1.SocketMessageReader(socket, encoding),\r
- new messageWriter_1.SocketMessageWriter(socket, encoding)\r
- ];\r
-}\r
-exports.createServerPipeTransport = createServerPipeTransport;\r
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports) {
-
-module.exports = require("os");
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports) {
-
-module.exports = require("crypto");
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports) {
-
-module.exports = require("net");
-
-/***/ }),
-/* 18 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const net_1 = __webpack_require__(17);\r
-const messageReader_1 = __webpack_require__(9);\r
-const messageWriter_1 = __webpack_require__(11);\r
-function createClientSocketTransport(port, encoding = 'utf-8') {\r
- let connectResolve;\r
- let connected = new Promise((resolve, _reject) => {\r
- connectResolve = resolve;\r
- });\r
- return new Promise((resolve, reject) => {\r
- let server = net_1.createServer((socket) => {\r
- server.close();\r
- connectResolve([\r
- new messageReader_1.SocketMessageReader(socket, encoding),\r
- new messageWriter_1.SocketMessageWriter(socket, encoding)\r
- ]);\r
- });\r
- server.on('error', reject);\r
- server.listen(port, '127.0.0.1', () => {\r
- server.removeListener('error', reject);\r
- resolve({\r
- onConnected: () => { return connected; }\r
- });\r
- });\r
- });\r
-}\r
-exports.createClientSocketTransport = createClientSocketTransport;\r
-function createServerSocketTransport(port, encoding = 'utf-8') {\r
- const socket = net_1.createConnection(port, '127.0.0.1');\r
- return [\r
- new messageReader_1.SocketMessageReader(socket, encoding),\r
- new messageWriter_1.SocketMessageWriter(socket, encoding)\r
- ];\r
-}\r
-exports.createServerSocketTransport = createServerSocketTransport;\r
-
-
-/***/ }),
-/* 19 */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Position", function() { return Position; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Range", function() { return Range; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Location", function() { return Location; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LocationLink", function() { return LocationLink; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return Color; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorInformation", function() { return ColorInformation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPresentation", function() { return ColorPresentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FoldingRangeKind", function() { return FoldingRangeKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FoldingRange", function() { return FoldingRange; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DiagnosticRelatedInformation", function() { return DiagnosticRelatedInformation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DiagnosticSeverity", function() { return DiagnosticSeverity; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Diagnostic", function() { return Diagnostic; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Command", function() { return Command; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextEdit", function() { return TextEdit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDocumentEdit", function() { return TextDocumentEdit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateFile", function() { return CreateFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RenameFile", function() { return RenameFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeleteFile", function() { return DeleteFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WorkspaceEdit", function() { return WorkspaceEdit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WorkspaceChange", function() { return WorkspaceChange; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDocumentIdentifier", function() { return TextDocumentIdentifier; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VersionedTextDocumentIdentifier", function() { return VersionedTextDocumentIdentifier; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDocumentItem", function() { return TextDocumentItem; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MarkupKind", function() { return MarkupKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MarkupContent", function() { return MarkupContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompletionItemKind", function() { return CompletionItemKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InsertTextFormat", function() { return InsertTextFormat; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompletionItem", function() { return CompletionItem; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompletionList", function() { return CompletionList; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MarkedString", function() { return MarkedString; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Hover", function() { return Hover; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ParameterInformation", function() { return ParameterInformation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SignatureInformation", function() { return SignatureInformation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DocumentHighlightKind", function() { return DocumentHighlightKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DocumentHighlight", function() { return DocumentHighlight; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SymbolKind", function() { return SymbolKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SymbolInformation", function() { return SymbolInformation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DocumentSymbol", function() { return DocumentSymbol; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeActionKind", function() { return CodeActionKind; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeActionContext", function() { return CodeActionContext; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeAction", function() { return CodeAction; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeLens", function() { return CodeLens; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FormattingOptions", function() { return FormattingOptions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DocumentLink", function() { return DocumentLink; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EOL", function() { return EOL; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDocument", function() { return TextDocument; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextDocumentSaveReason", function() { return TextDocumentSaveReason; });
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-/**\r
- * The Position namespace provides helper functions to work with\r
- * [Position](#Position) literals.\r
- */\r
-var Position;\r
-(function (Position) {\r
- /**\r
- * Creates a new Position literal from the given line and character.\r
- * @param line The position's line.\r
- * @param character The position's character.\r
- */\r
- function create(line, character) {\r
- return { line: line, character: character };\r
- }\r
- Position.create = create;\r
- /**\r
- * Checks whether the given liternal conforms to the [Position](#Position) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character);\r
- }\r
- Position.is = is;\r
-})(Position || (Position = {}));\r
-/**\r
- * The Range namespace provides helper functions to work with\r
- * [Range](#Range) literals.\r
- */\r
-var Range;\r
-(function (Range) {\r
- function create(one, two, three, four) {\r
- if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) {\r
- return { start: Position.create(one, two), end: Position.create(three, four) };\r
- }\r
- else if (Position.is(one) && Position.is(two)) {\r
- return { start: one, end: two };\r
- }\r
- else {\r
- throw new Error("Range#create called with invalid arguments[" + one + ", " + two + ", " + three + ", " + four + "]");\r
- }\r
- }\r
- Range.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [Range](#Range) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\r
- }\r
- Range.is = is;\r
-})(Range || (Range = {}));\r
-/**\r
- * The Location namespace provides helper functions to work with\r
- * [Location](#Location) literals.\r
- */\r
-var Location;\r
-(function (Location) {\r
- /**\r
- * Creates a Location literal.\r
- * @param uri The location's uri.\r
- * @param range The location's range.\r
- */\r
- function create(uri, range) {\r
- return { uri: uri, range: range };\r
- }\r
- Location.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [Location](#Location) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\r
- }\r
- Location.is = is;\r
-})(Location || (Location = {}));\r
-/**\r
- * The LocationLink namespace provides helper functions to work with\r
- * [LocationLink](#LocationLink) literals.\r
- */\r
-var LocationLink;\r
-(function (LocationLink) {\r
- /**\r
- * Creates a LocationLink literal.\r
- * @param targetUri The definition's uri.\r
- * @param targetRange The full range of the definition.\r
- * @param targetSelectionRange The span of the symbol definition at the target.\r
- * @param originSelectionRange The span of the symbol being defined in the originating source file.\r
- */\r
- function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\r
- return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\r
- }\r
- LocationLink.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\r
- && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange))\r
- && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\r
- }\r
- LocationLink.is = is;\r
-})(LocationLink || (LocationLink = {}));\r
-/**\r
- * The Color namespace provides helper functions to work with\r
- * [Color](#Color) literals.\r
- */\r
-var Color;\r
-(function (Color) {\r
- /**\r
- * Creates a new Color literal.\r
- */\r
- function create(red, green, blue, alpha) {\r
- return {\r
- red: red,\r
- green: green,\r
- blue: blue,\r
- alpha: alpha,\r
- };\r
- }\r
- Color.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [Color](#Color) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.number(candidate.red)\r
- && Is.number(candidate.green)\r
- && Is.number(candidate.blue)\r
- && Is.number(candidate.alpha);\r
- }\r
- Color.is = is;\r
-})(Color || (Color = {}));\r
-/**\r
- * The ColorInformation namespace provides helper functions to work with\r
- * [ColorInformation](#ColorInformation) literals.\r
- */\r
-var ColorInformation;\r
-(function (ColorInformation) {\r
- /**\r
- * Creates a new ColorInformation literal.\r
- */\r
- function create(range, color) {\r
- return {\r
- range: range,\r
- color: color,\r
- };\r
- }\r
- ColorInformation.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Range.is(candidate.range) && Color.is(candidate.color);\r
- }\r
- ColorInformation.is = is;\r
-})(ColorInformation || (ColorInformation = {}));\r
-/**\r
- * The Color namespace provides helper functions to work with\r
- * [ColorPresentation](#ColorPresentation) literals.\r
- */\r
-var ColorPresentation;\r
-(function (ColorPresentation) {\r
- /**\r
- * Creates a new ColorInformation literal.\r
- */\r
- function create(label, textEdit, additionalTextEdits) {\r
- return {\r
- label: label,\r
- textEdit: textEdit,\r
- additionalTextEdits: additionalTextEdits,\r
- };\r
- }\r
- ColorPresentation.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.string(candidate.label)\r
- && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\r
- && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\r
- }\r
- ColorPresentation.is = is;\r
-})(ColorPresentation || (ColorPresentation = {}));\r
-/**\r
- * Enum of known range kinds\r
- */\r
-var FoldingRangeKind;\r
-(function (FoldingRangeKind) {\r
- /**\r
- * Folding range for a comment\r
- */\r
- FoldingRangeKind["Comment"] = "comment";\r
- /**\r
- * Folding range for a imports or includes\r
- */\r
- FoldingRangeKind["Imports"] = "imports";\r
- /**\r
- * Folding range for a region (e.g. `#region`)\r
- */\r
- FoldingRangeKind["Region"] = "region";\r
-})(FoldingRangeKind || (FoldingRangeKind = {}));\r
-/**\r
- * The folding range namespace provides helper functions to work with\r
- * [FoldingRange](#FoldingRange) literals.\r
- */\r
-var FoldingRange;\r
-(function (FoldingRange) {\r
- /**\r
- * Creates a new FoldingRange literal.\r
- */\r
- function create(startLine, endLine, startCharacter, endCharacter, kind) {\r
- var result = {\r
- startLine: startLine,\r
- endLine: endLine\r
- };\r
- if (Is.defined(startCharacter)) {\r
- result.startCharacter = startCharacter;\r
- }\r
- if (Is.defined(endCharacter)) {\r
- result.endCharacter = endCharacter;\r
- }\r
- if (Is.defined(kind)) {\r
- result.kind = kind;\r
- }\r
- return result;\r
- }\r
- FoldingRange.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.number(candidate.startLine) && Is.number(candidate.startLine)\r
- && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter))\r
- && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter))\r
- && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\r
- }\r
- FoldingRange.is = is;\r
-})(FoldingRange || (FoldingRange = {}));\r
-/**\r
- * The DiagnosticRelatedInformation namespace provides helper functions to work with\r
- * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.\r
- */\r
-var DiagnosticRelatedInformation;\r
-(function (DiagnosticRelatedInformation) {\r
- /**\r
- * Creates a new DiagnosticRelatedInformation literal.\r
- */\r
- function create(location, message) {\r
- return {\r
- location: location,\r
- message: message\r
- };\r
- }\r
- DiagnosticRelatedInformation.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\r
- }\r
- DiagnosticRelatedInformation.is = is;\r
-})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\r
-/**\r
- * The diagnostic's severity.\r
- */\r
-var DiagnosticSeverity;\r
-(function (DiagnosticSeverity) {\r
- /**\r
- * Reports an error.\r
- */\r
- DiagnosticSeverity.Error = 1;\r
- /**\r
- * Reports a warning.\r
- */\r
- DiagnosticSeverity.Warning = 2;\r
- /**\r
- * Reports an information.\r
- */\r
- DiagnosticSeverity.Information = 3;\r
- /**\r
- * Reports a hint.\r
- */\r
- DiagnosticSeverity.Hint = 4;\r
-})(DiagnosticSeverity || (DiagnosticSeverity = {}));\r
-/**\r
- * The Diagnostic namespace provides helper functions to work with\r
- * [Diagnostic](#Diagnostic) literals.\r
- */\r
-var Diagnostic;\r
-(function (Diagnostic) {\r
- /**\r
- * Creates a new Diagnostic literal.\r
- */\r
- function create(range, message, severity, code, source, relatedInformation) {\r
- var result = { range: range, message: message };\r
- if (Is.defined(severity)) {\r
- result.severity = severity;\r
- }\r
- if (Is.defined(code)) {\r
- result.code = code;\r
- }\r
- if (Is.defined(source)) {\r
- result.source = source;\r
- }\r
- if (Is.defined(relatedInformation)) {\r
- result.relatedInformation = relatedInformation;\r
- }\r
- return result;\r
- }\r
- Diagnostic.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate)\r
- && Range.is(candidate.range)\r
- && Is.string(candidate.message)\r
- && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\r
- && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\r
- && (Is.string(candidate.source) || Is.undefined(candidate.source))\r
- && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\r
- }\r
- Diagnostic.is = is;\r
-})(Diagnostic || (Diagnostic = {}));\r
-/**\r
- * The Command namespace provides helper functions to work with\r
- * [Command](#Command) literals.\r
- */\r
-var Command;\r
-(function (Command) {\r
- /**\r
- * Creates a new Command literal.\r
- */\r
- function create(title, command) {\r
- var args = [];\r
- for (var _i = 2; _i < arguments.length; _i++) {\r
- args[_i - 2] = arguments[_i];\r
- }\r
- var result = { title: title, command: command };\r
- if (Is.defined(args) && args.length > 0) {\r
- result.arguments = args;\r
- }\r
- return result;\r
- }\r
- Command.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [Command](#Command) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\r
- }\r
- Command.is = is;\r
-})(Command || (Command = {}));\r
-/**\r
- * The TextEdit namespace provides helper function to create replace,\r
- * insert and delete edits more easily.\r
- */\r
-var TextEdit;\r
-(function (TextEdit) {\r
- /**\r
- * Creates a replace text edit.\r
- * @param range The range of text to be replaced.\r
- * @param newText The new text.\r
- */\r
- function replace(range, newText) {\r
- return { range: range, newText: newText };\r
- }\r
- TextEdit.replace = replace;\r
- /**\r
- * Creates a insert text edit.\r
- * @param position The position to insert the text at.\r
- * @param newText The text to be inserted.\r
- */\r
- function insert(position, newText) {\r
- return { range: { start: position, end: position }, newText: newText };\r
- }\r
- TextEdit.insert = insert;\r
- /**\r
- * Creates a delete text edit.\r
- * @param range The range of text to be deleted.\r
- */\r
- function del(range) {\r
- return { range: range, newText: '' };\r
- }\r
- TextEdit.del = del;\r
- function is(value) {\r
- var candidate = value;\r
- return Is.objectLiteral(candidate)\r
- && Is.string(candidate.newText)\r
- && Range.is(candidate.range);\r
- }\r
- TextEdit.is = is;\r
-})(TextEdit || (TextEdit = {}));\r
-/**\r
- * The TextDocumentEdit namespace provides helper function to create\r
- * an edit that manipulates a text document.\r
- */\r
-var TextDocumentEdit;\r
-(function (TextDocumentEdit) {\r
- /**\r
- * Creates a new `TextDocumentEdit`\r
- */\r
- function create(textDocument, edits) {\r
- return { textDocument: textDocument, edits: edits };\r
- }\r
- TextDocumentEdit.create = create;\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate)\r
- && VersionedTextDocumentIdentifier.is(candidate.textDocument)\r
- && Array.isArray(candidate.edits);\r
- }\r
- TextDocumentEdit.is = is;\r
-})(TextDocumentEdit || (TextDocumentEdit = {}));\r
-var CreateFile;\r
-(function (CreateFile) {\r
- function create(uri, options) {\r
- var result = {\r
- kind: 'create',\r
- uri: uri\r
- };\r
- if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r
- result.options = options;\r
- }\r
- return result;\r
- }\r
- CreateFile.create = create;\r
- function is(value) {\r
- var candidate = value;\r
- return candidate && candidate.kind === 'create' && Is.string(candidate.uri) &&\r
- (candidate.options === void 0 ||\r
- ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r
- }\r
- CreateFile.is = is;\r
-})(CreateFile || (CreateFile = {}));\r
-var RenameFile;\r
-(function (RenameFile) {\r
- function create(oldUri, newUri, options) {\r
- var result = {\r
- kind: 'rename',\r
- oldUri: oldUri,\r
- newUri: newUri\r
- };\r
- if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r
- result.options = options;\r
- }\r
- return result;\r
- }\r
- RenameFile.create = create;\r
- function is(value) {\r
- var candidate = value;\r
- return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) &&\r
- (candidate.options === void 0 ||\r
- ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r
- }\r
- RenameFile.is = is;\r
-})(RenameFile || (RenameFile = {}));\r
-var DeleteFile;\r
-(function (DeleteFile) {\r
- function create(uri, options) {\r
- var result = {\r
- kind: 'delete',\r
- uri: uri\r
- };\r
- if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\r
- result.options = options;\r
- }\r
- return result;\r
- }\r
- DeleteFile.create = create;\r
- function is(value) {\r
- var candidate = value;\r
- return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) &&\r
- (candidate.options === void 0 ||\r
- ((candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))));\r
- }\r
- DeleteFile.is = is;\r
-})(DeleteFile || (DeleteFile = {}));\r
-var WorkspaceEdit;\r
-(function (WorkspaceEdit) {\r
- function is(value) {\r
- var candidate = value;\r
- return candidate &&\r
- (candidate.changes !== void 0 || candidate.documentChanges !== void 0) &&\r
- (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) {\r
- if (Is.string(change.kind)) {\r
- return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\r
- }\r
- else {\r
- return TextDocumentEdit.is(change);\r
- }\r
- }));\r
- }\r
- WorkspaceEdit.is = is;\r
-})(WorkspaceEdit || (WorkspaceEdit = {}));\r
-var TextEditChangeImpl = /** @class */ (function () {\r
- function TextEditChangeImpl(edits) {\r
- this.edits = edits;\r
- }\r
- TextEditChangeImpl.prototype.insert = function (position, newText) {\r
- this.edits.push(TextEdit.insert(position, newText));\r
- };\r
- TextEditChangeImpl.prototype.replace = function (range, newText) {\r
- this.edits.push(TextEdit.replace(range, newText));\r
- };\r
- TextEditChangeImpl.prototype.delete = function (range) {\r
- this.edits.push(TextEdit.del(range));\r
- };\r
- TextEditChangeImpl.prototype.add = function (edit) {\r
- this.edits.push(edit);\r
- };\r
- TextEditChangeImpl.prototype.all = function () {\r
- return this.edits;\r
- };\r
- TextEditChangeImpl.prototype.clear = function () {\r
- this.edits.splice(0, this.edits.length);\r
- };\r
- return TextEditChangeImpl;\r
-}());\r
-/**\r
- * A workspace change helps constructing changes to a workspace.\r
- */\r
-var WorkspaceChange = /** @class */ (function () {\r
- function WorkspaceChange(workspaceEdit) {\r
- var _this = this;\r
- this._textEditChanges = Object.create(null);\r
- if (workspaceEdit) {\r
- this._workspaceEdit = workspaceEdit;\r
- if (workspaceEdit.documentChanges) {\r
- workspaceEdit.documentChanges.forEach(function (change) {\r
- if (TextDocumentEdit.is(change)) {\r
- var textEditChange = new TextEditChangeImpl(change.edits);\r
- _this._textEditChanges[change.textDocument.uri] = textEditChange;\r
- }\r
- });\r
- }\r
- else if (workspaceEdit.changes) {\r
- Object.keys(workspaceEdit.changes).forEach(function (key) {\r
- var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\r
- _this._textEditChanges[key] = textEditChange;\r
- });\r
- }\r
- }\r
- }\r
- Object.defineProperty(WorkspaceChange.prototype, "edit", {\r
- /**\r
- * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal\r
- * use to be returned from a workspace edit operation like rename.\r
- */\r
- get: function () {\r
- return this._workspaceEdit;\r
- },\r
- enumerable: true,\r
- configurable: true\r
- });\r
- WorkspaceChange.prototype.getTextEditChange = function (key) {\r
- if (VersionedTextDocumentIdentifier.is(key)) {\r
- if (!this._workspaceEdit) {\r
- this._workspaceEdit = {\r
- documentChanges: []\r
- };\r
- }\r
- if (!this._workspaceEdit.documentChanges) {\r
- throw new Error('Workspace edit is not configured for document changes.');\r
- }\r
- var textDocument = key;\r
- var result = this._textEditChanges[textDocument.uri];\r
- if (!result) {\r
- var edits = [];\r
- var textDocumentEdit = {\r
- textDocument: textDocument,\r
- edits: edits\r
- };\r
- this._workspaceEdit.documentChanges.push(textDocumentEdit);\r
- result = new TextEditChangeImpl(edits);\r
- this._textEditChanges[textDocument.uri] = result;\r
- }\r
- return result;\r
- }\r
- else {\r
- if (!this._workspaceEdit) {\r
- this._workspaceEdit = {\r
- changes: Object.create(null)\r
- };\r
- }\r
- if (!this._workspaceEdit.changes) {\r
- throw new Error('Workspace edit is not configured for normal text edit changes.');\r
- }\r
- var result = this._textEditChanges[key];\r
- if (!result) {\r
- var edits = [];\r
- this._workspaceEdit.changes[key] = edits;\r
- result = new TextEditChangeImpl(edits);\r
- this._textEditChanges[key] = result;\r
- }\r
- return result;\r
- }\r
- };\r
- WorkspaceChange.prototype.createFile = function (uri, options) {\r
- this.checkDocumentChanges();\r
- this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options));\r
- };\r
- WorkspaceChange.prototype.renameFile = function (oldUri, newUri, options) {\r
- this.checkDocumentChanges();\r
- this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options));\r
- };\r
- WorkspaceChange.prototype.deleteFile = function (uri, options) {\r
- this.checkDocumentChanges();\r
- this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options));\r
- };\r
- WorkspaceChange.prototype.checkDocumentChanges = function () {\r
- if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) {\r
- throw new Error('Workspace edit is not configured for document changes.');\r
- }\r
- };\r
- return WorkspaceChange;\r
-}());\r
-\r
-/**\r
- * The TextDocumentIdentifier namespace provides helper functions to work with\r
- * [TextDocumentIdentifier](#TextDocumentIdentifier) literals.\r
- */\r
-var TextDocumentIdentifier;\r
-(function (TextDocumentIdentifier) {\r
- /**\r
- * Creates a new TextDocumentIdentifier literal.\r
- * @param uri The document's uri.\r
- */\r
- function create(uri) {\r
- return { uri: uri };\r
- }\r
- TextDocumentIdentifier.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.string(candidate.uri);\r
- }\r
- TextDocumentIdentifier.is = is;\r
-})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\r
-/**\r
- * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\r
- * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals.\r
- */\r
-var VersionedTextDocumentIdentifier;\r
-(function (VersionedTextDocumentIdentifier) {\r
- /**\r
- * Creates a new VersionedTextDocumentIdentifier literal.\r
- * @param uri The document's uri.\r
- * @param uri The document's text.\r
- */\r
- function create(uri, version) {\r
- return { uri: uri, version: version };\r
- }\r
- VersionedTextDocumentIdentifier.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version));\r
- }\r
- VersionedTextDocumentIdentifier.is = is;\r
-})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\r
-/**\r
- * The TextDocumentItem namespace provides helper functions to work with\r
- * [TextDocumentItem](#TextDocumentItem) literals.\r
- */\r
-var TextDocumentItem;\r
-(function (TextDocumentItem) {\r
- /**\r
- * Creates a new TextDocumentItem literal.\r
- * @param uri The document's uri.\r
- * @param languageId The document's language identifier.\r
- * @param version The document's version number.\r
- * @param text The document's text.\r
- */\r
- function create(uri, languageId, version, text) {\r
- return { uri: uri, languageId: languageId, version: version, text: text };\r
- }\r
- TextDocumentItem.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text);\r
- }\r
- TextDocumentItem.is = is;\r
-})(TextDocumentItem || (TextDocumentItem = {}));\r
-/**\r
- * Describes the content type that a client supports in various\r
- * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\r
- *\r
- * Please note that `MarkupKinds` must not start with a `$`. This kinds\r
- * are reserved for internal usage.\r
- */\r
-var MarkupKind;\r
-(function (MarkupKind) {\r
- /**\r
- * Plain text is supported as a content format\r
- */\r
- MarkupKind.PlainText = 'plaintext';\r
- /**\r
- * Markdown is supported as a content format\r
- */\r
- MarkupKind.Markdown = 'markdown';\r
-})(MarkupKind || (MarkupKind = {}));\r
-(function (MarkupKind) {\r
- /**\r
- * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\r
- }\r
- MarkupKind.is = is;\r
-})(MarkupKind || (MarkupKind = {}));\r
-var MarkupContent;\r
-(function (MarkupContent) {\r
- /**\r
- * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\r
- }\r
- MarkupContent.is = is;\r
-})(MarkupContent || (MarkupContent = {}));\r
-/**\r
- * The kind of a completion entry.\r
- */\r
-var CompletionItemKind;\r
-(function (CompletionItemKind) {\r
- CompletionItemKind.Text = 1;\r
- CompletionItemKind.Method = 2;\r
- CompletionItemKind.Function = 3;\r
- CompletionItemKind.Constructor = 4;\r
- CompletionItemKind.Field = 5;\r
- CompletionItemKind.Variable = 6;\r
- CompletionItemKind.Class = 7;\r
- CompletionItemKind.Interface = 8;\r
- CompletionItemKind.Module = 9;\r
- CompletionItemKind.Property = 10;\r
- CompletionItemKind.Unit = 11;\r
- CompletionItemKind.Value = 12;\r
- CompletionItemKind.Enum = 13;\r
- CompletionItemKind.Keyword = 14;\r
- CompletionItemKind.Snippet = 15;\r
- CompletionItemKind.Color = 16;\r
- CompletionItemKind.File = 17;\r
- CompletionItemKind.Reference = 18;\r
- CompletionItemKind.Folder = 19;\r
- CompletionItemKind.EnumMember = 20;\r
- CompletionItemKind.Constant = 21;\r
- CompletionItemKind.Struct = 22;\r
- CompletionItemKind.Event = 23;\r
- CompletionItemKind.Operator = 24;\r
- CompletionItemKind.TypeParameter = 25;\r
-})(CompletionItemKind || (CompletionItemKind = {}));\r
-/**\r
- * Defines whether the insert text in a completion item should be interpreted as\r
- * plain text or a snippet.\r
- */\r
-var InsertTextFormat;\r
-(function (InsertTextFormat) {\r
- /**\r
- * The primary text to be inserted is treated as a plain string.\r
- */\r
- InsertTextFormat.PlainText = 1;\r
- /**\r
- * The primary text to be inserted is treated as a snippet.\r
- *\r
- * A snippet can define tab stops and placeholders with `$1`, `$2`\r
- * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\r
- * the end of the snippet. Placeholders with equal identifiers are linked,\r
- * that is typing in one will update others too.\r
- *\r
- * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md\r
- */\r
- InsertTextFormat.Snippet = 2;\r
-})(InsertTextFormat || (InsertTextFormat = {}));\r
-/**\r
- * The CompletionItem namespace provides functions to deal with\r
- * completion items.\r
- */\r
-var CompletionItem;\r
-(function (CompletionItem) {\r
- /**\r
- * Create a completion item and seed it with a label.\r
- * @param label The completion item's label\r
- */\r
- function create(label) {\r
- return { label: label };\r
- }\r
- CompletionItem.create = create;\r
-})(CompletionItem || (CompletionItem = {}));\r
-/**\r
- * The CompletionList namespace provides functions to deal with\r
- * completion lists.\r
- */\r
-var CompletionList;\r
-(function (CompletionList) {\r
- /**\r
- * Creates a new completion list.\r
- *\r
- * @param items The completion items.\r
- * @param isIncomplete The list is not complete.\r
- */\r
- function create(items, isIncomplete) {\r
- return { items: items ? items : [], isIncomplete: !!isIncomplete };\r
- }\r
- CompletionList.create = create;\r
-})(CompletionList || (CompletionList = {}));\r
-var MarkedString;\r
-(function (MarkedString) {\r
- /**\r
- * Creates a marked string from plain text.\r
- *\r
- * @param plainText The plain text.\r
- */\r
- function fromPlainText(plainText) {\r
- return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&"); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\r
- }\r
- MarkedString.fromPlainText = fromPlainText;\r
- /**\r
- * Checks whether the given value conforms to the [MarkedString](#MarkedString) type.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\r
- }\r
- MarkedString.is = is;\r
-})(MarkedString || (MarkedString = {}));\r
-var Hover;\r
-(function (Hover) {\r
- /**\r
- * Checks whether the given value conforms to the [Hover](#Hover) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\r
- MarkedString.is(candidate.contents) ||\r
- Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\r
- }\r
- Hover.is = is;\r
-})(Hover || (Hover = {}));\r
-/**\r
- * The ParameterInformation namespace provides helper functions to work with\r
- * [ParameterInformation](#ParameterInformation) literals.\r
- */\r
-var ParameterInformation;\r
-(function (ParameterInformation) {\r
- /**\r
- * Creates a new parameter information literal.\r
- *\r
- * @param label A label string.\r
- * @param documentation A doc string.\r
- */\r
- function create(label, documentation) {\r
- return documentation ? { label: label, documentation: documentation } : { label: label };\r
- }\r
- ParameterInformation.create = create;\r
- ;\r
-})(ParameterInformation || (ParameterInformation = {}));\r
-/**\r
- * The SignatureInformation namespace provides helper functions to work with\r
- * [SignatureInformation](#SignatureInformation) literals.\r
- */\r
-var SignatureInformation;\r
-(function (SignatureInformation) {\r
- function create(label, documentation) {\r
- var parameters = [];\r
- for (var _i = 2; _i < arguments.length; _i++) {\r
- parameters[_i - 2] = arguments[_i];\r
- }\r
- var result = { label: label };\r
- if (Is.defined(documentation)) {\r
- result.documentation = documentation;\r
- }\r
- if (Is.defined(parameters)) {\r
- result.parameters = parameters;\r
- }\r
- else {\r
- result.parameters = [];\r
- }\r
- return result;\r
- }\r
- SignatureInformation.create = create;\r
-})(SignatureInformation || (SignatureInformation = {}));\r
-/**\r
- * A document highlight kind.\r
- */\r
-var DocumentHighlightKind;\r
-(function (DocumentHighlightKind) {\r
- /**\r
- * A textual occurrence.\r
- */\r
- DocumentHighlightKind.Text = 1;\r
- /**\r
- * Read-access of a symbol, like reading a variable.\r
- */\r
- DocumentHighlightKind.Read = 2;\r
- /**\r
- * Write-access of a symbol, like writing to a variable.\r
- */\r
- DocumentHighlightKind.Write = 3;\r
-})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r
-/**\r
- * DocumentHighlight namespace to provide helper functions to work with\r
- * [DocumentHighlight](#DocumentHighlight) literals.\r
- */\r
-var DocumentHighlight;\r
-(function (DocumentHighlight) {\r
- /**\r
- * Create a DocumentHighlight object.\r
- * @param range The range the highlight applies to.\r
- */\r
- function create(range, kind) {\r
- var result = { range: range };\r
- if (Is.number(kind)) {\r
- result.kind = kind;\r
- }\r
- return result;\r
- }\r
- DocumentHighlight.create = create;\r
-})(DocumentHighlight || (DocumentHighlight = {}));\r
-/**\r
- * A symbol kind.\r
- */\r
-var SymbolKind;\r
-(function (SymbolKind) {\r
- SymbolKind.File = 1;\r
- SymbolKind.Module = 2;\r
- SymbolKind.Namespace = 3;\r
- SymbolKind.Package = 4;\r
- SymbolKind.Class = 5;\r
- SymbolKind.Method = 6;\r
- SymbolKind.Property = 7;\r
- SymbolKind.Field = 8;\r
- SymbolKind.Constructor = 9;\r
- SymbolKind.Enum = 10;\r
- SymbolKind.Interface = 11;\r
- SymbolKind.Function = 12;\r
- SymbolKind.Variable = 13;\r
- SymbolKind.Constant = 14;\r
- SymbolKind.String = 15;\r
- SymbolKind.Number = 16;\r
- SymbolKind.Boolean = 17;\r
- SymbolKind.Array = 18;\r
- SymbolKind.Object = 19;\r
- SymbolKind.Key = 20;\r
- SymbolKind.Null = 21;\r
- SymbolKind.EnumMember = 22;\r
- SymbolKind.Struct = 23;\r
- SymbolKind.Event = 24;\r
- SymbolKind.Operator = 25;\r
- SymbolKind.TypeParameter = 26;\r
-})(SymbolKind || (SymbolKind = {}));\r
-var SymbolInformation;\r
-(function (SymbolInformation) {\r
- /**\r
- * Creates a new symbol information literal.\r
- *\r
- * @param name The name of the symbol.\r
- * @param kind The kind of the symbol.\r
- * @param range The range of the location of the symbol.\r
- * @param uri The resource of the location of symbol, defaults to the current document.\r
- * @param containerName The name of the symbol containing the symbol.\r
- */\r
- function create(name, kind, range, uri, containerName) {\r
- var result = {\r
- name: name,\r
- kind: kind,\r
- location: { uri: uri, range: range }\r
- };\r
- if (containerName) {\r
- result.containerName = containerName;\r
- }\r
- return result;\r
- }\r
- SymbolInformation.create = create;\r
-})(SymbolInformation || (SymbolInformation = {}));\r
-/**\r
- * Represents programming constructs like variables, classes, interfaces etc.\r
- * that appear in a document. Document symbols can be hierarchical and they\r
- * have two ranges: one that encloses its definition and one that points to\r
- * its most interesting range, e.g. the range of an identifier.\r
- */\r
-var DocumentSymbol = /** @class */ (function () {\r
- function DocumentSymbol() {\r
- }\r
- return DocumentSymbol;\r
-}());\r
-\r
-(function (DocumentSymbol) {\r
- /**\r
- * Creates a new symbol information literal.\r
- *\r
- * @param name The name of the symbol.\r
- * @param detail The detail of the symbol.\r
- * @param kind The kind of the symbol.\r
- * @param range The range of the symbol.\r
- * @param selectionRange The selectionRange of the symbol.\r
- * @param children Children of the symbol.\r
- */\r
- function create(name, detail, kind, range, selectionRange, children) {\r
- var result = {\r
- name: name,\r
- detail: detail,\r
- kind: kind,\r
- range: range,\r
- selectionRange: selectionRange\r
- };\r
- if (children !== void 0) {\r
- result.children = children;\r
- }\r
- return result;\r
- }\r
- DocumentSymbol.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return candidate &&\r
- Is.string(candidate.name) && Is.number(candidate.kind) &&\r
- Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\r
- (candidate.detail === void 0 || Is.string(candidate.detail)) &&\r
- (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) &&\r
- (candidate.children === void 0 || Array.isArray(candidate.children));\r
- }\r
- DocumentSymbol.is = is;\r
-})(DocumentSymbol || (DocumentSymbol = {}));\r
-/**\r
- * A set of predefined code action kinds\r
- */\r
-var CodeActionKind;\r
-(function (CodeActionKind) {\r
- /**\r
- * Base kind for quickfix actions: 'quickfix'\r
- */\r
- CodeActionKind.QuickFix = 'quickfix';\r
- /**\r
- * Base kind for refactoring actions: 'refactor'\r
- */\r
- CodeActionKind.Refactor = 'refactor';\r
- /**\r
- * Base kind for refactoring extraction actions: 'refactor.extract'\r
- *\r
- * Example extract actions:\r
- *\r
- * - Extract method\r
- * - Extract function\r
- * - Extract variable\r
- * - Extract interface from class\r
- * - ...\r
- */\r
- CodeActionKind.RefactorExtract = 'refactor.extract';\r
- /**\r
- * Base kind for refactoring inline actions: 'refactor.inline'\r
- *\r
- * Example inline actions:\r
- *\r
- * - Inline function\r
- * - Inline variable\r
- * - Inline constant\r
- * - ...\r
- */\r
- CodeActionKind.RefactorInline = 'refactor.inline';\r
- /**\r
- * Base kind for refactoring rewrite actions: 'refactor.rewrite'\r
- *\r
- * Example rewrite actions:\r
- *\r
- * - Convert JavaScript function to class\r
- * - Add or remove parameter\r
- * - Encapsulate field\r
- * - Make method static\r
- * - Move method to base class\r
- * - ...\r
- */\r
- CodeActionKind.RefactorRewrite = 'refactor.rewrite';\r
- /**\r
- * Base kind for source actions: `source`\r
- *\r
- * Source code actions apply to the entire file.\r
- */\r
- CodeActionKind.Source = 'source';\r
- /**\r
- * Base kind for an organize imports source action: `source.organizeImports`\r
- */\r
- CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\r
-})(CodeActionKind || (CodeActionKind = {}));\r
-/**\r
- * The CodeActionContext namespace provides helper functions to work with\r
- * [CodeActionContext](#CodeActionContext) literals.\r
- */\r
-var CodeActionContext;\r
-(function (CodeActionContext) {\r
- /**\r
- * Creates a new CodeActionContext literal.\r
- */\r
- function create(diagnostics, only) {\r
- var result = { diagnostics: diagnostics };\r
- if (only !== void 0 && only !== null) {\r
- result.only = only;\r
- }\r
- return result;\r
- }\r
- CodeActionContext.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\r
- }\r
- CodeActionContext.is = is;\r
-})(CodeActionContext || (CodeActionContext = {}));\r
-var CodeAction;\r
-(function (CodeAction) {\r
- function create(title, commandOrEdit, kind) {\r
- var result = { title: title };\r
- if (Command.is(commandOrEdit)) {\r
- result.command = commandOrEdit;\r
- }\r
- else {\r
- result.edit = commandOrEdit;\r
- }\r
- if (kind !== void null) {\r
- result.kind = kind;\r
- }\r
- return result;\r
- }\r
- CodeAction.create = create;\r
- function is(value) {\r
- var candidate = value;\r
- return candidate && Is.string(candidate.title) &&\r
- (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\r
- (candidate.kind === void 0 || Is.string(candidate.kind)) &&\r
- (candidate.edit !== void 0 || candidate.command !== void 0) &&\r
- (candidate.command === void 0 || Command.is(candidate.command)) &&\r
- (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\r
- }\r
- CodeAction.is = is;\r
-})(CodeAction || (CodeAction = {}));\r
-/**\r
- * The CodeLens namespace provides helper functions to work with\r
- * [CodeLens](#CodeLens) literals.\r
- */\r
-var CodeLens;\r
-(function (CodeLens) {\r
- /**\r
- * Creates a new CodeLens literal.\r
- */\r
- function create(range, data) {\r
- var result = { range: range };\r
- if (Is.defined(data))\r
- result.data = data;\r
- return result;\r
- }\r
- CodeLens.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\r
- }\r
- CodeLens.is = is;\r
-})(CodeLens || (CodeLens = {}));\r
-/**\r
- * The FormattingOptions namespace provides helper functions to work with\r
- * [FormattingOptions](#FormattingOptions) literals.\r
- */\r
-var FormattingOptions;\r
-(function (FormattingOptions) {\r
- /**\r
- * Creates a new FormattingOptions literal.\r
- */\r
- function create(tabSize, insertSpaces) {\r
- return { tabSize: tabSize, insertSpaces: insertSpaces };\r
- }\r
- FormattingOptions.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\r
- }\r
- FormattingOptions.is = is;\r
-})(FormattingOptions || (FormattingOptions = {}));\r
-/**\r
- * A document link is a range in a text document that links to an internal or external resource, like another\r
- * text document or a web site.\r
- */\r
-var DocumentLink = /** @class */ (function () {\r
- function DocumentLink() {\r
- }\r
- return DocumentLink;\r
-}());\r
-\r
-/**\r
- * The DocumentLink namespace provides helper functions to work with\r
- * [DocumentLink](#DocumentLink) literals.\r
- */\r
-(function (DocumentLink) {\r
- /**\r
- * Creates a new DocumentLink literal.\r
- */\r
- function create(range, target, data) {\r
- return { range: range, target: target, data: data };\r
- }\r
- DocumentLink.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\r
- }\r
- DocumentLink.is = is;\r
-})(DocumentLink || (DocumentLink = {}));\r
-var EOL = ['\n', '\r\n', '\r'];\r
-var TextDocument;\r
-(function (TextDocument) {\r
- /**\r
- * Creates a new ITextDocument literal from the given uri and content.\r
- * @param uri The document's uri.\r
- * @param languageId The document's language Id.\r
- * @param content The document's content.\r
- */\r
- function create(uri, languageId, version, content) {\r
- return new FullTextDocument(uri, languageId, version, content);\r
- }\r
- TextDocument.create = create;\r
- /**\r
- * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface.\r
- */\r
- function is(value) {\r
- var candidate = value;\r
- return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount)\r
- && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\r
- }\r
- TextDocument.is = is;\r
- function applyEdits(document, edits) {\r
- var text = document.getText();\r
- var sortedEdits = mergeSort(edits, function (a, b) {\r
- var diff = a.range.start.line - b.range.start.line;\r
- if (diff === 0) {\r
- return a.range.start.character - b.range.start.character;\r
- }\r
- return diff;\r
- });\r
- var lastModifiedOffset = text.length;\r
- for (var i = sortedEdits.length - 1; i >= 0; i--) {\r
- var e = sortedEdits[i];\r
- var startOffset = document.offsetAt(e.range.start);\r
- var endOffset = document.offsetAt(e.range.end);\r
- if (endOffset <= lastModifiedOffset) {\r
- text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\r
- }\r
- else {\r
- throw new Error('Overlapping edit');\r
- }\r
- lastModifiedOffset = startOffset;\r
- }\r
- return text;\r
- }\r
- TextDocument.applyEdits = applyEdits;\r
- function mergeSort(data, compare) {\r
- if (data.length <= 1) {\r
- // sorted\r
- return data;\r
- }\r
- var p = (data.length / 2) | 0;\r
- var left = data.slice(0, p);\r
- var right = data.slice(p);\r
- mergeSort(left, compare);\r
- mergeSort(right, compare);\r
- var leftIdx = 0;\r
- var rightIdx = 0;\r
- var i = 0;\r
- while (leftIdx < left.length && rightIdx < right.length) {\r
- var ret = compare(left[leftIdx], right[rightIdx]);\r
- if (ret <= 0) {\r
- // smaller_equal -> take left to preserve order\r
- data[i++] = left[leftIdx++];\r
- }\r
- else {\r
- // greater -> take right\r
- data[i++] = right[rightIdx++];\r
- }\r
- }\r
- while (leftIdx < left.length) {\r
- data[i++] = left[leftIdx++];\r
- }\r
- while (rightIdx < right.length) {\r
- data[i++] = right[rightIdx++];\r
- }\r
- return data;\r
- }\r
-})(TextDocument || (TextDocument = {}));\r
-/**\r
- * Represents reasons why a text document is saved.\r
- */\r
-var TextDocumentSaveReason;\r
-(function (TextDocumentSaveReason) {\r
- /**\r
- * Manually triggered, e.g. by the user pressing save, by starting debugging,\r
- * or by an API call.\r
- */\r
- TextDocumentSaveReason.Manual = 1;\r
- /**\r
- * Automatic after a delay.\r
- */\r
- TextDocumentSaveReason.AfterDelay = 2;\r
- /**\r
- * When the editor lost focus.\r
- */\r
- TextDocumentSaveReason.FocusOut = 3;\r
-})(TextDocumentSaveReason || (TextDocumentSaveReason = {}));\r
-var FullTextDocument = /** @class */ (function () {\r
- function FullTextDocument(uri, languageId, version, content) {\r
- this._uri = uri;\r
- this._languageId = languageId;\r
- this._version = version;\r
- this._content = content;\r
- this._lineOffsets = null;\r
- }\r
- Object.defineProperty(FullTextDocument.prototype, "uri", {\r
- get: function () {\r
- return this._uri;\r
- },\r
- enumerable: true,\r
- configurable: true\r
- });\r
- Object.defineProperty(FullTextDocument.prototype, "languageId", {\r
- get: function () {\r
- return this._languageId;\r
- },\r
- enumerable: true,\r
- configurable: true\r
- });\r
- Object.defineProperty(FullTextDocument.prototype, "version", {\r
- get: function () {\r
- return this._version;\r
- },\r
- enumerable: true,\r
- configurable: true\r
- });\r
- FullTextDocument.prototype.getText = function (range) {\r
- if (range) {\r
- var start = this.offsetAt(range.start);\r
- var end = this.offsetAt(range.end);\r
- return this._content.substring(start, end);\r
- }\r
- return this._content;\r
- };\r
- FullTextDocument.prototype.update = function (event, version) {\r
- this._content = event.text;\r
- this._version = version;\r
- this._lineOffsets = null;\r
- };\r
- FullTextDocument.prototype.getLineOffsets = function () {\r
- if (this._lineOffsets === null) {\r
- var lineOffsets = [];\r
- var text = this._content;\r
- var isLineStart = true;\r
- for (var i = 0; i < text.length; i++) {\r
- if (isLineStart) {\r
- lineOffsets.push(i);\r
- isLineStart = false;\r
- }\r
- var ch = text.charAt(i);\r
- isLineStart = (ch === '\r' || ch === '\n');\r
- if (ch === '\r' && i + 1 < text.length && text.charAt(i + 1) === '\n') {\r
- i++;\r
- }\r
- }\r
- if (isLineStart && text.length > 0) {\r
- lineOffsets.push(text.length);\r
- }\r
- this._lineOffsets = lineOffsets;\r
- }\r
- return this._lineOffsets;\r
- };\r
- FullTextDocument.prototype.positionAt = function (offset) {\r
- offset = Math.max(Math.min(offset, this._content.length), 0);\r
- var lineOffsets = this.getLineOffsets();\r
- var low = 0, high = lineOffsets.length;\r
- if (high === 0) {\r
- return Position.create(0, offset);\r
- }\r
- while (low < high) {\r
- var mid = Math.floor((low + high) / 2);\r
- if (lineOffsets[mid] > offset) {\r
- high = mid;\r
- }\r
- else {\r
- low = mid + 1;\r
- }\r
- }\r
- // low is the least x for which the line offset is larger than the current offset\r
- // or array.length if no line offset is larger than the current offset\r
- var line = low - 1;\r
- return Position.create(line, offset - lineOffsets[line]);\r
- };\r
- FullTextDocument.prototype.offsetAt = function (position) {\r
- var lineOffsets = this.getLineOffsets();\r
- if (position.line >= lineOffsets.length) {\r
- return this._content.length;\r
- }\r
- else if (position.line < 0) {\r
- return 0;\r
- }\r
- var lineOffset = lineOffsets[position.line];\r
- var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\r
- return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\r
- };\r
- Object.defineProperty(FullTextDocument.prototype, "lineCount", {\r
- get: function () {\r
- return this.getLineOffsets().length;\r
- },\r
- enumerable: true,\r
- configurable: true\r
- });\r
- return FullTextDocument;\r
-}());\r
-var Is;\r
-(function (Is) {\r
- var toString = Object.prototype.toString;\r
- function defined(value) {\r
- return typeof value !== 'undefined';\r
- }\r
- Is.defined = defined;\r
- function undefined(value) {\r
- return typeof value === 'undefined';\r
- }\r
- Is.undefined = undefined;\r
- function boolean(value) {\r
- return value === true || value === false;\r
- }\r
- Is.boolean = boolean;\r
- function string(value) {\r
- return toString.call(value) === '[object String]';\r
- }\r
- Is.string = string;\r
- function number(value) {\r
- return toString.call(value) === '[object Number]';\r
- }\r
- Is.number = number;\r
- function func(value) {\r
- return toString.call(value) === '[object Function]';\r
- }\r
- Is.func = func;\r
- function objectLiteral(value) {\r
- // Strictly speaking class instances pass this check as well. Since the LSP\r
- // doesn't use classes we ignore this for now. If we do we need to add something\r
- // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\r
- return value !== null && typeof value === 'object';\r
- }\r
- Is.objectLiteral = objectLiteral;\r
- function typedArray(value, check) {\r
- return Array.isArray(value) && value.every(check);\r
- }\r
- Is.typedArray = typedArray;\r
-})(Is || (Is = {}));\r
-
-
-/***/ }),
-/* 20 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const Is = __webpack_require__(21);\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-const protocol_implementation_1 = __webpack_require__(22);\r
-exports.ImplementationRequest = protocol_implementation_1.ImplementationRequest;\r
-const protocol_typeDefinition_1 = __webpack_require__(23);\r
-exports.TypeDefinitionRequest = protocol_typeDefinition_1.TypeDefinitionRequest;\r
-const protocol_workspaceFolders_1 = __webpack_require__(24);\r
-exports.WorkspaceFoldersRequest = protocol_workspaceFolders_1.WorkspaceFoldersRequest;\r
-exports.DidChangeWorkspaceFoldersNotification = protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification;\r
-const protocol_configuration_1 = __webpack_require__(25);\r
-exports.ConfigurationRequest = protocol_configuration_1.ConfigurationRequest;\r
-const protocol_colorProvider_1 = __webpack_require__(26);\r
-exports.DocumentColorRequest = protocol_colorProvider_1.DocumentColorRequest;\r
-exports.ColorPresentationRequest = protocol_colorProvider_1.ColorPresentationRequest;\r
-const protocol_foldingRange_1 = __webpack_require__(27);\r
-exports.FoldingRangeRequest = protocol_foldingRange_1.FoldingRangeRequest;\r
-const protocol_declaration_1 = __webpack_require__(28);\r
-exports.DeclarationRequest = protocol_declaration_1.DeclarationRequest;\r
-const protocol_selectionRange_1 = __webpack_require__(29);\r
-exports.SelectionRangeRequest = protocol_selectionRange_1.SelectionRangeRequest;\r
-exports.SelectionRangeKind = protocol_selectionRange_1.SelectionRangeKind;\r
-// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r
-let __noDynamicImport;\r
-var DocumentFilter;\r
-(function (DocumentFilter) {\r
- function is(value) {\r
- let candidate = value;\r
- return Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern);\r
- }\r
- DocumentFilter.is = is;\r
-})(DocumentFilter = exports.DocumentFilter || (exports.DocumentFilter = {}));\r
-/**\r
- * The `client/registerCapability` request is sent from the server to the client to register a new capability\r
- * handler on the client side.\r
- */\r
-var RegistrationRequest;\r
-(function (RegistrationRequest) {\r
- RegistrationRequest.type = new vscode_jsonrpc_1.RequestType('client/registerCapability');\r
-})(RegistrationRequest = exports.RegistrationRequest || (exports.RegistrationRequest = {}));\r
-/**\r
- * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability\r
- * handler on the client side.\r
- */\r
-var UnregistrationRequest;\r
-(function (UnregistrationRequest) {\r
- UnregistrationRequest.type = new vscode_jsonrpc_1.RequestType('client/unregisterCapability');\r
-})(UnregistrationRequest = exports.UnregistrationRequest || (exports.UnregistrationRequest = {}));\r
-var ResourceOperationKind;\r
-(function (ResourceOperationKind) {\r
- /**\r
- * Supports creating new files and folders.\r
- */\r
- ResourceOperationKind.Create = 'create';\r
- /**\r
- * Supports renaming existing files and folders.\r
- */\r
- ResourceOperationKind.Rename = 'rename';\r
- /**\r
- * Supports deleting existing files and folders.\r
- */\r
- ResourceOperationKind.Delete = 'delete';\r
-})(ResourceOperationKind = exports.ResourceOperationKind || (exports.ResourceOperationKind = {}));\r
-var FailureHandlingKind;\r
-(function (FailureHandlingKind) {\r
- /**\r
- * Applying the workspace change is simply aborted if one of the changes provided\r
- * fails. All operations executed before the failing operation stay executed.\r
- */\r
- FailureHandlingKind.Abort = 'abort';\r
- /**\r
- * All operations are executed transactional. That means they either all\r
- * succeed or no changes at all are applied to the workspace.\r
- */\r
- FailureHandlingKind.Transactional = 'transactional';\r
- /**\r
- * If the workspace edit contains only textual file changes they are executed transactional.\r
- * If resource changes (create, rename or delete file) are part of the change the failure\r
- * handling startegy is abort.\r
- */\r
- FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional';\r
- /**\r
- * The client tries to undo the operations already executed. But there is no\r
- * guaruntee that this is succeeding.\r
- */\r
- FailureHandlingKind.Undo = 'undo';\r
-})(FailureHandlingKind = exports.FailureHandlingKind || (exports.FailureHandlingKind = {}));\r
-/**\r
- * Defines how the host (editor) should sync\r
- * document changes to the language server.\r
- */\r
-var TextDocumentSyncKind;\r
-(function (TextDocumentSyncKind) {\r
- /**\r
- * Documents should not be synced at all.\r
- */\r
- TextDocumentSyncKind.None = 0;\r
- /**\r
- * Documents are synced by always sending the full content\r
- * of the document.\r
- */\r
- TextDocumentSyncKind.Full = 1;\r
- /**\r
- * Documents are synced by sending the full content on open.\r
- * After that only incremental updates to the document are\r
- * send.\r
- */\r
- TextDocumentSyncKind.Incremental = 2;\r
-})(TextDocumentSyncKind = exports.TextDocumentSyncKind || (exports.TextDocumentSyncKind = {}));\r
-/**\r
- * The initialize request is sent from the client to the server.\r
- * It is sent once as the request after starting up the server.\r
- * The requests parameter is of type [InitializeParams](#InitializeParams)\r
- * the response if of type [InitializeResult](#InitializeResult) of a Thenable that\r
- * resolves to such.\r
- */\r
-var InitializeRequest;\r
-(function (InitializeRequest) {\r
- InitializeRequest.type = new vscode_jsonrpc_1.RequestType('initialize');\r
-})(InitializeRequest = exports.InitializeRequest || (exports.InitializeRequest = {}));\r
-/**\r
- * Known error codes for an `InitializeError`;\r
- */\r
-var InitializeError;\r
-(function (InitializeError) {\r
- /**\r
- * If the protocol version provided by the client can't be handled by the server.\r
- * @deprecated This initialize error got replaced by client capabilities. There is\r
- * no version handshake in version 3.0x\r
- */\r
- InitializeError.unknownProtocolVersion = 1;\r
-})(InitializeError = exports.InitializeError || (exports.InitializeError = {}));\r
-/**\r
- * The intialized notification is sent from the client to the\r
- * server after the client is fully initialized and the server\r
- * is allowed to send requests from the server to the client.\r
- */\r
-var InitializedNotification;\r
-(function (InitializedNotification) {\r
- InitializedNotification.type = new vscode_jsonrpc_1.NotificationType('initialized');\r
-})(InitializedNotification = exports.InitializedNotification || (exports.InitializedNotification = {}));\r
-//---- Shutdown Method ----\r
-/**\r
- * A shutdown request is sent from the client to the server.\r
- * It is sent once when the client decides to shutdown the\r
- * server. The only notification that is sent after a shutdown request\r
- * is the exit event.\r
- */\r
-var ShutdownRequest;\r
-(function (ShutdownRequest) {\r
- ShutdownRequest.type = new vscode_jsonrpc_1.RequestType0('shutdown');\r
-})(ShutdownRequest = exports.ShutdownRequest || (exports.ShutdownRequest = {}));\r
-//---- Exit Notification ----\r
-/**\r
- * The exit event is sent from the client to the server to\r
- * ask the server to exit its process.\r
- */\r
-var ExitNotification;\r
-(function (ExitNotification) {\r
- ExitNotification.type = new vscode_jsonrpc_1.NotificationType0('exit');\r
-})(ExitNotification = exports.ExitNotification || (exports.ExitNotification = {}));\r
-//---- Configuration notification ----\r
-/**\r
- * The configuration change notification is sent from the client to the server\r
- * when the client's configuration has changed. The notification contains\r
- * the changed configuration as defined by the language client.\r
- */\r
-var DidChangeConfigurationNotification;\r
-(function (DidChangeConfigurationNotification) {\r
- DidChangeConfigurationNotification.type = new vscode_jsonrpc_1.NotificationType('workspace/didChangeConfiguration');\r
-})(DidChangeConfigurationNotification = exports.DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = {}));\r
-//---- Message show and log notifications ----\r
-/**\r
- * The message type\r
- */\r
-var MessageType;\r
-(function (MessageType) {\r
- /**\r
- * An error message.\r
- */\r
- MessageType.Error = 1;\r
- /**\r
- * A warning message.\r
- */\r
- MessageType.Warning = 2;\r
- /**\r
- * An information message.\r
- */\r
- MessageType.Info = 3;\r
- /**\r
- * A log message.\r
- */\r
- MessageType.Log = 4;\r
-})(MessageType = exports.MessageType || (exports.MessageType = {}));\r
-/**\r
- * The show message notification is sent from a server to a client to ask\r
- * the client to display a particular message in the user interface.\r
- */\r
-var ShowMessageNotification;\r
-(function (ShowMessageNotification) {\r
- ShowMessageNotification.type = new vscode_jsonrpc_1.NotificationType('window/showMessage');\r
-})(ShowMessageNotification = exports.ShowMessageNotification || (exports.ShowMessageNotification = {}));\r
-/**\r
- * The show message request is sent from the server to the client to show a message\r
- * and a set of options actions to the user.\r
- */\r
-var ShowMessageRequest;\r
-(function (ShowMessageRequest) {\r
- ShowMessageRequest.type = new vscode_jsonrpc_1.RequestType('window/showMessageRequest');\r
-})(ShowMessageRequest = exports.ShowMessageRequest || (exports.ShowMessageRequest = {}));\r
-/**\r
- * The log message notification is sent from the server to the client to ask\r
- * the client to log a particular message.\r
- */\r
-var LogMessageNotification;\r
-(function (LogMessageNotification) {\r
- LogMessageNotification.type = new vscode_jsonrpc_1.NotificationType('window/logMessage');\r
-})(LogMessageNotification = exports.LogMessageNotification || (exports.LogMessageNotification = {}));\r
-//---- Telemetry notification\r
-/**\r
- * The telemetry event notification is sent from the server to the client to ask\r
- * the client to log telemetry data.\r
- */\r
-var TelemetryEventNotification;\r
-(function (TelemetryEventNotification) {\r
- TelemetryEventNotification.type = new vscode_jsonrpc_1.NotificationType('telemetry/event');\r
-})(TelemetryEventNotification = exports.TelemetryEventNotification || (exports.TelemetryEventNotification = {}));\r
-/**\r
- * The document open notification is sent from the client to the server to signal\r
- * newly opened text documents. The document's truth is now managed by the client\r
- * and the server must not try to read the document's truth using the document's\r
- * uri. Open in this sense means it is managed by the client. It doesn't necessarily\r
- * mean that its content is presented in an editor. An open notification must not\r
- * be sent more than once without a corresponding close notification send before.\r
- * This means open and close notification must be balanced and the max open count\r
- * is one.\r
- */\r
-var DidOpenTextDocumentNotification;\r
-(function (DidOpenTextDocumentNotification) {\r
- DidOpenTextDocumentNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/didOpen');\r
-})(DidOpenTextDocumentNotification = exports.DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = {}));\r
-/**\r
- * The document change notification is sent from the client to the server to signal\r
- * changes to a text document.\r
- */\r
-var DidChangeTextDocumentNotification;\r
-(function (DidChangeTextDocumentNotification) {\r
- DidChangeTextDocumentNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/didChange');\r
-})(DidChangeTextDocumentNotification = exports.DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = {}));\r
-/**\r
- * The document close notification is sent from the client to the server when\r
- * the document got closed in the client. The document's truth now exists where\r
- * the document's uri points to (e.g. if the document's uri is a file uri the\r
- * truth now exists on disk). As with the open notification the close notification\r
- * is about managing the document's content. Receiving a close notification\r
- * doesn't mean that the document was open in an editor before. A close\r
- * notification requires a previous open notification to be sent.\r
- */\r
-var DidCloseTextDocumentNotification;\r
-(function (DidCloseTextDocumentNotification) {\r
- DidCloseTextDocumentNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/didClose');\r
-})(DidCloseTextDocumentNotification = exports.DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = {}));\r
-/**\r
- * The document save notification is sent from the client to the server when\r
- * the document got saved in the client.\r
- */\r
-var DidSaveTextDocumentNotification;\r
-(function (DidSaveTextDocumentNotification) {\r
- DidSaveTextDocumentNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/didSave');\r
-})(DidSaveTextDocumentNotification = exports.DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = {}));\r
-/**\r
- * A document will save notification is sent from the client to the server before\r
- * the document is actually saved.\r
- */\r
-var WillSaveTextDocumentNotification;\r
-(function (WillSaveTextDocumentNotification) {\r
- WillSaveTextDocumentNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/willSave');\r
-})(WillSaveTextDocumentNotification = exports.WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = {}));\r
-/**\r
- * A document will save request is sent from the client to the server before\r
- * the document is actually saved. The request can return an array of TextEdits\r
- * which will be applied to the text document before it is saved. Please note that\r
- * clients might drop results if computing the text edits took too long or if a\r
- * server constantly fails on this request. This is done to keep the save fast and\r
- * reliable.\r
- */\r
-var WillSaveTextDocumentWaitUntilRequest;\r
-(function (WillSaveTextDocumentWaitUntilRequest) {\r
- WillSaveTextDocumentWaitUntilRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/willSaveWaitUntil');\r
-})(WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = {}));\r
-//---- File eventing ----\r
-/**\r
- * The watched files notification is sent from the client to the server when\r
- * the client detects changes to file watched by the language client.\r
- */\r
-var DidChangeWatchedFilesNotification;\r
-(function (DidChangeWatchedFilesNotification) {\r
- DidChangeWatchedFilesNotification.type = new vscode_jsonrpc_1.NotificationType('workspace/didChangeWatchedFiles');\r
-})(DidChangeWatchedFilesNotification = exports.DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = {}));\r
-/**\r
- * The file event type\r
- */\r
-var FileChangeType;\r
-(function (FileChangeType) {\r
- /**\r
- * The file got created.\r
- */\r
- FileChangeType.Created = 1;\r
- /**\r
- * The file got changed.\r
- */\r
- FileChangeType.Changed = 2;\r
- /**\r
- * The file got deleted.\r
- */\r
- FileChangeType.Deleted = 3;\r
-})(FileChangeType = exports.FileChangeType || (exports.FileChangeType = {}));\r
-var WatchKind;\r
-(function (WatchKind) {\r
- /**\r
- * Interested in create events.\r
- */\r
- WatchKind.Create = 1;\r
- /**\r
- * Interested in change events\r
- */\r
- WatchKind.Change = 2;\r
- /**\r
- * Interested in delete events\r
- */\r
- WatchKind.Delete = 4;\r
-})(WatchKind = exports.WatchKind || (exports.WatchKind = {}));\r
-//---- Diagnostic notification ----\r
-/**\r
- * Diagnostics notification are sent from the server to the client to signal\r
- * results of validation runs.\r
- */\r
-var PublishDiagnosticsNotification;\r
-(function (PublishDiagnosticsNotification) {\r
- PublishDiagnosticsNotification.type = new vscode_jsonrpc_1.NotificationType('textDocument/publishDiagnostics');\r
-})(PublishDiagnosticsNotification = exports.PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = {}));\r
-/**\r
- * How a completion was triggered\r
- */\r
-var CompletionTriggerKind;\r
-(function (CompletionTriggerKind) {\r
- /**\r
- * Completion was triggered by typing an identifier (24x7 code\r
- * complete), manual invocation (e.g Ctrl+Space) or via API.\r
- */\r
- CompletionTriggerKind.Invoked = 1;\r
- /**\r
- * Completion was triggered by a trigger character specified by\r
- * the `triggerCharacters` properties of the `CompletionRegistrationOptions`.\r
- */\r
- CompletionTriggerKind.TriggerCharacter = 2;\r
- /**\r
- * Completion was re-triggered as current completion list is incomplete\r
- */\r
- CompletionTriggerKind.TriggerForIncompleteCompletions = 3;\r
-})(CompletionTriggerKind = exports.CompletionTriggerKind || (exports.CompletionTriggerKind = {}));\r
-/**\r
- * Request to request completion at a given text document position. The request's\r
- * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response\r
- * is of type [CompletionItem[]](#CompletionItem) or [CompletionList](#CompletionList)\r
- * or a Thenable that resolves to such.\r
- *\r
- * The request can delay the computation of the [`detail`](#CompletionItem.detail)\r
- * and [`documentation`](#CompletionItem.documentation) properties to the `completionItem/resolve`\r
- * request. However, properties that are needed for the initial sorting and filtering, like `sortText`,\r
- * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.\r
- */\r
-var CompletionRequest;\r
-(function (CompletionRequest) {\r
- CompletionRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/completion');\r
-})(CompletionRequest = exports.CompletionRequest || (exports.CompletionRequest = {}));\r
-/**\r
- * Request to resolve additional information for a given completion item.The request's\r
- * parameter is of type [CompletionItem](#CompletionItem) the response\r
- * is of type [CompletionItem](#CompletionItem) or a Thenable that resolves to such.\r
- */\r
-var CompletionResolveRequest;\r
-(function (CompletionResolveRequest) {\r
- CompletionResolveRequest.type = new vscode_jsonrpc_1.RequestType('completionItem/resolve');\r
-})(CompletionResolveRequest = exports.CompletionResolveRequest || (exports.CompletionResolveRequest = {}));\r
-//---- Hover Support -------------------------------\r
-/**\r
- * Request to request hover information at a given text document position. The request's\r
- * parameter is of type [TextDocumentPosition](#TextDocumentPosition) the response is of\r
- * type [Hover](#Hover) or a Thenable that resolves to such.\r
- */\r
-var HoverRequest;\r
-(function (HoverRequest) {\r
- HoverRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/hover');\r
-})(HoverRequest = exports.HoverRequest || (exports.HoverRequest = {}));\r
-var SignatureHelpRequest;\r
-(function (SignatureHelpRequest) {\r
- SignatureHelpRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/signatureHelp');\r
-})(SignatureHelpRequest = exports.SignatureHelpRequest || (exports.SignatureHelpRequest = {}));\r
-//---- Goto Definition -------------------------------------\r
-/**\r
- * A request to resolve the definition location of a symbol at a given text\r
- * document position. The request's parameter is of type [TextDocumentPosition]\r
- * (#TextDocumentPosition) the response is of either type [Definition](#Definition)\r
- * or a typed array of [DefinitionLink](#DefinitionLink) or a Thenable that resolves\r
- * to such.\r
- */\r
-var DefinitionRequest;\r
-(function (DefinitionRequest) {\r
- DefinitionRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/definition');\r
-})(DefinitionRequest = exports.DefinitionRequest || (exports.DefinitionRequest = {}));\r
-/**\r
- * A request to resolve project-wide references for the symbol denoted\r
- * by the given text document position. The request's parameter is of\r
- * type [ReferenceParams](#ReferenceParams) the response is of type\r
- * [Location[]](#Location) or a Thenable that resolves to such.\r
- */\r
-var ReferencesRequest;\r
-(function (ReferencesRequest) {\r
- ReferencesRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/references');\r
-})(ReferencesRequest = exports.ReferencesRequest || (exports.ReferencesRequest = {}));\r
-//---- Document Highlight ----------------------------------\r
-/**\r
- * Request to resolve a [DocumentHighlight](#DocumentHighlight) for a given\r
- * text document position. The request's parameter is of type [TextDocumentPosition]\r
- * (#TextDocumentPosition) the request response is of type [DocumentHighlight[]]\r
- * (#DocumentHighlight) or a Thenable that resolves to such.\r
- */\r
-var DocumentHighlightRequest;\r
-(function (DocumentHighlightRequest) {\r
- DocumentHighlightRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/documentHighlight');\r
-})(DocumentHighlightRequest = exports.DocumentHighlightRequest || (exports.DocumentHighlightRequest = {}));\r
-//---- Document Symbol Provider ---------------------------\r
-/**\r
- * A request to list all symbols found in a given text document. The request's\r
- * parameter is of type [TextDocumentIdentifier](#TextDocumentIdentifier) the\r
- * response is of type [SymbolInformation[]](#SymbolInformation) or a Thenable\r
- * that resolves to such.\r
- */\r
-var DocumentSymbolRequest;\r
-(function (DocumentSymbolRequest) {\r
- DocumentSymbolRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/documentSymbol');\r
-})(DocumentSymbolRequest = exports.DocumentSymbolRequest || (exports.DocumentSymbolRequest = {}));\r
-//---- Workspace Symbol Provider ---------------------------\r
-/**\r
- * A request to list project-wide symbols matching the query string given\r
- * by the [WorkspaceSymbolParams](#WorkspaceSymbolParams). The response is\r
- * of type [SymbolInformation[]](#SymbolInformation) or a Thenable that\r
- * resolves to such.\r
- */\r
-var WorkspaceSymbolRequest;\r
-(function (WorkspaceSymbolRequest) {\r
- WorkspaceSymbolRequest.type = new vscode_jsonrpc_1.RequestType('workspace/symbol');\r
-})(WorkspaceSymbolRequest = exports.WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = {}));\r
-/**\r
- * A request to provide commands for the given text document and range.\r
- */\r
-var CodeActionRequest;\r
-(function (CodeActionRequest) {\r
- CodeActionRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/codeAction');\r
-})(CodeActionRequest = exports.CodeActionRequest || (exports.CodeActionRequest = {}));\r
-/**\r
- * A request to provide code lens for the given text document.\r
- */\r
-var CodeLensRequest;\r
-(function (CodeLensRequest) {\r
- CodeLensRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/codeLens');\r
-})(CodeLensRequest = exports.CodeLensRequest || (exports.CodeLensRequest = {}));\r
-/**\r
- * A request to resolve a command for a given code lens.\r
- */\r
-var CodeLensResolveRequest;\r
-(function (CodeLensResolveRequest) {\r
- CodeLensResolveRequest.type = new vscode_jsonrpc_1.RequestType('codeLens/resolve');\r
-})(CodeLensResolveRequest = exports.CodeLensResolveRequest || (exports.CodeLensResolveRequest = {}));\r
-/**\r
- * A request to to format a whole document.\r
- */\r
-var DocumentFormattingRequest;\r
-(function (DocumentFormattingRequest) {\r
- DocumentFormattingRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/formatting');\r
-})(DocumentFormattingRequest = exports.DocumentFormattingRequest || (exports.DocumentFormattingRequest = {}));\r
-/**\r
- * A request to to format a range in a document.\r
- */\r
-var DocumentRangeFormattingRequest;\r
-(function (DocumentRangeFormattingRequest) {\r
- DocumentRangeFormattingRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/rangeFormatting');\r
-})(DocumentRangeFormattingRequest = exports.DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = {}));\r
-/**\r
- * A request to format a document on type.\r
- */\r
-var DocumentOnTypeFormattingRequest;\r
-(function (DocumentOnTypeFormattingRequest) {\r
- DocumentOnTypeFormattingRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/onTypeFormatting');\r
-})(DocumentOnTypeFormattingRequest = exports.DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = {}));\r
-/**\r
- * A request to rename a symbol.\r
- */\r
-var RenameRequest;\r
-(function (RenameRequest) {\r
- RenameRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/rename');\r
-})(RenameRequest = exports.RenameRequest || (exports.RenameRequest = {}));\r
-/**\r
- * A request to test and perform the setup necessary for a rename.\r
- */\r
-var PrepareRenameRequest;\r
-(function (PrepareRenameRequest) {\r
- PrepareRenameRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/prepareRename');\r
-})(PrepareRenameRequest = exports.PrepareRenameRequest || (exports.PrepareRenameRequest = {}));\r
-/**\r
- * A request to provide document links\r
- */\r
-var DocumentLinkRequest;\r
-(function (DocumentLinkRequest) {\r
- DocumentLinkRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/documentLink');\r
-})(DocumentLinkRequest = exports.DocumentLinkRequest || (exports.DocumentLinkRequest = {}));\r
-/**\r
- * Request to resolve additional information for a given document link. The request's\r
- * parameter is of type [DocumentLink](#DocumentLink) the response\r
- * is of type [DocumentLink](#DocumentLink) or a Thenable that resolves to such.\r
- */\r
-var DocumentLinkResolveRequest;\r
-(function (DocumentLinkResolveRequest) {\r
- DocumentLinkResolveRequest.type = new vscode_jsonrpc_1.RequestType('documentLink/resolve');\r
-})(DocumentLinkResolveRequest = exports.DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = {}));\r
-/**\r
- * A request send from the client to the server to execute a command. The request might return\r
- * a workspace edit which the client will apply to the workspace.\r
- */\r
-var ExecuteCommandRequest;\r
-(function (ExecuteCommandRequest) {\r
- ExecuteCommandRequest.type = new vscode_jsonrpc_1.RequestType('workspace/executeCommand');\r
-})(ExecuteCommandRequest = exports.ExecuteCommandRequest || (exports.ExecuteCommandRequest = {}));\r
-/**\r
- * A request sent from the server to the client to modified certain resources.\r
- */\r
-var ApplyWorkspaceEditRequest;\r
-(function (ApplyWorkspaceEditRequest) {\r
- ApplyWorkspaceEditRequest.type = new vscode_jsonrpc_1.RequestType('workspace/applyEdit');\r
-})(ApplyWorkspaceEditRequest = exports.ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = {}));\r
-
-
-/***/ }),
-/* 21 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-function boolean(value) {\r
- return value === true || value === false;\r
-}\r
-exports.boolean = boolean;\r
-function string(value) {\r
- return typeof value === 'string' || value instanceof String;\r
-}\r
-exports.string = string;\r
-function number(value) {\r
- return typeof value === 'number' || value instanceof Number;\r
-}\r
-exports.number = number;\r
-function error(value) {\r
- return value instanceof Error;\r
-}\r
-exports.error = error;\r
-function func(value) {\r
- return typeof value === 'function';\r
-}\r
-exports.func = func;\r
-function array(value) {\r
- return Array.isArray(value);\r
-}\r
-exports.array = array;\r
-function stringArray(value) {\r
- return array(value) && value.every(elem => string(elem));\r
-}\r
-exports.stringArray = stringArray;\r
-function typedArray(value, check) {\r
- return Array.isArray(value) && value.every(check);\r
-}\r
-exports.typedArray = typedArray;\r
-function thenable(value) {\r
- return value && func(value.then);\r
-}\r
-exports.thenable = thenable;\r
-
-
-/***/ }),
-/* 22 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r
-let __noDynamicImport;\r
-/**\r
- * A request to resolve the implementation locations of a symbol at a given text\r
- * document position. The request's parameter is of type [TextDocumentPositioParams]\r
- * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a\r
- * Thenable that resolves to such.\r
- */\r
-var ImplementationRequest;\r
-(function (ImplementationRequest) {\r
- ImplementationRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/implementation');\r
-})(ImplementationRequest = exports.ImplementationRequest || (exports.ImplementationRequest = {}));\r
-
-
-/***/ }),
-/* 23 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r
-let __noDynamicImport;\r
-/**\r
- * A request to resolve the type definition locations of a symbol at a given text\r
- * document position. The request's parameter is of type [TextDocumentPositioParams]\r
- * (#TextDocumentPositionParams) the response is of type [Definition](#Definition) or a\r
- * Thenable that resolves to such.\r
- */\r
-var TypeDefinitionRequest;\r
-(function (TypeDefinitionRequest) {\r
- TypeDefinitionRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/typeDefinition');\r
-})(TypeDefinitionRequest = exports.TypeDefinitionRequest || (exports.TypeDefinitionRequest = {}));\r
-
-
-/***/ }),
-/* 24 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-/**\r
- * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.\r
- */\r
-var WorkspaceFoldersRequest;\r
-(function (WorkspaceFoldersRequest) {\r
- WorkspaceFoldersRequest.type = new vscode_jsonrpc_1.RequestType0('workspace/workspaceFolders');\r
-})(WorkspaceFoldersRequest = exports.WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = {}));\r
-/**\r
- * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace\r
- * folder configuration changes.\r
- */\r
-var DidChangeWorkspaceFoldersNotification;\r
-(function (DidChangeWorkspaceFoldersNotification) {\r
- DidChangeWorkspaceFoldersNotification.type = new vscode_jsonrpc_1.NotificationType('workspace/didChangeWorkspaceFolders');\r
-})(DidChangeWorkspaceFoldersNotification = exports.DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = {}));\r
-
-
-/***/ }),
-/* 25 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-/**\r
- * The 'workspace/configuration' request is sent from the server to the client to fetch a certain\r
- * configuration setting.\r
- *\r
- * This pull model replaces the old push model were the client signaled configuration change via an\r
- * event. If the server still needs to react to configuration changes (since the server caches the\r
- * result of `workspace/configuration` requests) the server should register for an empty configuration\r
- * change event and empty the cache if such an event is received.\r
- */\r
-var ConfigurationRequest;\r
-(function (ConfigurationRequest) {\r
- ConfigurationRequest.type = new vscode_jsonrpc_1.RequestType('workspace/configuration');\r
-})(ConfigurationRequest = exports.ConfigurationRequest || (exports.ConfigurationRequest = {}));\r
-
-
-/***/ }),
-/* 26 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-/**\r
- * A request to list all color symbols found in a given text document. The request's\r
- * parameter is of type [DocumentColorParams](#DocumentColorParams) the\r
- * response is of type [ColorInformation[]](#ColorInformation) or a Thenable\r
- * that resolves to such.\r
- */\r
-var DocumentColorRequest;\r
-(function (DocumentColorRequest) {\r
- DocumentColorRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/documentColor');\r
-})(DocumentColorRequest = exports.DocumentColorRequest || (exports.DocumentColorRequest = {}));\r
-/**\r
- * A request to list all presentation for a color. The request's\r
- * parameter is of type [ColorPresentationParams](#ColorPresentationParams) the\r
- * response is of type [ColorInformation[]](#ColorInformation) or a Thenable\r
- * that resolves to such.\r
- */\r
-var ColorPresentationRequest;\r
-(function (ColorPresentationRequest) {\r
- ColorPresentationRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/colorPresentation');\r
-})(ColorPresentationRequest = exports.ColorPresentationRequest || (exports.ColorPresentationRequest = {}));\r
-
-
-/***/ }),
-/* 27 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-\r
-/*---------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- *--------------------------------------------------------------------------------------------*/\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-/**\r
- * Enum of known range kinds\r
- */\r
-var FoldingRangeKind;\r
-(function (FoldingRangeKind) {\r
- /**\r
- * Folding range for a comment\r
- */\r
- FoldingRangeKind["Comment"] = "comment";\r
- /**\r
- * Folding range for a imports or includes\r
- */\r
- FoldingRangeKind["Imports"] = "imports";\r
- /**\r
- * Folding range for a region (e.g. `#region`)\r
- */\r
- FoldingRangeKind["Region"] = "region";\r
-})(FoldingRangeKind = exports.FoldingRangeKind || (exports.FoldingRangeKind = {}));\r
-/**\r
- * A request to provide folding ranges in a document. The request's\r
- * parameter is of type [FoldingRangeParams](#FoldingRangeParams), the\r
- * response is of type [FoldingRangeList](#FoldingRangeList) or a Thenable\r
- * that resolves to such.\r
- */\r
-var FoldingRangeRequest;\r
-(function (FoldingRangeRequest) {\r
- FoldingRangeRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/foldingRange');\r
-})(FoldingRangeRequest = exports.FoldingRangeRequest || (exports.FoldingRangeRequest = {}));\r
-
-
-/***/ }),
-/* 28 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* --------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- * ------------------------------------------------------------------------------------------ */\r
-\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-// @ts-ignore: to avoid inlining LocatioLink as dynamic import\r
-let __noDynamicImport;\r
-/**\r
- * A request to resolve the type definition locations of a symbol at a given text\r
- * document position. The request's parameter is of type [TextDocumentPositioParams]\r
- * (#TextDocumentPositionParams) the response is of type [Declaration](#Declaration)\r
- * or a typed array of [DeclarationLink](#DeclarationLink) or a Thenable that resolves\r
- * to such.\r
- */\r
-var DeclarationRequest;\r
-(function (DeclarationRequest) {\r
- DeclarationRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/declaration');\r
-})(DeclarationRequest = exports.DeclarationRequest || (exports.DeclarationRequest = {}));\r
-
-
-/***/ }),
-/* 29 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-\r
-/*---------------------------------------------------------------------------------------------\r
- * Copyright (c) Microsoft Corporation. All rights reserved.\r
- * Licensed under the MIT License. See License.txt in the project root for license information.\r
- *--------------------------------------------------------------------------------------------*/\r
-Object.defineProperty(exports, "__esModule", { value: true });\r
-const vscode_jsonrpc_1 = __webpack_require__(6);\r
-/**\r
- * Enum of known selection range kinds\r
- */\r
-var SelectionRangeKind;\r
-(function (SelectionRangeKind) {\r
- /**\r
- * Empty Kind.\r
- */\r
- SelectionRangeKind["Empty"] = "";\r
- /**\r
- * The statment kind, its value is `statement`, possible extensions can be\r
- * `statement.if` etc\r
- */\r
- SelectionRangeKind["Statement"] = "statement";\r
- /**\r
- * The declaration kind, its value is `declaration`, possible extensions can be\r
- * `declaration.function`, `declaration.class` etc.\r
- */\r
- SelectionRangeKind["Declaration"] = "declaration";\r
-})(SelectionRangeKind = exports.SelectionRangeKind || (exports.SelectionRangeKind = {}));\r
-/**\r
- * A request to provide selection ranges in a document. The request's\r
- * parameter is of type [TextDocumentPositionParams](#TextDocumentPositionParams), the\r
- * response is of type [SelectionRange[]](#SelectionRange[]) or a Thenable\r
- * that resolves to such.\r
- */\r
-var SelectionRangeRequest;\r
-(function (SelectionRangeRequest) {\r
- SelectionRangeRequest.type = new vscode_jsonrpc_1.RequestType('textDocument/selectionRange');\r
-})(SelectionRangeRequest = exports.SelectionRangeRequest || (exports.SelectionRangeRequest = {}));\r
-
-
-/***/ }),
-/* 30 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-Object.defineProperty(exports, "__esModule", { value: true });
-const tslib_1 = __webpack_require__(1);
-const path_1 = tslib_1.__importDefault(__webpack_require__(4));
-const fs_1 = tslib_1.__importDefault(__webpack_require__(3));
-const which_1 = tslib_1.__importDefault(__webpack_require__(31));
-function exists(file) {
- return fs_1.default.existsSync(file);
-}
-function findEslint(rootPath) {
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
- const platform = process.platform;
- if (platform === 'win32' &&
- (exists(path_1.default.join(rootPath, 'node_modules', '.bin', 'eslint.cmd')))) {
- return path_1.default.join('.', 'node_modules', '.bin', 'eslint.cmd');
- }
- else if ((platform === 'linux' || platform === 'darwin') &&
- (exists(path_1.default.join(rootPath, 'node_modules', '.bin', 'eslint')))) {
- return path_1.default.join('.', 'node_modules', '.bin', 'eslint');
- }
- else {
- try {
- return which_1.default.sync('eslint');
- }
- catch (e) {
- return '';
- }
- }
- });
-}
-exports.findEslint = findEslint;
-//# sourceMappingURL=utils.js.map
-
-/***/ }),
-/* 31 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = which
-which.sync = whichSync
-
-var isWindows = process.platform === 'win32' ||
- process.env.OSTYPE === 'cygwin' ||
- process.env.OSTYPE === 'msys'
-
-var path = __webpack_require__(4)
-var COLON = isWindows ? ';' : ':'
-var isexe = __webpack_require__(32)
-
-function getNotFoundError (cmd) {
- var er = new Error('not found: ' + cmd)
- er.code = 'ENOENT'
-
- return er
-}
-
-function getPathInfo (cmd, opt) {
- var colon = opt.colon || COLON
- var pathEnv = opt.path || process.env.PATH || ''
- var pathExt = ['']
-
- pathEnv = pathEnv.split(colon)
-
- var pathExtExe = ''
- if (isWindows) {
- pathEnv.unshift(process.cwd())
- pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
- pathExt = pathExtExe.split(colon)
-
-
- // Always test the cmd itself first. isexe will check to make sure
- // it's found in the pathExt set.
- if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
- pathExt.unshift('')
- }
-
- // If it has a slash, then we don't bother searching the pathenv.
- // just check the file itself, and that's it.
- if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
- pathEnv = ['']
-
- return {
- env: pathEnv,
- ext: pathExt,
- extExe: pathExtExe
- }
-}
-
-function which (cmd, opt, cb) {
- if (typeof opt === 'function') {
- cb = opt
- opt = {}
- }
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- ;(function F (i, l) {
- if (i === l) {
- if (opt.all && found.length)
- return cb(null, found)
- else
- return cb(getNotFoundError(cmd))
- }
-
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- ;(function E (ii, ll) {
- if (ii === ll) return F(i + 1, l)
- var ext = pathExt[ii]
- isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
- if (!er && is) {
- if (opt.all)
- found.push(p + ext)
- else
- return cb(null, p + ext)
- }
- return E(ii + 1, ll)
- })
- })(0, pathExt.length)
- })(0, pathEnv.length)
-}
-
-function whichSync (cmd, opt) {
- opt = opt || {}
-
- var info = getPathInfo(cmd, opt)
- var pathEnv = info.env
- var pathExt = info.ext
- var pathExtExe = info.extExe
- var found = []
-
- for (var i = 0, l = pathEnv.length; i < l; i ++) {
- var pathPart = pathEnv[i]
- if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
- pathPart = pathPart.slice(1, -1)
-
- var p = path.join(pathPart, cmd)
- if (!pathPart && /^\.[\\\/]/.test(cmd)) {
- p = cmd.slice(0, 2) + p
- }
- for (var j = 0, ll = pathExt.length; j < ll; j ++) {
- var cur = p + pathExt[j]
- var is
- try {
- is = isexe.sync(cur, { pathExt: pathExtExe })
- if (is) {
- if (opt.all)
- found.push(cur)
- else
- return cur
- }
- } catch (ex) {}
- }
- }
-
- if (opt.all && found.length)
- return found
-
- if (opt.nothrow)
- return null
-
- throw getNotFoundError(cmd)
-}
-
-
-/***/ }),
-/* 32 */
-/***/ (function(module, exports, __webpack_require__) {
-
-var fs = __webpack_require__(3)
-var core
-if (process.platform === 'win32' || global.TESTING_WINDOWS) {
- core = __webpack_require__(33)
-} else {
- core = __webpack_require__(34)
-}
-
-module.exports = isexe
-isexe.sync = sync
-
-function isexe (path, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
-
- if (!cb) {
- if (typeof Promise !== 'function') {
- throw new TypeError('callback not provided')
- }
-
- return new Promise(function (resolve, reject) {
- isexe(path, options || {}, function (er, is) {
- if (er) {
- reject(er)
- } else {
- resolve(is)
- }
- })
- })
- }
-
- core(path, options || {}, function (er, is) {
- // ignore EACCES because that just means we aren't allowed to run it
- if (er) {
- if (er.code === 'EACCES' || options && options.ignoreErrors) {
- er = null
- is = false
- }
- }
- cb(er, is)
- })
-}
-
-function sync (path, options) {
- // my kingdom for a filtered catch
- try {
- return core.sync(path, options || {})
- } catch (er) {
- if (options && options.ignoreErrors || er.code === 'EACCES') {
- return false
- } else {
- throw er
- }
- }
-}
-
-
-/***/ }),
-/* 33 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = isexe
-isexe.sync = sync
-
-var fs = __webpack_require__(3)
-
-function checkPathExt (path, options) {
- var pathext = options.pathExt !== undefined ?
- options.pathExt : process.env.PATHEXT
-
- if (!pathext) {
- return true
- }
-
- pathext = pathext.split(';')
- if (pathext.indexOf('') !== -1) {
- return true
- }
- for (var i = 0; i < pathext.length; i++) {
- var p = pathext[i].toLowerCase()
- if (p && path.substr(-p.length).toLowerCase() === p) {
- return true
- }
- }
- return false
-}
-
-function checkStat (stat, path, options) {
- if (!stat.isSymbolicLink() && !stat.isFile()) {
- return false
- }
- return checkPathExt(path, options)
-}
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, path, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), path, options)
-}
-
-
-/***/ }),
-/* 34 */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = isexe
-isexe.sync = sync
-
-var fs = __webpack_require__(3)
-
-function isexe (path, options, cb) {
- fs.stat(path, function (er, stat) {
- cb(er, er ? false : checkStat(stat, options))
- })
-}
-
-function sync (path, options) {
- return checkStat(fs.statSync(path), options)
-}
-
-function checkStat (stat, options) {
- return stat.isFile() && checkMode(stat, options)
-}
-
-function checkMode (stat, options) {
- var mod = stat.mode
- var uid = stat.uid
- var gid = stat.gid
-
- var myUid = options.uid !== undefined ?
- options.uid : process.getuid && process.getuid()
- var myGid = options.gid !== undefined ?
- options.gid : process.getgid && process.getgid()
-
- var u = parseInt('100', 8)
- var g = parseInt('010', 8)
- var o = parseInt('001', 8)
- var ug = u | g
-
- var ret = (mod & o) ||
- (mod & g) && gid === myGid ||
- (mod & u) && uid === myUid ||
- (mod & ug) && myUid === 0
-
- return ret
-}
-
-
-/***/ })
-/******/ ])));
\ No newline at end of file