diff --git a/CHANGELOG.md b/CHANGELOG.md index ade0a4c9..6956b2aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +# [1.9.0](https://github.com/lgeiger/ide-python/compare/v1.8.0...v1.9.0) (2021-06-09) + + +### Bug Fixes + +* update react ([62049b9](https://github.com/lgeiger/ide-python/commit/62049b9999c462894e3bdd301555b5c7468e9ab7)) +* use which to detect pylsp ([a2c8444](https://github.com/lgeiger/ide-python/commit/a2c844429a717add01d07369a4e0ef0e3255334e)) + + +### Features + +* default to python-lsp-server (pylsp) instead of pyls ([01dfc6c](https://github.com/lgeiger/ide-python/commit/01dfc6cafc0d22a146e7b1cd960cf13ce7e74bae)) +* install atom-ide-base by default ([7bd1e14](https://github.com/lgeiger/ide-python/commit/7bd1e14a706fc8197b952268fc858dc77e468e42)) +* make the path to pyls executable configurable ([ad4d166](https://github.com/lgeiger/ide-python/commit/ad4d16630b126e73347995ea8dd3f136ddd06e38)) +* update atom-languageclient ([cb1db60](https://github.com/lgeiger/ide-python/commit/cb1db60b26fb5edb0c560ed9248ce3b648751fec)) +* update atom-languageclient + use pylsp ([#334](https://github.com/lgeiger/ide-python/issues/334)) ([b56f580](https://github.com/lgeiger/ide-python/commit/b56f580b0f340720fdfe6592e3b9da113bb7fa54)) +* use spawn capabilities of language client ([1cd5126](https://github.com/lgeiger/ide-python/commit/1cd512688fcf457ccd0f5982781b4ffef89540f8)) + # [1.8.0](https://github.com/lgeiger/ide-python/compare/v1.7.4...v1.8.0) (2021-03-23) diff --git a/dist/debugger/main.js b/dist/debugger/main.js index 1f051510..765b5ea5 100644 --- a/dist/debugger/main.js +++ b/dist/debugger/main.js @@ -19,9 +19,9 @@ var _utils = require("./utils"); var _path = _interopRequireDefault(require("path")); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/dist/debugger/utils.js b/dist/debugger/utils.js index a9f4f380..c566e428 100644 --- a/dist/debugger/utils.js +++ b/dist/debugger/utils.js @@ -27,9 +27,9 @@ var _nullthrows = _interopRequireDefault(require("nullthrows")); var _log4js = require("log4js"); -function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/dist/main.js b/dist/main.js index 192f6225..f26cb867 100644 --- a/dist/main.js +++ b/dist/main.js @@ -2,12 +2,12 @@ var _main = require("./debugger/main"); -const cp = require("child_process"); - const { shell } = require("electron"); +const whichSync = require("which").sync; + const { AutoLanguageClient } = require("atom-languageclient"); @@ -24,6 +24,20 @@ const { const PYTHON_REGEX = /(([^\d\W]|[\u00A0-\uFFFF])[\w.\u00A0-\uFFFF]*)|\.$/; class PythonLanguageClient extends AutoLanguageClient { + activate() { + super.activate(); + + if (!atom.packages.isPackageLoaded("atom-ide-base")) { + // install if not installed + // eslint-disable-next-line @typescript-eslint/no-var-requires + require("atom-package-deps").install("ide-python", true).then(() => { + // enable if disabled + atom.packages.enablePackage("atom-ide-base"); + atom.notifications.addSuccess("ide-pyhon: atom-ide-base was installed and enabled..."); + }); + } + } + getGrammarScopes() { return ["source.python", "python"]; } @@ -66,33 +80,43 @@ class PythonLanguageClient extends AutoLanguageClient { } const python = replacePipEnvPathVar(atom.config.get("ide-python.python"), venvPath); - const childProcess = cp.spawn(python, ["-m", "pyls"], { + let pyls = atom.config.get("ide-python.pyls") || "pylsp"; // check if it exists + + if (whichSync(pyls, { + nothrow: true + }) === null) { + pyls = "pyls"; + } + + const childProcess = super.spawn(python, ["-m", pyls], { cwd: projectPath, env: pylsEnvironment }); - childProcess.on("error", err => { - const description = err.code == "ENOENT" ? `No Python interpreter found at \`${python}\`.` : `Could not spawn the Python interpreter \`${python}\`.`; - atom.notifications.addError("`ide-python` could not launch your Python runtime.", { + return childProcess; + } + + onSpawnError(err) { + const description = err.code == "ENOENT" ? `No Python interpreter found at \`${python}\`.` : `Could not spawn the Python interpreter \`${python}\`.`; + atom.notifications.addError("`ide-python` could not launch your Python runtime.", { + dismissable: true, + description: `${description}

If you have Python installed please set "Python Executable" setting correctly. If you do not please install Python.

` + }); + } + + onSpawnClose(code, signal) { + if (code !== 0 && signal == null) { + atom.notifications.addError("Unable to start the Python language server.", { dismissable: true, - description: `${description}

If you have Python installed please set "Python Executable" setting correctly. If you do not please install Python.

` + buttons: [{ + text: "Install Instructions", + onDidClick: () => atom.workspace.open("atom://config/packages/ide-python") + }, { + text: "Download Python", + onDidClick: () => shell.openExternal("https://www.python.org/downloads/") + }], + description: "Make sure to install `pylsp` 0.19 or newer by running:\n" + "```\n" + `${python} -m pip install 'python-lsp-server[all]'\n` + `${python} -m pip install git+https://github.com/tomv564/pyls-mypy.git\n` + "```" }); - }); - childProcess.on("close", (code, signal) => { - if (code !== 0 && signal == null) { - atom.notifications.addError("Unable to start the Python language server.", { - dismissable: true, - buttons: [{ - text: "Install Instructions", - onDidClick: () => atom.workspace.open("atom://config/packages/ide-python") - }, { - text: "Download Python", - onDidClick: () => shell.openExternal("https://www.python.org/downloads/") - }], - description: "Make sure to install `pyls` 0.19 or newer by running:\n" + "```\n" + `${python} -m pip install 'python-language-server[all]'\n` + `${python} -m pip install git+https://github.com/tomv564/pyls-mypy.git\n` + "```" - }); - } - }); - return childProcess; + } } async getSuggestions(request) { @@ -121,4 +145,4 @@ const pythonClient = new PythonLanguageClient(); pythonClient.createDebuggerProvider = _main.createDebuggerProvider; // add the debugger module.exports = pythonClient; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiXSwibmFtZXMiOlsiY3AiLCJyZXF1aXJlIiwic2hlbGwiLCJBdXRvTGFuZ3VhZ2VDbGllbnQiLCJkZXRlY3RWaXJ0dWFsRW52IiwiZGV0ZWN0UGlwRW52IiwicmVwbGFjZVBpcEVudlBhdGhWYXIiLCJzYW5pdGl6ZUNvbmZpZyIsIlBZVEhPTl9SRUdFWCIsIlB5dGhvbkxhbmd1YWdlQ2xpZW50IiwiZ2V0R3JhbW1hclNjb3BlcyIsImdldExhbmd1YWdlTmFtZSIsImdldFNlcnZlck5hbWUiLCJnZXRSb290Q29uZmlndXJhdGlvbktleSIsImFjdGl2YXRlIiwiYXRvbSIsImNvbmZpZyIsInVuc2V0IiwibWFwQ29uZmlndXJhdGlvbk9iamVjdCIsImNvbmZpZ3VyYXRpb24iLCJweWxzIiwiY29uZmlndXJhdGlvblNvdXJjZXMiLCJweWxzQ29uZmlndXJhdGlvblNvdXJjZXMiLCJyb3BlIiwicGx1Z2lucyIsInB5bHNQbHVnaW5zIiwic3RhcnRTZXJ2ZXJQcm9jZXNzIiwicHJvamVjdFBhdGgiLCJ2ZW52UGF0aCIsInB5bHNFbnZpcm9ubWVudCIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJlbnYiLCJweXRob24iLCJnZXQiLCJjaGlsZFByb2Nlc3MiLCJzcGF3biIsImN3ZCIsIm9uIiwiZXJyIiwiZGVzY3JpcHRpb24iLCJjb2RlIiwibm90aWZpY2F0aW9ucyIsImFkZEVycm9yIiwiZGlzbWlzc2FibGUiLCJzaWduYWwiLCJidXR0b25zIiwidGV4dCIsIm9uRGlkQ2xpY2siLCJ3b3Jrc3BhY2UiLCJvcGVuIiwib3BlbkV4dGVybmFsIiwiZ2V0U3VnZ2VzdGlvbnMiLCJyZXF1ZXN0IiwidGVzdCIsInByZWZpeCIsImRlYWN0aXZhdGUiLCJQcm9taXNlIiwicmFjZSIsImNyZWF0ZVRpbWVvdXRQcm9taXNlIiwibWlsbGlzZWNvbmRzIiwicmVzb2x2ZSIsInJlamVjdCIsInRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwibG9nZ2VyIiwiZXJyb3IiLCJweXRob25DbGllbnQiLCJjcmVhdGVEZWJ1Z2dlclByb3ZpZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7QUFMQSxNQUFNQSxFQUFFLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQWxCOztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFZRCxPQUFPLENBQUMsVUFBRCxDQUF6Qjs7QUFDQSxNQUFNO0FBQUVFLEVBQUFBO0FBQUYsSUFBeUJGLE9BQU8sQ0FBQyxxQkFBRCxDQUF0Qzs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBLGdCQUFGO0FBQW9CQyxFQUFBQSxZQUFwQjtBQUFrQ0MsRUFBQUEsb0JBQWxDO0FBQXdEQyxFQUFBQTtBQUF4RCxJQUEyRU4sT0FBTyxDQUFDLFNBQUQsQ0FBeEY7O0FBSUE7QUFDQTtBQUNBLE1BQU1PLFlBQVksR0FBRyxvREFBckI7O0FBRUEsTUFBTUMsb0JBQU4sU0FBbUNOLGtCQUFuQyxDQUFzRDtBQUNwRE8sRUFBQUEsZ0JBQWdCLEdBQUc7QUFDakIsV0FBTyxDQUFDLGVBQUQsRUFBa0IsUUFBbEIsQ0FBUDtBQUNEOztBQUVEQyxFQUFBQSxlQUFlLEdBQUc7QUFDaEIsV0FBTyxRQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLGFBQWEsR0FBRztBQUNkLFdBQU8sTUFBUDtBQUNEOztBQUVEQyxFQUFBQSx1QkFBdUIsR0FBRztBQUN4QixXQUFPLFlBQVA7QUFDRDs7QUFFREMsRUFBQUEsUUFBUSxHQUFHO0FBQ1Q7QUFDQUMsSUFBQUEsSUFBSSxDQUFDQyxNQUFMLENBQVlDLEtBQVosQ0FBa0IscUJBQWxCO0FBQ0EsVUFBTUgsUUFBTjtBQUNBO0FBQ0Q7O0FBRURJLEVBQUFBLHNCQUFzQixDQUFDQyxhQUFELEVBQWdCO0FBQ3BDLFdBQU87QUFDTEMsTUFBQUEsSUFBSSxFQUFFO0FBQ0pDLFFBQUFBLG9CQUFvQixFQUFFRixhQUFhLENBQUNHLHdCQURoQztBQUVKQyxRQUFBQSxJQUFJLEVBQUVoQixjQUFjLENBQUNZLGFBQWEsQ0FBQ0ksSUFBZixDQUZoQjtBQUdKQyxRQUFBQSxPQUFPLEVBQUVMLGFBQWEsQ0FBQ007QUFIbkI7QUFERCxLQUFQO0FBT0Q7O0FBRXVCLFFBQWxCQyxrQkFBa0IsQ0FBQ0MsV0FBRCxFQUFjO0FBQ3BDLFVBQU1DLFFBQVEsR0FBRyxDQUFDLE1BQU12QixZQUFZLENBQUNzQixXQUFELENBQW5CLE1BQXNDLE1BQU12QixnQkFBZ0IsQ0FBQ3VCLFdBQUQsQ0FBNUQsQ0FBakI7QUFDQSxVQUFNRSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLE9BQU8sQ0FBQ0MsR0FBMUIsQ0FBeEI7O0FBQ0EsUUFBSUwsUUFBSixFQUFjO0FBQ1pDLE1BQUFBLGVBQWUsQ0FBQyxhQUFELENBQWYsR0FBaUNELFFBQWpDO0FBQ0Q7O0FBQ0QsVUFBTU0sTUFBTSxHQUFHNUIsb0JBQW9CLENBQUNTLElBQUksQ0FBQ0MsTUFBTCxDQUFZbUIsR0FBWixDQUFnQixtQkFBaEIsQ0FBRCxFQUF1Q1AsUUFBdkMsQ0FBbkM7QUFDQSxVQUFNUSxZQUFZLEdBQUdwQyxFQUFFLENBQUNxQyxLQUFILENBQVNILE1BQVQsRUFBaUIsQ0FBQyxJQUFELEVBQU8sTUFBUCxDQUFqQixFQUFpQztBQUNwREksTUFBQUEsR0FBRyxFQUFFWCxXQUQrQztBQUVwRE0sTUFBQUEsR0FBRyxFQUFFSjtBQUYrQyxLQUFqQyxDQUFyQjtBQUlBTyxJQUFBQSxZQUFZLENBQUNHLEVBQWIsQ0FBZ0IsT0FBaEIsRUFBMEJDLEdBQUQsSUFBUztBQUNoQyxZQUFNQyxXQUFXLEdBQ2ZELEdBQUcsQ0FBQ0UsSUFBSixJQUFZLFFBQVosR0FDSyxvQ0FBbUNSLE1BQU8sS0FEL0MsR0FFSyw0Q0FBMkNBLE1BQU8sS0FIekQ7QUFJQW5CLE1BQUFBLElBQUksQ0FBQzRCLGFBQUwsQ0FBbUJDLFFBQW5CLENBQTRCLG9EQUE1QixFQUFrRjtBQUNoRkMsUUFBQUEsV0FBVyxFQUFFLElBRG1FO0FBRWhGSixRQUFBQSxXQUFXLEVBQUcsR0FBRUEsV0FBWTtBQUZvRCxPQUFsRjtBQUlELEtBVEQ7QUFXQUwsSUFBQUEsWUFBWSxDQUFDRyxFQUFiLENBQWdCLE9BQWhCLEVBQXlCLENBQUNHLElBQUQsRUFBT0ksTUFBUCxLQUFrQjtBQUN6QyxVQUFJSixJQUFJLEtBQUssQ0FBVCxJQUFjSSxNQUFNLElBQUksSUFBNUIsRUFBa0M7QUFDaEMvQixRQUFBQSxJQUFJLENBQUM0QixhQUFMLENBQW1CQyxRQUFuQixDQUE0Qiw2Q0FBNUIsRUFBMkU7QUFDekVDLFVBQUFBLFdBQVcsRUFBRSxJQUQ0RDtBQUV6RUUsVUFBQUEsT0FBTyxFQUFFLENBQ1A7QUFDRUMsWUFBQUEsSUFBSSxFQUFFLHNCQURSO0FBRUVDLFlBQUFBLFVBQVUsRUFBRSxNQUFNbEMsSUFBSSxDQUFDbUMsU0FBTCxDQUFlQyxJQUFmLENBQW9CLG1DQUFwQjtBQUZwQixXQURPLEVBS1A7QUFDRUgsWUFBQUEsSUFBSSxFQUFFLGlCQURSO0FBRUVDLFlBQUFBLFVBQVUsRUFBRSxNQUFNL0MsS0FBSyxDQUFDa0QsWUFBTixDQUFtQixtQ0FBbkI7QUFGcEIsV0FMTyxDQUZnRTtBQVl6RVgsVUFBQUEsV0FBVyxFQUNULDREQUNBLE9BREEsR0FFQyxHQUFFUCxNQUFPLGlEQUZWLEdBR0MsR0FBRUEsTUFBTyxnRUFIVixHQUlBO0FBakJ1RSxTQUEzRTtBQW1CRDtBQUNGLEtBdEJEO0FBdUJBLFdBQU9FLFlBQVA7QUFDRDs7QUFFbUIsUUFBZGlCLGNBQWMsQ0FBQ0MsT0FBRCxFQUFVO0FBQzVCLFFBQUksQ0FBQzlDLFlBQVksQ0FBQytDLElBQWIsQ0FBa0JELE9BQU8sQ0FBQ0UsTUFBMUIsQ0FBTCxFQUF3QyxPQUFPLElBQVA7QUFDeEMsV0FBTyxNQUFNSCxjQUFOLENBQXFCQyxPQUFyQixDQUFQO0FBQ0Q7O0FBRURHLEVBQUFBLFVBQVUsR0FBRztBQUNYO0FBQ0EsV0FBT0MsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBQyxNQUFNRixVQUFOLEVBQUQsRUFBcUIsS0FBS0csb0JBQUwsQ0FBMEIsSUFBMUIsQ0FBckIsQ0FBYixDQUFQO0FBQ0Q7O0FBRURBLEVBQUFBLG9CQUFvQixDQUFDQyxZQUFELEVBQWU7QUFDakMsV0FBTyxJQUFJSCxPQUFKLENBQVksQ0FBQ0ksT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDLFVBQUlDLE9BQU8sR0FBR0MsVUFBVSxDQUFDLE1BQU07QUFDN0JDLFFBQUFBLFlBQVksQ0FBQ0YsT0FBRCxDQUFaO0FBQ0EsYUFBS0csTUFBTCxDQUFZQyxLQUFaLENBQW1CLGdDQUErQlAsWUFBYSx5QkFBL0Q7QUFDQUMsUUFBQUEsT0FBTztBQUNSLE9BSnVCLEVBSXJCRCxZQUpxQixDQUF4QjtBQUtELEtBTk0sQ0FBUDtBQU9EOztBQXBHbUQ7O0FBdUd0RCxNQUFNUSxZQUFZLEdBQUcsSUFBSTVELG9CQUFKLEVBQXJCO0FBQ0E0RCxZQUFZLENBQUNDLHNCQUFiLEdBQXNDQSw0QkFBdEMsQyxDQUE2RDs7QUFDN0RDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsWUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjcCA9IHJlcXVpcmUoXCJjaGlsZF9wcm9jZXNzXCIpXG5jb25zdCB7IHNoZWxsIH0gPSByZXF1aXJlKFwiZWxlY3Ryb25cIilcbmNvbnN0IHsgQXV0b0xhbmd1YWdlQ2xpZW50IH0gPSByZXF1aXJlKFwiYXRvbS1sYW5ndWFnZWNsaWVudFwiKVxuY29uc3QgeyBkZXRlY3RWaXJ0dWFsRW52LCBkZXRlY3RQaXBFbnYsIHJlcGxhY2VQaXBFbnZQYXRoVmFyLCBzYW5pdGl6ZUNvbmZpZyB9ID0gcmVxdWlyZShcIi4vdXRpbHNcIilcblxuaW1wb3J0IHsgY3JlYXRlRGVidWdnZXJQcm92aWRlciwgYWN0aXZhdGUgYXMgZGVidWdnZXJBY3RpdmF0ZSwgZGlzcG9zZSBhcyBkZWJ1Z2dlckRpc3Bvc2UgfSBmcm9tIFwiLi9kZWJ1Z2dlci9tYWluXCJcblxuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vbnRlcmFjdC9oeWRyb2dlbi9ibG9iL21hc3Rlci9saWIvYXV0b2NvbXBsZXRlLXByb3ZpZGVyLmpzI0wzM1xuLy8gYWRhcHRlZCBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzU0NzQwMDhcbmNvbnN0IFBZVEhPTl9SRUdFWCA9IC8oKFteXFxkXFxXXXxbXFx1MDBBMC1cXHVGRkZGXSlbXFx3LlxcdTAwQTAtXFx1RkZGRl0qKXxcXC4kL1xuXG5jbGFzcyBQeXRob25MYW5ndWFnZUNsaWVudCBleHRlbmRzIEF1dG9MYW5ndWFnZUNsaWVudCB7XG4gIGdldEdyYW1tYXJTY29wZXMoKSB7XG4gICAgcmV0dXJuIFtcInNvdXJjZS5weXRob25cIiwgXCJweXRob25cIl1cbiAgfVxuXG4gIGdldExhbmd1YWdlTmFtZSgpIHtcbiAgICByZXR1cm4gXCJQeXRob25cIlxuICB9XG5cbiAgZ2V0U2VydmVyTmFtZSgpIHtcbiAgICByZXR1cm4gXCJweWxzXCJcbiAgfVxuXG4gIGdldFJvb3RDb25maWd1cmF0aW9uS2V5KCkge1xuICAgIHJldHVybiBcImlkZS1weXRob25cIlxuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgLy8gUmVtb3ZlIGRlcHJlY2F0ZWQgb3B0aW9uXG4gICAgYXRvbS5jb25maWcudW5zZXQoXCJpZGUtcHl0aG9uLnB5bHNQYXRoXCIpXG4gICAgc3VwZXIuYWN0aXZhdGUoKVxuICAgIGRlYnVnZ2VyQWN0aXZhdGUoKVxuICB9XG5cbiAgbWFwQ29uZmlndXJhdGlvbk9iamVjdChjb25maWd1cmF0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB5bHM6IHtcbiAgICAgICAgY29uZmlndXJhdGlvblNvdXJjZXM6IGNvbmZpZ3VyYXRpb24ucHlsc0NvbmZpZ3VyYXRpb25Tb3VyY2VzLFxuICAgICAgICByb3BlOiBzYW5pdGl6ZUNvbmZpZyhjb25maWd1cmF0aW9uLnJvcGUpLFxuICAgICAgICBwbHVnaW5zOiBjb25maWd1cmF0aW9uLnB5bHNQbHVnaW5zLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdGFydFNlcnZlclByb2Nlc3MocHJvamVjdFBhdGgpIHtcbiAgICBjb25zdCB2ZW52UGF0aCA9IChhd2FpdCBkZXRlY3RQaXBFbnYocHJvamVjdFBhdGgpKSB8fCAoYXdhaXQgZGV0ZWN0VmlydHVhbEVudihwcm9qZWN0UGF0aCkpXG4gICAgY29uc3QgcHlsc0Vudmlyb25tZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvY2Vzcy5lbnYpXG4gICAgaWYgKHZlbnZQYXRoKSB7XG4gICAgICBweWxzRW52aXJvbm1lbnRbXCJWSVJUVUFMX0VOVlwiXSA9IHZlbnZQYXRoXG4gICAgfVxuICAgIGNvbnN0IHB5dGhvbiA9IHJlcGxhY2VQaXBFbnZQYXRoVmFyKGF0b20uY29uZmlnLmdldChcImlkZS1weXRob24ucHl0aG9uXCIpLCB2ZW52UGF0aClcbiAgICBjb25zdCBjaGlsZFByb2Nlc3MgPSBjcC5zcGF3bihweXRob24sIFtcIi1tXCIsIFwicHlsc1wiXSwge1xuICAgICAgY3dkOiBwcm9qZWN0UGF0aCxcbiAgICAgIGVudjogcHlsc0Vudmlyb25tZW50LFxuICAgIH0pXG4gICAgY2hpbGRQcm9jZXNzLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgICBlcnIuY29kZSA9PSBcIkVOT0VOVFwiXG4gICAgICAgICAgPyBgTm8gUHl0aG9uIGludGVycHJldGVyIGZvdW5kIGF0IFxcYCR7cHl0aG9ufVxcYC5gXG4gICAgICAgICAgOiBgQ291bGQgbm90IHNwYXduIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgXFxgJHtweXRob259XFxgLmBcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcImBpZGUtcHl0aG9uYCBjb3VsZCBub3QgbGF1bmNoIHlvdXIgUHl0aG9uIHJ1bnRpbWUuXCIsIHtcbiAgICAgICAgZGlzbWlzc2FibGU6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHtkZXNjcmlwdGlvbn08cD5JZiB5b3UgaGF2ZSBQeXRob24gaW5zdGFsbGVkIHBsZWFzZSBzZXQgXCJQeXRob24gRXhlY3V0YWJsZVwiIHNldHRpbmcgY29ycmVjdGx5LiBJZiB5b3UgZG8gbm90IHBsZWFzZSBpbnN0YWxsIFB5dGhvbi48L3A+YCxcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIGNoaWxkUHJvY2Vzcy5vbihcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwICYmIHNpZ25hbCA9PSBudWxsKSB7XG4gICAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihcIlVuYWJsZSB0byBzdGFydCB0aGUgUHl0aG9uIGxhbmd1YWdlIHNlcnZlci5cIiwge1xuICAgICAgICAgIGRpc21pc3NhYmxlOiB0cnVlLFxuICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogXCJJbnN0YWxsIEluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgICBvbkRpZENsaWNrOiAoKSA9PiBhdG9tLndvcmtzcGFjZS5vcGVuKFwiYXRvbTovL2NvbmZpZy9wYWNrYWdlcy9pZGUtcHl0aG9uXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogXCJEb3dubG9hZCBQeXRob25cIixcbiAgICAgICAgICAgICAgb25EaWRDbGljazogKCkgPT4gc2hlbGwub3BlbkV4dGVybmFsKFwiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgXCJNYWtlIHN1cmUgdG8gaW5zdGFsbCBgcHlsc2AgMC4xOSBvciBuZXdlciBieSBydW5uaW5nOlxcblwiICtcbiAgICAgICAgICAgIFwiYGBgXFxuXCIgK1xuICAgICAgICAgICAgYCR7cHl0aG9ufSAtbSBwaXAgaW5zdGFsbCAncHl0aG9uLWxhbmd1YWdlLXNlcnZlclthbGxdJ1xcbmAgK1xuICAgICAgICAgICAgYCR7cHl0aG9ufSAtbSBwaXAgaW5zdGFsbCBnaXQraHR0cHM6Ly9naXRodWIuY29tL3RvbXY1NjQvcHlscy1teXB5LmdpdFxcbmAgK1xuICAgICAgICAgICAgXCJgYGBcIixcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBjaGlsZFByb2Nlc3NcbiAgfVxuXG4gIGFzeW5jIGdldFN1Z2dlc3Rpb25zKHJlcXVlc3QpIHtcbiAgICBpZiAoIVBZVEhPTl9SRUdFWC50ZXN0KHJlcXVlc3QucHJlZml4KSkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gc3VwZXIuZ2V0U3VnZ2VzdGlvbnMocmVxdWVzdClcbiAgfVxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgZGVidWdnZXJEaXNwb3NlKClcbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtzdXBlci5kZWFjdGl2YXRlKCksIHRoaXMuY3JlYXRlVGltZW91dFByb21pc2UoMjAwMCldKVxuICB9XG5cbiAgY3JlYXRlVGltZW91dFByb21pc2UobWlsbGlzZWNvbmRzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgU2VydmVyIGZhaWxlZCB0byBzaHV0ZG93biBpbiAke21pbGxpc2Vjb25kc31tcywgZm9yY2luZyB0ZXJtaW5hdGlvbmApXG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgfSwgbWlsbGlzZWNvbmRzKVxuICAgIH0pXG4gIH1cbn1cblxuY29uc3QgcHl0aG9uQ2xpZW50ID0gbmV3IFB5dGhvbkxhbmd1YWdlQ2xpZW50KClcbnB5dGhvbkNsaWVudC5jcmVhdGVEZWJ1Z2dlclByb3ZpZGVyID0gY3JlYXRlRGVidWdnZXJQcm92aWRlciAvLyBhZGQgdGhlIGRlYnVnZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IHB5dGhvbkNsaWVudFxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiXSwibmFtZXMiOlsic2hlbGwiLCJyZXF1aXJlIiwid2hpY2hTeW5jIiwic3luYyIsIkF1dG9MYW5ndWFnZUNsaWVudCIsImRldGVjdFZpcnR1YWxFbnYiLCJkZXRlY3RQaXBFbnYiLCJyZXBsYWNlUGlwRW52UGF0aFZhciIsInNhbml0aXplQ29uZmlnIiwiUFlUSE9OX1JFR0VYIiwiUHl0aG9uTGFuZ3VhZ2VDbGllbnQiLCJhY3RpdmF0ZSIsImF0b20iLCJwYWNrYWdlcyIsImlzUGFja2FnZUxvYWRlZCIsImluc3RhbGwiLCJ0aGVuIiwiZW5hYmxlUGFja2FnZSIsIm5vdGlmaWNhdGlvbnMiLCJhZGRTdWNjZXNzIiwiZ2V0R3JhbW1hclNjb3BlcyIsImdldExhbmd1YWdlTmFtZSIsImdldFNlcnZlck5hbWUiLCJnZXRSb290Q29uZmlndXJhdGlvbktleSIsImNvbmZpZyIsInVuc2V0IiwibWFwQ29uZmlndXJhdGlvbk9iamVjdCIsImNvbmZpZ3VyYXRpb24iLCJweWxzIiwiY29uZmlndXJhdGlvblNvdXJjZXMiLCJweWxzQ29uZmlndXJhdGlvblNvdXJjZXMiLCJyb3BlIiwicGx1Z2lucyIsInB5bHNQbHVnaW5zIiwic3RhcnRTZXJ2ZXJQcm9jZXNzIiwicHJvamVjdFBhdGgiLCJ2ZW52UGF0aCIsInB5bHNFbnZpcm9ubWVudCIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJlbnYiLCJweXRob24iLCJnZXQiLCJub3Rocm93IiwiY2hpbGRQcm9jZXNzIiwic3Bhd24iLCJjd2QiLCJvblNwYXduRXJyb3IiLCJlcnIiLCJkZXNjcmlwdGlvbiIsImNvZGUiLCJhZGRFcnJvciIsImRpc21pc3NhYmxlIiwib25TcGF3bkNsb3NlIiwic2lnbmFsIiwiYnV0dG9ucyIsInRleHQiLCJvbkRpZENsaWNrIiwid29ya3NwYWNlIiwib3BlbiIsIm9wZW5FeHRlcm5hbCIsImdldFN1Z2dlc3Rpb25zIiwicmVxdWVzdCIsInRlc3QiLCJwcmVmaXgiLCJkZWFjdGl2YXRlIiwiUHJvbWlzZSIsInJhY2UiLCJjcmVhdGVUaW1lb3V0UHJvbWlzZSIsIm1pbGxpc2Vjb25kcyIsInJlc29sdmUiLCJyZWplY3QiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImxvZ2dlciIsImVycm9yIiwicHl0aG9uQ2xpZW50IiwiY3JlYXRlRGVidWdnZXJQcm92aWRlciIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7O0FBS0E7O0FBTEEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxVQUFELENBQXpCOztBQUNBLE1BQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUFpQkUsSUFBbkM7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQXlCSCxPQUFPLENBQUMscUJBQUQsQ0FBdEM7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxnQkFBRjtBQUFvQkMsRUFBQUEsWUFBcEI7QUFBa0NDLEVBQUFBLG9CQUFsQztBQUF3REMsRUFBQUE7QUFBeEQsSUFBMkVQLE9BQU8sQ0FBQyxTQUFELENBQXhGOztBQUlBO0FBQ0E7QUFDQSxNQUFNUSxZQUFZLEdBQUcsb0RBQXJCOztBQUVBLE1BQU1DLG9CQUFOLFNBQW1DTixrQkFBbkMsQ0FBc0Q7QUFDcERPLEVBQUFBLFFBQVEsR0FBRztBQUNULFVBQU1BLFFBQU47O0FBQ0EsUUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQUwsQ0FBY0MsZUFBZCxDQUE4QixlQUE5QixDQUFMLEVBQXFEO0FBQ25EO0FBQ0E7QUFDQWIsTUFBQUEsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FDR2MsT0FESCxDQUNXLFlBRFgsRUFDeUIsSUFEekIsRUFFR0MsSUFGSCxDQUVRLE1BQU07QUFDVjtBQUNBSixRQUFBQSxJQUFJLENBQUNDLFFBQUwsQ0FBY0ksYUFBZCxDQUE0QixlQUE1QjtBQUNBTCxRQUFBQSxJQUFJLENBQUNNLGFBQUwsQ0FBbUJDLFVBQW5CLENBQThCLHVEQUE5QjtBQUNELE9BTkg7QUFPRDtBQUNGOztBQUVEQyxFQUFBQSxnQkFBZ0IsR0FBRztBQUNqQixXQUFPLENBQUMsZUFBRCxFQUFrQixRQUFsQixDQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLGVBQWUsR0FBRztBQUNoQixXQUFPLFFBQVA7QUFDRDs7QUFFREMsRUFBQUEsYUFBYSxHQUFHO0FBQ2QsV0FBTyxNQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLHVCQUF1QixHQUFHO0FBQ3hCLFdBQU8sWUFBUDtBQUNEOztBQUVEWixFQUFBQSxRQUFRLEdBQUc7QUFDVDtBQUNBQyxJQUFBQSxJQUFJLENBQUNZLE1BQUwsQ0FBWUMsS0FBWixDQUFrQixxQkFBbEI7QUFDQSxVQUFNZCxRQUFOO0FBQ0E7QUFDRDs7QUFFRGUsRUFBQUEsc0JBQXNCLENBQUNDLGFBQUQsRUFBZ0I7QUFDcEMsV0FBTztBQUNMQyxNQUFBQSxJQUFJLEVBQUU7QUFDSkMsUUFBQUEsb0JBQW9CLEVBQUVGLGFBQWEsQ0FBQ0csd0JBRGhDO0FBRUpDLFFBQUFBLElBQUksRUFBRXZCLGNBQWMsQ0FBQ21CLGFBQWEsQ0FBQ0ksSUFBZixDQUZoQjtBQUdKQyxRQUFBQSxPQUFPLEVBQUVMLGFBQWEsQ0FBQ007QUFIbkI7QUFERCxLQUFQO0FBT0Q7O0FBRXVCLFFBQWxCQyxrQkFBa0IsQ0FBQ0MsV0FBRCxFQUFjO0FBQ3BDLFVBQU1DLFFBQVEsR0FBRyxDQUFDLE1BQU05QixZQUFZLENBQUM2QixXQUFELENBQW5CLE1BQXNDLE1BQU05QixnQkFBZ0IsQ0FBQzhCLFdBQUQsQ0FBNUQsQ0FBakI7QUFDQSxVQUFNRSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JDLE9BQU8sQ0FBQ0MsR0FBMUIsQ0FBeEI7O0FBQ0EsUUFBSUwsUUFBSixFQUFjO0FBQ1pDLE1BQUFBLGVBQWUsQ0FBQyxhQUFELENBQWYsR0FBaUNELFFBQWpDO0FBQ0Q7O0FBQ0QsVUFBTU0sTUFBTSxHQUFHbkMsb0JBQW9CLENBQUNLLElBQUksQ0FBQ1ksTUFBTCxDQUFZbUIsR0FBWixDQUFnQixtQkFBaEIsQ0FBRCxFQUF1Q1AsUUFBdkMsQ0FBbkM7QUFFQSxRQUFJUixJQUFJLEdBQUdoQixJQUFJLENBQUNZLE1BQUwsQ0FBWW1CLEdBQVosQ0FBZ0IsaUJBQWhCLEtBQXNDLE9BQWpELENBUm9DLENBU3BDOztBQUNBLFFBQUl6QyxTQUFTLENBQUMwQixJQUFELEVBQU87QUFBRWdCLE1BQUFBLE9BQU8sRUFBRTtBQUFYLEtBQVAsQ0FBVCxLQUF1QyxJQUEzQyxFQUFpRDtBQUMvQ2hCLE1BQUFBLElBQUksR0FBRyxNQUFQO0FBQ0Q7O0FBQ0QsVUFBTWlCLFlBQVksR0FBRyxNQUFNQyxLQUFOLENBQVlKLE1BQVosRUFBb0IsQ0FBQyxJQUFELEVBQU9kLElBQVAsQ0FBcEIsRUFBa0M7QUFDckRtQixNQUFBQSxHQUFHLEVBQUVaLFdBRGdEO0FBRXJETSxNQUFBQSxHQUFHLEVBQUVKO0FBRmdELEtBQWxDLENBQXJCO0FBSUEsV0FBT1EsWUFBUDtBQUNEOztBQUVERyxFQUFBQSxZQUFZLENBQUNDLEdBQUQsRUFBTTtBQUNoQixVQUFNQyxXQUFXLEdBQ2ZELEdBQUcsQ0FBQ0UsSUFBSixJQUFZLFFBQVosR0FDSyxvQ0FBbUNULE1BQU8sS0FEL0MsR0FFSyw0Q0FBMkNBLE1BQU8sS0FIekQ7QUFJQTlCLElBQUFBLElBQUksQ0FBQ00sYUFBTCxDQUFtQmtDLFFBQW5CLENBQTRCLG9EQUE1QixFQUFrRjtBQUNoRkMsTUFBQUEsV0FBVyxFQUFFLElBRG1FO0FBRWhGSCxNQUFBQSxXQUFXLEVBQUcsR0FBRUEsV0FBWTtBQUZvRCxLQUFsRjtBQUlEOztBQUVESSxFQUFBQSxZQUFZLENBQUNILElBQUQsRUFBT0ksTUFBUCxFQUFlO0FBQ3pCLFFBQUlKLElBQUksS0FBSyxDQUFULElBQWNJLE1BQU0sSUFBSSxJQUE1QixFQUFrQztBQUNoQzNDLE1BQUFBLElBQUksQ0FBQ00sYUFBTCxDQUFtQmtDLFFBQW5CLENBQTRCLDZDQUE1QixFQUEyRTtBQUN6RUMsUUFBQUEsV0FBVyxFQUFFLElBRDREO0FBRXpFRyxRQUFBQSxPQUFPLEVBQUUsQ0FDUDtBQUNFQyxVQUFBQSxJQUFJLEVBQUUsc0JBRFI7QUFFRUMsVUFBQUEsVUFBVSxFQUFFLE1BQU05QyxJQUFJLENBQUMrQyxTQUFMLENBQWVDLElBQWYsQ0FBb0IsbUNBQXBCO0FBRnBCLFNBRE8sRUFLUDtBQUNFSCxVQUFBQSxJQUFJLEVBQUUsaUJBRFI7QUFFRUMsVUFBQUEsVUFBVSxFQUFFLE1BQU0xRCxLQUFLLENBQUM2RCxZQUFOLENBQW1CLG1DQUFuQjtBQUZwQixTQUxPLENBRmdFO0FBWXpFWCxRQUFBQSxXQUFXLEVBQ1QsNkRBQ0EsT0FEQSxHQUVDLEdBQUVSLE1BQU8sNENBRlYsR0FHQyxHQUFFQSxNQUFPLGdFQUhWLEdBSUE7QUFqQnVFLE9BQTNFO0FBbUJEO0FBQ0Y7O0FBRW1CLFFBQWRvQixjQUFjLENBQUNDLE9BQUQsRUFBVTtBQUM1QixRQUFJLENBQUN0RCxZQUFZLENBQUN1RCxJQUFiLENBQWtCRCxPQUFPLENBQUNFLE1BQTFCLENBQUwsRUFBd0MsT0FBTyxJQUFQO0FBQ3hDLFdBQU8sTUFBTUgsY0FBTixDQUFxQkMsT0FBckIsQ0FBUDtBQUNEOztBQUVERyxFQUFBQSxVQUFVLEdBQUc7QUFDWDtBQUNBLFdBQU9DLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQUMsTUFBTUYsVUFBTixFQUFELEVBQXFCLEtBQUtHLG9CQUFMLENBQTBCLElBQTFCLENBQXJCLENBQWIsQ0FBUDtBQUNEOztBQUVEQSxFQUFBQSxvQkFBb0IsQ0FBQ0MsWUFBRCxFQUFlO0FBQ2pDLFdBQU8sSUFBSUgsT0FBSixDQUFZLENBQUNJLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUN0QyxVQUFJQyxPQUFPLEdBQUdDLFVBQVUsQ0FBQyxNQUFNO0FBQzdCQyxRQUFBQSxZQUFZLENBQUNGLE9BQUQsQ0FBWjtBQUNBLGFBQUtHLE1BQUwsQ0FBWUMsS0FBWixDQUFtQixnQ0FBK0JQLFlBQWEseUJBQS9EO0FBQ0FDLFFBQUFBLE9BQU87QUFDUixPQUp1QixFQUlyQkQsWUFKcUIsQ0FBeEI7QUFLRCxLQU5NLENBQVA7QUFPRDs7QUExSG1EOztBQTZIdEQsTUFBTVEsWUFBWSxHQUFHLElBQUlwRSxvQkFBSixFQUFyQjtBQUNBb0UsWUFBWSxDQUFDQyxzQkFBYixHQUFzQ0EsNEJBQXRDLEMsQ0FBNkQ7O0FBQzdEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJILFlBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBzaGVsbCB9ID0gcmVxdWlyZShcImVsZWN0cm9uXCIpXG5jb25zdCB3aGljaFN5bmMgPSByZXF1aXJlKFwid2hpY2hcIikuc3luY1xuY29uc3QgeyBBdXRvTGFuZ3VhZ2VDbGllbnQgfSA9IHJlcXVpcmUoXCJhdG9tLWxhbmd1YWdlY2xpZW50XCIpXG5jb25zdCB7IGRldGVjdFZpcnR1YWxFbnYsIGRldGVjdFBpcEVudiwgcmVwbGFjZVBpcEVudlBhdGhWYXIsIHNhbml0aXplQ29uZmlnIH0gPSByZXF1aXJlKFwiLi91dGlsc1wiKVxuXG5pbXBvcnQgeyBjcmVhdGVEZWJ1Z2dlclByb3ZpZGVyLCBhY3RpdmF0ZSBhcyBkZWJ1Z2dlckFjdGl2YXRlLCBkaXNwb3NlIGFzIGRlYnVnZ2VyRGlzcG9zZSB9IGZyb20gXCIuL2RlYnVnZ2VyL21haW5cIlxuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9udGVyYWN0L2h5ZHJvZ2VuL2Jsb2IvbWFzdGVyL2xpYi9hdXRvY29tcGxldGUtcHJvdmlkZXIuanMjTDMzXG4vLyBhZGFwdGVkIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvNTQ3NDAwOFxuY29uc3QgUFlUSE9OX1JFR0VYID0gLygoW15cXGRcXFddfFtcXHUwMEEwLVxcdUZGRkZdKVtcXHcuXFx1MDBBMC1cXHVGRkZGXSopfFxcLiQvXG5cbmNsYXNzIFB5dGhvbkxhbmd1YWdlQ2xpZW50IGV4dGVuZHMgQXV0b0xhbmd1YWdlQ2xpZW50IHtcbiAgYWN0aXZhdGUoKSB7XG4gICAgc3VwZXIuYWN0aXZhdGUoKVxuICAgIGlmICghYXRvbS5wYWNrYWdlcy5pc1BhY2thZ2VMb2FkZWQoXCJhdG9tLWlkZS1iYXNlXCIpKSB7XG4gICAgICAvLyBpbnN0YWxsIGlmIG5vdCBpbnN0YWxsZWRcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICByZXF1aXJlKFwiYXRvbS1wYWNrYWdlLWRlcHNcIilcbiAgICAgICAgLmluc3RhbGwoXCJpZGUtcHl0aG9uXCIsIHRydWUpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAvLyBlbmFibGUgaWYgZGlzYWJsZWRcbiAgICAgICAgICBhdG9tLnBhY2thZ2VzLmVuYWJsZVBhY2thZ2UoXCJhdG9tLWlkZS1iYXNlXCIpXG4gICAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFN1Y2Nlc3MoXCJpZGUtcHlob246IGF0b20taWRlLWJhc2Ugd2FzIGluc3RhbGxlZCBhbmQgZW5hYmxlZC4uLlwiKVxuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldEdyYW1tYXJTY29wZXMoKSB7XG4gICAgcmV0dXJuIFtcInNvdXJjZS5weXRob25cIiwgXCJweXRob25cIl1cbiAgfVxuXG4gIGdldExhbmd1YWdlTmFtZSgpIHtcbiAgICByZXR1cm4gXCJQeXRob25cIlxuICB9XG5cbiAgZ2V0U2VydmVyTmFtZSgpIHtcbiAgICByZXR1cm4gXCJweWxzXCJcbiAgfVxuXG4gIGdldFJvb3RDb25maWd1cmF0aW9uS2V5KCkge1xuICAgIHJldHVybiBcImlkZS1weXRob25cIlxuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgLy8gUmVtb3ZlIGRlcHJlY2F0ZWQgb3B0aW9uXG4gICAgYXRvbS5jb25maWcudW5zZXQoXCJpZGUtcHl0aG9uLnB5bHNQYXRoXCIpXG4gICAgc3VwZXIuYWN0aXZhdGUoKVxuICAgIGRlYnVnZ2VyQWN0aXZhdGUoKVxuICB9XG5cbiAgbWFwQ29uZmlndXJhdGlvbk9iamVjdChjb25maWd1cmF0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB5bHM6IHtcbiAgICAgICAgY29uZmlndXJhdGlvblNvdXJjZXM6IGNvbmZpZ3VyYXRpb24ucHlsc0NvbmZpZ3VyYXRpb25Tb3VyY2VzLFxuICAgICAgICByb3BlOiBzYW5pdGl6ZUNvbmZpZyhjb25maWd1cmF0aW9uLnJvcGUpLFxuICAgICAgICBwbHVnaW5zOiBjb25maWd1cmF0aW9uLnB5bHNQbHVnaW5zLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdGFydFNlcnZlclByb2Nlc3MocHJvamVjdFBhdGgpIHtcbiAgICBjb25zdCB2ZW52UGF0aCA9IChhd2FpdCBkZXRlY3RQaXBFbnYocHJvamVjdFBhdGgpKSB8fCAoYXdhaXQgZGV0ZWN0VmlydHVhbEVudihwcm9qZWN0UGF0aCkpXG4gICAgY29uc3QgcHlsc0Vudmlyb25tZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvY2Vzcy5lbnYpXG4gICAgaWYgKHZlbnZQYXRoKSB7XG4gICAgICBweWxzRW52aXJvbm1lbnRbXCJWSVJUVUFMX0VOVlwiXSA9IHZlbnZQYXRoXG4gICAgfVxuICAgIGNvbnN0IHB5dGhvbiA9IHJlcGxhY2VQaXBFbnZQYXRoVmFyKGF0b20uY29uZmlnLmdldChcImlkZS1weXRob24ucHl0aG9uXCIpLCB2ZW52UGF0aClcblxuICAgIGxldCBweWxzID0gYXRvbS5jb25maWcuZ2V0KFwiaWRlLXB5dGhvbi5weWxzXCIpIHx8IFwicHlsc3BcIlxuICAgIC8vIGNoZWNrIGlmIGl0IGV4aXN0c1xuICAgIGlmICh3aGljaFN5bmMocHlscywgeyBub3Rocm93OiB0cnVlIH0pID09PSBudWxsKSB7XG4gICAgICBweWxzID0gXCJweWxzXCJcbiAgICB9XG4gICAgY29uc3QgY2hpbGRQcm9jZXNzID0gc3VwZXIuc3Bhd24ocHl0aG9uLCBbXCItbVwiLCBweWxzXSwge1xuICAgICAgY3dkOiBwcm9qZWN0UGF0aCxcbiAgICAgIGVudjogcHlsc0Vudmlyb25tZW50LFxuICAgIH0pXG4gICAgcmV0dXJuIGNoaWxkUHJvY2Vzc1xuICB9XG5cbiAgb25TcGF3bkVycm9yKGVycikge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID1cbiAgICAgIGVyci5jb2RlID09IFwiRU5PRU5UXCJcbiAgICAgICAgPyBgTm8gUHl0aG9uIGludGVycHJldGVyIGZvdW5kIGF0IFxcYCR7cHl0aG9ufVxcYC5gXG4gICAgICAgIDogYENvdWxkIG5vdCBzcGF3biB0aGUgUHl0aG9uIGludGVycHJldGVyIFxcYCR7cHl0aG9ufVxcYC5gXG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiYGlkZS1weXRob25gIGNvdWxkIG5vdCBsYXVuY2ggeW91ciBQeXRob24gcnVudGltZS5cIiwge1xuICAgICAgZGlzbWlzc2FibGU6IHRydWUsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7ZGVzY3JpcHRpb259PHA+SWYgeW91IGhhdmUgUHl0aG9uIGluc3RhbGxlZCBwbGVhc2Ugc2V0IFwiUHl0aG9uIEV4ZWN1dGFibGVcIiBzZXR0aW5nIGNvcnJlY3RseS4gSWYgeW91IGRvIG5vdCBwbGVhc2UgaW5zdGFsbCBQeXRob24uPC9wPmAsXG4gICAgfSlcbiAgfVxuXG4gIG9uU3Bhd25DbG9zZShjb2RlLCBzaWduYWwpIHtcbiAgICBpZiAoY29kZSAhPT0gMCAmJiBzaWduYWwgPT0gbnVsbCkge1xuICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKFwiVW5hYmxlIHRvIHN0YXJ0IHRoZSBQeXRob24gbGFuZ3VhZ2Ugc2VydmVyLlwiLCB7XG4gICAgICAgIGRpc21pc3NhYmxlOiB0cnVlLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogXCJJbnN0YWxsIEluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgb25EaWRDbGljazogKCkgPT4gYXRvbS53b3Jrc3BhY2Uub3BlbihcImF0b206Ly9jb25maWcvcGFja2FnZXMvaWRlLXB5dGhvblwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IFwiRG93bmxvYWQgUHl0aG9uXCIsXG4gICAgICAgICAgICBvbkRpZENsaWNrOiAoKSA9PiBzaGVsbC5vcGVuRXh0ZXJuYWwoXCJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy9cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgXCJNYWtlIHN1cmUgdG8gaW5zdGFsbCBgcHlsc3BgIDAuMTkgb3IgbmV3ZXIgYnkgcnVubmluZzpcXG5cIiArXG4gICAgICAgICAgXCJgYGBcXG5cIiArXG4gICAgICAgICAgYCR7cHl0aG9ufSAtbSBwaXAgaW5zdGFsbCAncHl0aG9uLWxzcC1zZXJ2ZXJbYWxsXSdcXG5gICtcbiAgICAgICAgICBgJHtweXRob259IC1tIHBpcCBpbnN0YWxsIGdpdCtodHRwczovL2dpdGh1Yi5jb20vdG9tdjU2NC9weWxzLW15cHkuZ2l0XFxuYCArXG4gICAgICAgICAgXCJgYGBcIixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0U3VnZ2VzdGlvbnMocmVxdWVzdCkge1xuICAgIGlmICghUFlUSE9OX1JFR0VYLnRlc3QocmVxdWVzdC5wcmVmaXgpKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiBzdXBlci5nZXRTdWdnZXN0aW9ucyhyZXF1ZXN0KVxuICB9XG5cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBkZWJ1Z2dlckRpc3Bvc2UoKVxuICAgIHJldHVybiBQcm9taXNlLnJhY2UoW3N1cGVyLmRlYWN0aXZhdGUoKSwgdGhpcy5jcmVhdGVUaW1lb3V0UHJvbWlzZSgyMDAwKV0pXG4gIH1cblxuICBjcmVhdGVUaW1lb3V0UHJvbWlzZShtaWxsaXNlY29uZHMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBTZXJ2ZXIgZmFpbGVkIHRvIHNodXRkb3duIGluICR7bWlsbGlzZWNvbmRzfW1zLCBmb3JjaW5nIHRlcm1pbmF0aW9uYClcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9LCBtaWxsaXNlY29uZHMpXG4gICAgfSlcbiAgfVxufVxuXG5jb25zdCBweXRob25DbGllbnQgPSBuZXcgUHl0aG9uTGFuZ3VhZ2VDbGllbnQoKVxucHl0aG9uQ2xpZW50LmNyZWF0ZURlYnVnZ2VyUHJvdmlkZXIgPSBjcmVhdGVEZWJ1Z2dlclByb3ZpZGVyIC8vIGFkZCB0aGUgZGVidWdnZXJcbm1vZHVsZS5leHBvcnRzID0gcHl0aG9uQ2xpZW50XG4iXX0= \ No newline at end of file diff --git a/package.json b/package.json index 7e03e7bb..c7ad14e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ide-python", "main": "./dist/main", - "version": "1.8.0", + "version": "1.9.0", "description": "Python language support for Atom-IDE", "keywords": [ "ide",