From 3211665a00788cdf0baec7dbbbd62f0a57317fc7 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sat, 8 Dec 2018 12:27:55 +0530 Subject: [PATCH 01/12] chore(babel): update babel to v7 --- .babelrc | 7 - babel.config.js | 26 + package.json | 11 +- yarn.lock | 2432 +++++++++++++++++++++++++++++++---------------- 4 files changed, 1664 insertions(+), 812 deletions(-) delete mode 100644 .babelrc create mode 100644 babel.config.js diff --git a/.babelrc b/.babelrc deleted file mode 100644 index b747a36..0000000 --- a/.babelrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "plugins": [ - "transform-flow-strip-types" - ], - - "presets": ["es2015", "stage-1"] -} \ No newline at end of file diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..17b47c9 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,26 @@ +'use strict'; + +// NOTE: using babel.config.js instead of .babelrc to force +// babel to compile files inside lib/pkg/* using this config + +module.exports = function(api) { + api.env(); + + return { + plugins: ['@babel/plugin-proposal-class-properties'], + + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: '6' + } + } + ], + '@babel/preset-flow' + ], + + ignore: ['node_modules'] + }; +}; diff --git a/package.json b/package.json index 9832894..cc5fbab 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ }, "scripts": { "vscode:prepublish": "babel ./lib --out-dir=./build --source-maps", - "compile": "babel ./lib --out-dir=./build --source-maps --watch", + "compile": "babel ./lib --out-dir=./build --source-maps --watch --verbose", "test": "flow check" }, "dependencies": { @@ -124,10 +124,11 @@ "vscode-languageclient": "^4.2.1" }, "devDependencies": { - "babel-cli": "^6.1.4", - "babel-plugin-transform-flow-strip-types": "^6.0.14", - "babel-preset-es2015": "^6.1.4", - "babel-preset-stage-1": "^6.1.2", + "@babel/cli": "^7.2.0", + "@babel/core": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.1", + "@babel/preset-env": "^7.2.0", + "@babel/preset-flow": "^7.0.0", "vscode": "0.11.x" }, "icon": "flow-logo.png", diff --git a/yarn.lock b/yarn.lock index a36146c..74abdc9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,646 @@ # yarn lockfile v1 +"@babel/cli@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.2.0.tgz#505ed8d351daee6a88918da02c046c18c8c5a24f" + integrity sha512-FLteTkEoony0DX8NbnT51CmwmLBzINdlXmiJCSqCLmqWCDA/xk8EITPWqwDnVLbuK0bsZONt/grqHnQzQ15j0Q== + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.0.3" + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.0.tgz#a4dd3814901998e93340f0086e9867fefa163ada" + integrity sha512-7pvAdC4B+iKjFFp9Ztj0QgBndJ++qaMeonT185wAqUnhipw8idm9Rv1UMyBuKtYjfl6ORNkgEgcsYLfHX/GpLw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.0" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.0" + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.2.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.1.6", "@babel/generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.0.tgz#eaf3821fa0301d9d4aef88e63d4bcc19b73ba16c" + integrity sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg== + dependencies: + "@babel/types" "^7.2.0" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-create-class-features-plugin@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.1.tgz#f6e8027291669ef64433220dc8327531233f1161" + integrity sha512-EsEP7XLFmcJHjcuFYBxYD1FkP0irC8C9fsrt2tX/jrAi/eTnFI6DOPgVFb+WREeg1GboF+Ib+nCHbGBodyAXSg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.2", "@babel/parser@^7.1.6", "@babel/parser@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.0.tgz#02d01dbc330b6cbf36b76ac93c50752c69027065" + integrity sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg== + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz#c734a53e0a1ec40fe5c22ee5069d26da3b187d05" + integrity sha512-/4FKFChkQ2Jgb8lBDsvFX496YTi7UWTetVgS8oJUpX1e/DlaoeEK57At27ug8Hu2zI2g8bzkJ+8k9qrHZRPGPA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.2.1" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" + integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.0.tgz#374f8876075d7d21fea55aeb5c53561259163f96" + integrity sha512-aPCEkrhJYebDXcGTAP+cdUENkH7zqOlgbKwLbghjjHpJRJBWM/FSlCjMoPGA8oUdiMfOrk3+8EFPLLb5r7zj2w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" + integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.0.tgz#db6180d098caaabdd609a8da3800f5204e66b69b" + integrity sha512-xhQp0lyXA5vk8z1kJitdMozQYEWfo4MgC6neNXrb5euqHiTIGhj5ZWfFPkVESInQSk9WZz1bbNmIRz6zKfWGVA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.0.tgz#0c76c12a3b5826130078ee8ec84a7a8e4afd79c4" + integrity sha512-7TtPIdwjS/i5ZBlNiQePQCovDh9pAhVbp/nGVRBZuUdBiVRThyyLend3OHobc0G+RLCPPAN70+z/MAMhsgJd/A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/preset-env@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.0.tgz#a5030e7e4306af5a295dd5d7c78dc5464af3fee2" + integrity sha512-haGR38j5vOGVeBatrQPr3l0xHbs14505DcM57cbJy48kgMFvvHHoYEhHuRV+7vi559yyAUAVbTWzbK/B/pzJng== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + integrity sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c" + integrity sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.6" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.6" + "@babel/types" "^7.1.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6", "@babel/types@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.0.tgz#7941c5b2d8060e06f9601d6be7c223eef906d5d8" + integrity sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" @@ -41,12 +681,20 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" aproba@^1.0.3: version "1.1.1" @@ -65,10 +713,25 @@ arr-diff@^2.0.0: dependencies: arr-flatten "^1.0.1" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + arr-flatten@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -103,6 +766,11 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -119,6 +787,11 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -139,6 +812,11 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + atom-patch@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/atom-patch/-/atom-patch-0.3.0.tgz#e007ac55cb500a8a66c2d8eef7a4375d31428f54" @@ -153,623 +831,23 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-cli@^6.1.4: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.24.1" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-bindify-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-class@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" - dependencies: - babel-helper-bindify-decorators "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-constructor-call@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-export-extensions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-constructor-call@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" - dependencies: - babel-plugin-syntax-class-constructor-call "^6.18.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" - dependencies: - babel-helper-explode-class "^6.24.1" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - lodash "^4.2.0" - -babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-export-extensions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" - dependencies: - babel-plugin-syntax-export-extensions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.0.14: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" - dependencies: - regenerator-transform "0.9.11" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-es2015@^6.1.4: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-stage-1@^6.1.2: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" - dependencies: - babel-plugin-transform-class-constructor-call "^6.24.1" - babel-plugin-transform-export-extensions "^6.22.0" - babel-preset-stage-2 "^6.24.1" - -babel-preset-stage-2@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-decorators "^6.24.1" - babel-preset-stage-3 "^6.24.1" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.19.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.11.0, babylon@^6.15.0: - version "6.17.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" - balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -815,6 +893,31 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browserslist@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.5.tgz#1a917678acc07b55606748ea1adf9846ea8920f7" + integrity sha512-z9ZhGc3d9e/sJ9dIx5NFXkKoaiQTnrvrMsN3R1fGb1tkWWNSz12UewJn9TNxGo1l7J23h0MRaPmk7jfeTZYs1w== + dependencies: + caniuse-lite "^1.0.30000912" + electron-to-chromium "^1.3.86" + node-releases "^1.0.5" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -827,6 +930,21 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -842,6 +960,11 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +caniuse-lite@^1.0.30000912: + version "1.0.30000916" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000916.tgz#3428d3f529f0a7b2bfaaec65e796037bdd433aab" + integrity sha512-D6J9jloPm2MPkg0PXcODLMQAJKkeixKO9xhqTUMvtd44MtTYMyyDXPQ2Lk9IgBq5FH0frwiPa/N/w8ncQf7kIQ== + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -860,7 +983,7 @@ chalk@^0.5.0: strip-ansi "^0.3.0" supports-color "^0.2.0" -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: +chalk@^1.0.0, chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -870,20 +993,49 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" +chalk@^2.0.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: - anymatch "^1.3.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + dependencies: + anymatch "^2.0.0" async-each "^1.0.0" - glob-parent "^2.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^2.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.5" optionalDependencies: - fsevents "^1.0.0" + fsevents "^1.2.2" + +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" cliui@^3.2.0: version "3.2.0" @@ -929,6 +1081,26 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" @@ -949,6 +1121,11 @@ commander@^2.8.1, commander@^2.9.0: dependencies: graceful-readlink ">= 1.0.0" +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -968,9 +1145,10 @@ convert-source-map@^1.1.0, convert-source-map@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-util-is@~1.0.0: version "1.0.2" @@ -1034,25 +1212,67 @@ debug@^0.7.2: version "0.7.4" resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" -debug@^2.1.1, debug@^2.2.0: +debug@^2.1.2, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^2.2.0: version "2.6.6" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" dependencies: ms "0.7.3" +debug@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== + dependencies: + ms "^2.1.1" + decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + deep-assign@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-1.0.0.tgz#b092743be8427dc621ea0067cdec7e70dd19f37b" dependencies: is-obj "^1.0.0" -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" delayed-stream@~1.0.0: version "1.0.0" @@ -1066,11 +1286,10 @@ dequeue@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/dequeue/-/dequeue-1.0.5.tgz#10f1cef07e3234b21dcb38f4bfa2d66034ab67c7" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= diff@1.4.0: version "1.4.0" @@ -1114,6 +1333,11 @@ editorconfig@^0.13.2: lru-cache "^3.2.0" sigmund "^1.0.1" +electron-to-chromium@^1.3.86: + version "1.3.88" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.88.tgz#f36ab32634f49ef2b0fdc1e82e2d1cc17feb29e7" + integrity sha512-UPV4NuQMKeUh1S0OWRvwg0PI8ASHN9kBC8yDTk1ROXLC85W5GnhTRu/MZu3Teqx3JjlQYuckuHYXSUSgtb3J+A== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -1134,6 +1358,11 @@ escape-string-regexp@1.0.2, escape-string-regexp@^1.0.0, escape-string-regexp@^1 version "1.0.2" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1188,6 +1417,19 @@ expand-brackets@^0.1.4: dependencies: is-posix-bracket "^0.1.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + expand-range@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" @@ -1200,6 +1442,14 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1210,6 +1460,20 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" @@ -1241,6 +1505,16 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1299,9 +1573,10 @@ flow-versions@^0.3.1: semver "5.3.0" temp "0.8.3" -for-in@^1.0.1: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^0.1.4: version "0.1.5" @@ -1321,10 +1596,24 @@ form-data@~2.1.1: combined-stream "^1.0.5" mime-types "^2.1.12" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + dependencies: + minipass "^2.2.1" + fs-plus@2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/fs-plus/-/fs-plus-2.9.3.tgz#75e6d7c57e45364955a1cfbfc563fc5820e0cff2" @@ -1343,37 +1632,22 @@ fs-plus@^2.8.2: rimraf "^2.5.2" underscore-plus "1.x" -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" +fsevents@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" + nan "^2.9.2" + node-pre-gyp "^0.10.0" fstream@~0.1.28: version "0.1.31" @@ -1427,6 +1701,11 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1446,9 +1725,10 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.0.0: +glob-parent@^3.0.0, glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -1504,9 +1784,10 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" +globals@^11.1.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== glogg@^1.0.0: version "1.0.0" @@ -1514,10 +1795,15 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.0.0, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graceful-fs@^4.1.11: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + graceful-fs@~3.0.2: version "3.0.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" @@ -1680,6 +1966,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" @@ -1690,6 +1981,37 @@ has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" @@ -1703,13 +2025,6 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4: version "2.4.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" @@ -1722,6 +2037,13 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + idx@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/idx/-/idx-1.2.0.tgz#be4f41fb82bed571f65362e79add27e0ae74f691" @@ -1730,6 +2052,13 @@ idx@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/idx/-/idx-1.5.0.tgz#2ce9665945fdb36544308f930c78e3f1ef6c4315" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -1755,16 +2084,37 @@ ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -invariant@2.2.2, invariant@^2.2.0: +invariant@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: loose-envify "^1.0.0" +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1785,6 +2135,38 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-dotfile@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" @@ -1799,11 +2181,18 @@ is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" -is-extglob@^2.1.0: +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1835,6 +2224,13 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + dependencies: + is-extglob "^2.1.1" + is-my-json-valid@^2.12.4: version "2.16.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" @@ -1850,10 +2246,29 @@ is-number@^2.0.2, is-number@^2.1.0: dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -1882,6 +2297,11 @@ is-valid-glob@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + is@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" @@ -1904,6 +2324,11 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -1930,17 +2355,28 @@ js-beautify@^1.6.12: mkdirp "~0.5.0" nopt "~3.0.1" +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== + js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" @@ -1964,9 +2400,12 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" jsonify@~0.0.0: version "0.0.0" @@ -1991,6 +2430,30 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.1.5" +kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -2222,9 +2685,10 @@ lodash.values@~2.4.1: dependencies: lodash.keys "~2.4.1" -lodash@^4.2.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.17.10: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== log4js@1.1.1: version "1.1.1" @@ -2271,6 +2735,11 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -2279,6 +2748,13 @@ map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -2306,7 +2782,7 @@ merge-stream@^1.0.0: dependencies: readable-stream "^2.0.1" -micromatch@^2.1.5, micromatch@^2.3.7: +micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2324,6 +2800,25 @@ micromatch@^2.1.5, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" @@ -2355,7 +2850,7 @@ minimatch@0.3: lru-cache "2" sigmund "~1.0.0" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2373,11 +2868,34 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" -mkdirp@0.5, mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2410,6 +2928,16 @@ ms@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + multimatch@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" @@ -2433,9 +2961,27 @@ mv@2.1.1: ncp "~2.0.0" rimraf "~2.4.0" -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" +nan@^2.9.2: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" natives@^1.1.0: version "1.1.0" @@ -2445,23 +2991,41 @@ ncp@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + node-fetch@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.1.tgz#369ca70b82f50c86496104a6c776d274f4e4a2d4" -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: + detect-libc "^1.0.2" mkdirp "^0.5.1" + needle "^2.2.1" nopt "^4.0.1" + npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" + tar "^4" + +node-releases@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.0.tgz#be7464fa8d877808237520fd49436d5e79191c3d" + integrity sha512-+qV91QMDBvARuPxUEfI/mRF/BY+UAkTIn3pvmvM2iOLIRvv6RNYklFXBgrkky6P1wXUqQW1P3qKlWxxy4JZbfg== + dependencies: + semver "^5.3.0" node.extend@~1.1.2: version "1.1.6" @@ -2491,12 +3055,26 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2555,10 +3133,26 @@ object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -2566,7 +3160,14 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.3.3: +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -2597,7 +3198,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2608,13 +3209,14 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== dependencies: - graceful-fs "^4.1.4" + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" mkdirp "^0.5.1" - object-assign "^4.1.0" p-finally@^1.0.0: version "1.0.0" @@ -2652,6 +3254,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -2674,6 +3281,11 @@ path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -2726,6 +3338,11 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -2775,11 +3392,12 @@ randomatic@^1.1.3: is-number "^2.0.2" kind-of "^3.0.2" -rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - deep-extend "~0.4.0" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -2847,7 +3465,7 @@ readable-stream@^1.1.7, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5: version "2.2.9" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" dependencies: @@ -2875,24 +3493,27 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" -regenerator-transform@0.9.11: - version "0.9.11" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" private "^0.1.6" regex-cache@^0.4.2: @@ -2902,21 +3523,35 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== dependencies: jsesc "~0.5.0" @@ -2928,9 +3563,10 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= repeating@^2.0.0: version "2.0.1" @@ -2946,7 +3582,7 @@ replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" -request@^2.67.0, request@^2.81.0: +request@^2.67.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -3006,7 +3642,24 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -rimraf@2, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.3.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== + dependencies: + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: @@ -3050,10 +3703,37 @@ safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + "semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.1.0, semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" +semver@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -3066,6 +3746,26 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -3102,9 +3802,40 @@ simple-text-buffer@9.2.11: event-kit "2.2.0" span-skip-list "0.2.0" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" sntp@1.x.x: version "1.0.9" @@ -3112,17 +3843,27 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@^0.3.2: version "0.3.3" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" dependencies: source-map "0.1.32" -source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.1.32: version "0.1.32" @@ -3156,6 +3897,13 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + split@0.2: version "0.2.10" resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" @@ -3187,6 +3935,14 @@ stat-mode@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + stream-combiner@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" @@ -3306,6 +4062,13 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -3314,26 +4077,18 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" tar@~0.1.19: version "0.1.20" @@ -3399,14 +4154,40 @@ to-absolute-glob@^0.1.1: dependencies: extend-shallow "^2.0.1" -to-fast-properties@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-iso-string@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + tough-cookie@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" @@ -3435,10 +4216,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - underscore-plus@1.x: version "1.6.6" resolved "https://registry.yarnpkg.com/underscore-plus/-/underscore-plus-1.6.6.tgz#65ecde1bdc441a35d89e650fd70dcf13ae439a7d" @@ -3449,6 +4226,39 @@ underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + unique-stream@^2.0.2: version "2.2.1" resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" @@ -3456,9 +4266,28 @@ unique-stream@^2.0.2: json-stable-stringify "^1.0.0" through2-filter "^2.0.0" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@~1.0.1: version "1.0.2" @@ -3468,12 +4297,6 @@ uuid@3.0.1, uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" -v8flags@^2.0.10: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - vali-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" @@ -3569,31 +4392,35 @@ vscode-jsonrpc@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.3.1.tgz#b7857be58b97af664a8cdd071c91891d6c7d6a67" -vscode-jsonrpc@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz#3b5eef691159a15556ecc500e9a8a0dd143470c8" +vscode-jsonrpc@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" + integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== vscode-languageclient@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.2.1.tgz#26fb0fd18687fcb2b81f358e4e7375a17ac42515" + version "4.4.2" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz#a341a7b4ac403e481f011ed4572854646e8968c4" + integrity sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q== dependencies: - vscode-languageserver-protocol "^3.8.1" + vscode-languageserver-protocol "^3.10.3" -vscode-languageserver-protocol@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.8.1.tgz#ee3ce042f7f49f559a6a552e3f505001fa565154" +vscode-languageserver-protocol@^3.10.3: + version "3.13.0" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz#710d8e42119bb3affb1416e1e104bd6b4d503595" + integrity sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg== dependencies: - vscode-jsonrpc "^3.6.2" - vscode-languageserver-types "^3.8.1" + vscode-jsonrpc "^4.0.0" + vscode-languageserver-types "3.13.0" + +vscode-languageserver-types@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz#b704b024cef059f7b326611c99b9c8753c0a18b4" + integrity sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA== vscode-languageserver-types@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.3.0.tgz#8964dc7c2247536fbefd2d6836bf3febac80dd00" -vscode-languageserver-types@^3.8.1: - version "3.8.2" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.8.2.tgz#2550b8d852195328a735c56dbf4e72b8da31613f" - vscode-languageserver@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-3.3.0.tgz#f547d4f0e5702f88ff3695bae5905f9604c8cc62" @@ -3672,6 +4499,11 @@ yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" From 1f56e9e07cb28fb97231705717f01b85714253d6 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sat, 8 Dec 2018 15:33:53 +0530 Subject: [PATCH 02/12] feat(syntax): enable syntax highlighting in .flowconfig --- package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package.json b/package.json index cc5fbab..0eea875 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,12 @@ "filenamePatterns": [ "*.js.flow" ] + }, + { + "id": "ini", + "filenames": [ + ".flowconfig" + ] } ] }, From 3f33b0a414de86137e8b47c8de48835be456a5fa Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sat, 8 Dec 2018 15:31:59 +0530 Subject: [PATCH 03/12] fix(useLsp): add missing features in lsp mode. changes useLSP mode - use `flow lsp` to implement language server (remove flow-language-server) - add TypeCoverage - add Status - add Rename - add `stopFlowOnExit` support - add `runOnEdit` partial support (only report syntax errors) --- lib/flowLSP.js | 119 ---- lib/flowLSP/features/Status/Status.js | 135 ++++ lib/flowLSP/features/Status/StatusFeature.js | 49 ++ lib/flowLSP/features/Status/index.js | 2 + lib/flowLSP/features/Status/types.js | 32 + .../features/TypeCoverage/TypeCoverage.js | 214 +++++++ .../TypeCoverage/TypeCoverageFeature.js | 62 ++ lib/flowLSP/features/TypeCoverage/index.js | 2 + lib/flowLSP/features/TypeCoverage/types.js | 26 + lib/flowLSP/ignoreFlowFrequentErrors.js | 25 + lib/flowLSP/index.js | 95 +++ lib/flowLSP/middlewares/hover.js | 52 ++ lib/utils/index.js | 2 +- lib/utils/util.js | 4 + package.json | 3 +- yarn.lock | 588 +----------------- 16 files changed, 732 insertions(+), 678 deletions(-) delete mode 100644 lib/flowLSP.js create mode 100644 lib/flowLSP/features/Status/Status.js create mode 100644 lib/flowLSP/features/Status/StatusFeature.js create mode 100644 lib/flowLSP/features/Status/index.js create mode 100644 lib/flowLSP/features/Status/types.js create mode 100644 lib/flowLSP/features/TypeCoverage/TypeCoverage.js create mode 100644 lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js create mode 100644 lib/flowLSP/features/TypeCoverage/index.js create mode 100644 lib/flowLSP/features/TypeCoverage/types.js create mode 100644 lib/flowLSP/ignoreFlowFrequentErrors.js create mode 100644 lib/flowLSP/index.js create mode 100644 lib/flowLSP/middlewares/hover.js diff --git a/lib/flowLSP.js b/lib/flowLSP.js deleted file mode 100644 index fa372b0..0000000 --- a/lib/flowLSP.js +++ /dev/null @@ -1,119 +0,0 @@ -/* @flow */ -'use strict'; - -import * as path from 'path'; -import * as vscode from 'vscode'; -import { - workspace, - window, - Disposable, - ExtensionContext, - StatusBarAlignment, - TextEditor, -} from 'vscode'; -import { - ErrorHandler, - LanguageClient, - LanguageClientOptions, - SettingMonitor, - ServerOptions, - State as ClientState, - TransportKind, -} from 'vscode-languageclient'; -import { checkNode, checkFlow, isFlowEnabled } from './utils'; -import { setupLogging } from './flowLogging'; -import { clearWorkspaceCaches, getPathToFlow } from './pkg/flow-base/lib/FlowHelpers'; - -const languages = [ - { language: 'javascript', scheme: 'file' }, - { language: 'javascriptreact', scheme: 'file' } -]; - -export async function activate(context: ExtensionContext) { - if (!isFlowEnabled()) { - return; - } - global.vscode = vscode; - - setupLogging(); - checkNode(); - checkFlow(); - - const pathToFlow = await getPathToFlow(); - - // The server is implemented in node - const SERVER_HOME = context.asAbsolutePath( - path.join('node_modules', 'flow-language-server', 'lib', 'bin', 'cli.js') - ); - - // Use the same path as non-LSP Flow - // Disable auto-downloading of Flow binaries - const args = ['--flow-path', pathToFlow, '--no-auto-download'] - - // If the extension is launched in debug mode then the debug server options are used - // Otherwise the run options are used - const serverOptions: ServerOptions = { - run: { module: SERVER_HOME, args, transport: TransportKind.ipc }, - debug: { - module: SERVER_HOME, - transport: TransportKind.ipc, - args, - // If you receive errors when starting the extension in debug mode, - // try switching this to the deprecated command, --debug=6009 - options: { execArgv: ['--nolazy', '--inspect=6009'] }, - }, - }; - - // Options to control the language client - const clientOptions: LanguageClientOptions = { - documentSelector: languages, - synchronize: { - configurationSection: 'flow', - // Notify the server about file changes to '.clientrc files contain in the workspace - fileEvents: workspace.createFileSystemWatcher('**/*.{js,jsx,mjs,js.flow}'), - }, - uriConverters: { - code2Protocol: uri => uri.toString(true), // this disables URL-encoding for file URLs - }, - }; - - const statusBarItem = window.createStatusBarItem(StatusBarAlignment.Left, 0); - let serverRunning: boolean = false; - - // Create the language client and start the client. - const client = new LanguageClient('flow', 'Flow', serverOptions, clientOptions); - const defaultErrorHandler: ErrorHandler = client.createDefaultErrorHandler(); - const running = 'Flow server is running.'; - const stopped = 'Flow server stopped.'; - - client.onDidChangeState(event => { - if (event.newState === ClientState.Running) { - client.info(running); - statusBarItem.tooltip = running; - serverRunning = true; - } else { - client.info(stopped); - statusBarItem.tooltip = stopped; - serverRunning = false; - } - udpateStatusBarVisibility(statusBarItem, serverRunning); - }); - - const disposable = client.start(); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); -} - -function udpateStatusBarVisibility(statusBarItem, show: boolean): void { - if (show) { - statusBarItem.show(); - statusBarItem.text = 'Flow'; - } else { - statusBarItem.hide(); - } -} - -workspace.onDidChangeConfiguration(params => { - clearWorkspaceCaches(); -}); diff --git a/lib/flowLSP/features/Status/Status.js b/lib/flowLSP/features/Status/Status.js new file mode 100644 index 0000000..b1e43f2 --- /dev/null +++ b/lib/flowLSP/features/Status/Status.js @@ -0,0 +1,135 @@ +/* @flow */ +import * as vscode from 'vscode'; +import { LspMessageType, type ShowStatusParams } from './types'; +import Spinner from 'elegant-spinner'; + +type State = { + state: 'running' | 'busy' | 'error' | null, + message: string, + progress: string +}; + +function raf(cb) { + return setTimeout(cb, 100); +} + +export default class Status { + state: State = { + state: null, + message: '', + progress: '' + }; + + statusBarItem: vscode.StatusBarItem; + initialColor: string; + _timeoutID: TimeoutID | null = null; + spinner = Spinner(); + + constructor() { + this.statusBarItem = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left + ); + this.statusBarItem.command = 'flow.show-output'; + this.initialColor = this.statusBarItem.color; + } + + setState(partialState: $Shape) { + this.state = { + ...this.state, + ...partialState + }; + this.render(); + } + + update(params: ShowStatusParams) { + switch (params.type) { + case LspMessageType.Error: { + this.setState({ + state: 'error', + message: params.message || '', + progress: '' + }); + break; + } + case LspMessageType.Warning: { + let progress = ''; + if (params.shortMessage) { + progress = params.shortMessage; + } else if (params.progress != null) { + const { numerator, denominator } = params.progress; + progress = + Math.round( + (numerator / (denominator == null ? 100 : denominator)) * 100 + ) + '%'; + } else { + progress = params.message || ''; + } + + this.setState({ + state: 'busy', + message: params.message || '', + progress + }); + break; + } + case LspMessageType.Info: { + this.setState({ + state: 'running', + message: params.message || '', + progress: '' + }); + break; + } + default: + this.setState({ + state: null, + message: '', + progress: '' + }); + } + } + + render() { + const item = this.statusBarItem; + const { state } = this; + this._clearTimeout(); + + switch (state.state) { + case 'running': + item.text = 'Flow'; + item.tooltip = state.message; + item.color = this.initialColor; + item.show(); + break; + case 'busy': + item.text = `Flow ${this.spinner()} ${state.progress}`; + item.tooltip = state.message; + item.color = this.initialColor; + item.show(); + // to run spinner + this._timeoutID = setTimeout(() => this.render(), 100); + break; + case 'error': + item.text = '$(stop) Flow'; + item.tooltip = state.message; + item.color = 'red'; + item.show(); + break; + default: + (state.state: null); + item.hide(); + } + } + + _clearTimeout() { + if (this._timeoutID) { + clearTimeout(this._timeoutID); + this._timeoutID = null; + } + } + + dispose() { + this.statusBarItem.dispose(); + this._clearTimeout(); + } +} diff --git a/lib/flowLSP/features/Status/StatusFeature.js b/lib/flowLSP/features/Status/StatusFeature.js new file mode 100644 index 0000000..7adedb7 --- /dev/null +++ b/lib/flowLSP/features/Status/StatusFeature.js @@ -0,0 +1,49 @@ +/* @flow */ +// add support using "window/showStatus" lsp extension +import * as lsp from 'vscode-languageclient'; +import * as vscode from 'vscode'; +import Status from './Status'; +import { type ShowStatusParams, LspMessageType } from './types'; + +type StaticFeature = lsp.StaticFeature; + +export default class StatusFeature implements StaticFeature { + _client: lsp.BaseLanguageClient; + + constructor(client: lsp.BaseLanguageClient) { + this._client = client; + } + + fillClientCapabilities(capabilities: lsp.ClientCapabilities): void { + capabilities.window = capabilities.window || {}; + capabilities.window.status = { dynamicRegistration: false }; + } + + initialize(): lsp.Disposable { + let client = this._client; + const status = new Status(); + + client.onReady().then(() => { + client.onRequest('window/showStatus', (params: ShowStatusParams) => { + status.update(params); + + if (params.actions && params.actions.length > 0) { + switch (params.type) { + case LspMessageType.Error: + return vscode.window.showErrorMessage( + params.message || '', + ...params.actions + ); + case LspMessageType.Warning: + return vscode.window.showInformationMessage( + params.message || '', + ...params.actions + ); + } + } + }); + }); + + return status; + } +} diff --git a/lib/flowLSP/features/Status/index.js b/lib/flowLSP/features/Status/index.js new file mode 100644 index 0000000..a731d89 --- /dev/null +++ b/lib/flowLSP/features/Status/index.js @@ -0,0 +1,2 @@ +/* @flow */ +export { default } from './StatusFeature'; diff --git a/lib/flowLSP/features/Status/types.js b/lib/flowLSP/features/Status/types.js new file mode 100644 index 0000000..30770aa --- /dev/null +++ b/lib/flowLSP/features/Status/types.js @@ -0,0 +1,32 @@ +/* @flow */ +export type MessageActionItem = { + // A short title like 'Retry', 'Open Log' etc. + title: string +}; + +// window/showStatus is a Nuclide-specific extension to LSP +// for reporting whether the LSP server is ready to handle requests +export type ShowStatusParams = { + // The message type, {@link MessageType}. Permits only Error, Warning, Info. + type: number, + // The message action items to present. Only allowed for Error. + actions?: Array, + // The actual message. Mandatory for Error, Warning. + message?: string, + // An optional short message, hopefully <8chars, to appear prominently + shortMessage?: string, + // The client might display a progress bar "numerator/denominator" if both are + // present, or an indeterminate progress bar if only numerator is present. + progress?: { numerator: number, denominator?: number } +}; + +export const LspMessageType = { + // An error message. + Error: 1, + // A warning message. + Warning: 2, + // An information message. + Info: 3, + // A log message. + Log: 4 +}; diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js new file mode 100644 index 0000000..8cfdadc --- /dev/null +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js @@ -0,0 +1,214 @@ +/* @flow */ +import * as vscode from 'vscode'; + +import { + TypeCoverageProvider, + type TypeCoverageResult, + type UncoveredRange +} from './types'; +import { shouldShowUncoveredCode } from '../../../utils/util'; + +type State = { + showUncovered: boolean, + activeDocument: null | vscode.TextDocument, + coverage: null | TypeCoverageResult, + pendingRequest: null | Request +}; + +export default class TypeCoverage { + static ToggleCommand = 'flow.show-coverage'; + + statusBarItem: vscode.StatusBarItem; + diagnostics: vscode.DiagnosticCollection; + subscriptions: vscode.Disposable[] = []; + documentSelector: vscode.DocumentSelector; + provider: TypeCoverageProvider; + + state: State = { + showUncovered: shouldShowUncoveredCode(), + activeDocument: null, + coverage: null, + pendingRequest: null + }; + + constructor( + documentSelector: vscode.DocumentSelector, + provider: TypeCoverageProvider + ) { + this.statusBarItem = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left + ); + this.diagnostics = vscode.languages.createDiagnosticCollection( + 'flow_coverage' + ); + + this.provider = provider; + this.documentSelector = documentSelector; + + this.subscriptions.push( + vscode.commands.registerCommand(TypeCoverage.ToggleCommand, () => { + this.setState({ showUncovered: !this.state.showUncovered }); + }) + ); + this.subscriptions.push( + vscode.workspace.onDidSaveTextDocument(document => + this._handleDocumentChange(document) + ) + ); + this.subscriptions.push( + vscode.window.onDidChangeActiveTextEditor(editor => { + this._handleDocumentChange(editor ? editor.document : null); + }) + ); + if (vscode.window.activeTextEditor) { + this._handleDocumentChange(vscode.window.activeTextEditor.document); + } + } + + setState(partialState: $Shape) { + this.state = { + ...this.state, + ...partialState + }; + this.render(); + } + + dispose() { + this.statusBarItem.dispose(); + this.diagnostics.dispose(); + if (this.state.pendingRequest) { + this.state.pendingRequest.cancel(); + } + } + + render() { + this._renderStatusBar(); + this._renderDiagnostics(); + } + + _renderStatusBar() { + const { state, statusBarItem } = this; + + const { coverage } = state; + + if (state.activeDocument) { + // computing coverage for first time + if (!coverage && state.pendingRequest) { + statusBarItem.text = `Flow Coverage: $(sync)`; + statusBarItem.tooltip = `Computing coverage...`; + statusBarItem.command = ''; + statusBarItem.show(); + return; + } + + // update covearge + if (coverage) { + const updating = Boolean(state.pendingRequest); + statusBarItem.text = [ + 'Flow Coverage', + state.showUncovered ? '$(eye)' : null, + `${coverage.coveredPercent}%`, + updating ? '$(sync)' : null + ] + .filter(Boolean) + .join(' '); + + statusBarItem.tooltip = updating + ? 'Recomputing coverage' + : `This file is ${coverage.coveredPercent}% covered by Flow. \n` + + `Click to ${ + state.showUncovered ? 'hide' : 'show' + } highlighting of uncovered areas.`; + + // disable clicking when updating coverage + statusBarItem.command = updating ? '' : TypeCoverage.ToggleCommand; + statusBarItem.show(); + + return; + } + } + + statusBarItem.hide(); + } + + _renderDiagnostics() { + const { state } = this; + this.diagnostics.clear(); + if (!state.showUncovered || !state.activeDocument || state.pendingRequest) { + return; + } + + if (state.coverage && state.coverage.uncoveredRanges.length > 0) { + const diagnostics: vscode.Diagnostic[] = state.coverage.uncoveredRanges.map( + uncoveredRangeToDiagnostic + ); + this.diagnostics.set(state.activeDocument.uri, diagnostics); + } + } + + _handleDocumentChange(document: null | vscode.TextDocument) { + if (!document || !vscode.languages.match(this.documentSelector, document)) { + this.setState({ + activeDocument: null, + pendingRequest: null, + coverage: null + }); + return; + } + + if (this.state.pendingRequest) { + this.state.pendingRequest.cancel(); + } + + const pendingRequest = requestTypeCoverage( + this.provider, + document, + coverage => { + this.setState({ pendingRequest: null, coverage }); + } + ); + this.setState({ + activeDocument: document, + pendingRequest, + // reset coverage when document changed + coverage: + this.state.activeDocument !== document ? null : this.state.coverage + }); + } +} + +type Request = { + cancel: () => void +}; + +function requestTypeCoverage( + provider: TypeCoverageProvider, + document: vscode.TextDocument, + callback: (coverage: null | TypeCoverageResult) => void +): Request { + let isCancelled = false; + + Promise.resolve(provider.provideTypeCoverage(document)).then(coverage => { + if (!isCancelled) { + callback(coverage || null); + } + }); + + return { + cancel: () => { + isCancelled = true; + } + }; +} + +function uncoveredRangeToDiagnostic( + uncoveredRange: UncoveredRange +): vscode.Diagnostic { + const diagnostic = new vscode.Diagnostic( + uncoveredRange.range, + uncoveredRange.message || 'Not covered by flow', + vscode.DiagnosticSeverity.Information + ); + diagnostic.source = 'Type Coverage'; + return diagnostic; +} diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js new file mode 100644 index 0000000..223a9d2 --- /dev/null +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js @@ -0,0 +1,62 @@ +/* @flow */ +// add support using "textDocument/typeCoverage" lsp extension + +import * as lsp from 'vscode-languageclient'; +import * as vscode from 'vscode'; +import * as UUID from 'vscode-languageclient/lib/utils/uuid'; + +import TypeCoverage from './TypeCoverage'; +import { + type TypeCoverageParams, + type TypeCoverageResult, + ProvideTypeCoverageResult +} from './types'; + +const TypeCoverageRequest = { + type: new lsp.RequestType('textDocument/typeCoverage') +}; + +export default class TypeCoverageFeature extends lsp.TextDocumentFeature { + constructor(client: lsp.BaseLanguageClient) { + super(client, TypeCoverageRequest.type); + } + + fillClientCapabilities(capabilities: lsp.ClientCapabilities): void {} + + initialize( + capabilities: lsp.ServerCapabilities, + documentSelector: lsp.DocumentSelector + ): void { + if (!capabilities.typeCoverageProvider) { + return; + } + + this.register(this.messages, { + id: UUID.generateUuid(), + registerOptions: { documentSelector: documentSelector } + }); + } + + registerLanguageProvider( + options: lsp.TextDocumentRegistrationOptions + ): vscode.Disposable { + let client = this._client; + + let provideTypeCoverage: ProvideTypeCoverageResult = document => { + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier( + document + ) + }; + return client.sendRequest(TypeCoverageRequest.type, params).then( + coverage => coverage, + error => { + client.logFailedRequest(TypeCoverageRequest.type, error); + return Promise.resolve(null); + } + ); + }; + + return new TypeCoverage(options.documentSelector, { provideTypeCoverage }); + } +} diff --git a/lib/flowLSP/features/TypeCoverage/index.js b/lib/flowLSP/features/TypeCoverage/index.js new file mode 100644 index 0000000..897d1d0 --- /dev/null +++ b/lib/flowLSP/features/TypeCoverage/index.js @@ -0,0 +1,2 @@ +/* @flow */ +export { default } from './TypeCoverageFeature'; diff --git a/lib/flowLSP/features/TypeCoverage/types.js b/lib/flowLSP/features/TypeCoverage/types.js new file mode 100644 index 0000000..b321d58 --- /dev/null +++ b/lib/flowLSP/features/TypeCoverage/types.js @@ -0,0 +1,26 @@ +/* @flow */ +import * as lsp from 'vscode-languageclient'; +import * as vscode from 'vscode'; + +export type UncoveredRange = { + range: vscode.Range, + message?: string +}; + +export type TypeCoverageResult = { + coveredPercent: number, + uncoveredRanges: Array, + defaultMessage: string +}; + +export type TypeCoverageParams = { + textDocument: lsp.TextDocumentIdentifier +}; + +export interface TypeCoverageProvider { + provideTypeCoverage: ProvideTypeCoverageResult; +} + +export interface ProvideTypeCoverageResult { + (document: vscode.TextDocument): vscode.ProviderResult; +} diff --git a/lib/flowLSP/ignoreFlowFrequentErrors.js b/lib/flowLSP/ignoreFlowFrequentErrors.js new file mode 100644 index 0000000..05e6a66 --- /dev/null +++ b/lib/flowLSP/ignoreFlowFrequentErrors.js @@ -0,0 +1,25 @@ +/* @flow */ +import * as lsp from 'vscode-languageclient'; + +// NOTE: by default vscode logs & opens output panel for lsp command errors which is very annoying for common errors. +// This function will ignore some common flow lsp errors which are not that important to user. + +// @HACK: couldnt find any clean way to implement this +export default function ignoreFlowFrequentErrors(client: lsp.LanguageClient) { + const origLogFailedRequest = client.logFailedRequest; + client.logFailedRequest = (type: lsp.RPCMessageType, error: any) => { + if (notEnoughTypeInformationError(type, error)) { + return; + } + origLogFailedRequest.call(client, type, error); + }; +} + +function notEnoughTypeInformationError(type: lsp.RPCMessageType, error: mixed) { + return ( + type.method === 'textDocument/completion' && + error && + typeof error.message === 'string' && + error.message.includes('not enough type information to autocomplete') + ); +} diff --git a/lib/flowLSP/index.js b/lib/flowLSP/index.js new file mode 100644 index 0000000..ec64ab6 --- /dev/null +++ b/lib/flowLSP/index.js @@ -0,0 +1,95 @@ +/* @flow */ +'use strict'; + +import * as path from 'path'; +import * as vscode from 'vscode'; +import * as lsp from 'vscode-languageclient'; +import { + checkNode, + checkFlow, + isFlowEnabled, + isRunOnEditEnabled, + shouldStopFlowOnExit, + isFlowStatusEnabled +} from '../utils'; +import { setupLogging } from '../flowLogging'; +import { clearWorkspaceCaches, getPathToFlow } from '../pkg/flow-base/lib/FlowHelpers'; + +import hoverMiddleware from './middlewares/hover'; +import TypeCoverageFeature from './features/TypeCoverage'; +import StatusFeature from './features/Status'; +import ignoreFlowFrequentErrors from './ignoreFlowFrequentErrors'; + +const languages = [ + { language: 'javascript', scheme: 'file' }, + { language: 'javascriptreact', scheme: 'file' } +]; + +export async function activate(context: vscode.ExtensionContext) { + if (!isFlowEnabled()) { + return; + } + global.vscode = vscode; + + setupLogging(); + checkNode(); + checkFlow(); + + const pathToFlow = await getPathToFlow(); + + const serverOptions: lsp.ServerOptions = { + command: pathToFlow, + args: [ + 'lsp', + ...['--from', 'vscode'], + // auto stop flow process + shouldStopFlowOnExit() ? '--autostop' : null + ].filter(Boolean) + }; + + // Options to control the language client + const clientOptions: lsp.LanguageClientOptions = { + documentSelector: languages, + uriConverters: { + code2Protocol: uri => uri.toString(true), // this disables URL-encoding for file URLs + protocol2Code: value => vscode.Uri.parse(value) + }, + middleware: { + // using middleware to format hover content + provideHover: hoverMiddleware + }, + initializationOptions: { + // [Partial 'runOnEdit' support] + // flow lsp currently only support live syntax errors + liveSyntaxErrors: isRunOnEditEnabled() + } + }; + + // Create the language client and start the client. + const client = new lsp.LanguageClient('flow', 'Flow', serverOptions, clientOptions); + const defaultErrorHandler: lsp.ErrorHandler = client.createDefaultErrorHandler(); + + client.registerFeature(new TypeCoverageFeature(client)); + if (isFlowStatusEnabled()) { + client.registerFeature(new StatusFeature(client)); + } + ignoreFlowFrequentErrors(client); + + // Tell user to reload vscode if config changed + vscode.workspace.onDidChangeConfiguration(config => { + if (config.affectsConfiguration('flow')) { + vscode.window + .showInformationMessage('Flow settings changed, reload vscode to apply changes.', 'Reload') + .then(selected => { + if (selected === 'Reload') { + vscode.commands.executeCommand('workbench.action.reloadWindow'); + } + }); + } + }); + + const disposable = client.start(); + // Push the disposable to the context's subscriptions so that the + // client can be deactivated on extension deactivation + context.subscriptions.push(disposable); +} diff --git a/lib/flowLSP/middlewares/hover.js b/lib/flowLSP/middlewares/hover.js new file mode 100644 index 0000000..c1d5306 --- /dev/null +++ b/lib/flowLSP/middlewares/hover.js @@ -0,0 +1,52 @@ +/* @flow */ +// HoverMiddleware: format hover contents field data + +import * as vscode from 'vscode'; +import * as lsp from 'vscode-languageclient'; +import { js_beautify } from 'js-beautify'; + +export default function provideHover( + document: vscode.TextDocument, + position: vscode.Position, + token: vscode.CancellationToken, + next: lsp.ProvideHoverSignature +) { + return Promise.resolve(next(document, position, token)).then(value => { + if (!value) { + return value; + } + + // format content + value.contents = value.contents.map(content => { + // NOTE: in our case, content is always MarkdownString + if (content instanceof vscode.MarkdownString) { + return formatMarkedDownString(content); + } + return content; + }); + + return value; + }); +} + +function formatMarkedDownString( + mdStr: vscode.MarkdownString +): vscode.MarkdownString { + const code = extractCode(mdStr, 'flow'); + const formatted = formatCode(code); + const formattedStr = new vscode.MarkdownString(); + formattedStr.appendCodeblock(formatted, 'javascript'); + return formattedStr; +} + +// ```languageID code``` => code +function extractCode(mdStr: vscode.MarkdownString, language: string): string { + return mdStr.value + .replace('```' + language, '') + .replace('```', '') + .trim(); +} + +function formatCode(code: string): string { + return js_beautify(code, { indent_size: 4 }); +} diff --git a/lib/utils/index.js b/lib/utils/index.js index 5966c5a..f860bbb 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -1,3 +1,3 @@ /** @flow */ -export {checkFlow, checkNode, isFlowEnabled, useLSP} from './util' +export {checkFlow, checkNode, isFlowEnabled, useLSP, isRunOnEditEnabled, shouldStopFlowOnExit, isFlowStatusEnabled} from './util' diff --git a/lib/utils/util.js b/lib/utils/util.js index 83cde85..a25d755 100644 --- a/lib/utils/util.js +++ b/lib/utils/util.js @@ -40,6 +40,10 @@ export function getFileExtensions():Array { return workspace.getConfiguration('flow').get('fileExtensions') } +export function shouldStopFlowOnExit():boolean { + return workspace.getConfiguration('flow').get('stopFlowOnExit') +} + export function getTryPath(context:ExtensionContext):string { return context.asAbsolutePath('./playground/try.js') } diff --git a/package.json b/package.json index 0eea875..9cf32c5 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,6 @@ "elegant-spinner": "^1.0.1", "event-kit": "^2.0.0", "flow-bin": "^0.68.0", - "flow-language-server": "^0.6.0", "fs-plus": "^2.8.2", "fuzzaldrin": "^2.1.0", "js-beautify": "^1.6.12", @@ -127,7 +126,7 @@ "semver": "^5.3.0", "shell-quote": "^1.6.0", "temp": "^0.8.3", - "vscode-languageclient": "^4.2.1" + "vscode-languageclient": "^4.4.2" }, "devDependencies": { "@babel/cli": "^7.2.0", diff --git a/yarn.lock b/yarn.lock index 74abdc9..34cbb0a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -646,10 +646,6 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -adm-zip@^0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1" - ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -669,10 +665,6 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -796,18 +788,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async-to-generator@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/async-to-generator/-/async-to-generator-1.1.0.tgz#1e20ed31df00eebded93a1469516f036213134c6" - async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@~0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -817,12 +801,6 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -atom-patch@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/atom-patch/-/atom-patch-0.3.0.tgz#e007ac55cb500a8a66c2d8eef7a4375d31428f54" - dependencies: - random-seed "^0.2.0" - aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" @@ -956,10 +934,6 @@ camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - caniuse-lite@^1.0.30000912: version "1.0.30000916" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000916.tgz#3428d3f529f0a7b2bfaaec65e796037bdd433aab" @@ -1037,14 +1011,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -1161,14 +1127,6 @@ cross-spawn@^4.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1187,10 +1145,6 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-format@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-0.0.0.tgz#09206863ab070eb459acea5542cbd856b11966b3" - dateformat@^1.0.7-1.2.3: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -1208,10 +1162,6 @@ debug@2.2.0: dependencies: ms "0.7.1" -debug@^0.7.2: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - debug@^2.1.2, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1232,7 +1182,7 @@ debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1295,10 +1245,6 @@ diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" -diff@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.0.1.tgz#a52d90cc08956994be00877bff97110062582c35" - duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -1348,7 +1294,7 @@ end-of-stream@1.0.0: dependencies: once "~1.3.0" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: @@ -1367,10 +1313,6 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -event-kit@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.2.0.tgz#29df50deae3d6d4c1c62451b10925f28641e928b" - event-kit@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.3.0.tgz#459ba0646d4b7dbca5d9bf2b3c4e2d0103e85e15" @@ -1399,18 +1341,6 @@ event-stream@~3.1.5: stream-combiner "~0.0.4" through "~2.3.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -1522,12 +1452,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - first-chunk-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" @@ -1536,43 +1460,6 @@ flow-bin@^0.68.0: version "0.68.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.68.0.tgz#86c2d14857d306eb2e85e274f2eebf543564f623" -flow-language-server@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/flow-language-server/-/flow-language-server-0.6.0.tgz#b86d3abd59d228e69f16e83e5bd06c21ded5c346" - dependencies: - async-to-generator "1.1.0" - event-kit "2.2.0" - flow-versions "^0.3.1" - fuzzaldrin-plus "0.4.1" - log4js "1.1.1" - nuclide-commons "0.5.1" - semver "5.3.0" - simple-text-buffer "9.2.11" - temp "0.8.3" - through "2.3.8" - vscode-jsonrpc "3.3.0" - vscode-languageserver "^3.3.0" - vscode-uri "^1.0.1" - yargs "^8.0.2" - -flow-versions@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/flow-versions/-/flow-versions-0.3.1.tgz#99e3f4ea97a8e97ae2d81194e80812b0c6562be2" - dependencies: - adm-zip "^0.4.7" - async-to-generator "1.1.0" - idx "^1.5.0" - ini "^1.3.5" - invariant "2.2.2" - log4js "1.1.1" - node-fetch "^2.0.0" - nuclide-commons "0.5.1" - nullthrows "1.0.0" - read-pkg-up "^3.0.0" - rimraf "2.5.4" - semver "5.3.0" - temp "0.8.3" - for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1614,15 +1501,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-plus@2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/fs-plus/-/fs-plus-2.9.3.tgz#75e6d7c57e45364955a1cfbfc563fc5820e0cff2" - dependencies: - async "~0.2.9" - mkdirp "~0.3.5" - rimraf "~2.2.2" - underscore-plus "1.x" - fs-plus@^2.8.2: version "2.10.1" resolved "https://registry.yarnpkg.com/fs-plus/-/fs-plus-2.10.1.tgz#3204781d7840611e6364e7b6fb058c96327c5aa5" @@ -1658,10 +1536,6 @@ fstream@~0.1.28: mkdirp "0.5" rimraf "2" -fuzzaldrin-plus@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/fuzzaldrin-plus/-/fuzzaldrin-plus-0.4.1.tgz#979595024aab74184942307d631d7aa441eee379" - fuzzaldrin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz#90204c3e2fdaa6941bb28d16645d418063a90e9b" @@ -1689,18 +1563,10 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1753,17 +1619,6 @@ glob@3.2.11: inherits "2" minimatch "0.3" -glob@7.1.1, glob@^7.0.0, glob@^7.0.5: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^5.0.15, glob@^5.0.3: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -1774,13 +1629,14 @@ glob@^5.0.15, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" +glob@^7.0.0, glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.2" once "^1.3.0" path-is-absolute "^1.0.0" @@ -2044,14 +1900,6 @@ iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -idx@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/idx/-/idx-1.2.0.tgz#be4f41fb82bed571f65362e79add27e0ae74f691" - -idx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/idx/-/idx-1.5.0.tgz#2ce9665945fdb36544308f930c78e3f1ef6c4315" - ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -2080,16 +1928,6 @@ ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -invariant@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -2097,10 +1935,6 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -2208,10 +2042,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -2382,10 +2212,6 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-parse-better-errors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" - json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -2460,12 +2286,6 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2476,31 +2296,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -2690,14 +2485,6 @@ lodash@^4.17.10: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -log4js@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" - dependencies: - debug "^2.2.0" - semver "^5.3.0" - streamroller "^0.4.0" - log4js@^0.6.37: version "0.6.38" resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" @@ -2722,19 +2509,19 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" -lru-cache@4.0.2, lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - lru-cache@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" dependencies: pseudomap "^1.0.1" +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -2755,12 +2542,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -2823,26 +2604,12 @@ mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" -mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" - -mime-types@2.1.16: - version "2.1.16" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" - dependencies: - mime-db "~1.29.0" - mime-types@^2.1.12, mime-types@~2.1.7: version "2.1.15" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" dependencies: mime-db "~1.27.0" -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - minimatch@0.3: version "0.3.0" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" @@ -2895,16 +2662,12 @@ mkdirp@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" -mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mkdirp@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" - mocha@^2.3.3: version "2.5.3" resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" @@ -2953,14 +2716,6 @@ multipipe@^0.1.0, multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" -mv@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" - dependencies: - mkdirp "~0.5.1" - ncp "~2.0.0" - rimraf "~2.4.0" - nan@^2.9.2: version "2.11.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" @@ -2987,10 +2742,6 @@ natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" -ncp@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - needle@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" @@ -3000,10 +2751,6 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -node-fetch@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.1.tgz#369ca70b82f50c86496104a6c776d274f4e4a2d4" - node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -3075,12 +2822,6 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - npmlog@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" @@ -3090,33 +2831,6 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nuclide-commons@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/nuclide-commons/-/nuclide-commons-0.5.1.tgz#243826dce1ec5e79ef19719af20f457a9eb3c569" - dependencies: - async-to-generator "1.1.0" - event-kit "2.2.0" - fs-plus "2.9.3" - glob "7.1.1" - idx "1.2.0" - log4js "1.1.1" - lru-cache "4.0.2" - mime-types "2.1.16" - mkdirp "0.5.1" - mv "2.1.1" - nullthrows "1.0.0" - rimraf "2.6.2" - rxjs "5.5.5" - shell-quote "1.6.1" - temp "0.8.3" - uuid "3.0.1" - vscode-jsonrpc "3.3.0" - vscode-uri "1.0.1" - -nullthrows@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.0.0.tgz#34715e53b9debe0750a77233fd494a5835a2d999" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -3190,14 +2904,6 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3218,20 +2924,6 @@ output-file-sync@^2.0.0: is-plain-obj "^1.1.0" mkdirp "^0.5.1" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -3247,13 +2939,6 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -3269,18 +2954,10 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -3294,18 +2971,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - dependencies: - pify "^3.0.0" - pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -3324,10 +2989,6 @@ pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -3381,10 +3042,6 @@ queue@^3.0.10, queue@^3.1.0: dependencies: inherits "~2.0.0" -random-seed@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/random-seed/-/random-seed-0.2.0.tgz#4d1889b46dc84ef52316ceb7772b0ce0a544f38e" - randomatic@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" @@ -3409,20 +3066,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -3431,22 +3074,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -3456,15 +3083,6 @@ read-pkg@^3.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^1.1.7, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5: version "2.2.9" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" @@ -3477,6 +3095,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.0" util-deprecate "~1.0.1" +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3634,14 +3261,6 @@ request@~2.79.0: tunnel-agent "~0.4.1" uuid "^3.0.0" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -3665,34 +3284,10 @@ rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.0.5" -rimraf@2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" - dependencies: - glob "^7.0.5" - -rimraf@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rimraf@~2.2.2, rimraf@~2.2.6: +rimraf@~2.2.6: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" -rimraf@~2.4.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" - dependencies: - glob "^6.0.1" - -rxjs@5.5.5: - version "5.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.5.tgz#e164f11d38eaf29f56f08c3447f74ff02dd84e97" - dependencies: - symbol-observable "1.0.1" - rxjs@^5.0.0-beta.8: version "5.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.0.tgz#a7db14ab157f9d7aac6a56e655e7a3860d39bf26" @@ -3725,7 +3320,7 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3738,7 +3333,7 @@ semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3766,17 +3361,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shell-quote@1.6.1, shell-quote@^1.6.0: +shell-quote@^1.6.0: version "1.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" dependencies: @@ -3793,15 +3378,6 @@ signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-text-buffer@9.2.11: - version "9.2.11" - resolved "https://registry.yarnpkg.com/simple-text-buffer/-/simple-text-buffer-9.2.11.tgz#96342681248eddb8e3b7128c608e10db58d8748a" - dependencies: - atom-patch "0.3.0" - diff "3.0.1" - event-kit "2.2.0" - span-skip-list "0.2.0" - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -3875,10 +3451,6 @@ source-map@^0.5.0, source-map@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -span-skip-list@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/span-skip-list/-/span-skip-list-0.2.0.tgz#8f47b5c9f1d4beaaf2fbba55b01edaaf2e3b54d1" - sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" @@ -3963,15 +3535,6 @@ streamifier@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f" -streamroller@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.4.1.tgz#d435bd5974373abd9bd9068359513085106cc05f" - dependencies: - date-format "^0.0.0" - debug "^0.7.2" - mkdirp "^0.5.1" - readable-stream "^1.1.7" - string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -3980,13 +3543,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -4013,12 +3569,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - strip-bom-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" @@ -4032,14 +3582,6 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -4069,10 +3611,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" @@ -4098,7 +3636,7 @@ tar@~0.1.19: fstream "~0.1.28" inherits "2" -temp@0.8.3, temp@^0.8.3: +temp@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" dependencies: @@ -4140,7 +3678,7 @@ through2@~0.4.1: readable-stream "~1.0.17" xtend "~2.1.1" -through@2, through@2.3.8, through@~2.3, through@~2.3.1: +through@2, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -4293,7 +3831,7 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -uuid@3.0.1, uuid@^3.0.0: +uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" @@ -4384,20 +3922,12 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vscode-jsonrpc@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.3.0.tgz#03bdab0b10f04727ec3b8d403cd511a8a365b13d" - -vscode-jsonrpc@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.3.1.tgz#b7857be58b97af664a8cdd071c91891d6c7d6a67" - vscode-jsonrpc@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== -vscode-languageclient@^4.2.1: +vscode-languageclient@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz#a341a7b4ac403e481f011ed4572854646e8968c4" integrity sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q== @@ -4417,21 +3947,6 @@ vscode-languageserver-types@3.13.0: resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz#b704b024cef059f7b326611c99b9c8753c0a18b4" integrity sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA== -vscode-languageserver-types@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.3.0.tgz#8964dc7c2247536fbefd2d6836bf3febac80dd00" - -vscode-languageserver@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-3.3.0.tgz#f547d4f0e5702f88ff3695bae5905f9604c8cc62" - dependencies: - vscode-jsonrpc "^3.3.0" - vscode-languageserver-types "^3.3.0" - -vscode-uri@1.0.1, vscode-uri@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.1.tgz#11a86befeac3c4aa3ec08623651a3c81a6d0bbc8" - vscode@0.11.x: version "0.11.18" resolved "https://registry.yarnpkg.com/vscode/-/vscode-0.11.18.tgz#04adab8127a7c3f7b3458d1ca964851fdfa00768" @@ -4450,10 +3965,6 @@ vscode@0.11.x: source-map-support "^0.3.2" vinyl-source-stream "^1.1.0" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" @@ -4466,13 +3977,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4491,10 +3995,6 @@ xtend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -4504,30 +4004,6 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - yauzl@^2.2.1: version "2.8.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2" From baee2f00903340598176a3f6bbf0bdc452292291 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sat, 8 Dec 2018 17:45:16 +0530 Subject: [PATCH 04/12] chore(build): clean old build before starting new compilation --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9cf32c5..ae0b9ef 100644 --- a/package.json +++ b/package.json @@ -103,8 +103,9 @@ ] }, "scripts": { - "vscode:prepublish": "babel ./lib --out-dir=./build --source-maps", - "compile": "babel ./lib --out-dir=./build --source-maps --watch --verbose", + "vscode:prepublish": "yarn build", + "compile": "yarn build --watch", + "build": "babel ./lib --out-dir=./build --source-maps --verbose --delete-dir-on-start", "test": "flow check" }, "dependencies": { From 7af1f28a07e262e164cd53a5251bf0320ef0438d Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Thu, 13 Dec 2018 22:59:07 +0530 Subject: [PATCH 05/12] fix(formatting): use prettier to format output --- lib/flowHover.js | 4 +- lib/flowLSP/middlewares/hover.js | 12 ++---- lib/utils/format.js | 34 ++++++++++++++++ lib/utils/index.js | 11 ++++- package.json | 2 +- yarn.lock | 70 ++++++++++---------------------- 6 files changed, 71 insertions(+), 62 deletions(-) create mode 100644 lib/utils/format.js diff --git a/lib/flowHover.js b/lib/flowHover.js index 993ac57..2f7dd7b 100644 --- a/lib/flowHover.js +++ b/lib/flowHover.js @@ -9,7 +9,7 @@ */ import * as vscode from 'vscode' -import { js_beautify } from 'js-beautify' +import { format } from './utils'; import {flowGetType} from './pkg/flow-base/lib/FlowService' @@ -35,7 +35,7 @@ export class HoverSupport { ) if (completions) { - const beautifiedData = js_beautify(completions.type, { indent_size: 4 }); + const beautifiedData = format(completions.type); return new vscode.Hover([ '[Flow]', {language: 'javascript', value: `${word}: ${beautifiedData}`} diff --git a/lib/flowLSP/middlewares/hover.js b/lib/flowLSP/middlewares/hover.js index c1d5306..52f7b97 100644 --- a/lib/flowLSP/middlewares/hover.js +++ b/lib/flowLSP/middlewares/hover.js @@ -3,7 +3,7 @@ import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient'; -import { js_beautify } from 'js-beautify'; +import { format } from '../../utils'; export default function provideHover( document: vscode.TextDocument, @@ -29,11 +29,9 @@ export default function provideHover( }); } -function formatMarkedDownString( - mdStr: vscode.MarkdownString -): vscode.MarkdownString { +function formatMarkedDownString(mdStr: vscode.MarkdownString): vscode.MarkdownString { const code = extractCode(mdStr, 'flow'); - const formatted = formatCode(code); + const formatted = format(code); const formattedStr = new vscode.MarkdownString(); formattedStr.appendCodeblock(formatted, 'javascript'); return formattedStr; @@ -46,7 +44,3 @@ function extractCode(mdStr: vscode.MarkdownString, language: string): string { .replace('```', '') .trim(); } - -function formatCode(code: string): string { - return js_beautify(code, { indent_size: 4 }); -} diff --git a/lib/utils/format.js b/lib/utils/format.js new file mode 100644 index 0000000..f375eeb --- /dev/null +++ b/lib/utils/format.js @@ -0,0 +1,34 @@ +/* @flow */ +import prettier from 'prettier'; + +// NOTE: flow output is not always valid javascript and prettier only works if it can parse code. +// So I am trying to convert input to valid javascript before running prettier. +export default function format(input: string): string { + try { + // if some `type` value + // example: { a: string } + const val = runPrettier(`type t = ${input}`); + return val.replace('type t = ', ''); + } catch (err) { + try { + // if some valid javascript + // example: type Props = { value: string }; + return runPrettier(input); + } catch (err) { + // cases which dont need formatting or we cant run prettier + // example: `class XYZ`, `import name` + return input; + } + } +} + +function runPrettier(code: string): string { + return prettier.format(code, { + parser: 'flow', + semi: false, + // vscode uses max-width 500px on hover ui + // prettier better handles wrapping + // @TODO: use current fontSize to decide value (??) + printWidth: 60 + }); +} diff --git a/lib/utils/index.js b/lib/utils/index.js index f860bbb..ff0745b 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -1,3 +1,12 @@ /** @flow */ +export { + checkFlow, + checkNode, + isFlowEnabled, + useLSP, + isRunOnEditEnabled, + shouldStopFlowOnExit, + isFlowStatusEnabled +} from './util'; -export {checkFlow, checkNode, isFlowEnabled, useLSP, isRunOnEditEnabled, shouldStopFlowOnExit, isFlowStatusEnabled} from './util' +export { default as format } from './format'; diff --git a/package.json b/package.json index ae0b9ef..b36f9e6 100644 --- a/package.json +++ b/package.json @@ -116,11 +116,11 @@ "flow-bin": "^0.68.0", "fs-plus": "^2.8.2", "fuzzaldrin": "^2.1.0", - "js-beautify": "^1.6.12", "lodash.debounce": "^4.0.8", "log4js": "^0.6.37", "lru-cache": "^4.0.1", "mkdirp": "^0.5.1", + "prettier": "1.15.3", "regenerator-runtime": "^0.9.5", "rimraf": "^2.5.4", "rxjs": "^5.0.0-beta.8", diff --git a/yarn.lock b/yarn.lock index 34cbb0a..8f38e75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -846,10 +846,6 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.0.5: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -1096,13 +1092,6 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -config-chain@~1.1.5: - version "1.1.11" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -1270,15 +1259,6 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" -editorconfig@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.2.tgz#8e57926d9ee69ab6cb999f027c2171467acceb35" - dependencies: - bluebird "^3.0.5" - commander "^2.9.0" - lru-cache "^3.2.0" - sigmund "^1.0.1" - electron-to-chromium@^1.3.86: version "1.3.88" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.88.tgz#f36ab32634f49ef2b0fdc1e82e2d1cc17feb29e7" @@ -1629,7 +1609,7 @@ glob@^5.0.15, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.5: +glob@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -1640,6 +1620,18 @@ glob@^7.0.0, glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.9.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" @@ -1924,7 +1916,7 @@ inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" @@ -2176,15 +2168,6 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -js-beautify@^1.6.12: - version "1.6.12" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.6.12.tgz#78b75933505d376da6e5a28e9b7887e0094db8b5" - dependencies: - config-chain "~1.1.5" - editorconfig "^0.13.2" - mkdirp "~0.5.0" - nopt "~3.0.1" - js-levenshtein@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" @@ -2509,12 +2492,6 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - dependencies: - pseudomap "^1.0.1" - lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -2662,7 +2639,7 @@ mkdirp@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" -mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2787,12 +2764,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -nopt@~3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" @@ -3008,6 +2979,11 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@1.15.3: + version "1.15.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + private@^0.1.6: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -3016,10 +2992,6 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -3370,7 +3342,7 @@ shell-quote@^1.6.0: array-reduce "~0.0.0" jsonify "~0.0.0" -sigmund@^1.0.1, sigmund@~1.0.0: +sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" From 2ecc1256bf250705b9b4e24268908f89e41415c2 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sat, 15 Dec 2018 00:09:55 +0530 Subject: [PATCH 06/12] fix(lsp): merge status and coverage bar item other changes - implement status actions --- lib/flowLSP/features/Status/Status.js | 191 +++++++++--------- lib/flowLSP/features/Status/StatusFeature.js | 33 +-- lib/flowLSP/features/Status/StatusProvider.js | 82 ++++++++ lib/flowLSP/features/Status/types.js | 24 ++- lib/flowLSP/features/Status/utils.js | 50 +++++ lib/flowLSP/features/StatusBarWidget.js | 158 +++++++++++++++ .../features/TypeCoverage/TypeCoverage.js | 149 ++++++-------- .../TypeCoverage/TypeCoverageFeature.js | 28 ++- lib/flowLSP/features/TypeCoverage/types.js | 6 +- lib/flowLSP/index.js | 15 +- lib/flowLSP/middlewares/hover.js | 6 +- 11 files changed, 514 insertions(+), 228 deletions(-) create mode 100644 lib/flowLSP/features/Status/StatusProvider.js create mode 100644 lib/flowLSP/features/Status/utils.js create mode 100644 lib/flowLSP/features/StatusBarWidget.js diff --git a/lib/flowLSP/features/Status/Status.js b/lib/flowLSP/features/Status/Status.js index b1e43f2..489fd50 100644 --- a/lib/flowLSP/features/Status/Status.js +++ b/lib/flowLSP/features/Status/Status.js @@ -1,135 +1,140 @@ /* @flow */ import * as vscode from 'vscode'; -import { LspMessageType, type ShowStatusParams } from './types'; -import Spinner from 'elegant-spinner'; +import { LspMessageType, type StatusData } from './types'; +import StatusProvider from './StatusProvider'; +import StatusBarWidget from '../StatusBarWidget'; type State = { - state: 'running' | 'busy' | 'error' | null, - message: string, - progress: string + status: StatusData, }; -function raf(cb) { - return setTimeout(cb, 100); -} - export default class Status { state: State = { - state: null, - message: '', - progress: '' + status: { kind: 'null' }, }; - statusBarItem: vscode.StatusBarItem; - initialColor: string; - _timeoutID: TimeoutID | null = null; - spinner = Spinner(); + _provider: StatusProvider; + _widget: StatusBarWidget; + _command: vscode.Disposable; - constructor() { - this.statusBarItem = vscode.window.createStatusBarItem( - vscode.StatusBarAlignment.Left + constructor(provider: StatusProvider, widget: StatusBarWidget) { + this._widget = widget; + this._provider = provider; + this._provider.onStatus(statusData => { + this.setState({ status: statusData }); + }); + // register command to handle show current server status + this._command = vscode.commands.registerCommand( + 'flow.show-status', + this._handleShowStatus, ); - this.statusBarItem.command = 'flow.show-output'; - this.initialColor = this.statusBarItem.color; } setState(partialState: $Shape) { this.state = { ...this.state, - ...partialState + ...partialState, }; this.render(); } - update(params: ShowStatusParams) { - switch (params.type) { - case LspMessageType.Error: { - this.setState({ - state: 'error', - message: params.message || '', - progress: '' + render() { + const item = this._widget; + const { status } = this.state; + + switch (status.kind) { + case 'green': + this._widget.setStatus({ + state: 'idle', + message: status.message || '', }); break; - } - case LspMessageType.Warning: { - let progress = ''; - if (params.shortMessage) { - progress = params.shortMessage; - } else if (params.progress != null) { - const { numerator, denominator } = params.progress; - progress = - Math.round( - (numerator / (denominator == null ? 100 : denominator)) * 100 - ) + '%'; - } else { - progress = params.message || ''; - } - - this.setState({ + case 'yellow': + this._widget.setStatus({ state: 'busy', - message: params.message || '', - progress + progress: this._getProgress(status), + message: status.message || '', }); break; - } - case LspMessageType.Info: { - this.setState({ - state: 'running', - message: params.message || '', - progress: '' + case 'red': + this._widget.setStatus({ + state: 'error', + message: status.message || '', }); break; - } + case 'null': + this._widget.setStatus(null); default: - this.setState({ - state: null, - message: '', - progress: '' - }); + this._widget.setStatus(null); + break; } } - render() { - const item = this.statusBarItem; - const { state } = this; - this._clearTimeout(); + _getProgress(status: StatusData): string { + if (status.kind !== 'yellow') { + return ''; + } + if (status.shortMessage != null) { + return status.shortMessage; + } + if (status.progress != null) { + const { numerator, denominator } = status.progress; + return ( + Math.round( + (numerator / (denominator == null ? 100 : denominator)) * 100, + ) + '%' + ); + } + + if (status.message != null) { + // remove `Flow:` from message + return status.message.replace('Flow:', ''); + } - switch (state.state) { - case 'running': - item.text = 'Flow'; - item.tooltip = state.message; - item.color = this.initialColor; - item.show(); + return ''; + } + + _handleShowStatus = () => { + const { status } = this.state; + switch (status.kind) { + case 'red': { + const items = status.buttons.map(button => ({ + title: button, + command: () => this._provider.clickAction(status.id || '', button), + })); + vscode.window + .showErrorMessage(status.message || '', ...items) + .then(selection => { + if (selection) { + selection.command(); + } + }); break; - case 'busy': - item.text = `Flow ${this.spinner()} ${state.progress}`; - item.tooltip = state.message; - item.color = this.initialColor; - item.show(); - // to run spinner - this._timeoutID = setTimeout(() => this.render(), 100); + } + case 'yellow': { + const items = status.buttons.map(button => ({ + title: button, + command: () => this._provider.clickAction(status.id || '', button), + })); + vscode.window + .showWarningMessage(status.message || '', ...items) + .then(selection => { + if (selection) { + selection.command(); + } + }); break; - case 'error': - item.text = '$(stop) Flow'; - item.tooltip = state.message; - item.color = 'red'; - item.show(); + } + case 'green': { + vscode.window.showInformationMessage(status.message || ''); break; + } default: - (state.state: null); - item.hide(); - } - } - - _clearTimeout() { - if (this._timeoutID) { - clearTimeout(this._timeoutID); - this._timeoutID = null; + break; } - } + }; dispose() { - this.statusBarItem.dispose(); - this._clearTimeout(); + this._command.dispose(); } } diff --git a/lib/flowLSP/features/Status/StatusFeature.js b/lib/flowLSP/features/Status/StatusFeature.js index 7adedb7..2f3cca9 100644 --- a/lib/flowLSP/features/Status/StatusFeature.js +++ b/lib/flowLSP/features/Status/StatusFeature.js @@ -2,16 +2,20 @@ // add support using "window/showStatus" lsp extension import * as lsp from 'vscode-languageclient'; import * as vscode from 'vscode'; +import StatusProvider from './StatusProvider'; import Status from './Status'; import { type ShowStatusParams, LspMessageType } from './types'; +import StatusBarWidget from '../StatusBarWidget'; type StaticFeature = lsp.StaticFeature; export default class StatusFeature implements StaticFeature { _client: lsp.BaseLanguageClient; + _widget: StatusBarWidget; - constructor(client: lsp.BaseLanguageClient) { + constructor(client: lsp.BaseLanguageClient, widget: StatusBarWidget) { this._client = client; + this._widget = widget; } fillClientCapabilities(capabilities: lsp.ClientCapabilities): void { @@ -20,30 +24,7 @@ export default class StatusFeature implements StaticFeature { } initialize(): lsp.Disposable { - let client = this._client; - const status = new Status(); - - client.onReady().then(() => { - client.onRequest('window/showStatus', (params: ShowStatusParams) => { - status.update(params); - - if (params.actions && params.actions.length > 0) { - switch (params.type) { - case LspMessageType.Error: - return vscode.window.showErrorMessage( - params.message || '', - ...params.actions - ); - case LspMessageType.Warning: - return vscode.window.showInformationMessage( - params.message || '', - ...params.actions - ); - } - } - }); - }); - - return status; + const statusProvider = new StatusProvider(this._client); + return new Status(statusProvider, this._widget); } } diff --git a/lib/flowLSP/features/Status/StatusProvider.js b/lib/flowLSP/features/Status/StatusProvider.js new file mode 100644 index 0000000..2aea513 --- /dev/null +++ b/lib/flowLSP/features/Status/StatusProvider.js @@ -0,0 +1,82 @@ +/* @flow */ +import * as lsp from 'vscode-languageclient'; +import { + type ShowStatusParams, + type StatusData, + type MessageActionItem, + LspMessageType, +} from './types'; +import { convertToStatus, Defer } from './utils'; + +type StatusListener = (status: StatusData) => void; + +export default class StatusProvider { + _client: lsp.LanguageClient; + + _currentStatusID: number = 0; + _statusActionDeferred: Defer = new Defer(); + _listeners: Array = []; + + constructor(client: lsp.LanguageClient) { + this._client = client; + this._client.onReady().then(() => { + this._client.onRequest( + 'window/showStatus', + this._handleShowStatusRequest, + ); + }); + } + + clickAction(id: string, button: string): void { + // to ignore clicks from old status + if (id === String(this._currentStatusID)) { + this._statusActionDeferred.resolve(button); + } + } + + onStatus(listener: StatusListener) { + // TODO: add removeListener + this._listeners.push(listener); + } + + _showStatus(status: StatusData) { + this._statusActionDeferred.resolve(null); + this._statusActionDeferred = new Defer(); + + this._currentStatusID += 1; + + const statusWithId = + status.kind !== 'red' && status.kind !== 'yellow' + ? status + : { ...status, id: String(this._currentStatusID) }; + + this._updateStatus(statusWithId); + return this._statusActionDeferred.promise; + } + + _updateStatus = (status: StatusData) => { + this._listeners.forEach(listener => { + listener(status); + }); + }; + + _handleShowStatusRequest = ( + params: ShowStatusParams, + ): Promise => { + const actions = params.actions || []; + const status = convertToStatus(params); + if (!status) { + return Promise.resolve(null); + } + + return Promise.resolve(this._showStatus(status)).then(response => { + if (response === null) { + return null; + } else { + const chosenAction = actions.find(action => action.title === response); + // invariant(chosenAction != null); + return chosenAction; + } + }); + }; +} diff --git a/lib/flowLSP/features/Status/types.js b/lib/flowLSP/features/Status/types.js index 30770aa..fe01a7a 100644 --- a/lib/flowLSP/features/Status/types.js +++ b/lib/flowLSP/features/Status/types.js @@ -1,7 +1,7 @@ /* @flow */ export type MessageActionItem = { // A short title like 'Retry', 'Open Log' etc. - title: string + title: string, }; // window/showStatus is a Nuclide-specific extension to LSP @@ -17,7 +17,7 @@ export type ShowStatusParams = { shortMessage?: string, // The client might display a progress bar "numerator/denominator" if both are // present, or an indeterminate progress bar if only numerator is present. - progress?: { numerator: number, denominator?: number } + progress?: { numerator: number, denominator?: number }, }; export const LspMessageType = { @@ -28,5 +28,23 @@ export const LspMessageType = { // An information message. Info: 3, // A log message. - Log: 4 + Log: 4, }; + +export type StatusData = + | {| kind: 'null' |} + | {| kind: 'green', message?: string |} + | {| + kind: 'yellow', + message: string, + buttons: Array, + id?: string, + shortMessage?: string, + progress?: {| numerator: number, denominator?: number |}, + |} + | {| + kind: 'red', + id?: string, + message: string, + buttons: Array, + |}; diff --git a/lib/flowLSP/features/Status/utils.js b/lib/flowLSP/features/Status/utils.js new file mode 100644 index 0000000..3224613 --- /dev/null +++ b/lib/flowLSP/features/Status/utils.js @@ -0,0 +1,50 @@ +/* @flow */ +import { + type ShowStatusParams, + type StatusData, + LspMessageType, +} from './types'; + +export function convertToStatus(params: ShowStatusParams): null | StatusData { + const actions = params.actions || []; + const buttons = actions.map(action => action.title); + switch (params.type) { + case LspMessageType.Error: + return { + kind: 'red', + message: params.message == null ? '' : params.message, + buttons, + }; + case LspMessageType.Warning: + return { + kind: 'yellow', + message: params.message == null ? '' : params.message, + shortMessage: params.shortMessage, + progress: + params.progress == null + ? undefined + : { + numerator: params.progress.numerator, + denominator: params.progress.denominator, + }, + buttons, + }; + case LspMessageType.Info: + return { kind: 'green', message: params.message }; + default: + return null; + } +} + +export class Defer { + promise: Promise; + resolve: (value: TValue) => void; + reject: () => void; + + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = resolve; + this.reject = reject; + }); + } +} diff --git a/lib/flowLSP/features/StatusBarWidget.js b/lib/flowLSP/features/StatusBarWidget.js new file mode 100644 index 0000000..d311c87 --- /dev/null +++ b/lib/flowLSP/features/StatusBarWidget.js @@ -0,0 +1,158 @@ +/* @flow */ +import * as vscode from 'vscode'; +import Spinner from 'elegant-spinner'; + +type ActionItem = { + title: string, + command: () => void, +}; + +type Status = + | {| state: 'error', message: string |} + | {| state: 'idle', message: string |} + | {| + state: 'busy', + progress: string, + message: string, + |}; + +type Coverage = { + computing: boolean, + coveredPercent: number | null, + showingUncovered: boolean, +}; + +type State = { + status: null | Status, + coverage: null | Coverage, +}; + +export default class StatusBarWidget { + _item: vscode.StatusBarItem; + _defaultColor: string; + + _spinner = Spinner(); + _spinnerTimeoutID: ?TimeoutID; + + state: State = { + status: null, + coverage: null, + }; + + constructor() { + this._item = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left, + // to render after all items + -Number.MAX_SAFE_INTEGER, + ); + this._defaultColor = this._item.color; + } + + setStatus(value: null | Status) { + this._setState({ status: value }); + } + + setCoverage(value: null | Coverage) { + this._setState({ coverage: value }); + } + + render() { + const item = this._item; + const { coverage, status } = this.state; + + if (!coverage && !status) { + item.hide(); + } + + let text = 'Flow'; + let tooltipText = ''; + let command = ''; + let color = this._defaultColor; + + // status text + if (status) { + tooltipText += '[Server Status]\n'; + + switch (status.state) { + case 'idle': + tooltipText += status.message; + break; + case 'busy': + text += ` ${this._getSpinner()} ${status.progress}`; + tooltipText += status.message; + command = 'flow.show-status'; + break; + case 'error': + text += ` $(stop)`; + tooltipText += status.message; + color = 'red'; + command = 'flow.show-status'; + break; + } + } + + // show coverage only if server not busy + if (coverage && !this._isServerBusy()) { + const { coveredPercent, computing, showingUncovered } = coverage; + + // text + const value = [ + coveredPercent !== null ? `${coveredPercent}%` : null, + // show sync icon is computing coverage + computing ? `${this._getSpinner()}` : null, + // show eye icon if showing uncovered + showingUncovered ? '$(eye)' : null, + ] + .filter(Boolean) + .join(' '); + + // tooltipText + const message = + computing || coveredPercent === null + ? 'Computing coverage...' + : `This file is ${coveredPercent}% covered by flow.\n` + + `Click to toggle display of uncovered areas.`; + + text += ` ( coverage ${value} )`; + tooltipText += `\n\n[Type Coverage]\n${message}`; + command = 'flow.show-coverage'; + } + + item.text = text; + item.tooltip = tooltipText; + item.command = command; + item.color = color; + item.show(); + } + + dispose() { + this._item.dispose(); + } + + _isServerBusy() { + const { status } = this.state; + return status && status.state !== 'idle'; + } + + _getSpinner = () => { + // using setTimeout to animate spinner + this._clearSpinnerTimeout(); + this._spinnerTimeoutID = setTimeout(() => this.render(), 100); + return this._spinner(); + }; + + _clearSpinnerTimeout() { + if (this._spinnerTimeoutID) { + clearTimeout(this._spinnerTimeoutID); + this._spinnerTimeoutID = null; + } + } + + _setState(partialState: $Shape) { + this.state = { + ...this.state, + ...partialState, + }; + this.render(); + } +} diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js index 8cfdadc..c88edfe 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js @@ -4,78 +4,62 @@ import * as vscode from 'vscode'; import { TypeCoverageProvider, type TypeCoverageResult, - type UncoveredRange + type UncoveredRange, } from './types'; +import StatusBarWidget from '../StatusBarWidget'; import { shouldShowUncoveredCode } from '../../../utils/util'; type State = { showUncovered: boolean, activeDocument: null | vscode.TextDocument, coverage: null | TypeCoverageResult, - pendingRequest: null | Request + pendingRequest: null | Request, }; export default class TypeCoverage { - static ToggleCommand = 'flow.show-coverage'; - - statusBarItem: vscode.StatusBarItem; - diagnostics: vscode.DiagnosticCollection; - subscriptions: vscode.Disposable[] = []; - documentSelector: vscode.DocumentSelector; - provider: TypeCoverageProvider; + _subscriptions: vscode.Disposable[] = []; + _diagnostics: vscode.DiagnosticCollection; + _documentSelector: vscode.DocumentSelector; + _provider: TypeCoverageProvider; + _widget: StatusBarWidget; state: State = { showUncovered: shouldShowUncoveredCode(), activeDocument: null, coverage: null, - pendingRequest: null + pendingRequest: null, }; constructor( documentSelector: vscode.DocumentSelector, - provider: TypeCoverageProvider + provider: TypeCoverageProvider, + widget: StatusBarWidget, ) { - this.statusBarItem = vscode.window.createStatusBarItem( - vscode.StatusBarAlignment.Left - ); - this.diagnostics = vscode.languages.createDiagnosticCollection( - 'flow_coverage' + this._provider = provider; + this._documentSelector = documentSelector; + this._widget = widget; + this._diagnostics = vscode.languages.createDiagnosticCollection( + 'flow_coverage', ); - this.provider = provider; - this.documentSelector = documentSelector; - - this.subscriptions.push( - vscode.commands.registerCommand(TypeCoverage.ToggleCommand, () => { - this.setState({ showUncovered: !this.state.showUncovered }); - }) - ); - this.subscriptions.push( + this._subscriptions.push( + vscode.commands.registerCommand('flow.show-coverage', () => { + this._setState({ showUncovered: !this.state.showUncovered }); + }), vscode.workspace.onDidSaveTextDocument(document => - this._handleDocumentChange(document) - ) - ); - this.subscriptions.push( + this._handleDocumentChange(document), + ), vscode.window.onDidChangeActiveTextEditor(editor => { this._handleDocumentChange(editor ? editor.document : null); - }) + }), ); if (vscode.window.activeTextEditor) { this._handleDocumentChange(vscode.window.activeTextEditor.document); } } - setState(partialState: $Shape) { - this.state = { - ...this.state, - ...partialState - }; - this.render(); - } - dispose() { - this.statusBarItem.dispose(); - this.diagnostics.dispose(); + this._diagnostics.dispose(); if (this.state.pendingRequest) { this.state.pendingRequest.cancel(); } @@ -87,71 +71,69 @@ export default class TypeCoverage { } _renderStatusBar() { - const { state, statusBarItem } = this; - + const { state } = this; const { coverage } = state; if (state.activeDocument) { // computing coverage for first time if (!coverage && state.pendingRequest) { - statusBarItem.text = `Flow Coverage: $(sync)`; - statusBarItem.tooltip = `Computing coverage...`; - statusBarItem.command = ''; - statusBarItem.show(); + this._widget.setCoverage({ + computing: true, + coveredPercent: null, + showingUncovered: state.showUncovered, + }); return; } // update covearge if (coverage) { - const updating = Boolean(state.pendingRequest); - statusBarItem.text = [ - 'Flow Coverage', - state.showUncovered ? '$(eye)' : null, - `${coverage.coveredPercent}%`, - updating ? '$(sync)' : null - ] - .filter(Boolean) - .join(' '); - - statusBarItem.tooltip = updating - ? 'Recomputing coverage' - : `This file is ${coverage.coveredPercent}% covered by Flow. \n` + - `Click to ${ - state.showUncovered ? 'hide' : 'show' - } highlighting of uncovered areas.`; - - // disable clicking when updating coverage - statusBarItem.command = updating ? '' : TypeCoverage.ToggleCommand; - statusBarItem.show(); + const computing = Boolean(state.pendingRequest); + + this._widget.setCoverage({ + computing, + coveredPercent: coverage.coveredPercent, + showingUncovered: state.showUncovered, + }); return; } } - statusBarItem.hide(); + this._widget.setCoverage(null); } _renderDiagnostics() { const { state } = this; - this.diagnostics.clear(); + this._diagnostics.clear(); if (!state.showUncovered || !state.activeDocument || state.pendingRequest) { return; } if (state.coverage && state.coverage.uncoveredRanges.length > 0) { const diagnostics: vscode.Diagnostic[] = state.coverage.uncoveredRanges.map( - uncoveredRangeToDiagnostic + uncoveredRangeToDiagnostic, ); - this.diagnostics.set(state.activeDocument.uri, diagnostics); + this._diagnostics.set(state.activeDocument.uri, diagnostics); } } + _setState(partialState: $Shape) { + this.state = { + ...this.state, + ...partialState, + }; + this.render(); + } + _handleDocumentChange(document: null | vscode.TextDocument) { - if (!document || !vscode.languages.match(this.documentSelector, document)) { - this.setState({ + if ( + !document || + !vscode.languages.match(this._documentSelector, document) + ) { + this._setState({ activeDocument: null, pendingRequest: null, - coverage: null + coverage: null, }); return; } @@ -161,30 +143,31 @@ export default class TypeCoverage { } const pendingRequest = requestTypeCoverage( - this.provider, + this._provider, document, coverage => { - this.setState({ pendingRequest: null, coverage }); - } + this._setState({ pendingRequest: null, coverage }); + }, ); - this.setState({ + + this._setState({ activeDocument: document, pendingRequest, // reset coverage when document changed coverage: - this.state.activeDocument !== document ? null : this.state.coverage + this.state.activeDocument !== document ? null : this.state.coverage, }); } } type Request = { - cancel: () => void + cancel: () => void, }; function requestTypeCoverage( provider: TypeCoverageProvider, document: vscode.TextDocument, - callback: (coverage: null | TypeCoverageResult) => void + callback: (coverage: null | TypeCoverageResult) => void, ): Request { let isCancelled = false; @@ -197,17 +180,17 @@ function requestTypeCoverage( return { cancel: () => { isCancelled = true; - } + }, }; } function uncoveredRangeToDiagnostic( - uncoveredRange: UncoveredRange + uncoveredRange: UncoveredRange, ): vscode.Diagnostic { const diagnostic = new vscode.Diagnostic( uncoveredRange.range, uncoveredRange.message || 'Not covered by flow', - vscode.DiagnosticSeverity.Information + vscode.DiagnosticSeverity.Information, ); diagnostic.source = 'Type Coverage'; return diagnostic; diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js index 223a9d2..eb8684f 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js @@ -4,28 +4,32 @@ import * as lsp from 'vscode-languageclient'; import * as vscode from 'vscode'; import * as UUID from 'vscode-languageclient/lib/utils/uuid'; +import StatusBarWidget from '../StatusBarWidget'; import TypeCoverage from './TypeCoverage'; import { type TypeCoverageParams, type TypeCoverageResult, - ProvideTypeCoverageResult + ProvideTypeCoverageResult, } from './types'; const TypeCoverageRequest = { - type: new lsp.RequestType('textDocument/typeCoverage') + type: new lsp.RequestType('textDocument/typeCoverage'), }; export default class TypeCoverageFeature extends lsp.TextDocumentFeature { - constructor(client: lsp.BaseLanguageClient) { + _widget: StatusBarWidget; + + constructor(client: lsp.BaseLanguageClient, widget: StatusBarWidget) { super(client, TypeCoverageRequest.type); + this._widget = widget; } fillClientCapabilities(capabilities: lsp.ClientCapabilities): void {} initialize( capabilities: lsp.ServerCapabilities, - documentSelector: lsp.DocumentSelector + documentSelector: lsp.DocumentSelector, ): void { if (!capabilities.typeCoverageProvider) { return; @@ -33,30 +37,34 @@ export default class TypeCoverageFeature extends lsp.TextDocumentFeature { const params = { textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier( - document - ) + document, + ), }; return client.sendRequest(TypeCoverageRequest.type, params).then( coverage => coverage, error => { client.logFailedRequest(TypeCoverageRequest.type, error); return Promise.resolve(null); - } + }, ); }; - return new TypeCoverage(options.documentSelector, { provideTypeCoverage }); + return new TypeCoverage( + options.documentSelector, + { provideTypeCoverage }, + this._widget, + ); } } diff --git a/lib/flowLSP/features/TypeCoverage/types.js b/lib/flowLSP/features/TypeCoverage/types.js index b321d58..d24330f 100644 --- a/lib/flowLSP/features/TypeCoverage/types.js +++ b/lib/flowLSP/features/TypeCoverage/types.js @@ -4,17 +4,17 @@ import * as vscode from 'vscode'; export type UncoveredRange = { range: vscode.Range, - message?: string + message?: string, }; export type TypeCoverageResult = { coveredPercent: number, uncoveredRanges: Array, - defaultMessage: string + defaultMessage: string, }; export type TypeCoverageParams = { - textDocument: lsp.TextDocumentIdentifier + textDocument: lsp.TextDocumentIdentifier, }; export interface TypeCoverageProvider { diff --git a/lib/flowLSP/index.js b/lib/flowLSP/index.js index ec64ab6..7cd3660 100644 --- a/lib/flowLSP/index.js +++ b/lib/flowLSP/index.js @@ -18,6 +18,7 @@ import { clearWorkspaceCaches, getPathToFlow } from '../pkg/flow-base/lib/FlowHe import hoverMiddleware from './middlewares/hover'; import TypeCoverageFeature from './features/TypeCoverage'; import StatusFeature from './features/Status'; +import StatusBarWidget from './features/StatusBarWidget'; import ignoreFlowFrequentErrors from './ignoreFlowFrequentErrors'; const languages = [ @@ -69,10 +70,11 @@ export async function activate(context: vscode.ExtensionContext) { const client = new lsp.LanguageClient('flow', 'Flow', serverOptions, clientOptions); const defaultErrorHandler: lsp.ErrorHandler = client.createDefaultErrorHandler(); - client.registerFeature(new TypeCoverageFeature(client)); - if (isFlowStatusEnabled()) { - client.registerFeature(new StatusFeature(client)); - } + const statusBarWidget = new StatusBarWidget(); + context.subscriptions.push(statusBarWidget); + + client.registerFeature(new TypeCoverageFeature(client, statusBarWidget)); + client.registerFeature(new StatusFeature(client, statusBarWidget)); ignoreFlowFrequentErrors(client); // Tell user to reload vscode if config changed @@ -88,8 +90,5 @@ export async function activate(context: vscode.ExtensionContext) { } }); - const disposable = client.start(); - // Push the disposable to the context's subscriptions so that the - // client can be deactivated on extension deactivation - context.subscriptions.push(disposable); + context.subscriptions.push(client.start()); } diff --git a/lib/flowLSP/middlewares/hover.js b/lib/flowLSP/middlewares/hover.js index 52f7b97..24d164a 100644 --- a/lib/flowLSP/middlewares/hover.js +++ b/lib/flowLSP/middlewares/hover.js @@ -9,7 +9,7 @@ export default function provideHover( document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, - next: lsp.ProvideHoverSignature + next: lsp.ProvideHoverSignature, ) { return Promise.resolve(next(document, position, token)).then(value => { if (!value) { @@ -29,7 +29,9 @@ export default function provideHover( }); } -function formatMarkedDownString(mdStr: vscode.MarkdownString): vscode.MarkdownString { +function formatMarkedDownString( + mdStr: vscode.MarkdownString, +): vscode.MarkdownString { const code = extractCode(mdStr, 'flow'); const formatted = format(code); const formattedStr = new vscode.MarkdownString(); From a215448a6bf97a3baeb44f625b22e95c5169ac68 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sun, 16 Dec 2018 22:39:10 +0530 Subject: [PATCH 07/12] fix(lsp): fix multiple output channel --- lib/flowLSP/index.js | 3 ++- lib/flowLogging.js | 3 ++- lib/flowMain.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/flowLSP/index.js b/lib/flowLSP/index.js index 7cd3660..5ae96bb 100644 --- a/lib/flowLSP/index.js +++ b/lib/flowLSP/index.js @@ -32,7 +32,7 @@ export async function activate(context: vscode.ExtensionContext) { } global.vscode = vscode; - setupLogging(); + setupLogging(context); checkNode(); checkFlow(); @@ -55,6 +55,7 @@ export async function activate(context: vscode.ExtensionContext) { code2Protocol: uri => uri.toString(true), // this disables URL-encoding for file URLs protocol2Code: value => vscode.Uri.parse(value) }, + outputChannel: global.flowOutputChannel, middleware: { // using middleware to format hover content provideHover: hoverMiddleware diff --git a/lib/flowLogging.js b/lib/flowLogging.js index 553ac97..a001305 100644 --- a/lib/flowLogging.js +++ b/lib/flowLogging.js @@ -2,8 +2,9 @@ * Adds a gloabl that is used inside consoleAppender.js to output console messages * to the user, instead of to the developer console. */ -export function setupLogging(): void { +export function setupLogging(context): void { const channel = vscode.window.createOutputChannel("Flow"); vscode.commands.registerCommand("flow.show-output", () => channel.show()); global.flowOutputChannel = channel; + context.subscriptions.push(channel); } diff --git a/lib/flowMain.js b/lib/flowMain.js index 36b6ea8..30a8eb6 100644 --- a/lib/flowMain.js +++ b/lib/flowMain.js @@ -33,7 +33,7 @@ export function activate(context:ExtensionContext): void { } global.vscode = vscode - setupLogging() + setupLogging(context) checkNode() checkFlow() From 8642d6133dee541ecdf925ec8319aa0f0ff715e2 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Sun, 16 Dec 2018 13:19:56 +0530 Subject: [PATCH 08/12] fix: update flow to 0.75 and fix all flow errors changes - add type defn for vscode-* packages - fix flow errors - update bundled flow to v0.75 NOTE: this can be breaking change for users using plugin bundled flow (v0.68) - update flow-typed defn --- .flowconfig | 4 +- flow-libs/vscode-jsonrpc.js.flow | 969 +++ flow-libs/vscode-languageclient.js.flow | 434 + .../vscode-languageserver-protocol.js.flow | 1016 +++ flow-libs/vscode-languageserver-types.js.flow | 12 + flow-libs/vscode.js.flow | 7260 +++++++++++++++++ flow-typed/npm/@babel/cli_vx.x.x.js | 87 + flow-typed/npm/@babel/core_vx.x.x.js | 298 + ...plugin-proposal-class-properties_vx.x.x.js | 32 + flow-typed/npm/@babel/preset-env_vx.x.x.js | 144 + .../preset-flow_vx.x.x.js} | 18 +- flow-typed/npm/babel-cli_vx.x.x.js | 150 - ...lugin-transform-flow-strip-types_vx.x.x.js | 32 - flow-typed/npm/babel-preset-stage-1_vx.x.x.js | 33 - flow-typed/npm/cross-spawn_vx.x.x.js | 8 +- flow-typed/npm/dequeue_vx.x.x.js | 8 +- flow-typed/npm/elegant-spinner_vx.x.x.js | 33 + flow-typed/npm/event-kit_vx.x.x.js | 8 +- flow-typed/npm/fs-plus_vx.x.x.js | 8 +- flow-typed/npm/lodash.debounce_vx.x.x.js | 33 + flow-typed/npm/log4js_vx.x.x.js | 8 +- flow-typed/npm/lru-cache_v4.0.x.js | 31 +- flow-typed/npm/mkdirp_v0.5.x.js | 13 + flow-typed/npm/mkdirp_vx.x.x.js | 150 - flow-typed/npm/prettier_v1.x.x.js | 178 + flow-typed/npm/regenerator-runtime_vx.x.x.js | 8 +- flow-typed/npm/rimraf_v2.x.x.js | 18 + flow-typed/npm/rxjs_v5.0.x.js | 322 - flow-typed/npm/rxjs_vx.x.x.js | 92 +- flow-typed/npm/semver_v5.1.x.js | 243 +- flow-typed/npm/shell-quote_vx.x.x.js | 8 +- flow-typed/npm/temp_v0.8.x.js | 44 + flow-typed/npm/temp_vx.x.x.js | 74 - .../npm/vscode-languageclient_vx.x.x.js | 158 + flow-typed/npm/vscode_v0.11.x.js | 3449 -------- .../{rimraf_vx.x.x.js => vscode_vx.x.x.js} | 24 +- lib/flowDiagnostics.js | 6 +- lib/flowLSP/features/Status/StatusFeature.js | 6 +- lib/flowLSP/features/Status/StatusProvider.js | 40 +- lib/flowLSP/features/Status/types.js | 2 +- lib/flowLSP/features/StatusBarWidget.js | 2 +- .../features/TypeCoverage/TypeCoverage.js | 18 +- .../TypeCoverage/TypeCoverageFeature.js | 15 +- lib/flowLSP/features/TypeCoverage/types.js | 2 +- lib/flowLSP/ignoreFlowFrequentErrors.js | 1 + lib/flowLSP/index.js | 3 - lib/flowLSP/middlewares/hover.js | 3 +- package.json | 4 +- yarn.lock | 1939 ++--- 49 files changed, 11773 insertions(+), 5675 deletions(-) create mode 100644 flow-libs/vscode-jsonrpc.js.flow create mode 100644 flow-libs/vscode-languageclient.js.flow create mode 100644 flow-libs/vscode-languageserver-protocol.js.flow create mode 100644 flow-libs/vscode-languageserver-types.js.flow create mode 100644 flow-libs/vscode.js.flow create mode 100644 flow-typed/npm/@babel/cli_vx.x.x.js create mode 100644 flow-typed/npm/@babel/core_vx.x.x.js create mode 100644 flow-typed/npm/@babel/plugin-proposal-class-properties_vx.x.x.js create mode 100644 flow-typed/npm/@babel/preset-env_vx.x.x.js rename flow-typed/npm/{babel-preset-es2015_vx.x.x.js => @babel/preset-flow_vx.x.x.js} (54%) delete mode 100644 flow-typed/npm/babel-cli_vx.x.x.js delete mode 100644 flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js delete mode 100644 flow-typed/npm/babel-preset-stage-1_vx.x.x.js create mode 100644 flow-typed/npm/elegant-spinner_vx.x.x.js create mode 100644 flow-typed/npm/lodash.debounce_vx.x.x.js create mode 100644 flow-typed/npm/mkdirp_v0.5.x.js delete mode 100644 flow-typed/npm/mkdirp_vx.x.x.js create mode 100644 flow-typed/npm/prettier_v1.x.x.js create mode 100644 flow-typed/npm/rimraf_v2.x.x.js delete mode 100644 flow-typed/npm/rxjs_v5.0.x.js create mode 100644 flow-typed/npm/temp_v0.8.x.js delete mode 100644 flow-typed/npm/temp_vx.x.x.js create mode 100644 flow-typed/npm/vscode-languageclient_vx.x.x.js delete mode 100644 flow-typed/npm/vscode_v0.11.x.js rename flow-typed/npm/{rimraf_vx.x.x.js => vscode_vx.x.x.js} (52%) diff --git a/.flowconfig b/.flowconfig index 9e13310..67e43f9 100644 --- a/.flowconfig +++ b/.flowconfig @@ -9,10 +9,12 @@ [include] [libs] +flow-libs [options] suppress_comment=.*\\$FlowFixMe.* suppress_comment=.*\\$FlowIssue.* +suppress_comment=\\(.\\|\n\\)*\\$FlowDisableNextLine [version] -^0.68.0 +^0.75.0 diff --git a/flow-libs/vscode-jsonrpc.js.flow b/flow-libs/vscode-jsonrpc.js.flow new file mode 100644 index 0000000..7f9b1fe --- /dev/null +++ b/flow-libs/vscode-jsonrpc.js.flow @@ -0,0 +1,969 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the LICENSE file in + * the root directory of this source tree. + * + * @flow + * @format + */ + +// From https://github.com/Microsoft/vscode-languageserver-node/blob/master/jsonrpc/src/main.ts +// For v3.3.0 +// TODO: Contribute this back to flow-typed. + +declare module 'vscode-jsonrpc' { + // thenable.d.ts + + declare type Thenable = Promise; + + // events.d.ts + + declare export interface Disposable { + /** + * Dispose this object. + */ + dispose(): void; + } + + // declare var Disposable: { + // create(func: () => void): Disposable; + // } + /** + * Represents a typed event. + */ + declare export interface Event { + /** + * + * @param listener The listener function will be call when the event happens. + * @param thisArgs The 'this' which will be used when calling the event listener. + * @param disposables An array to which a {{IDisposable}} will be added. The + * @return + */ + ( + listener: (e: T) => any, + thisArgs?: any, + disposables?: Disposable[], + ): Disposable; + } + // declare export namespace Event = { + // const None: Event; + // } + declare export interface EmitterOptions { + onFirstListenerAdd?: Function; + onLastListenerRemove?: Function; + } + declare export class Emitter { + // private _options; + // private static _noop; + // private _event; + // private _callbacks; + constructor(_options?: EmitterOptions): void; + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + +event: Event; + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event: T): any; + dispose(): void; + } + + // cancellation.d.ts + + /** + * Defines a CancellationToken. This interface is not + * intended to be implemented. A CancellationToken must + * be created via a CancellationTokenSource. + */ + declare export interface CancellationToken { + /** + * Is `true` when the token has been cancelled, `false` otherwise. + */ + +isCancellationRequested: boolean; + /** + * An [event](#Event) which fires upon cancellation. + */ + +onCancellationRequested: Event; + } + // declare export namespace CancellationToken { + // const None: CancellationToken; + // const Cancelled: CancellationToken; + // is(value: any): boolean; + // } + declare export class CancellationTokenSource { + // private _token; + +token: CancellationToken; + cancel(): void; + dispose(): void; + } + + // messages.d.ts + + /** + * A language server message + */ + declare export interface Message { + jsonrpc: string; + } + /** + * Request message + */ + declare export interface RequestMessage extends Message { + /** + * The request id. + */ + id: number | string; + /** + * The method to be invoked. + */ + method: string; + /** + * The method's params. + */ + params?: any; + } + /** + * Predefined error codes. + */ + declare export var ErrorCodes: { + ParseError: number, + InvalidRequest: number, + MethodNotFound: number, + InvalidParams: number, + InternalError: number, + serverErrorStart: number, + serverErrorEnd: number, + ServerNotInitialized: number, + UnknownErrorCode: number, + RequestCancelled: number, + MessageWriteError: number, + MessageReadError: number, + }; + declare export interface ResponseErrorLiteral { + /** + * A number indicating the error type that occured. + */ + code: number; + /** + * A string providing a short decription of the error. + */ + message: string; + /** + * A Primitive or Structured value that contains additional + * information about the error. Can be omitted. + */ + data?: D; + } + /** + * A error object return in a response in case a request + * has failed. + */ + declare export class ResponseError extends Error { + +code: number; + +data: D; + constructor(code: number, message: string, data?: D): void; + toJson(): ResponseErrorLiteral; + } + /** + * A response message. + */ + declare export interface ResponseMessage extends Message { + /** + * The request id. + */ + id: number | string | null; + /** + * The result of a request. This can be omitted in + * the case of an error. + */ + result?: any; + /** + * The error object in case a request fails. + */ + error?: ResponseErrorLiteral; + } + /** + * An interface to type messages. + */ + declare export interface MessageType { + +method: string; + +numberOfParams: number; + } + /** + * An abstract implementation of a MessageType. + */ + declare class AbstractMessageType { + // private _method; + // private _numberOfParams; + constructor(_method: string, _numberOfParams: number): void; + +method: string; + +numberOfParams: number; + } + /** + * End marker interface for request and notification types. + */ + declare interface _EM { + _$endMarker$_: number; + } + /** + * Classes to type request response pairs + */ + declare export class RequestType0 extends AbstractMessageType { + // private _?; + +method: string, + } + + declare export class RequestType extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType1 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType2 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType3 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType4 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType5 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType6 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType7 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class RequestType8 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + + declare export class RequestType9< + P1, + P2, + P3, + P4, + P5, + P6, + P7, + P8, + P9, + R, + E, + RO, + > extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + /** + * Notification Message + */ + declare interface NotificationMessage extends Message { + /** + * The method to be invoked. + */ + method: string; + /** + * The notification's params. + */ + params?: any; + } + declare export class NotificationType extends AbstractMessageType { + // private _?; + +method: string; + constructor(method: string): this; + } + declare export class NotificationType0 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType1 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType2 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType3 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType4 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType5 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType6 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType7 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType8 extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + declare export class NotificationType9< + P1, + P2, + P3, + P4, + P5, + P6, + P7, + P8, + P9, + RO, + > extends AbstractMessageType { + // private _?; + +method: string, + constructor(method: string): this; + } + /** + * Tests if the given message is a request message + */ + declare function isRequestMessage(message: Message | void): boolean; + /** + * Tests if the given message is a notification message + */ + declare function isNotificationMessage(message: Message | void): boolean; + /** + * Tests if the given message is a response message + */ + declare function isReponseMessage(message: Message | void): boolean; + + // messageReader.d.ts + + declare export interface DataCallback { + (data: Message): void; + } + declare export interface PartialMessageInfo { + +messageToken: number; + +waitingTime: number; + } + declare export interface MessageReader { + +onError: Event; + +onClose: Event; + +onPartialMessage: Event; + listen(callback: DataCallback): void; + dispose(): void; + } + declare class AbstractMessageReader { + // private errorEmitter; + // private closeEmitter; + // private partialMessageEmitter; + constructor(): void; + dispose(): void; + +onError: Event; + /* protected */ fireError(error: any): void; + +onClose: Event; + /* protected */ fireClose(): void; + +onPartialMessage: Event; + /* protected */ firePartialMessage(info: PartialMessageInfo): void; + /* private */ asError(error: any): any; + } + declare export class StreamMessageReader extends AbstractMessageReader { + readable: stream$Readable; + // private callback; + // private buffer; + // private nextMessageLength; + // private messageToken; + // private partialMessageTimer; + // private _partialMessageTimeout; + constructor(readable: stream$Readable, encoding?: string): void; + partialMessageTimeout: number; + listen(callback: DataCallback): void; + /* private */ onData(data: any): any; + // private clearPartialMessageTimer(); + // private setPartialMessageTimer(); + } + declare export class IPCMessageReader extends AbstractMessageReader { + // private process; + constructor(process: Process | child_process$ChildProcess): void; + listen(callback: DataCallback): void; + } + declare export class SocketMessageReader extends StreamMessageReader { + constructor(socket: net$Socket, encoding?: string): void; + } + + // messageWriter.d.ts + + declare export interface MessageWriter { + +onError: Event<[Error, Message | void, number | void]>; + +onClose: Event; + write(msg: Message): void; + dispose(): void; + } + declare class AbstractMessageWriter { + // private errorEmitter; + // private closeEmitter; + constructor(): void; + dispose(): void; + +onError: Event<[Error, Message | void, number | void]>; + // protected fireError(error: any, message?: Message, count?: number): void; + +onClose: Event; + // protected fireClose(): void; + // private asError(error); + } + declare export class StreamMessageWriter extends AbstractMessageWriter { + // private writable; + // private encoding; + // private errorCount; + constructor(writable: stream$Writable, encoding?: string): void; + write(msg: Message): void; + } + declare export class IPCMessageWriter extends AbstractMessageWriter { + // private process; + // private queue; + // private sending; + // private errorCount; + constructor(process: Process | child_process$ChildProcess): void; + write(msg: Message): void; + doWriteMessage(msg: Message): void; + } + declare export class SocketMessageWriter extends AbstractMessageWriter { + // private socket; + // private queue; + // private sending; + // private encoding; + // private errorCount; + constructor(socket: net$Socket, encoding?: string): void; + write(msg: Message): void; + doWriteMessage(msg: Message): void; + // private handleError(error, msg); + } + + // pipeSupport.d.ts + + declare export function generateRandomPipeName(): string; + declare export interface PipeTransport { + onConnected(): Thenable<[MessageReader, MessageWriter]>; + } + declare export function createClientPipeTransport( + pipeName: string, + encoding?: string, + ): Thenable; + declare export function createServerPipeTransport( + pipeName: string, + encoding?: string, + ): [MessageReader, MessageWriter]; + + // main.d.ts + + declare type HandlerResult = + | R + | ResponseError + | Thenable + | Thenable>; + declare interface StarRequestHandler { + (method: string, ...params: any[]): HandlerResult; + } + declare interface GenericRequestHandler { + (...params: any[]): HandlerResult; + } + declare interface RequestHandler0 { + (token: CancellationToken): HandlerResult; + } + + declare export type RequestHandler = (params: P, token: CancellationToken) => HandlerResult; + + declare interface RequestHandler1 { + (p1: P1, token: CancellationToken): HandlerResult; + } + declare interface RequestHandler2 { + (p1: P1, p2: P2, token: CancellationToken): HandlerResult; + } + declare interface RequestHandler3 { + (p1: P1, p2: P2, p3: P3, token: CancellationToken): HandlerResult; + } + declare interface RequestHandler4 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + token: CancellationToken, + ): HandlerResult; + } + declare interface RequestHandler5 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + token: CancellationToken, + ): HandlerResult; + } + declare interface RequestHandler6 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + token: CancellationToken, + ): HandlerResult; + } + declare interface RequestHandler7 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + token: CancellationToken, + ): HandlerResult; + } + declare interface RequestHandler8 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + token: CancellationToken, + ): HandlerResult; + } + declare interface RequestHandler9 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + p9: P9, + token: CancellationToken, + ): HandlerResult; + } + declare interface StarNotificationHandler { + (method: string, ...params: any[]): void; + } + declare interface GenericNotificationHandler { + (...params: any[]): void; + } + declare interface NotificationHandler0 { + (): void; + } + declare export type NotificationHandler

= (params: P) => void; + + declare interface NotificationHandler1 { + (p1: P1): void; + } + declare interface NotificationHandler2 { + (p1: P1, p2: P2): void; + } + declare interface NotificationHandler3 { + (p1: P1, p2: P2, p3: P3): void; + } + declare interface NotificationHandler4 { + (p1: P1, p2: P2, p3: P3, p4: P4): void; + } + declare interface NotificationHandler5 { + (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5): void; + } + declare interface NotificationHandler6 { + (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6): void; + } + declare interface NotificationHandler7 { + (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7): void; + } + declare interface NotificationHandler8 { + (p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8): void; + } + declare interface NotificationHandler9 { + ( + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + p9: P9, + ): void; + } + declare interface Logger { + error(message: string): void; + warn(message: string): void; + info(message: string): void; + log(message: string): void; + } + declare export var Trace: { + Off: 0, + Messages: 1, + Verbose: 2, + fromString(value: string): $Values, + toString(value: $Values): TraceValues, + }; + declare type TraceValues = 'off' | 'messages' | 'verbose'; + declare interface SetTraceParams { + value: TraceValues; + } + declare export var SetTraceNotification: { + type: NotificationType, + }; + declare interface LogTraceParams { + message: string; + verbose?: string; + } + declare export var LogTraceNotification: { + type: NotificationType, + }; + declare interface Tracer { + log(message: string, data?: string): void; + } + declare export var ConnectionErrors: { + /** + * The connection is closed. + */ + Closed: 1, + /** + * The connection got disposed. + */ + Disposed: 2, + /** + * The connection is already in listening mode. + */ + AlreadyListening: 3, + }; + declare export class ConnectionError extends Error { + +code: $Values; + constructor(code: $Values, message: string): void; + } + // declare type MessageQueue = LinkedMap; + declare type ConnectionStrategy = { + cancelUndispatched?: ( + message: Message, + next: (message: Message) => ResponseMessage | void, + ) => ResponseMessage | void, + }; + // declare export var ConnectionStrategy: { + // is(value: any): boolean, + // }; + declare export interface MessageConnection { + sendRequest( + type: RequestType0, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType, + params: P, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType1, + p1: P1, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType2, + p1: P1, + p2: P2, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType3, + p1: P1, + p2: P2, + p3: P3, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType4, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType5, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType6, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType7, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType8, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + token?: CancellationToken, + ): Thenable; + sendRequest( + type: RequestType9, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + p9: P9, + token?: CancellationToken, + ): Thenable; + sendRequest(method: string, ...params: any[]): Thenable; + onRequest( + type: RequestType0, + handler: RequestHandler0, + ): void; + onRequest( + type: RequestType1, + handler: RequestHandler1, + ): void; + onRequest( + type: RequestType2, + handler: RequestHandler2, + ): void; + onRequest( + type: RequestType3, + handler: RequestHandler3, + ): void; + onRequest( + type: RequestType4, + handler: RequestHandler4, + ): void; + onRequest( + type: RequestType5, + handler: RequestHandler5, + ): void; + onRequest( + type: RequestType6, + handler: RequestHandler6, + ): void; + onRequest( + type: RequestType7, + handler: RequestHandler7, + ): void; + onRequest( + type: RequestType8, + handler: RequestHandler8, + ): void; + onRequest( + type: RequestType9, + handler: RequestHandler9, + ): void; + onRequest(method: string, handler: GenericRequestHandler): void; + onRequest(handler: StarRequestHandler): void; + sendNotification(type: NotificationType0): void; + sendNotification(type: NotificationType, params?: P): void; + sendNotification(type: NotificationType1, p1: P1): void; + sendNotification( + type: NotificationType2, + p1: P1, + p2: P2, + ): void; + sendNotification( + type: NotificationType3, + p1: P1, + p2: P2, + p3: P3, + ): void; + sendNotification( + type: NotificationType4, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + ): void; + sendNotification( + type: NotificationType5, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + ): void; + sendNotification( + type: NotificationType6, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + ): void; + sendNotification( + type: NotificationType7, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + ): void; + sendNotification( + type: NotificationType8, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + ): void; + sendNotification( + type: NotificationType9, + p1: P1, + p2: P2, + p3: P3, + p4: P4, + p5: P5, + p6: P6, + p7: P7, + p8: P8, + p9: P9, + ): void; + sendNotification(method: string, ...params: any[]): void; + onNotification( + type: NotificationType0, + handler: NotificationHandler0, + ): void; + onNotification( + type: NotificationType1, + handler: NotificationHandler1, + ): void; + onNotification( + type: NotificationType2, + handler: NotificationHandler2, + ): void; + onNotification( + type: NotificationType3, + handler: NotificationHandler3, + ): void; + onNotification( + type: NotificationType4, + handler: NotificationHandler4, + ): void; + onNotification( + type: NotificationType5, + handler: NotificationHandler5, + ): void; + onNotification( + type: NotificationType6, + handler: NotificationHandler6, + ): void; + onNotification( + type: NotificationType7, + handler: NotificationHandler7, + ): void; + onNotification( + type: NotificationType8, + handler: NotificationHandler8, + ): void; + onNotification( + type: NotificationType9, + handler: NotificationHandler9, + ): void; + onNotification(method: string, handler: GenericNotificationHandler): void; + onNotification(handler: StarNotificationHandler): void; + trace( + value: $Values, + tracer: Tracer, + sendNotification?: boolean, + ): void; + onError: Event<[Error, Message, number]>; + onClose: Event; + onUnhandledNotification: Event; + listen(): void; + onDispose: Event; + dispose(): void; + inspect(): void; + } + declare export function createMessageConnection( + reader: MessageReader, + writer: MessageWriter, + logger: Logger, + strategy?: ConnectionStrategy, + ): MessageConnection; + declare export function createMessageConnection( + inputStream: stream$Readable, + outputStream: stream$Writable, + logger: Logger, + strategy?: ConnectionStrategy, + ): MessageConnection; +} diff --git a/flow-libs/vscode-languageclient.js.flow b/flow-libs/vscode-languageclient.js.flow new file mode 100644 index 0000000..a8db8c2 --- /dev/null +++ b/flow-libs/vscode-languageclient.js.flow @@ -0,0 +1,434 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the LICENSE file in + * the root directory of this source tree. + * + * @flow + * @format + */ + +declare module 'vscode-languageclient' { + import type { + ClientCapabilities, + DocumentSelector, + InitializeError, + InitializeParams, + MessageReader, + MessageWriter, + RequestType, + NotificationType, + ServerCapabilities, + RequestHandler, + Message, + NotificationHandler, + } from 'vscode-languageserver-protocol'; + + import type { + CancellationToken, + OutputChannel, + Event, + IDisposable as _IDisposable, + TextDocument, + Position as VPosition, + ProviderResult, + Hover as VHover, + WorkspaceFolder as VWorkspaceFolder, + Uri, + } from 'vscode'; + + declare export * from 'vscode-languageserver-protocol' + declare export * from 'vscode-languageserver-types' + declare export type IDisposable = _IDisposable; + + import type { TextDocumentIdentifier } from 'vscode-languageserver-protocol'; + + declare interface c2p$URIConverter { + (value: Uri): string; + } + declare interface c2p$Converter { + asUri(uri: Uri): string; + asTextDocumentIdentifier(textDocument: TextDocument): TextDocumentIdentifier; + } + + declare interface p2c$URIConverter { + (value: string): Uri; + } + + declare interface p2c$Converter { + asUri(value: string): Uri; + } + + // declare export type ClientCapabilities = _ClientCapbilities; + // declare export type ServerCapabilities = _ServerCapabilities; + // declare export type DocumentSelector = _DocumentSelector; + // declare export type TextDocumentRegistrationOptions = _TextDocumentRegistrationOptions; + + declare type ExecutableOptions = { + cwd?: string, + stdio?: string | string[], + env?: any, + detached?: boolean, + }; + + declare type Executable = { + command: string, + args?: string[], + options?: ExecutableOptions, + }; + + declare type ForkOptions = { + cwd?: string, + env?: any, + encoding?: string, + execArgv?: string[], + }; + + declare type TransportKind = 'stdio' | 'ipc' | 'pipe'; + + declare type NodeModule = { + module: string, + transport?: TransportKind, + args?: string[], + runtime?: string, + options?: ForkOptions, + }; + + declare export type StreamInfo = { + writer: stream$Writable, + reader: stream$Readable, + detached?: boolean, + }; + + declare type ChildProcessInfo = { + process: child_process$ChildProcess, + detached: boolean, + }; + + declare type MessageTransports = { + reader: MessageReader, + writer: MessageWriter, + detached?: boolean, + }; + + declare export type ServerOptions = + | Executable + | { run: Executable, debug: Executable } + | { run: NodeModule, debug: NodeModule } + | NodeModule + | (() => Thenable< + | child_process$ChildProcess + | StreamInfo + | MessageTransports + | ChildProcessInfo, + >); + + declare export interface StaticFeature { + /** + * Called to fill the initialize params. + * + * @params the initialize params. + */ + fillInitializeParams?: (params: InitializeParams) => void; + + /** + * Called to fill in the client capabilities this feature implements. + * + * @param capabilities The client capabilities to fill. + */ + fillClientCapabilities(capabilities: ClientCapabilities): void; + + /** + * Initialize the feature. This method is called on a feature instance + * when the client has successfully received the initalize request from + * the server and before the client sends the initialized notification + * to the server. + * + * @param capabilities the server capabilities + * @param documentSelector the document selector pass to the client's constuctor. + * May be `undefined` if the client was created without a selector. + */ + initialize( + capabilities: ServerCapabilities, + documentSelector: ?DocumentSelector, + ): IDisposable; + } + + declare export interface RPCMessageType { + +method: string; + +numberOfParams: number; + } + + declare export interface RegistrationData { + id: string; + registerOptions: T; + } + + declare export interface DynamicFeature { + /** + * The message for which this features support dynamic activation / registration. + */ + +messages: RPCMessageType | RPCMessageType[]; + + /** + * Called to fill the initialize params. + * + * @params the initialize params. + */ + fillInitializeParams?: (params: InitializeParams) => void; + + /** + * Called to fill in the client capabilities this feature implements. + * + * @param capabilities The client capabilities to fill. + */ + fillClientCapabilities(capabilities: ClientCapabilities): void; + + /** + * Initialize the feature. This method is called on a feature instance + * when the client has successfully received the initalize request from + * the server and before the client sends the initialized notification + * to the server. + * + * @param capabilities the server capabilities. + * @param documentSelector the document selector pass to the client's constuctor. + * May be `undefined` if the client was created without a selector. + */ + initialize( + capabilities: ServerCapabilities, + documentSelector: DocumentSelector | void, + ): void; + + /** + * Is called when the server send a register request for the given message. + * + * @param message the message to register for. + * @param data additional registration data as defined in the protocol. + */ + register(message: RPCMessageType, data: RegistrationData): void; + + /** + * Is called when the server wants to unregister a feature. + * + * @param id the id used when registering the feature. + */ + unregister(id: string): void; + + /** + * Called when the client is stopped to dispose this feature. Usually a feature + * unregisters listeners registerd hooked up with the VS Code extension host. + */ + dispose(): void; + } + + declare export interface HandleDiagnosticsSignature { + (uri: any, diagnostics: any[]): void; + } + + declare export interface ProvideHoverSignature { + ( + document: TextDocument, + position: VPosition, + token: CancellationToken, + ): ProviderResult; + } + + // declare export interface Middleware { + // provideHover?: (uri: any, diagnostics: any[], next: HandleDiagnosticsSignature) => void; + // handleDiagnostics?: (uri: any, diagnostics: any[], next: HandleDiagnosticsSignature) => void; + // } + + declare export interface Middleware { + // didOpen?: NextSignature; + // didChange?: NextSignature; + // willSave?: NextSignature; + // willSaveWaitUntil?: NextSignature>; + // didSave?: NextSignature; + // didClose?: NextSignature; + + // handleDiagnostics?: (uri: Uri, diagnostics: VDiagnostic[], next: HandleDiagnosticsSignature) => void; + // provideCompletionItem?: (document: TextDocument, position: VPosition, context: VCompletionContext, token: CancellationToken, next: ProvideCompletionItemsSignature) => ProviderResult; + // resolveCompletionItem?: (item: VCompletionItem, token: CancellationToken, next: ResolveCompletionItemSignature) => ProviderResult; + provideHover?: ( + document: TextDocument, + position: VPosition, + token: CancellationToken, + next: ProvideHoverSignature, + ) => ProviderResult; + // provideSignatureHelp?: (document: TextDocument, position: VPosition, token: CancellationToken, next: ProvideSignatureHelpSignature) => ProviderResult; + // provideDefinition?: (document: TextDocument, position: VPosition, token: CancellationToken, next: ProvideDefinitionSignature) => ProviderResult; + // provideReferences?: (document: TextDocument, position: VPosition, options: { includeDeclaration: boolean; }, token: CancellationToken, next: ProvideReferencesSignature) => ProviderResult; + // provideDocumentHighlights?: (document: TextDocument, position: VPosition, token: CancellationToken, next: ProvideDocumentHighlightsSignature) => ProviderResult; + // provideDocumentSymbols?: (document: TextDocument, token: CancellationToken, next: ProvideDocumentSymbolsSignature) => ProviderResult; + // provideWorkspaceSymbols?: (query: string, token: CancellationToken, next: ProvideWorkspaceSymbolsSignature) => ProviderResult; + // provideCodeActions?: (document: TextDocument, range: VRange, context: VCodeActionContext, token: CancellationToken, next: ProvideCodeActionsSignature) => ProviderResult<(VCommand | VCodeAction)[]>; + // provideCodeLenses?: (document: TextDocument, token: CancellationToken, next: ProvideCodeLensesSignature) => ProviderResult; + // resolveCodeLens?: (codeLens: VCodeLens, token: CancellationToken, next: ResolveCodeLensSignature) => ProviderResult; + // provideDocumentFormattingEdits?: (document: TextDocument, options: VFormattingOptions, token: CancellationToken, next: ProvideDocumentFormattingEditsSignature) => ProviderResult; + // provideDocumentRangeFormattingEdits?: (document: TextDocument, range: VRange, options: VFormattingOptions, token: CancellationToken, next: ProvideDocumentRangeFormattingEditsSignature) => ProviderResult; + // provideOnTypeFormattingEdits?: (document: TextDocument, position: VPosition, ch: string, options: VFormattingOptions, token: CancellationToken, next: ProvideOnTypeFormattingEditsSignature) => ProviderResult; + // provideRenameEdits?: (document: TextDocument, position: VPosition, newName: string, token: CancellationToken, next: ProvideRenameEditsSignature) => ProviderResult; + // prepareRename?: (document: TextDocument, position: VPosition, token: CancellationToken, next: PrepareRenameSignature) => ProviderResult; + // provideDocumentLinks?: (document: TextDocument, token: CancellationToken, next: ProvideDocumentLinksSignature) => ProviderResult; + // resolveDocumentLink?: (link: VDocumentLink, token: CancellationToken, next: ResolveDocumentLinkSignature) => ProviderResult; + // workspace?: WorkspaceMiddleware; + } + + /** + * A pluggable error handler that is invoked when the connection is either + * producing errors or got closed. + */ + declare export interface ErrorHandler { + /** + * An error has occurred while writing or reading from the connection. + * + * @param error - the error received + * @param message - the message to be delivered to the server if know. + * @param count - a count indicating how often an error is received. Will + * be reset if a message got successfully send or received. + */ + error(error: Error, message: Message, count: number): $Values; + + /** + * The connection to the server got closed. + */ + closed(): $Values; + } + + declare export type LanguageClientOptions = { + documentSelector?: DocumentSelector, + synchronize?: any, + diagnosticCollectionName?: string, + outputChannel?: OutputChannel, + outputChannelName?: string, + revealOutputChannelOn?: typeof RevealOutputChannelOn, + /** + * The encoding use to read stdout and stderr. Defaults + * to 'utf8' if ommitted. + */ + stdioEncoding?: string, + initializationOptions?: any, + initializationFailedHandler?: (error: any) => boolean, + errorHandler?: ErrorHandler, + middleware?: Middleware, + uriConverters?: { + code2Protocol: c2p$URIConverter, + protocol2Code: p2c$URIConverter, + }, + workspaceFolder?: VWorkspaceFolder, + }; + + declare export var ErrorAction: { + /** + * Continue running the server. + */ + Continue: 1, + /** + * Shutdown the server. + */ + Shutdown: 2, + }; + + declare export var CloseAction: { + /** + * Don't restart the server. The connection stays closed. + */ + DoNotRestart: 1, + /** + * Restart the server. + */ + Restart: 2, + }; + + declare export var RevealOutputChannelOn: { + Info: 1, + Warn: 2, + Error: 3, + Never: 4, + }; + + declare export var State: { + Stopped: 1, + Starting: 3, + Running: 2, + }; + + declare export interface StateChangeEvent { + oldState: number; + newState: number; + } + + declare export class TextDocumentFeature implements DynamicFeature { + _client: LanguageClient; + _providers: Map; + messages: RPCMessageType; + constructor(_client: LanguageClient, _message: RPCMessageType): this; + fillClientCapabilities(capabilities: ClientCapabilities): void; + initialize( + capabilities: ServerCapabilities, + documentSelector: ?DocumentSelector, + ): void; + register(message: RPCMessageType, data: RegistrationData): void; + registerLanguageProvider(options: T): IDisposable; + unregister(id: string): void; + dispose(): void; + } + + declare export class LanguageClient { + get clientOptions(): LanguageClientOptions; + get outputChannel(): OutputChannel; + constructor( + name: string, + serverOptions: ServerOptions, + clientOptions: LanguageClientOptions, + forceDebug?: boolean, + ): void; + constructor( + id: string, + name: string, + serverOptions: ServerOptions, + clientOptions: LanguageClientOptions, + forceDebug?: boolean, + ): void; + constructor( + arg1: string, + arg2: ServerOptions | string, + arg3: LanguageClientOptions | ServerOptions, + arg4?: boolean | LanguageClientOptions, + arg5?: boolean, + ): void; + + +protocol2CodeConverter: p2c$Converter; + +code2ProtocolConverter: c2p$Converter; + + info(message: string, data?: any): void; + warn(message: string, data?: any): void; + error(message: string, data?: any): void; + logFailedRequest(type: RPCMessageType, error: any): void; + createDefaultErrorHandler(): ErrorHandler; + + start(): IDisposable; + stop(): Thenable; + onReady(): Thenable; + registerFeature(feature: StaticFeature | DynamicFeature): void; + +onDidChangeState: Event; + + onNotification(type: NotificationType, handler: NotificationHandler

): void; + + // onRequest(type: RequestType0, handler: RequestHandler0): void; + onRequest( + type: RequestType, + handler: RequestHandler, + ): void; + // onRequest(method: string, handler: GenericRequestHandler): void; + // onRequest(type: string | RPCMessageType, handler: GenericRequestHandler): void; + + sendRequest(method: string, param: any): Thenable; + sendRequest( + type: RequestType, + params: P, + token?: CancellationToken, + ): Thenable; + } +} diff --git a/flow-libs/vscode-languageserver-protocol.js.flow b/flow-libs/vscode-languageserver-protocol.js.flow new file mode 100644 index 0000000..67e90f9 --- /dev/null +++ b/flow-libs/vscode-languageserver-protocol.js.flow @@ -0,0 +1,1016 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the LICENSE file in + * the root directory of this source tree. + * + * @flow + * @format + */ + +// Flow definitions for Microsoft's Language Server Protocol +// https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md +// https://github.com/Microsoft/language-server-protocol/blob/master/versions/protocol-2-x.md + +declare module 'vscode-languageserver-protocol' { + // Structures + // import type { + // RequestType as _RequestType, + // } from 'vscode-jsonrpc'; + import typeof { + RequestType as _RequestType, + NotificationType as _NotificationType, + } from 'vscode-jsonrpc'; + import type { + RequestHandler as _RequestHandler, + NotificationHandler as _NotificationHandler, + Message as _Message, + } from 'vscode-jsonrpc'; + + declare export var RequestType: _RequestType; + declare export var NotificationType: _NotificationType; + declare export type RequestHandler = _RequestHandler; + declare export type NotificationHandler

= _NotificationHandler

; + declare export type Message = _Message; + + declare type Position = { + // Line position in a document (zero-based). + line: number, + // Character offset on a line in a document (zero-based). + character: number + }; + + declare type Range = { + // The range's start position. + start: Position, + // The range's end position. + end: Position + }; + + declare type Location = { + // The location's URI. + uri: string, + // The position within the URI. + range: Range + }; + + declare export type DocumentFilter = + | { + /** A language id, like `typescript`. */ + language: string, + /** A Uri [scheme](#Uri.scheme), like `file` or `untitled`. */ + scheme?: string, + /** A glob pattern, like `*.{ts,js}`. */ + pattern?: string + } + | { + /** A language id, like `typescript`. */ + language?: string, + /** A Uri [scheme](#Uri.scheme), like `file` or `untitled`. */ + scheme: string, + /** A glob pattern, like `*.{ts,js}`. */ + pattern?: string + } + | { + /** A language id, like `typescript`. */ + language?: string, + /** A Uri [scheme](#Uri.scheme), like `file` or `untitled`. */ + scheme?: string, + /** A glob pattern, like `*.{ts,js}`. */ + pattern: string + }; + + declare export type DocumentSelector = Array; + + declare type Diagnostic = { + // The range at which the message applies. + range: Range, + // The diagnostic's severity. Can be omitted. If omitted it is up to the + // client to interpret diagnostics as error, warning, info or hint. + severity?: number, + // The diagnostic's code. Can be omitted. + code?: number | string, + // A human-readable string describing the source of this + // diagnostic, e.g. 'typescript' or 'super lint'. + source?: string, + // The diagnostic's message. + message: string, + // Any related locations. + relatedLocations?: RelatedLocation[] + }; + + declare type RelatedLocation = { + location: Location, + message: string + }; + + declare export var DiagnosticSeverity: { + // Reports an error. + Error: 1, + // Reports a warning. + Warning: 2, + // Reports an information. + Information: 3, + // Reports a hint. + Hint: 4 + }; + + declare type Command = { + // Title of the command, like `save`. + title: string, + // The identifier of the actual command handler. + command: string, + // Arguments that the command handler should be invoked with. + arguments?: any[] + }; + + declare export type TextEdit = { + // The range of the text document to be manipulated. To insert + // text into a document create a range where start === end. + range: Range, + // The string to be inserted. For delete operations use an empty string. + newText: string + }; + + declare type WorkspaceEdit = { + // Holds changes to existing resources. + changes?: { [uri: string]: TextEdit[] }, + + // An array of `TextDocumentEdit`s to express changes to n different text documents + // where each text document edit addresses a specific version of a text document. + // Whether a client supports versioned document edits is expressed via + // `WorkspaceClientCapabilities.workspaceEdit.documentChanges`. + documentChanges?: TextDocumentEdit[] + }; + + declare export type TextDocumentIdentifier = { + // The text document's URI. + uri: string + }; + + declare type TextDocumentItem = { + // The text document's URI. + uri: string, + // The text document's language identifier. + languageId: string, + // The version number of this document (it will strictly increase after each + // change, including undo/redo). + version: number, + // The content of the opened text document. + text: string + }; + + declare type VersionedTextDocumentIdentifier = TextDocumentIdentifier & { + // The version number of this document. + version: number + }; + + declare type TextDocumentPositionParams = { + // The text document. + textDocument: TextDocumentIdentifier, + // The position inside the text document. + position: Position + }; + + // General + + declare export var ErrorCodes: { + ParseError: -32700, + InvalidRequest: -32600, + MethodNotFound: -32601, + InvalidParams: -32602, + InternalError: -32603, + serverErrorStart: -32099, + serverErrorEnd: -32000, + ServerNotInitialized: -32002, + UnknownErrorCode: -32001, + // eslint-disable-next-line nuclide-internal/api-spelling + RequestCancelled: -32800 + }; + + declare export type InitializeParams = { + // The process Id of the parent process that started + // the server. Is null if the process has not been started by another process. + // If the parent process is not alive then the server should exit + // (see exit notification) its process. + processId?: number, + // The rootPath of the workspace. Is null if no folder is open. + rootPath?: string, + // The rootUri of the workspace. Is null if no folder is open. If both + // `rootPath` and `rootUri` are set rootUri` wins. + rootUri?: string, // TODO: this should be DocumentUri + // User provided initialization options. + initializationOptions?: any, + // The capabilities provided by the client (editor) + capabilities: ClientCapabilities, + // The initial trace setting. If omitted trace is disabled ('off') + trace?: 'off' | 'messages' | 'verbose' + }; + + // Workspace specific client capabilities. + declare type WorkspaceClientCapabilities = {| + // The client supports applying batch edits to the workspace by supporting + // the request 'workspace/applyEdit' + applyEdit?: boolean, + // Capabilities specific to `WorkspaceEdit`s + workspaceEdit?: {| + // The client supports versioned document changes in `WorkspaceEdit`s + documentChanges?: boolean + |}, + // Capabilities specific to `workspace/didChangeConfiguration` notification. + didChangeConfiguration?: {| + // Did change configuration notification supports dynamic registration. + dynamicRegistration?: boolean + |}, + // Capabilities specific to `workspace/didChangeWatchedFiles` notification. + didChangeWatchedFiles?: {| + // Did change watched files notification supports dynamic registration. + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `workspace/symbol` request. + symbol?: {| + // Symbol request supports dynamic registration. + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `workspace/executeCommand` request. + executeCommand?: {| + // Execute command supports dynamic registration. + dynamicRegistration?: boolean + |} + |}; + + // Text document specific client capabilities. + declare type TextDocumentClientCapabilities = {| + synchronization?: {| + // Whether text document synchronization supports dynamic registration. + dynamicRegistration?: boolean, + // The client supports sending will save notifications. + willSave?: boolean, + // The client supports sending a will save request and + // waits for a response providing text edits which will + // be applied to the document before it is saved. + willSaveWaitUntil?: boolean, + // The client supports did save notifications. + didSave?: boolean + |}, + // Capabilities specific to the `textDocument/completion` + completion?: {| + dynamicRegistration?: boolean, + // The client supports the following `CompletionItem` specific capabilities + completionItem?: {| + // Client supports snippets as insert text. + // A snippet can define tab stops and placeholders with `$1`, `$2` + // and `${3:foo}`. `$0` defines the final tab stop, it defaults to + // the end of the snippet. Placeholders with equal identifiers are linked + // that is typing in one will update others too. + snippetSupport?: boolean + |} + |}, + // Capabilities specific to the `textDocument/hover` + hover?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/signatureHelp` + signatureHelp?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/references` + references?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/documentHighlight` + documentHighlight?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/documentSymbol` + documentSymbol?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/formatting` + formatting?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/rangeFormatting` + rangeFormatting?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/onTypeFormatting` + onTypeFormatting?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/definition` + definition?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/codeAction` + codeAction?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/codeLens` + codeLens?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/documentLink` + documentLink?: {| + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `textDocument/rename` + rename?: {| + dynamicRegistration?: boolean + |} + |}; + + declare type WindowClientCapabilities = {| + // Capabilities specific to the `window/showStatus` request. + status?: {| + // Status requests supports dynamic registration. + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `window/progress` notification. + progress?: {| + // Progress notification supports dynamic registration. + dynamicRegistration?: boolean + |}, + // Capabilities specific to the `window/actionRequired` notification. + actionRequired?: {| + // ActionRequired notification supports dynamic registration. + dynamicRegistration?: boolean + |} + |}; + + declare type TelemetryCapabilities = {| + connectionStatus?: {| + dynamicRegistration?: boolean, + |}, + |}; + + declare export type ClientCapabilities = {| + // Workspace specific client capabilities. + workspace?: WorkspaceClientCapabilities, + // Text document specific client capabilities. + textDocument?: TextDocumentClientCapabilities, + // Window specific client capabilities. (Nuclide-only) + window?: WindowClientCapabilities, + // telemetry client capabilities. + telemetry?: TelemetryCapabilities, + // Experimental client capabilities. + experimental?: mixed + |}; + + declare type InitializeResult = { + // The capabilities the language server provides. + capabilities: ServerCapabilities + }; + + declare export type InitializeError = { + // Indicates whether the client should retry to send the + // initilize request after showing the message provided + // in the ResponseError. + retry: boolean + }; + + // Defines how the host (editor) should sync document changes to the language server. + declare export var TextDocumentSyncKind: { + // Documents should not be synced at all. + None: 0, + // Documents are synced by always sending the full content of the document. + Full: 1, + // Documents are synced by sending the full content on open. After that only incremental + // updates to the document are sent. + Incremental: 2 + }; + + // Completion options. + declare type CompletionOptions = { + // The server provides support to resolve additional information for a completion item. + resolveProvider?: boolean, + // The characters that trigger completion automatically. + triggerCharacters?: string[] + }; + + // Signature help options. + declare type SignatureHelpOptions = { + // The characters that trigger signature help automatically. + triggerCharacters?: string[] + }; + + // Code Lens options. + declare type CodeLensOptions = { + // Code lens has a resolve provider as well. + resolveProvider?: boolean + }; + + // Format document on type options + declare type DocumentOnTypeFormattingOptions = { + // A character on which formatting should be triggered, like `};`. + firstTriggerCharacter: string, + // More trigger characters. + moreTriggerCharacter?: string[] + }; + + // Save options. + declare type SaveOptions = { + // The client is supposed to include the content on save. + includeText?: boolean + }; + + declare type TextDocumentSyncOptions = { + // Open and close notifications are sent to the server. + openClose?: boolean, + // Change notifications are sent to the server. One of TextDocumentSyncKind. + change?: number, + // Will save notifications are sent to the server. + willSave?: boolean, + // Will save wait until requests are sent to the server. + willSaveWaitUntil?: boolean, + // Save notifications are sent to the server. + save?: SaveOptions + }; + + declare export type ServerCapabilities = { + // Defines how text documents are synced. If a number, is one of TextDocumentSyncKind + textDocumentSync?: TextDocumentSyncOptions | number, + // The server provides hover support. + hoverProvider?: boolean, + // The server provides completion support. + completionProvider?: CompletionOptions, + // The server provides signature help support. + signatureHelpProvider?: SignatureHelpOptions, + // The server provides goto definition support. + definitionProvider?: boolean, + // The server provides find references support. + referencesProvider?: boolean, + // The server provides document highlight support. + documentHighlightProvider?: boolean, + // The server provides document symbol support. + documentSymbolProvider?: boolean, + // The server provides workspace symbol support. + workspaceSymbolProvider?: boolean, + // The server provides code actions. + codeActionProvider?: boolean, + // The server provides code lens. + codeLensProvider?: CodeLensOptions, + // The server provides document formatting. + documentFormattingProvider?: boolean, + // The server provides document range formatting. + documentRangeFormattingProvider?: boolean, + // The server provides document formatting on typing. + documentOnTypeFormattingProvider?: DocumentOnTypeFormattingOptions, + // The server provides rename support. + renameProvider?: boolean, + // The server provides type coverage support. + typeCoverageProvider?: boolean, + // The server responds to rage requests + rageProvider?: boolean + }; + + declare type RageItem = { + // Title convention is [host:]/path/file[:meta] - if ommitted, client picks + title?: string, + // Arbitrary text for the rage report + data: string + }; + + // Document + + declare type PublishDiagnosticsParams = { + // The URI for which diagnostic information is reported. + uri: string, + // An array of diagnostic information items. + diagnostics: Diagnostic[] + }; + + // Represents a collection of [completion items](#CompletionItem) to be presented in the editor. + declare type CompletionList = { + // This list it not complete. Further typing should result in recomputing this list. + isIncomplete: boolean, + // The completion items. + items: CompletionItem[] + }; + + // Defines whether the insert text in a completion item should be interpreted as plain text or a snippet. + declare export var InsertTextFormat: { + PlainText: 1, + Snippet: 2 + }; + + declare type MarkupKind = 'plaintext' | 'markdown'; + + declare type MarkupContent = { + // The type of the Markup + kind: MarkupKind, + + // The content itself + value: string + }; + + declare type CompletionItem = { + // The label of this completion item. By default + // also the text that is inserted when selecting + // this completion. + label: string, + // The kind of this completion item. Based of the kind an icon is chosen by the editor. + kind?: number, + // A human-readable string with additional information + // about this item, like type or symbol information. + detail?: string, + // A human-readable string that represents a doc-comment. + documentation?: string | MarkupContent, + // A string that should be used when comparing this item + // with other items. When `falsy` the label is used. + sortText?: string, + // A string that should be used when filtering a set of + // completion items. When `falsy` the label is used. + filterText?: string, + // A string that should be inserted a document when selecting + // this completion. When `falsy` the label is used. + insertText?: string, + // The format of the insert text. The format applies to both the `insertText` property + // and the `newText` property of a provided `textEdit`. + insertTextFormat?: number, + // An edit which is applied to a document when selecting + // this completion. When an edit is provided the value of + // insertText is ignored. + textEdit?: TextEdit, + // An optional array of additional text edits that are applied when + // selecting this completion. Edits must not overlap with the main edit + // nor with themselves. + additionalTextEdits?: TextEdit[], + // An optional command that is executed *after* inserting this completion. *Note* that + // additional modifications to the current document should be described with the + // additionalTextEdits-property. + command?: Command, + // An data entry field that is preserved on a completion item between + // a completion and a completion resolve request. + data?: any + }; + + // The kind of a completion entry. + declare export var CompletionItemKind: { + Text: 1, + Method: 2, + Function: 3, + Constructor: 4, + Field: 5, + Variable: 6, + Class: 7, + Interface: 8, + Module: 9, + Property: 10, + Unit: 11, + Value: 12, + Enum: 13, + Keyword: 14, + Snippet: 15, + Color: 16, + File: 17, + Reference: 18 + }; + + // The result of a hover request. + declare type Hover = { + // The hover's content + contents: MarkedString | MarkedString[], + // An optional range is a range inside a text document + // that is used to visualize a hover, e.g. by changing the background color. + range?: Range + }; + + /** + * The marked string is rendered: + * - as markdown if it is represented as a string + * - as code block of the given language if it is represented as a pair of a language and a value + * + * The pair of a language and a value is an equivalent to markdown: + * ```${language}; + * ${value}; + * ``` + */ + declare type MarkedString = string | { language: string, value: string }; + + /** + * Signature help represents the signature of something + * callable. There can be multiple signature but only one + * active and only one active parameter. + */ + declare type SignatureHelp = { + // One or more signatures. + signatures: SignatureInformation[], + // The active signature. + activeSignature?: number, + // The active parameter of the active signature. + activeParameter?: number + }; + + /** + * Represents the signature of something callable. A signature + * can have a label, like a function-name, a doc-comment, and + * a set of parameters. + */ + declare type SignatureInformation = { + // The label of this signature. Will be shown in the UI. + label: string, + // The human-readable doc-comment of this signature. Will be shown in the UI but can be omitted. + documentation?: string, + // The parameters of this signature. + parameters?: ParameterInformation[] + }; + + /** + * Represents a parameter of a callable-signature. A parameter can + * have a label and a doc-comment. + */ + declare type ParameterInformation = { + // The label of this parameter. Will be shown in the UI. + label: string, + // The human-readable doc-comment of this parameter. Will be shown in the UI but can be omitted. + documentation?: string + }; + + declare type ReferenceParams = TextDocumentPositionParams & { + context: ReferenceContext + }; + + declare type ReferenceContext = { + // Include the declaration of the current symbol. + includeDeclaration: boolean + }; + + /** + * A document highlight is a range inside a text document which deserves + * special attention. Usually a document highlight is visualized by changing + * the background color of its range. + * + */ + declare type DocumentHighlight = { + // The range this highlight applies to. + range: Range, + // The highlight kind, default is DocumentHighlightKind.Text. + kind?: number + }; + + declare export var DocumentHighlightKind: { + // A textual occurrance. + Text: 1, + // Read-access of a symbol, like reading a variable. + Read: 2, + // Write-access of a symbol, like writing to a variable. + Write: 3 + }; + + declare type DocumentSymbolParams = { + // The text document. + textDocument: TextDocumentIdentifier + }; + + /** + * Represents information about programming constructs like variables, classes, + * interfaces etc. + */ + declare type SymbolInformation = { + // The name of this symbol. + name: string, + // The kind of this symbol. + kind: number, + // The location of this symbol. + location: Location, + // The name of the symbol containing this symbol. + containerName?: string + }; + + declare export var SymbolKind: { + File: 1, + Module: 2, + Namespace: 3, + Package: 4, + Class: 5, + Method: 6, + Property: 7, + Field: 8, + Constructor: 9, + Enum: 10, + Interface: 11, + Function: 12, + Variable: 13, + Constant: 14, + String: 15, + Number: 16, + Boolean: 17, + Array: 18 + }; + + // The parameters of a Workspace Symbol Request. + declare type WorkspaceSymbolParams = { + // A non-empty query string. + query: string + }; + + // Params for the CodeActionRequest + declare type CodeActionParams = { + // The document in which the command was invoked. + textDocument: TextDocumentIdentifier, + // The range for which the command was invoked. + range: Range, + // Context carrying additional information. + context: CodeActionContext + }; + + // Contains additional diagnostic information about the context in which a code action is run. + declare type CodeActionContext = { + // An array of diagnostics. + diagnostics: Diagnostic[] + }; + + declare type CodeLensParams = { + // The document to request code lens for. + textDocument: TextDocumentIdentifier + }; + + /** + * A code lens represents a command that should be shown along with + * source text, like the number of references, a way to run tests, etc. + * + * A code lens is _unresolved_ when no command is associated to it. For performance + * reasons the creation of a code lens and resolving should be done in two stages. + */ + declare type CodeLens = { + // The range in which this code lens is valid. Should only span a single line. + range: Range, + // The command this code lens represents. + command?: Command, + // A data entry field that is preserved on a code lens item between a code lens + // and a code lens resolve request. + data?: any + }; + + declare type DocumentLinkParams = { + // The document to provide document links for. + textDocument: TextDocumentIdentifier + }; + + /** + * A document link is a range in a text document that links to an internal or + * external resource, like another + * text document or a web site. + */ + declare type DocumentLink = { + // The range this link applies to. + range: Range, + // The uri this link points to. + target: string + }; + + declare type DocumentFormattingParams = { + // The document to format. + textDocument: TextDocumentIdentifier, + // The format options. + options: FormattingOptions + }; + + // Value-object describing what options formatting should use. + declare type FormattingOptions = { + // Signature for further properties. + [key: string]: boolean | number | string, + // Size of a tab in spaces. + tabSize: number, + // Prefer spaces over tabs. + insertSpaces: boolean + }; + + declare type DocumentRangeFormattingParams = { + // The document to format. + textDocument: TextDocumentIdentifier, + // The range to format. + range: Range, + // The format options. + options: FormattingOptions + }; + + declare type DocumentOnTypeFormattingParams = { + // The document to format. + textDocument: TextDocumentIdentifier, + // The position at which this request was sent. + position: Position, + // The character that has been typed. + ch: string, + // The format options. + options: FormattingOptions + }; + + declare type RenameParams = { + // The document to format. + textDocument: TextDocumentIdentifier, + // The position at which this request was sent. + position: Position, + /** + * The new name of the symbol. If the given name is not valid the + * request must return a [ResponseError](#ResponseError) with an + * appropriate message set. + */ + newName: string + }; + + // TypeCoverageParams: a nuclide-specific way to show type coverage for a file + declare type TypeCoverageParams = { + textDocument: TextDocumentIdentifier // The text document. + }; + + declare type TypeCoverageResult = { + coveredPercent: number, // what percent of the file is covered? + uncoveredRanges: UncoveredRange[] + }; + + declare type UncoveredRange = { + range: Range, + message: string // human-readable explanation, maybe with suggested fix + }; + + // Window + + declare type ShowMessageParams = { + // The message type. See {@link MessageType};. + type: number, + // The actual message. + message: string + }; + + declare export var MessageType: { + // An error message. + Error: 1, + // A warning message. + Warning: 2, + // An information message. + Info: 3, + // A log message. + Log: 4 + }; + + declare type ShowMessageRequestParams = { + // The message type. See {@link MessageType}; + type: number, + // The actual message + message: string, + // The message action items to present. + actions?: MessageActionItem[] + }; + + declare type MessageActionItem = { + // A short title like 'Retry', 'Open Log' etc. + title: string + }; + + declare type LogMessageParams = { + // The message type. See {@link MessageType}; + type: number, + // The actual message + message: string + }; + + declare type ProgressParams = { + // The id of this progress report (so we can update/close it) + id: number | string, + // A message/tooltip for this progress report; pass `null` when done. + label: string | null + }; + + declare type ActionRequiredParams = { + // The id of this action-required report (so we can close it) + id: string | number, + // A message/tooltip. Pass `null` when action is no longer required. + label: string | null + }; + + // Workspace + + declare type DidChangeConfigurationParams = { + // The actual changed settings + settings: any + }; + + declare type DidOpenTextDocumentParams = { + // The document that was opened. + textDocument: TextDocumentItem + }; + + declare type DidChangeTextDocumentParams = { + // The document that did change. The version number points + // to the version after all provided content changes have + // been applied. + textDocument: VersionedTextDocumentIdentifier, + // The actual content changes. + contentChanges: TextDocumentContentChangeEvent[] + }; + + // An event describing a change to a text document. If range and rangeLength are omitted + // the new text is considered to be the full content of the document. + declare type TextDocumentContentChangeEvent = { + // The range of the document that changed. + range?: Range, + // The length of the range that got replaced. + rangeLength?: number, + // The new text of the document. + text: string + }; + + declare type DidCloseTextDocumentParams = { + // The document that was closed. + textDocument: TextDocumentIdentifier + }; + + declare type DidSaveTextDocumentParams = { + // The document that was saved. + textDocument: TextDocumentIdentifier, + // Optional the content when saved. Depends on the includeText value + // when the save notifcation was requested. + text: ?string + }; + + declare type DidChangeWatchedFilesParams = { + // The actual file events. + changes: FileEvent[] + }; + + // The file event type. + declare export var FileChangeType: { + // The file got created. + Created: 1, + // The file got changed. + Changed: 2, + // The file got deleted. + Deleted: 3 + }; + + // An event describing a file change. + declare type FileEvent = { + // The file's URI. + uri: string, + // The change type. + type: number + }; + + declare type ExecuteCommandParams = { + // The identifier of the actual command handler. + command: string, + // Arguments that the command should be invoked with. + arguments?: any[] + }; + + declare type ApplyWorkspaceEditParams = { + // The edits to apply. + edit: WorkspaceEdit + }; + + declare type ApplyWorkspaceEditResponse = { + // Indicates whether the edit was applied or not. + applied: boolean + }; + + declare type TextDocumentEdit = { + // The text document to change. + textDocument: VersionedTextDocumentIdentifier, + // The edits to be applied. + edits: TextEdit[] + }; + + declare type DataCallback = (data: Message) => void; + + declare interface PartialMessageInfo { + +messageToken: number; + +waitingTime: number; + } + + declare export interface MessageReader { + +onError: Event; + +onClose: Event; + +onPartialMessage: Event; + listen(callback: DataCallback): void; + dispose(): void; + } + + declare export interface MessageWriter { + +onError: Event; + +onClose: Event; + write(msg: Message): void; + dispose(): void; + } + + /** + * A request send from the client to the server to execute a command. The request might return + * a workspace edit which the client will apply to the workspace. + */ + declare export var ExecuteCommandRequest: { + type: 'workspace/executeCommand' + }; + + /** + * General text document registration options. + */ + declare export type TextDocumentRegistrationOptions = { + /** + * A document selector to identify the scope of the registration. If set to null + * the document selector provided on the client side will be used. + */ + documentSelector: DocumentSelector | null + }; +} diff --git a/flow-libs/vscode-languageserver-types.js.flow b/flow-libs/vscode-languageserver-types.js.flow new file mode 100644 index 0000000..033a928 --- /dev/null +++ b/flow-libs/vscode-languageserver-types.js.flow @@ -0,0 +1,12 @@ +/* @flow */ +declare module 'vscode-languageserver-types' { + /** + * A literal to identify a text document in the client. + */ + declare export interface ITextDocumentIdentifier { + /** + * The text document's uri. + */ + uri: string; + } +} diff --git a/flow-libs/vscode.js.flow b/flow-libs/vscode.js.flow new file mode 100644 index 0000000..7080b4f --- /dev/null +++ b/flow-libs/vscode.js.flow @@ -0,0 +1,7260 @@ +// flow-typed signature: bf33a49e587a84791b989cd1f0afd101 +// flow-typed version: b43dff3e0e/vscode_v1.1.10/flow_>=v0.28.x + +declare module 'vscode' { + + /** + * The version of the editor. + */ + declare export var version: string; + + /** + * Represents a reference to a command. Provides a title which + * will be used to represent a command in the UI and, optionally, + * an array of arguments which will be passed to the command handler + * function when invoked. + */ + declare export interface Command { + /** + * Title of the command, like `save`. + */ + title: string; + + /** + * The identifier of the actual command handler. + * @see [commands.registerCommand](#commands.registerCommand). + */ + command: string; + + /** + * A tooltip for for command, when represented in the UI. + */ + tooltip?: string; + + /** + * Arguments that the command handler should be + * invoked with. + */ + arguments?: any[]; + } + + /** + * Represents a line of text, such as a line of source code. + * + * TextLine objects are __immutable__. When a [document](#TextDocument) changes, + * previously retrieved lines will not represent the latest state. + */ + declare export interface TextLine { + + /** + * The zero-based line number. + */ + +lineNumber: number; + + /** + * The text of this line without the line separator characters. + */ + +text: string; + + /** + * The range this line covers without the line separator characters. + */ + +range: Range; + + /** + * The range this line covers with the line separator characters. + */ + +rangeIncludingLineBreak: Range; + + /** + * The offset of the first character which is not a whitespace character as defined + * by `/\s/`. **Note** that if a line is all whitespaces the length of the line is returned. + */ + +firstNonWhitespaceCharacterIndex: number; + + /** + * Whether this line is whitespace only, shorthand + * for [TextLine.firstNonWhitespaceCharacterIndex](#TextLine.firstNonWhitespaceCharacterIndex) === [TextLine.text.length](#TextLine.text). + */ + +isEmptyOrWhitespace: boolean; + } + + /** + * Represents a text document, such as a source file. Text documents have + * [lines](#TextLine) and knowledge about an underlying resource like a file. + */ + declare export interface TextDocument { + + /** + * The associated URI for this document. Most documents have the __file__-scheme, indicating that they + * represent files on disk. However, some documents may have other schemes indicating that they are not + * available on disk. + */ + +uri: Uri; + + /** + * The file system path of the associated resource. Shorthand + * notation for [TextDocument.uri.fsPath](#TextDocument.uri). Independent of the uri scheme. + */ + +fileName: string; + + /** + * Is this document representing an untitled file. + */ + +isUntitled: boolean; + + /** + * The identifier of the language associated with this document. + */ + +languageId: string; + + /** + * The version number of this document (it will strictly increase after each + * change, including undo/redo). + */ + +version: number; + + /** + * `true` if there are unpersisted changes. + */ + +isDirty: boolean; + + /** + * `true` if the document have been closed. A closed document isn't synchronized anymore + * and won't be re-used when the same resource is opened again. + */ + +isClosed: boolean; + + /** + * Save the underlying file. + * + * @return A promise that will resolve to true when the file + * has been saved. If the file was not dirty or the save failed, + * will return false. + */ + save(): Thenable; + + /** + * The [end of line](#EndOfLine) sequence that is predominately + * used in this document. + */ + +eol: EndOfLineType; + + /** + * The number of lines in this document. + */ + +lineCount: number; + + /** + * Returns a text line denoted by the line number. Note + * that the returned object is *not* live and changes to the + * document are not reflected. + * + * @param line A line number in [0, lineCount). + * @return A [line](#TextLine). + */ + lineAt(line: number): TextLine; + + /** + * Returns a text line denoted by the position. Note + * that the returned object is *not* live and changes to the + * document are not reflected. + * + * The position will be [adjusted](#TextDocument.validatePosition). + * + * @see [TextDocument.lineAt](#TextDocument.lineAt) + * @param position A position. + * @return A [line](#TextLine). + */ + lineAt(position: Position): TextLine; + + /** + * Converts the position to a zero-based offset. + * + * The position will be [adjusted](#TextDocument.validatePosition). + * + * @param position A position. + * @return A valid zero-based offset. + */ + offsetAt(position: Position): number; + + /** + * Converts a zero-based offset to a position. + * + * @param offset A zero-based offset. + * @return A valid [position](#Position). + */ + positionAt(offset: number): Position; + + /** + * Get the text of this document. A substring can be retrieved by providing + * a range. The range will be [adjusted](#TextDocument.validateRange). + * + * @param range Include only the text included by the range. + * @return The text inside the provided range or the entire text. + */ + getText(range?: Range): string; + + /** + * Get a word-range at the given position. By default words are defined by + * common separators, like space, -, _, etc. In addition, per languge custom + * [word definitions](#LanguageConfiguration.wordPattern) can be defined. It + * is also possible to provide a custom regular expression. + * + * * *Note 1:* A custom regular expression must not match the empty string and + * if it does, it will be ignored. + * * *Note 2:* A custom regular expression will fail to match multiline strings + * and in the name of speed regular expressions should not match words with + * spaces. Use [`TextLine.text`](#TextLine.text) for more complex, non-wordy, scenarios. + * + * The position will be [adjusted](#TextDocument.validatePosition). + * + * @param position A position. + * @param regex Optional regular expression that describes what a word is. + * @return A range spanning a word, or `undefined`. + */ + getWordRangeAtPosition(position: Position, regex?: RegExp): ?Range; + + /** + * Ensure a range is completely contained in this document. + * + * @param range A range. + * @return The given range or a new, adjusted range. + */ + validateRange(range: Range): Range; + + /** + * Ensure a position is contained in the range of this document. + * + * @param position A position. + * @return The given position or a new, adjusted position. + */ + validatePosition(position: Position): Position; + } + + /** + * Represents a line and character position, such as + * the position of the cursor. + * + * Position objects are __immutable__. Use the [with](#Position.with) or + * [translate](#Position.translate) methods to derive new positions + * from an existing position. + */ + declare export class Position { + + /** + * The zero-based line value. + */ + +line: number; + + /** + * The zero-based character value. + */ + +character: number; + + /** + * @param line A zero-based line value. + * @param character A zero-based character value. + */ + constructor(line: number, character: number): void; + + /** + * Check if this position is before `other`. + * + * @param other A position. + * @return `true` if position is on a smaller line + * or on the same line on a smaller character. + */ + isBefore(other: Position): boolean; + + /** + * Check if this position is before or equal to `other`. + * + * @param other A position. + * @return `true` if position is on a smaller line + * or on the same line on a smaller or equal character. + */ + isBeforeOrEqual(other: Position): boolean; + + /** + * Check if this position is after `other`. + * + * @param other A position. + * @return `true` if position is on a greater line + * or on the same line on a greater character. + */ + isAfter(other: Position): boolean; + + /** + * Check if this position is after or equal to `other`. + * + * @param other A position. + * @return `true` if position is on a greater line + * or on the same line on a greater or equal character. + */ + isAfterOrEqual(other: Position): boolean; + + /** + * Check if this position is equal to `other`. + * + * @param other A position. + * @return `true` if the line and character of the given position are equal to + * the line and character of this position. + */ + isEqual(other: Position): boolean; + + /** + * Compare this to `other`. + * + * @param other A position. + * @return A number smaller than zero if this position is before the given position, + * a number greater than zero if this position is after the given position, or zero when + * this and the given position are equal. + */ + compareTo(other: Position): number; + + /** + * Create a new position relative to this position. + * + * @param lineDelta Delta value for the line value, default is `0`. + * @param characterDelta Delta value for the character value, default is `0`. + * @return A position which line and character is the sum of the current line and + * character and the corresponding deltas. + */ + translate(lineDelta?: number, characterDelta?: number): Position; + + /** + * Derived a new position relative to this position. + * + * @param change An object that describes a delta to this position. + * @return A position that reflects the given delta. Will return `this` position if the change + * is not changing anything. + */ + translate(change: { lineDelta?: number; characterDelta?: number; }): Position; + + /** + * Create a new position derived from this position. + * + * @param line Value that should be used as line value, default is the [existing value](#Position.line) + * @param character Value that should be used as character value, default is the [existing value](#Position.character) + * @return A position where line and character are replaced by the given values. + */ + with(line?: number, character?: number): Position; + + /** + * Derived a new position from this position. + * + * @param change An object that describes a change to this position. + * @return A position that reflects the given change. Will return `this` position if the change + * is not changing anything. + */ + with(change: { line?: number; character?: number; }): Position; + } + + /** + * A range represents an ordered pair of two positions. + * It is guaranteed that [start](#Range.start).isBeforeOrEqual([end](#Range.end)) + * + * Range objects are __immutable__. Use the [with](#Range.with), + * [intersection](#Range.intersection), or [union](#Range.union) methods + * to derive new ranges from an existing range. + */ + declare export class Range { + + /** + * The start position. It is before or equal to [end](#Range.end). + */ + +start: Position; + + /** + * The end position. It is after or equal to [start](#Range.start). + */ + +end: Position; + + /** + * Create a new range from two positions. If `start` is not + * before or equal to `end`, the values will be swapped. + * + * @param start A position. + * @param end A position. + */ + constructor(start: Position, end: Position): void; + + /** + * Create a new range from number coordinates. It is a shorter equivalent of + * using `new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter))` + * + * @param startLine A zero-based line value. + * @param startCharacter A zero-based character value. + * @param endLine A zero-based line value. + * @param endCharacter A zero-based character value. + */ + constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number): void; + + /** + * `true` if `start` and `end` are equal. + */ + isEmpty: boolean; + + /** + * `true` if `start.line` and `end.line` are equal. + */ + isSingleLine: boolean; + + /** + * Check if a position or a range is contained in this range. + * + * @param positionOrRange A position or a range. + * @return `true` if the position or range is inside or equal + * to this range. + */ + contains(positionOrRange: Position | Range): boolean; + + /** + * Check if `other` equals this range. + * + * @param other A range. + * @return `true` when start and end are [equal](#Position.isEqual) to + * start and end of this range. + */ + isEqual(other: Range): boolean; + + /** + * Intersect `range` with this range and returns a new range or `undefined` + * if the ranges have no overlap. + * + * @param range A range. + * @return A range of the greater start and smaller end positions. Will + * return undefined when there is no overlap. + */ + intersection(range: Range): ?Range; + + /** + * Compute the union of `other` with this range. + * + * @param other A range. + * @return A range of smaller start position and the greater end position. + */ + union(other: Range): Range; + + /** + * Derived a new range from this range. + * + * @param start A position that should be used as start. The default value is the [current start](#Range.start). + * @param end A position that should be used as end. The default value is the [current end](#Range.end). + * @return A range derived from this range with the given start and end position. + * If start and end are not different `this` range will be returned. + */ + with(start?: Position, end?: Position): Range; + + /** + * Derived a new range from this range. + * + * @param change An object that describes a change to this range. + * @return A range that reflects the given change. Will return `this` range if the change + * is not changing anything. + */ + with(change: { start?: Position, end?: Position }): Range; + } + + /** + * Represents a text selection in an editor. + */ + declare export class Selection extends Range { + + /** + * The position at which the selection starts. + * This position might be before or after [active](#Selection.active). + */ + anchor: Position; + + /** + * The position of the cursor. + * This position might be before or after [anchor](#Selection.anchor). + */ + active: Position; + + /** + * Create a selection from two postions. + * + * @param anchor A position. + * @param active A position. + */ + constructor(anchor: Position, active: Position): void; + + /** + * Create a selection from four coordinates. + * + * @param anchorLine A zero-based line value. + * @param anchorCharacter A zero-based character value. + * @param activeLine A zero-based line value. + * @param activeCharacter A zero-based character value. + */ + constructor(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number): void; + + /** + * A selection is reversed if [active](#Selection.active).isBefore([anchor](#Selection.anchor)). + */ + isReversed: boolean; + } + + /** + * Represents sources that can cause [selection change events](#window.onDidChangeTextEditorSelection). + */ + declare export var TextEditorSelectionChangeKind: { + /** + * Selection changed due to typing in the editor. + */ + +Keyboard: 1, + /** + * Selection change due to clicking in the editor. + */ + +Mouse: 2, + /** + * Selection changed because a command ran. + */ + +Command: 3 + } + declare export type TextEditorSelectionChangeKindType = $Values; + + /** + * Represents an event describing the change in a [text editor's selections](#TextEditor.selections). + */ + declare export interface TextEditorSelectionChangeEvent { + /** + * The [text editor](#TextEditor) for which the selections have changed. + */ + textEditor: TextEditor; + /** + * The new value for the [text editor's selections](#TextEditor.selections). + */ + selections: Selection[]; + /** + * The [change kind](#TextEditorSelectionChangeKind) which has triggered this + * event. Can be `undefined`. + */ + kind?: TextEditorSelectionChangeKindType; + } + + /** + * Represents an event describing the change in a [text editor's options](#TextEditor.options). + */ + declare export interface TextEditorOptionsChangeEvent { + /** + * The [text editor](#TextEditor) for which the options have changed. + */ + textEditor: TextEditor; + /** + * The new value for the [text editor's options](#TextEditor.options). + */ + options: TextEditorOptions; + } + + /** + * Represents an event describing the change of a [text editor's view column](#TextEditor.viewColumn). + */ + declare export interface TextEditorViewColumnChangeEvent { + /** + * The [text editor](#TextEditor) for which the options have changed. + */ + textEditor: TextEditor; + /** + * The new value for the [text editor's view column](#TextEditor.viewColumn). + */ + viewColumn: ViewColumnType; + } + + /** + * Rendering style of the cursor. + */ + declare export var TextEditorCursorStyle: { + /** + * Render the cursor as a vertical thick line. + */ + +Line: 1, + /** + * Render the cursor as a block filled. + */ + +Block: 2, + /** + * Render the cursor as a thick horizontal line. + */ + +Underline: 3, + /** + * Render the cursor as a vertical thin line. + */ + +LineThin: 4, + /** + * Render the cursor as a block outlined. + */ + +BlockOutline: 5, + /** + * Render the cursor as a thin horizontal line. + */ + +UnderlineThin: 6 + }; + declare export type TextEditorCursorStyleType = $Values; + + /** + * Rendering style of the line numbers. + */ + declare export var TextEditorLineNumbersStyle: { + /** + * Do not render the line numbers. + */ + +Off: 0, + /** + * Render the line numbers. + */ + +On: 1, + /** + * Render the line numbers with values relative to the primary cursor location. + */ + +Relative: 2 + } + declare export type TextEditorLineNumbersStyleType = $Values; + + /** + * Represents a [text editor](#TextEditor)'s [options](#TextEditor.options). + */ + declare export interface TextEditorOptions { + + /** + * The size in spaces a tab takes. This is used for two purposes: + * - the rendering width of a tab character; + * - the number of spaces to insert when [insertSpaces](#TextEditorOptions.insertSpaces) is true. + * + * When getting a text editor's options, this property will always be a number (resolved). + * When setting a text editor's options, this property is optional and it can be a number or `"auto"`. + */ + tabSize?: number | string; + + /** + * When pressing Tab insert [n](#TextEditorOptions.tabSize) spaces. + * When getting a text editor's options, this property will always be a boolean (resolved). + * When setting a text editor's options, this property is optional and it can be a boolean or `"auto"`. + */ + insertSpaces?: boolean | string; + + /** + * The rendering style of the cursor in this editor. + * When getting a text editor's options, this property will always be present. + * When setting a text editor's options, this property is optional. + */ + cursorStyle?: TextEditorCursorStyleType; + + /** + * Render relative line numbers w.r.t. the current line number. + * When getting a text editor's options, this property will always be present. + * When setting a text editor's options, this property is optional. + */ + lineNumbers?: TextEditorLineNumbersStyleType; + } + + /** + * Represents a handle to a set of decorations + * sharing the same [styling options](#DecorationRenderOptions) in a [text editor](#TextEditor). + * + * To get an instance of a `TextEditorDecorationType` use + * [createTextEditorDecorationType](#window.createTextEditorDecorationType). + */ + declare export interface TextEditorDecorationType { + + /** + * Internal representation of the handle. + */ + +key: string; + + /** + * Remove this decoration type and all decorations on all text editors using it. + */ + dispose(): void; + } + + /** + * Represents different [reveal](#TextEditor.revealRange) strategies in a text editor. + */ + declare export var TextEditorRevealType: { + /** + * The range will be revealed with as little scrolling as possible. + */ + +Default: 0, + /** + * The range will always be revealed in the center of the viewport. + */ + +InCenter: 1, + /** + * If the range is outside the viewport, it will be revealed in the center of the viewport. + * Otherwise, it will be revealed with as little scrolling as possible. + */ + +InCenterIfOutsideViewport: 2, + /** + * The range will always be revealed at the top of the viewport. + */ + +AtTop: 3 + } + declare export type TextEditorRevealTypeType = $Values; + + /** + * Represents different positions for rendering a decoration in an [overview ruler](#DecorationRenderOptions.overviewRulerLane). + * The overview ruler supports three lanes. + */ + declare export var OverviewRulerLane: { + +Left: 1, + +Center: 2, + +Right: 4, + +Full: 7 + } + declare export type OverviewRulerLaneType = $Values; + + /** + * Describes the behavior of decorations when typing/editing at their edges. + */ + declare export var DecorationRangeBehavior: { + /** + * The decoration's range will widen when edits occur at the start or end. + */ + +OpenOpen: 0, + /** + * The decoration's range will not widen when edits occur at the start of end. + */ + +ClosedClosed: 1, + /** + * The decoration's range will widen when edits occur at the start, but not at the end. + */ + +OpenClosed: 2, + /** + * The decoration's range will widen when edits occur at the end, but not at the start. + */ + +ClosedOpen: 3 + } + declare export type DecorationRangeBehaviorType = $Values; + + /** + * Represents options to configure the behavior of showing a [document](#TextDocument) in an [editor](#TextEditor). + */ + declare export interface TextDocumentShowOptions { + /** + * An optional view column in which the [editor](#TextEditor) should be shown. + * The default is the [one](#ViewColumn.One), other values are adjusted to + * be `Min(column, columnCount + 1)`, the [active](#ViewColumn.Active)-column is + * not adjusted. + */ + viewColumn?: ViewColumnType; + + /** + * An optional flag that when `true` will stop the [editor](#TextEditor) from taking focus. + */ + preserveFocus?: boolean; + + /** + * An optional flag that controls if an [editor](#TextEditor)-tab will be replaced + * with the next editor or if it will be kept. + */ + preview?: boolean; + + /** + * An optional selection to apply for the document in the [editor](#TextEditor). + */ + selection?: Range; + } + + /** + * A reference to one of the workbench colors as defined in https://code.visualstudio.com/docs/getstarted/theme-color-reference. + * Using a theme color is preferred over a custom color as it gives theme authors and users the possibility to change the color. + */ + declare export class ThemeColor { + + /** + * Creates a reference to a theme color. + * @param id of the color. The available colors are listed in https://code.visualstudio.com/docs/getstarted/theme-color-reference. + */ + constructor(id: string): void; + } + + /** + * Represents theme specific rendering styles for a [text editor decoration](#TextEditorDecorationType). + */ + declare export interface ThemableDecorationRenderOptions { + /** + * Background color of the decoration. Use rgba() and define transparent background colors to play well with other decorations. + * Alternatively a color from the color registry can be [referenced](#ThemeColor). + */ + backgroundColor?: string | ThemeColor; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + outline?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'outline' for setting one or more of the individual outline properties. + */ + outlineColor?: string | ThemeColor; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'outline' for setting one or more of the individual outline properties. + */ + outlineStyle?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'outline' for setting one or more of the individual outline properties. + */ + outlineWidth?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + border?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'border' for setting one or more of the individual border properties. + */ + borderColor?: string | ThemeColor; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'border' for setting one or more of the individual border properties. + */ + borderRadius?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'border' for setting one or more of the individual border properties. + */ + borderSpacing?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'border' for setting one or more of the individual border properties. + */ + borderStyle?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + * Better use 'border' for setting one or more of the individual border properties. + */ + borderWidth?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + fontStyle?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + fontWeight?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + textDecoration?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + cursor?: string; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + color?: string | ThemeColor; + + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + letterSpacing?: string; + + /** + * An **absolute path** or an URI to an image to be rendered in the gutter. + */ + gutterIconPath?: string | Uri; + + /** + * Specifies the size of the gutter icon. + * Available values are 'auto', 'contain', 'cover' and any percentage value. + * For further information: https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx + */ + gutterIconSize?: string; + + /** + * The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations. + */ + overviewRulerColor?: string | ThemeColor; + + /** + * Defines the rendering options of the attachment that is inserted before the decorated text + */ + before?: ThemableDecorationAttachmentRenderOptions; + + /** + * Defines the rendering options of the attachment that is inserted after the decorated text + */ + after?: ThemableDecorationAttachmentRenderOptions; + } + + declare export interface ThemableDecorationAttachmentRenderOptions { + /** + * Defines a text content that is shown in the attachment. Either an icon or a text can be shown, but not both. + */ + contentText?: string; + /** + * An **absolute path** or an URI to an image to be rendered in the attachment. Either an icon + * or a text can be shown, but not both. + */ + contentIconPath?: string | Uri; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + border?: string; + /** + * CSS styling property that will be applied to text enclosed by a decoration. + */ + borderColor?: string | ThemeColor; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + fontStyle?: string; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + fontWeight?: string; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + textDecoration?: string; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + color?: string | ThemeColor; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + backgroundColor?: string | ThemeColor; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + margin?: string; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + width?: string; + /** + * CSS styling property that will be applied to the decoration attachment. + */ + height?: string; + } + + /** + * Represents rendering styles for a [text editor decoration](#TextEditorDecorationType). + */ + declare export interface DecorationRenderOptions extends ThemableDecorationRenderOptions { + /** + * Should the decoration be rendered also on the whitespace after the line text. + * Defaults to `false`. + */ + isWholeLine?: boolean; + + /** + * Customize the growing behavior of the decoration when edits occur at the edges of the decoration's range. + * Defaults to `DecorationRangeBehavior.OpenOpen`. + */ + rangeBehavior?: DecorationRangeBehaviorType; + + /** + * The position in the overview ruler where the decoration should be rendered. + */ + overviewRulerLane?: OverviewRulerLaneType; + + /** + * Overwrite options for light themes. + */ + light?: ThemableDecorationRenderOptions; + + /** + * Overwrite options for dark themes. + */ + dark?: ThemableDecorationRenderOptions; + } + + /** + * Represents options for a specific decoration in a [decoration set](#TextEditorDecorationType). + */ + declare export interface DecorationOptions { + + /** + * Range to which this decoration is applied. The range must not be empty. + */ + range: Range; + + /** + * A message that should be rendered when hovering over the decoration. + */ + hoverMessage?: MarkedString | MarkedString[]; + + /** + * Render options applied to the current decoration. For performance reasons, keep the + * number of decoration specific options small, and use decoration types whereever possible. + */ + renderOptions?: DecorationInstanceRenderOptions; + } + + declare export interface ThemableDecorationInstanceRenderOptions { + /** + * Defines the rendering options of the attachment that is inserted before the decorated text + */ + before?: ThemableDecorationAttachmentRenderOptions; + + /** + * Defines the rendering options of the attachment that is inserted after the decorated text + */ + after?: ThemableDecorationAttachmentRenderOptions; + } + + declare export interface DecorationInstanceRenderOptions extends ThemableDecorationInstanceRenderOptions { + /** + * Overwrite options for light themes. + */ + light?: ThemableDecorationInstanceRenderOptions; + + /** + * Overwrite options for dark themes. + */ + dark?: ThemableDecorationInstanceRenderOptions; + } + + /** + * Represents an editor that is attached to a [document](#TextDocument). + */ + declare export interface TextEditor { + + /** + * The document associated with this text editor. The document will be the same for the entire lifetime of this text editor. + */ + document: TextDocument; + + /** + * The primary selection on this text editor. Shorthand for `TextEditor.selections[0]`. + */ + selection: Selection; + + /** + * The selections in this text editor. The primary selection is always at index 0. + */ + selections: Selection[]; + + /** + * Text editor options. + */ + options: TextEditorOptions; + + /** + * The column in which this editor shows. Will be `undefined` in case this + * isn't one of the three main editors, e.g an embedded editor. + */ + viewColumn?: ViewColumnType; + + /** + * Perform an edit on the document associated with this text editor. + * + * The given callback-function is invoked with an [edit-builder](#TextEditorEdit) which must + * be used to make edits. Note that the edit-builder is only valid while the + * callback executes. + * + * @param callback A function which can create edits using an [edit-builder](#TextEditorEdit). + * @param options The undo/redo behavior around this edit. By default, undo stops will be created before and after this edit. + * @return A promise that resolves with a value indicating if the edits could be applied. + */ + edit(callback: (editBuilder: TextEditorEdit) => void, options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable; + + /** + * Insert a [snippet](#SnippetString) and put the editor into snippet mode. "Snippet mode" + * means the editor adds placeholders and additionals cursors so that the user can complete + * or accept the snippet. + * + * @param snippet The snippet to insert in this edit. + * @param location Position or range at which to insert the snippet, defaults to the current editor selection or selections. + * @param options The undo/redo behavior around this edit. By default, undo stops will be created before and after this edit. + * @return A promise that resolves with a value indicating if the snippet could be inserted. Note that the promise does not signal + * that the snippet is completely filled-in or accepted. + */ + insertSnippet(snippet: SnippetString, location?: Position | Range | Position[] | Range[], options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable; + + /** + * Adds a set of decorations to the text editor. If a set of decorations already exists with + * the given [decoration type](#TextEditorDecorationType), they will be replaced. + * + * @see [createTextEditorDecorationType](#window.createTextEditorDecorationType). + * + * @param decorationType A decoration type. + * @param rangesOrOptions Either [ranges](#Range) or more detailed [options](#DecorationOptions). + */ + setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: Range[] | DecorationOptions[]): void; + + /** + * Scroll as indicated by `revealType` in order to reveal the given range. + * + * @param range A range. + * @param revealType The scrolling strategy for revealing `range`. + */ + revealRange(range: Range, revealType?: TextEditorRevealTypeType): void; + } + + /** + * Represents an end of line character sequence in a [document](#TextDocument). + */ + declare export var EndOfLine: { + /** + * The line feed `\n` character. + */ + +LF: 1, + /** + * The carriage return line feed `\r\n` sequence. + */ + +CRLF: 2 + } + declare export type EndOfLineType = $Values; + + /** + * A complex edit that will be applied in one transaction on a TextEditor. + * This holds a description of the edits and if the edits are valid (i.e. no overlapping regions, document was not changed in the meantime, etc.) + * they can be applied on a [document](#TextDocument) associated with a [text editor](#TextEditor). + * + */ + declare export interface TextEditorEdit { + /** + * Replace a certain text region with a new value. + * You can use \r\n or \n in `value` and they will be normalized to the current [document](#TextDocument). + * + * @param location The range this operation should remove. + * @param value The new text this operation should insert after removing `location`. + */ + replace(location: Position | Range | Selection, value: string): void; + + /** + * Insert text at a location. + * You can use \r\n or \n in `value` and they will be normalized to the current [document](#TextDocument). + * Although the equivalent text edit can be made with [replace](#TextEditorEdit.replace), `insert` will produce a different resulting selection (it will get moved). + * + * @param location The position where the new text should be inserted. + * @param value The new text this operation should insert. + */ + insert(location: Position, value: string): void; + + /** + * Delete a certain text region. + * + * @param location The range this operation should remove. + */ + delete(location: Range | Selection): void; + + /** + * Set the end of line sequence. + * + * @param endOfLine The new end of line for the [document](#TextDocument). + */ + setEndOfLine(endOfLine: EndOfLineType): void; + } + + /** + * A universal resource identifier representing either a file on disk + * or another resource, like untitled resources. + */ + declare export class Uri { + + /** + * Create an URI from a file system path. The [scheme](#Uri.scheme) + * will be `file`. + * + * @param path A file system or UNC path. + * @return A new Uri instance. + */ + static file(path: string): Uri; + + /** + * Create an URI from a string. Will throw if the given value is not + * valid. + * + * @param value The string value of an Uri. + * @return A new Uri instance. + */ + static parse(value: string): Uri; + + /** + * Use the `file` and `parse` factory functions to create new `Uri` objects. + */ + // private constructor(scheme: string, authority: string, path: string, query: string, fragment: string): void; + + /** + * Scheme is the `http` part of `http://www.msft.com/some/path?query#fragment`. + * The part before the first colon. + */ + +scheme: string; + + /** + * Authority is the `www.msft.com` part of `http://www.msft.com/some/path?query#fragment`. + * The part between the first double slashes and the next slash. + */ + +authority: string; + + /** + * Path is the `/some/path` part of `http://www.msft.com/some/path?query#fragment`. + */ + +path: string; + + /** + * Query is the `query` part of `http://www.msft.com/some/path?query#fragment`. + */ + +query: string; + + /** + * Fragment is the `fragment` part of `http://www.msft.com/some/path?query#fragment`. + */ + +fragment: string; + + /** + * The string representing the corresponding file system path of this Uri. + * + * Will handle UNC paths and normalize windows drive letters to lower-case. Also + * uses the platform specific path separator. Will *not* validate the path for + * invalid characters and semantics. Will *not* look at the scheme of this Uri. + */ + +fsPath: string; + + /** + * Derive a new Uri from this Uri. + * + * ```ts + * let file = Uri.parse('before:some/file/path'); + * let other = file.with({ scheme: 'after' }); + * assert.ok(other.toString() === 'after:some/file/path'); + * ``` + * + * @param change An object that describes a change to this Uri. To unset components use `null` or + * the empty string. + * @return A new Uri that reflects the given change. Will return `this` Uri if the change + * is not changing anything. + */ + with(change: { scheme?: string; authority?: string; path?: string; query?: string; fragment?: string }): Uri; + + /** + * Returns a string representation of this Uri. The representation and normalization + * of a URI depends on the scheme. The resulting string can be safely used with + * [Uri.parse](#Uri.parse). + * + * @param skipEncoding Do not percentage-encode the result, defaults to `false`. Note that + * the `#` and `?` characters occuring in the path will always be encoded. + * @returns A string representation of this Uri. + */ + toString(skipEncoding?: boolean): string; + + /** + * Returns a JSON representation of this Uri. + * + * @return An object. + */ + toJSON(): any; + } + + /** + * A cancellation token is passed to an asynchronous or long running + * operation to request cancellation, like cancelling a request + * for completion items because the user continued to type. + * + * To get an instance of a `CancellationToken` use a + * [CancellationTokenSource](#CancellationTokenSource). + */ + declare export interface CancellationToken { + + /** + * Is `true` when the token has been cancelled, `false` otherwise. + */ + isCancellationRequested: boolean; + + /** + * An [event](#Event) which fires upon cancellation. + */ + onCancellationRequested: Event; + } + + /** + * A cancellation source creates and controls a [cancellation token](#CancellationToken). + */ + declare export class CancellationTokenSource { + + /** + * The cancellation token of this source. + */ + token: CancellationToken; + + /** + * Signal cancellation on the token. + */ + cancel(): void; + + /** + * Dispose object and free resources. Will call [cancel](#CancellationTokenSource.cancel). + */ + dispose(): void; + } + + declare export type IDisposable = { + dispose(): any; + }; + + /** + * Represents a type which can release resources, such + * as event listening or a timer. + */ + declare export class Disposable { + + /** + * Combine many disposable-likes into one. Use this method + * when having objects with a dispose function which are not + * instances of Disposable. + * + * @param disposableLikes Objects that have at least a `dispose`-function member. + * @return Returns a new disposable which, upon dispose, will + * dispose all provided disposables. + */ + static from(...disposableLikes: { +dispose: () => any }[]): Disposable; + + /** + * Creates a new Disposable calling the provided function + * on dispose. + * @param callOnDispose Function that disposes something. + */ + constructor(callOnDispose: Function): void; + + /** + * Dispose this object. + */ + dispose(): any; + } + + /** + * Represents a typed event. + * + * A function that represents an event to which you subscribe by calling it with + * a listener function as argument. + * + * @sample `item.onDidChange(function(event) { console.log("Event happened: " + event); });` + */ + declare export interface Event { + + /** + * A function that represents an event to which you subscribe by calling it with + * a listener function as argument. + * + * @param listener The listener function will be called when the event happens. + * @param thisArgs The `this`-argument which will be used when calling the event listener. + * @param disposables An array to which a [disposable](#Disposable) will be added. + * @return A disposable which unsubscribes the event listener. + */ + (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable; + } + + /** + * An event emitter can be used to create and manage an [event](#Event) for others + * to subscribe to. One emitter always owns one event. + * + * Use this class if you want to provide event from within your extension, for instance + * inside a [TextDocumentContentProvider](#TextDocumentContentProvider) or when providing + * API to other extensions. + */ + declare export class EventEmitter { + + /** + * The event listeners can subscribe to. + */ + event: Event; + + /** + * Notify all subscribers of the [event](EventEmitter#event). Failure + * of one or more listener will not fail this function call. + * + * @param data The event object. + */ + fire(data?: T): void; + + /** + * Dispose this object and free resources. + */ + dispose(): void; + } + + /** + * A file system watcher notifies about changes to files and folders + * on disk. + * + * To get an instance of a `FileSystemWatcher` use + * [createFileSystemWatcher](#workspace.createFileSystemWatcher). + */ + declare export interface FileSystemWatcher extends Disposable { + + /** + * true if this file system watcher has been created such that + * it ignores creation file system events. + */ + ignoreCreateEvents: boolean; + + /** + * true if this file system watcher has been created such that + * it ignores change file system events. + */ + ignoreChangeEvents: boolean; + + /** + * true if this file system watcher has been created such that + * it ignores delete file system events. + */ + ignoreDeleteEvents: boolean; + + /** + * An event which fires on file/folder creation. + */ + onDidCreate: Event; + + /** + * An event which fires on file/folder change. + */ + onDidChange: Event; + + /** + * An event which fires on file/folder deletion. + */ + onDidDelete: Event; + } + + /** + * A text document content provider allows to add documents + * to the editor, such as source from a dll or generated html from md. + * + * Content providers are [registered](#workspace.registerTextDocumentContentProvider) + * for a [uri-scheme](#Uri.scheme). When a uri with that scheme is to + * be [loaded](#workspace.openTextDocument) the content provider is + * asked. + */ + declare export interface TextDocumentContentProvider { + + /** + * An event to signal a resource has changed. + */ + onDidChange?: Event; + + /** + * Provide textual content for a given uri. + * + * The editor will use the returned string-content to create a readonly + * [document](#TextDocument). Resources allocated should be released when + * the corresponding document has been [closed](#workspace.onDidCloseTextDocument). + * + * @param uri An uri which scheme matches the scheme this provider was [registered](#workspace.registerTextDocumentContentProvider) for. + * @param token A cancellation token. + * @return A string or a thenable that resolves to such. + */ + provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult; + } + + /** + * Represents an item that can be selected from + * a list of items. + */ + declare export interface QuickPickItem { + + /** + * A human readable string which is rendered prominent. + */ + label: string; + + /** + * A human readable string which is rendered less prominent. + */ + description: string; + + /** + * A human readable string which is rendered less prominent. + */ + detail?: string; + } + + /** + * Options to configure the behavior of the quick pick UI. + */ + declare export interface QuickPickOptions { + /** + * An optional flag to include the description when filtering the picks. + */ + matchOnDescription?: boolean; + + /** + * An optional flag to include the detail when filtering the picks. + */ + matchOnDetail?: boolean; + + /** + * An optional string to show as place holder in the input box to guide the user what to pick on. + */ + placeHolder?: string; + + /** + * Set to `true` to keep the picker open when focus moves to another part of the editor or to another window. + */ + ignoreFocusOut?: boolean; + + /** + * An optional function that is invoked whenever an item is selected. + */ + +onDidSelectItem?: (item: QuickPickItem | string) => any; + } + + /** + * Options to configure the behaviour of the [workspace folder](#WorkspaceFolder) pick UI. + */ + declare export interface WorkspaceFolderPickOptions { + + /** + * An optional string to show as place holder in the input box to guide the user what to pick on. + */ + placeHolder?: string; + + /** + * Set to `true` to keep the picker open when focus moves to another part of the editor or to another window. + */ + ignoreFocusOut?: boolean; + } + + /** + * Options to configure the behaviour of a file open dialog. + * + * * Note 1: A dialog can select files, folders, or both. This is not true for Windows + * which enforces to open either files or folder, but *not both*. + * * Note 2: Explictly setting `canSelectFiles` and `canSelectFolders` to `false` is futile + * and the editor then silently adjusts the options to select files. + */ + declare export interface OpenDialogOptions { + /** + * The resource the dialog shows when opened. + */ + defaultUri?: Uri; + + /** + * A human-readable string for the open button. + */ + openLabel?: string; + + /** + * Allow to select files, defaults to `true`. + */ + canSelectFiles?: boolean; + + /** + * Allow to select folders, defaults to `false`. + */ + canSelectFolders?: boolean; + + /** + * Allow to select many files or folders. + */ + canSelectMany?: boolean; + + /** + * A set of file filters that are used by the dialog. Each entry is a human readable label, + * like "TypeScript", and an array of extensions, e.g. + * ```ts + * { + * 'Images': ['png', 'jpg'] + * 'TypeScript': ['ts', 'tsx'] + * } + * ``` + */ + filters?: { [name: string]: string[] }; + } + + /** + * Options to configure the behaviour of a file save dialog. + */ + declare export interface SaveDialogOptions { + /** + * The resource the dialog shows when opened. + */ + defaultUri?: Uri; + + /** + * A human-readable string for the save button. + */ + saveLabel?: string; + + /** + * A set of file filters that are used by the dialog. Each entry is a human readable label, + * like "TypeScript", and an array of extensions, e.g. + * ```ts + * { + * 'Images': ['png', 'jpg'] + * 'TypeScript': ['ts', 'tsx'] + * } + * ``` + */ + filters?: { [name: string]: string[] }; + } + + /** + * Represents an action that is shown with an information, warning, or + * error message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * @see [showWarningMessage](#window.showWarningMessage) + * @see [showErrorMessage](#window.showErrorMessage) + */ + declare export interface MessageItem { + + /** + * A short title like 'Retry', 'Open Log' etc. + */ + title: string; + + /** + * Indicates that this item replaces the default + * 'Close' action. + */ + isCloseAffordance?: boolean; + } + + /** + * Options to configure the behavior of the message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * @see [showWarningMessage](#window.showWarningMessage) + * @see [showErrorMessage](#window.showErrorMessage) + */ + declare export interface MessageOptions { + + /** + * Indicates that this message should be modal. + */ + modal?: boolean; + } + + /** + * Options to configure the behavior of the input box UI. + */ + declare export interface InputBoxOptions { + + /** + * The value to prefill in the input box. + */ + value?: string; + + /** + * Selection of the prefilled [`value`](#InputBoxOptions.value). Defined as tuple of two number where the + * first is the inclusive start index and the second the exclusive end index. When `undefined` the whole + * word will be selected, when empty (start equals end) only the cursor will be set, + * otherwise the defined range will be selected. + */ + valueSelection?: [number, number]; + + /** + * The text to display underneath the input box. + */ + prompt?: string; + + /** + * An optional string to show as place holder in the input box to guide the user what to type. + */ + placeHolder?: string; + + /** + * Set to `true` to show a password prompt that will not show the typed value. + */ + password?: boolean; + + /** + * Set to `true` to keep the input box open when focus moves to another part of the editor or to another window. + */ + ignoreFocusOut?: boolean; + + /** + * An optional function that will be called to validate input and to give a hint + * to the user. + * + * @param value The current value of the input box. + * @return A human readable string which is presented as diagnostic message. + * Return `undefined`, `null`, or the empty string when 'value' is valid. + */ + +validateInput?: (value: string) => ?string | Thenable; + } + + /** + * A relative pattern is a helper to construct glob patterns that are matched + * relatively to a base path. The base path can either be an absolute file path + * or a [workspace folder](#WorkspaceFolder). + */ + declare export class RelativePattern { + + /** + * A base file path to which this pattern will be matched against relatively. + */ + base: string; + + /** + * A file glob pattern like `*.{ts,js}` that will be matched on file paths + * relative to the base path. + * + * Example: Given a base of `/home/work/folder` and a file path of `/home/work/folder/index.js`, + * the file glob pattern will match on `index.js`. + */ + pattern: string; + + /** + * Creates a new relative pattern object with a base path and pattern to match. This pattern + * will be matched on file paths relative to the base path. + * + * @param base A base file path to which this pattern will be matched against relatively. + * @param pattern A file glob pattern like `*.{ts,js}` that will be matched on file paths + * relative to the base path. + */ + constructor(base: WorkspaceFolder | string, pattern: string): void + } + + /** + * A file glob pattern to match file paths against. This can either be a glob pattern string + * (like `**​/*.{ts,js}` or `*.{ts,js}`) or a [relative pattern](#RelativePattern). + * + * Glob patterns can have the following syntax: + * * `*` to match one or more characters in a path segment + * * `?` to match on one character in a path segment + * * `**` to match any number of path segments, including none + * * `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) + * * `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) + * * `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) + */ + declare export type GlobPattern = string | RelativePattern; + + /** + * A document filter denotes a document by different properties like + * the [language](#TextDocument.languageId), the [scheme](#Uri.scheme) of + * its resource, or a glob-pattern that is applied to the [path](#TextDocument.fileName). + * + * @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` + * @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**​/package.json' }` + */ + declare export interface DocumentFilter { + + /** + * A language id, like `typescript`. + */ + language?: string; + + /** + * A Uri [scheme](#Uri.scheme), like `file` or `untitled`. + */ + scheme?: string; + + /** + * A [glob pattern](#GlobPattern) that is matched on the absolute path of the document. Use a [relative pattern](#RelativePattern) + * to filter documents to a [workspace folder](#WorkspaceFolder). + */ + pattern?: GlobPattern; + } + + /** + * A language selector is the combination of one or many language identifiers + * and [language filters](#DocumentFilter). + * + * @sample `let sel:DocumentSelector = 'typescript'`; + * @sample `let sel:DocumentSelector = ['typescript', { language: 'json', pattern: '**​/tsconfig.json' }]`; + */ + declare export type DocumentSelector = string | DocumentFilter | (string | DocumentFilter)[]; + + /** + * A provider result represents the values a provider, like the [`HoverProvider`](#HoverProvider), + * may return. For once this is the actual result type `T`, like `Hover`, or a thenable that resolves + * to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a + * thenable. + * + * The snippets below are all valid implementions of the [`HoverProvider`](#HoverProvider): + * + * ```ts + * let a: HoverProvider = { + * provideHover(doc, pos, token): ProviderResult { + * return new Hover('Hello World'); + * } + * } + * + * let b: HoverProvider = { + * provideHover(doc, pos, token): ProviderResult { + * return new Promise(resolve => { + * resolve(new Hover('Hello World')); + * }); + * } + * } + * + * let c: HoverProvider = { + * provideHover(doc, pos, token): ProviderResult { + * return; // undefined + * } + * } + * ``` + */ + declare export type ProviderResult = ?T | Thenable; + + /** + * Kind of a code action. + * + * Kinds are a hierarchical list of identifiers separated by `.`, e.g. `"refactor.extract.function"`. + */ + declare export class CodeActionKind { + /** + * Empty kind. + */ + static +Empty: CodeActionKind; + + /** + * Base kind for quickfix actions. + */ + static +QuickFix: CodeActionKind; + + /** + * Base kind for refactoring actions. + */ + static +Refactor: CodeActionKind; + + /** + * Base kind for refactoring extraction actions. + * + * Example extract actions: + * + * - Extract method + * - Extract function + * - Extract variable + * - Extract interface from class + * - ... + */ + static +RefactorExtract: CodeActionKind; + + /** + * Base kind for refactoring inline actions. + * + * Example inline actions: + * + * - Inline function + * - Inline variable + * - Inline constant + * - ... + */ + static +RefactorInline: CodeActionKind; + + /** + * Base kind for refactoring rewrite actions. + * + * Example rewrite actions: + * + * - Convert JavaScript function to class + * - Add or remove parameter + * - Encapsulate field + * - Make method static + * - Move method to base class + * - ... + */ + static +RefactorRewrite: CodeActionKind; + + // private constructor(value: string): void; + + /** + * String value of the kind, e.g. `"refactor.extract.function"`. + */ + +value?: string; + + /** + * Create a new kind by appending a more specific selector to the current kind. + * + * Does not modify the current kind. + */ + append(parts: string): CodeActionKind; + + /** + * Does this kind contain `other`? + * + * The kind `"refactor"` for example contains `"refactor.extract"` and ``"refactor.extract.function"`, but not `"unicorn.refactor.extract"` or `"refactory.extract"` + * + * @param other Kind to check. + */ + contains(other: CodeActionKind): boolean; + } + + /** + * Contains additional diagnostic information about the context in which + * a [code action](#CodeActionProvider.provideCodeActions) is run. + */ + declare export interface CodeActionContext { + /** + * An array of diagnostics. + */ + +diagnostics: Diagnostic[]; + + /** + * Requested kind of actions to return. + * + * Actions not of this kind are filtered out before being shown by the lightbulb. + */ + +only?: CodeActionKind; + } + + /** + * A code action represents a change that can be performed in code, e.g. to fix a problem or + * to refactor code. + * + * A CodeAction must set either [`edit`](CodeAction#edit) and/or a [`command`](CodeAction#command). If both are supplied, the `edit` is applied first, then the command is executed. + */ + declare export class CodeAction { + + /** + * A short, human-readable, title for this code action. + */ + title: string; + + /** + * A [workspace edit](#WorkspaceEdit) this code action performs. + */ + edit?: WorkspaceEdit; + + /** + * [Diagnostics](#Diagnostic) that this code action resolves. + */ + diagnostics?: Diagnostic[]; + + /** + * A [command](#Command) this code action executes. + */ + command?: Command; + + /** + * [Kind](#CodeActionKind) of the code action. + * + * Used to filter code actions. + */ + kind?: CodeActionKind; + + /** + * Creates a new code action. + * + * A code action must have at least a [title](#CodeAction.title) and either [edits](#CodeAction.edit) + * or a [command](#CodeAction.command). + * + * @param title The title of the code action. + * @param kind The kind of the code action. + */ + constructor(title: string, kind?: CodeActionKind): void; + } + + /** + * The code action interface defines the contract between extensions and + * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature. + * + * A code action can be any command that is [known](#commands.getCommands) to the system. + */ + declare export interface CodeActionProvider { + + /** + * Provide commands for the given document and range. + * + * @param document The document in which the command was invoked. + * @param range The range for which the command was invoked. + * @param context Context carrying additional information. + * @param token A cancellation token. + * @return An array of commands, quick fixes, or refactorings or a thenable of such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult<(Command | CodeAction)[]>; + } + + /** + * A code lens represents a [command](#Command) that should be shown along with + * source text, like the number of references, a way to run tests, etc. + * + * A code lens is _unresolved_ when no command is associated to it. For performance + * reasons the creation of a code lens and resolving should be done to two stages. + * + * @see [CodeLensProvider.provideCodeLenses](#CodeLensProvider.provideCodeLenses) + * @see [CodeLensProvider.resolveCodeLens](#CodeLensProvider.resolveCodeLens) + */ + declare export class CodeLens { + + /** + * The range in which this code lens is valid. Should only span a single line. + */ + range: Range; + + /** + * The command this code lens represents. + */ + command?: Command; + + /** + * `true` when there is a command associated. + */ + +isResolved: boolean; + + /** + * Creates a new code lens object. + * + * @param range The range to which this code lens applies. + * @param command The command associated to this code lens. + */ + constructor(range: Range, command?: Command): void; + } + + /** + * A code lens provider adds [commands](#Command) to source text. The commands will be shown + * as dedicated horizontal lines in between the source text. + */ + declare export interface CodeLensProvider { + + /** + * An optional event to signal that the code lenses from this provider have changed. + */ + onDidChangeCodeLenses?: Event; + + /** + * Compute a list of [lenses](#CodeLens). This call should return as fast as possible and if + * computing the commands is expensive implementors should only return code lens objects with the + * range set and implement [resolve](#CodeLensProvider.resolveCodeLens). + * + * @param document The document in which the command was invoked. + * @param token A cancellation token. + * @return An array of code lenses or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult; + + /** + * This function will be called for each visible code lens, usually when scrolling and after + * calls to [compute](#CodeLensProvider.provideCodeLenses)-lenses. + * + * @param codeLens code lens that must be resolved. + * @param token A cancellation token. + * @return The given, resolved code lens or thenable that resolves to such. + */ + +resolveCodeLens?: (codeLens: CodeLens, token: CancellationToken) => ProviderResult; + } + + /** + * The definition of a symbol represented as one or many [locations](#Location). + * For most programming languages there is only one location at which a symbol is + * defined. + */ + declare export type Definition = Location | Location[]; + + /** + * The definition provider interface defines the contract between extensions and + * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition) + * and peek definition features. + */ + declare export interface DefinitionProvider { + + /** + * Provide the definition of the symbol at the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return A definition or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * The implemenetation provider interface defines the contract between extensions and + * the go to implementation feature. + */ + declare export interface ImplementationProvider { + + /** + * Provide the implementations of the symbol at the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return A definition or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * The type definition provider defines the contract between extensions and + * the go to type definition feature. + */ + declare export interface TypeDefinitionProvider { + + /** + * Provide the type definition of the symbol at the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return A definition or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideTypeDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * The MarkdownString represents human readable text that supports formatting via the + * markdown syntax. Standard markdown is supported, also tables, but no embedded html. + */ + declare export class MarkdownString { + + /** + * The markdown string. + */ + value: string; + + /** + * Indicates that this markdown string is from a trusted source. Only *trusted* + * markdown supports links that execute commands, e.g. `[Run it](command:myCommandId)`. + */ + isTrusted?: boolean; + + /** + * Creates a new markdown string with the given value. + * + * @param value Optional, initial value. + */ + constructor(value?: string): void; + + /** + * Appends and escapes the given string to this markdown string. + * @param value Plain text. + */ + appendText(value: string): MarkdownString; + + /** + * Appends the given string 'as is' to this markdown string. + * @param value Markdown string. + */ + appendMarkdown(value: string): MarkdownString; + + /** + * Appends the given string as codeblock using the provided language. + * @param value A code snippet. + * @param language An optional [language identifier](#languages.getLanguages). + */ + appendCodeblock(value: string, language?: string): MarkdownString; + } + + /** + * ~~MarkedString can be used to render human readable text. It is either a markdown string + * or a code-block that provides a language and a code snippet. Note that + * markdown strings will be sanitized - that means html will be escaped.~~ + * + * @deprecated This type is deprecated, please use [`MarkdownString`](#MarkdownString) instead. + */ + declare export type MarkedString = MarkdownString | string | { language: string; value: string }; + + /** + * A hover represents additional information for a symbol or word. Hovers are + * rendered in a tooltip-like widget. + */ + declare export class Hover { + + /** + * The contents of this hover. + */ + contents: MarkedString[]; + + /** + * The range to which this hover applies. When missing, the + * editor will use the range at the current position or the + * current position itself. + */ + range?: Range; + + /** + * Creates a new hover object. + * + * @param contents The contents of the hover. + * @param range The range to which the hover applies. + */ + constructor(contents: MarkedString | MarkedString[], range?: Range): void; + } + + /** + * The hover provider interface defines the contract between extensions and + * the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature. + */ + declare export interface HoverProvider { + + /** + * Provide a hover for the given position and document. Multiple hovers at the same + * position will be merged by the editor. A hover can have a range which defaults + * to the word range at the position when omitted. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return A hover or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * A document highlight kind. + */ + declare export var DocumentHighlightKind: { + + /** + * A textual occurrence. + */ + +Text: 0, + + /** + * Read-access of a symbol, like reading a variable. + */ + +Read: 1, + + /** + * Write-access of a symbol, like writing to a variable. + */ + +Write: 2 + } + declare export type DocumentHighlightKindType = $Values; + + /** + * A document highlight is a range inside a text document which deserves + * special attention. Usually a document highlight is visualized by changing + * the background color of its range. + */ + declare export class DocumentHighlight { + + /** + * The range this highlight applies to. + */ + range: Range; + + /** + * The highlight kind, default is [text](#DocumentHighlightKind.Text). + */ + kind?: DocumentHighlightKindType; + + /** + * Creates a new document highlight object. + * + * @param range The range the highlight applies to. + * @param kind The highlight kind, default is [text](#DocumentHighlightKind.Text). + */ + constructor(range: Range, kind?: DocumentHighlightKindType): void; + } + + /** + * The document highlight provider interface defines the contract between extensions and + * the word-highlight-feature. + */ + declare export interface DocumentHighlightProvider { + + /** + * Provide a set of document highlights, like all occurrences of a variable or + * all exit-points of a function. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentHighlights(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * A symbol kind. + */ + declare export var SymbolKind: { + +File: 0, + +Module: 1, + +Namespace: 2, + +Package: 3, + +Class: 4, + +Method: 5, + +Property: 6, + +Field: 7, + +Constructor: 8, + +Enum: 9, + +Interface: 10, + +Function: 11, + +Variable: 12, + +Constant: 13, + +String: 14, + +Number: 15, + +Boolean: 16, + +Array: 17, + +Object: 18, + +Key: 19, + +Null: 20, + +EnumMember: 21, + +Struct: 22, + +Event: 23, + +Operator: 24, + +TypeParameter: 25 + } + declare export type SymbolKindType = $Values; + + /** + * Represents information about programming constructs like variables, classes, + * interfaces etc. + */ + declare export class SymbolInformation { + + /** + * The name of this symbol. + */ + name: string; + + /** + * The name of the symbol containing this symbol. + */ + containerName: string; + + /** + * The kind of this symbol. + */ + kind: SymbolKindType; + + /** + * The location of this symbol. + */ + location: Location; + + /** + * Creates a new symbol information object. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param containerName The name of the symbol containing the symbol. + * @param location The the location of the symbol. + */ + constructor(name: string, kind: SymbolKindType, containerName: string, location: Location): void; + + /** + * ~~Creates a new symbol information object.~~ + * + * @deprecated Please use the constructor taking a [location](#Location) object. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the location of the symbol. + * @param uri The resource of the location of symbol, defaults to the current document. + * @param containerName The name of the symbol containing the symbol. + */ + constructor(name: string, kind: SymbolKindType, range: Range, uri?: Uri, containerName?: string): void; + } + + /** + * The document symbol provider interface defines the contract between extensions and + * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-symbol)-feature. + */ + declare export interface DocumentSymbolProvider { + + /** + * Provide symbol information for the given document. + * + * @param document The document in which the command was invoked. + * @param token A cancellation token. + * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult; + } + + /** + * The workspace symbol provider interface defines the contract between extensions and + * the [symbol search](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name)-feature. + */ + declare export interface WorkspaceSymbolProvider { + + /** + * Project-wide search for a symbol matching the given query string. It is up to the provider + * how to search given the query string, like substring, indexOf etc. To improve performance implementors can + * skip the [location](#SymbolInformation.location) of symbols and implement `resolveWorkspaceSymbol` to do that + * later. + * + * The `query`-parameter should be interpreted in a *relaxed way* as the editor will apply its own highlighting + * and scoring on the results. A good rule of thumb is to match case-insensitive and to simply check that the + * characters of *query* appear in their order in a candidate symbol. Don't use prefix, substring, or similar + * strict matching. + * + * @param query A non-empty query string. + * @param token A cancellation token. + * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideWorkspaceSymbols(query: string, token: CancellationToken): ProviderResult; + + /** + * Given a symbol fill in its [location](#SymbolInformation.location). This method is called whenever a symbol + * is selected in the UI. Providers can implement this method and return incomplete symbols from + * [`provideWorkspaceSymbols`](#WorkspaceSymbolProvider.provideWorkspaceSymbols) which often helps to improve + * performance. + * + * @param symbol The symbol that is to be resolved. Guaranteed to be an instance of an object returned from an + * earlier call to `provideWorkspaceSymbols`. + * @param token A cancellation token. + * @return The resolved symbol or a thenable that resolves to that. When no result is returned, + * the given `symbol` is used. + */ + +resolveWorkspaceSymbol?: (symbol: SymbolInformation, token: CancellationToken) => ProviderResult; + } + + /** + * Value-object that contains additional information when + * requesting references. + */ + declare export interface ReferenceContext { + + /** + * Include the declaration of the current symbol. + */ + includeDeclaration: boolean; + } + + /** + * The reference provider interface defines the contract between extensions and + * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature. + */ + declare export interface ReferenceProvider { + + /** + * Provide a set of project-wide references for the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param context + * @param token A cancellation token. + * @return An array of locations or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult; + } + + /** + * A text edit represents edits that should be applied + * to a document. + */ + declare export class TextEdit { + + /** + * Utility to create a replace edit. + * + * @param range A range. + * @param newText A string. + * @return A new text edit object. + */ + static replace(range: Range, newText: string): TextEdit; + + /** + * Utility to create an insert edit. + * + * @param position A position, will become an empty range. + * @param newText A string. + * @return A new text edit object. + */ + static insert(position: Position, newText: string): TextEdit; + + /** + * Utility to create a delete edit. + * + * @param range A range. + * @return A new text edit object. + */ + static delete(range: Range): TextEdit; + + /** + * Utility to create an eol-edit. + * + * @param eol An eol-sequence + * @return A new text edit object. + */ + static setEndOfLine(eol: EndOfLineType): TextEdit; + + /** + * The range this edit applies to. + */ + range: Range; + + /** + * The string this edit will insert. + */ + newText: string; + + /** + * The eol-sequence used in the document. + * + * *Note* that the eol-sequence will be applied to the + * whole document. + */ + newEol: EndOfLineType; + + /** + * Create a new TextEdit. + * + * @param range A range. + * @param newText A string. + */ + constructor(range: Range, newText: string): void; + } + + /** + * A workspace edit represents textual and files changes for + * multiple resources and documents. + */ + declare export class WorkspaceEdit { + + /** + * The number of affected resources. + */ + +size: number; + + /** + * Replace the given range with given text for the given resource. + * + * @param uri A resource identifier. + * @param range A range. + * @param newText A string. + */ + replace(uri: Uri, range: Range, newText: string): void; + + /** + * Insert the given text at the given position. + * + * @param uri A resource identifier. + * @param position A position. + * @param newText A string. + */ + insert(uri: Uri, position: Position, newText: string): void; + + /** + * Delete the text at the given range. + * + * @param uri A resource identifier. + * @param range A range. + */ + delete(uri: Uri, range: Range): void; + + /** + * Check if this edit affects the given resource. + * @param uri A resource identifier. + * @return `true` if the given resource will be touched by this edit. + */ + has(uri: Uri): boolean; + + /** + * Set (and replace) text edits for a resource. + * + * @param uri A resource identifier. + * @param edits An array of text edits. + */ + set(uri: Uri, edits: TextEdit[]): void; + + /** + * Get the text edits for a resource. + * + * @param uri A resource identifier. + * @return An array of text edits. + */ + get(uri: Uri): TextEdit[]; + + /** + * Get all text edits grouped by resource. + * + * @return A shallow copy of `[Uri, TextEdit[]]`-tuples. + */ + entries(): [Uri, TextEdit[]][]; + } + + /** + * A snippet string is a template which allows to insert text + * and to control the editor cursor when insertion happens. + * + * A snippet can define tab stops and placeholders with `$1`, `$2` + * and `${3:foo}`. `$0` defines the final tab stop, it defaults to + * the end of the snippet. Variables are defined with `$name` and + * `${name:default value}`. The full snippet syntax is documented + * [here](http://code.visualstudio.com/docs/editor/userdefinedsnippets#_creating-your-own-snippets). + */ + declare export class SnippetString { + + /** + * The snippet string. + */ + value: string; + + constructor(value?: string): void; + + /** + * Builder-function that appends the given string to + * the [`value`](#SnippetString.value) of this snippet string. + * + * @param string A value to append 'as given'. The string will be escaped. + * @return This snippet string. + */ + appendText(string: string): SnippetString; + + /** + * Builder-function that appends a tabstop (`$1`, `$2` etc) to + * the [`value`](#SnippetString.value) of this snippet string. + * + * @param number The number of this tabstop, defaults to an auto-incremet + * value starting at 1. + * @return This snippet string. + */ + appendTabstop(number?: number): SnippetString; + + /** + * Builder-function that appends a placeholder (`${1:value}`) to + * the [`value`](#SnippetString.value) of this snippet string. + * + * @param value The value of this placeholder - either a string or a function + * with which a nested snippet can be created. + * @param number The number of this tabstop, defaults to an auto-incremet + * value starting at 1. + * @return This snippet string. + */ + appendPlaceholder(value: string | ((snippet: SnippetString) => any), number?: number): SnippetString; + + /** + * Builder-function that appends a variable (`${VAR}`) to + * the [`value`](#SnippetString.value) of this snippet string. + * + * @param name The name of the variable - excluding the `$`. + * @param defaultValue The default value which is used when the variable name cannot + * be resolved - either a string or a function with which a nested snippet can be created. + * @return This snippet string. + */ + appendVariable(name: string, defaultValue: string | ((snippet: SnippetString) => any)): SnippetString; + } + + /** + * The rename provider interface defines the contract between extensions and + * the [rename](https://code.visualstudio.com/docs/editor/editingevolved#_rename-symbol)-feature. + */ + declare export interface RenameProvider { + + /** + * Provide an edit that describes changes that have to be made to one + * or many resources to rename a symbol to a different name. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param newName The new name of the symbol. If the given name is not valid, the provider must return a rejected promise. + * @param token A cancellation token. + * @return A workspace edit or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): ProviderResult; + } + + /** + * Value-object describing what options formatting should use. + */ + declare export interface FormattingOptions { + + /** + * Size of a tab in spaces. + */ + tabSize: number; + + /** + * Prefer spaces over tabs. + */ + insertSpaces: boolean; + + /** + * Signature for further properties. + */ + [key: string]: boolean | number | string; + } + + /** + * The document formatting provider interface defines the contract between extensions and + * the formatting-feature. + */ + declare export interface DocumentFormattingEditProvider { + + /** + * Provide formatting edits for a whole document. + * + * @param document The document in which the command was invoked. + * @param options Options controlling formatting. + * @param token A cancellation token. + * @return A set of text edits or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentFormattingEdits(document: TextDocument, options: FormattingOptions, token: CancellationToken): ProviderResult; + } + + /** + * The document formatting provider interface defines the contract between extensions and + * the formatting-feature. + */ + declare export interface DocumentRangeFormattingEditProvider { + + /** + * Provide formatting edits for a range in a document. + * + * The given range is a hint and providers can decide to format a smaller + * or larger range. Often this is done by adjusting the start and end + * of the range to full syntax nodes. + * + * @param document The document in which the command was invoked. + * @param range The range which should be formatted. + * @param options Options controlling formatting. + * @param token A cancellation token. + * @return A set of text edits or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult; + } + + /** + * The document formatting provider interface defines the contract between extensions and + * the formatting-feature. + */ + declare export interface OnTypeFormattingEditProvider { + + /** + * Provide formatting edits after a character has been typed. + * + * The given position and character should hint to the provider + * what range the position to expand to, like find the matching `{` + * when `}` has been entered. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param ch The character that has been typed. + * @param options Options controlling formatting. + * @param token A cancellation token. + * @return A set of text edits or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined`, `null`, or an empty array. + */ + provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult; + } + + /** + * Represents a parameter of a callable-signature. A parameter can + * have a label and a doc-comment. + */ + declare export class ParameterInformation { + + /** + * The label of this signature. Will be shown in + * the UI. + */ + label: string; + + /** + * The human-readable doc-comment of this signature. Will be shown + * in the UI but can be omitted. + */ + documentation?: string | MarkdownString; + + /** + * Creates a new parameter information object. + * + * @param label A label string. + * @param documentation A doc string. + */ + constructor(label: string, documentation?: string | MarkdownString): void; + } + + /** + * Represents the signature of something callable. A signature + * can have a label, like a function-name, a doc-comment, and + * a set of parameters. + */ + declare export class SignatureInformation { + + /** + * The label of this signature. Will be shown in + * the UI. + */ + label: string; + + /** + * The human-readable doc-comment of this signature. Will be shown + * in the UI but can be omitted. + */ + documentation?: string | MarkdownString; + + /** + * The parameters of this signature. + */ + parameters: ParameterInformation[]; + + /** + * Creates a new signature information object. + * + * @param label A label string. + * @param documentation A doc string. + */ + constructor(label: string, documentation?: string | MarkdownString): void; + } + + /** + * Signature help represents the signature of something + * callable. There can be multiple signatures but only one + * active and only one active parameter. + */ + declare export class SignatureHelp { + + /** + * One or more signatures. + */ + signatures: SignatureInformation[]; + + /** + * The active signature. + */ + activeSignature: number; + + /** + * The active parameter of the active signature. + */ + activeParameter: number; + } + + /** + * The signature help provider interface defines the contract between extensions and + * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature. + */ + declare export interface SignatureHelpProvider { + + /** + * Provide help for the signature at the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @return Signature help or a thenable that resolves to such. The lack of a result can be + * signaled by returning `undefined` or `null`. + */ + provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + } + + /** + * Completion item kinds. + */ + declare export var CompletionItemKind: { + +Text: 0, + +Method: 1, + +Function: 2, + +Constructor: 3, + +Field: 4, + +Variable: 5, + +Class: 6, + +Interface: 7, + +Module: 8, + +Property: 9, + +Unit: 10, + +Value: 11, + +Enum: 12, + +Keyword: 13, + +Snippet: 14, + +Color: 15, + +Reference: 17, + +File: 16, + +Folder: 18, + +EnumMember: 19, + +Constant: 20, + +Struct: 21, + +Event: 22, + +Operator: 23, + +TypeParameter: 24 + } + declare export type CompletionItemKindType = $Values; + + /** + * A completion item represents a text snippet that is proposed to complete text that is being typed. + * + * It is suffient to create a completion item from just a [label](#CompletionItem.label). In that + * case the completion item will replace the [word](#TextDocument.getWordRangeAtPosition) + * until the cursor with the given label or [insertText](#CompletionItem.insertText). Otherwise the + * the given [edit](#CompletionItem.textEdit) is used. + * + * When selecting a completion item in the editor its defined or synthesized text edit will be applied + * to *all* cursors/selections whereas [additionalTextEdits](CompletionItem.additionalTextEdits) will be + * applied as provided. + * + * @see [CompletionItemProvider.provideCompletionItems](#CompletionItemProvider.provideCompletionItems) + * @see [CompletionItemProvider.resolveCompletionItem](#CompletionItemProvider.resolveCompletionItem) + */ + declare export class CompletionItem { + + /** + * The label of this completion item. By default + * this is also the text that is inserted when selecting + * this completion. + */ + label: string; + + /** + * The kind of this completion item. Based on the kind + * an icon is chosen by the editor. + */ + kind?: CompletionItemKindType; + + /** + * A human-readable string with additional information + * about this item, like type or symbol information. + */ + detail?: string; + + /** + * A human-readable string that represents a doc-comment. + */ + documentation?: string | MarkdownString; + + /** + * A string that should be used when comparing this item + * with other items. When `falsy` the [label](#CompletionItem.label) + * is used. + */ + sortText?: string; + + /** + * A string that should be used when filtering a set of + * completion items. When `falsy` the [label](#CompletionItem.label) + * is used. + */ + filterText?: string; + + /** + * A string or snippet that should be inserted in a document when selecting + * this completion. When `falsy` the [label](#CompletionItem.label) + * is used. + */ + insertText?: string | SnippetString; + + /** + * A range of text that should be replaced by this completion item. + * + * Defaults to a range from the start of the [current word](#TextDocument.getWordRangeAtPosition) to the + * current position. + * + * *Note:* The range must be a [single line](#Range.isSingleLine) and it must + * [contain](#Range.contains) the position at which completion has been [requested](#CompletionItemProvider.provideCompletionItems). + */ + range?: Range; + + /** + * An optional set of characters that when pressed while this completion is active will accept it first and + * then type that character. *Note* that all commit characters should have `length=1` and that superfluous + * characters will be ignored. + */ + commitCharacters?: string[]; + + /** + * An optional array of additional [text edits](#TextEdit) that are applied when + * selecting this completion. Edits must not overlap with the main [edit](#CompletionItem.textEdit) + * nor with themselves. + */ + additionalTextEdits?: TextEdit[]; + + /** + * An optional [command](#Command) that is executed *after* inserting this completion. *Note* that + * additional modifications to the current document should be described with the + * [additionalTextEdits](#CompletionItem.additionalTextEdits)-property. + */ + command?: Command; + + /** + * Creates a new completion item. + * + * Completion items must have at least a [label](#CompletionItem.label) which then + * will be used as insert text as well as for sorting and filtering. + * + * @param label The label of the completion. + * @param kind The [kind](#CompletionItemKind) of the completion. + */ + constructor(label: string, kind?: CompletionItemKindType): void; + } + + /** + * Represents a collection of [completion items](#CompletionItem) to be presented + * in the editor. + */ + declare export class CompletionList { + + /** + * This list is not complete. Further typing should result in recomputing + * this list. + */ + isIncomplete?: boolean; + + /** + * The completion items. + */ + items: CompletionItem[]; + + /** + * Creates a new completion list. + * + * @param items The completion items. + * @param isIncomplete The list is not complete. + */ + constructor(items?: CompletionItem[], isIncomplete?: boolean): void; + } + + /** + * How a [completion provider](#CompletionItemProvider) was triggered + */ + declare export var CompletionTriggerKind: { + /** + * Completion was triggered normally. + */ + +Invoke: 0, + /** + * Completion was triggered by a trigger character. + */ + +TriggerCharacter: 1, + /** + * Completion was re-triggered as current completion list is incomplete + */ + +TriggerForIncompleteCompletions: 2 + } + declare export type CompletionTriggerKindType = $Values; + + /** + * Contains additional information about the context in which + * [completion provider](#CompletionItemProvider.provideCompletionItems) is triggered. + */ + declare export interface CompletionContext { + /** + * How the completion was triggered. + */ + +triggerKind: CompletionTriggerKindType; + + /** + * Character that triggered the completion item provider. + * + * `undefined` if provider was not triggered by a character. + * + * The trigger character is already in the document when the completion provider is triggered. + */ + +triggerCharacter?: string; + } + + /** + * The completion item provider interface defines the contract between extensions and + * [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense). + * + * Providers can delay the computation of the [`detail`](#CompletionItem.detail) + * and [`documentation`](#CompletionItem.documentation) properties by implementing the + * [`resolveCompletionItem`](#CompletionItemProvider.resolveCompletionItem)-function. However, properties that + * are needed for the inital sorting and filtering, like `sortText`, `filterText`, `insertText`, and `range`, must + * not be changed during resolve. + * + * Providers are asked for completions either explicitly by a user gesture or -depending on the configuration- + * implicitly when typing words or trigger characters. + */ + declare export interface CompletionItemProvider { + + /** + * Provide completion items for the given position and document. + * + * @param document The document in which the command was invoked. + * @param position The position at which the command was invoked. + * @param token A cancellation token. + * @param context How the completion was triggered. + * + * @return An array of completions, a [completion list](#CompletionList), or a thenable that resolves to either. + * The lack of a result can be signaled by returning `undefined`, `null`, or an empty array. + */ + provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult; + + /** + * Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation) + * or [details](#CompletionItem.detail). + * + * The editor will only resolve a completion item once. + * + * @param item A completion item currently active in the UI. + * @param token A cancellation token. + * @return The resolved completion item or a thenable that resolves to of such. It is OK to return the given + * `item`. When no result is returned, the given `item` will be used. + */ + +resolveCompletionItem?: (item: CompletionItem, token: CancellationToken) => ProviderResult; + } + + + /** + * A document link is a range in a text document that links to an internal or external resource, like another + * text document or a web site. + */ + declare export class DocumentLink { + + /** + * The range this link applies to. + */ + range: Range; + + /** + * The uri this link points to. + */ + target?: Uri; + + /** + * Creates a new document link. + * + * @param range The range the document link applies to. Must not be empty. + * @param target The uri the document link points to. + */ + constructor(range: Range, target?: Uri): void; + } + + /** + * The document link provider defines the contract between extensions and feature of showing + * links in the editor. + */ + declare export interface DocumentLinkProvider { + + /** + * Provide links for the given document. Note that the editor ships with a default provider that detects + * `http(s)` and `file` links. + * + * @param document The document in which the command was invoked. + * @param token A cancellation token. + * @return An array of [document links](#DocumentLink) or a thenable that resolves to such. The lack of a result + * can be signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult; + + /** + * Given a link fill in its [target](#DocumentLink.target). This method is called when an incomplete + * link is selected in the UI. Providers can implement this method and return incomple links + * (without target) from the [`provideDocumentLinks`](#DocumentLinkProvider.provideDocumentLinks) method which + * often helps to improve performance. + * + * @param link The link that is to be resolved. + * @param token A cancellation token. + */ + +resolveDocumentLink?: (link: DocumentLink, token: CancellationToken) => ProviderResult; + } + + /** + * Represents a color in RGBA space. + */ + declare export class Color { + + /** + * The red component of this color in the range [0-1]. + */ + +red: number; + + /** + * The green component of this color in the range [0-1]. + */ + +green: number; + + /** + * The blue component of this color in the range [0-1]. + */ + +blue: number; + + /** + * The alpha component of this color in the range [0-1]. + */ + +alpha: number; + + /** + * Creates a new color instance. + * + * @param red The red component. + * @param green The green component. + * @param blue The bluew component. + * @param alpha The alpha component. + */ + constructor(red: number, green: number, blue: number, alpha: number): void; + } + + /** + * Represents a color range from a document. + */ + declare export class ColorInformation { + + /** + * The range in the document where this color appers. + */ + range: Range; + + /** + * The actual color value for this color range. + */ + color: Color; + + /** + * Creates a new color range. + * + * @param range The range the color appears in. Must not be empty. + * @param color The value of the color. + * @param format The format in which this color is currently formatted. + */ + constructor(range: Range, color: Color): void; + } + + /** + * A color presentation object describes how a [`color`](#Color) should be represented as text and what + * edits are required to refer to it from source code. + * + * For some languages one color can have multiple presentations, e.g. css can represent the color red with + * the constant `Red`, the hex-value `#ff0000`, or in rgba and hsla forms. In csharp other representations + * apply, e.g `System.Drawing.Color.Red`. + */ + declare export class ColorPresentation { + + /** + * The label of this color presentation. It will be shown on the color + * picker header. By default this is also the text that is inserted when selecting + * this color presentation. + */ + label: string; + + /** + * An [edit](#TextEdit) which is applied to a document when selecting + * this presentation for the color. When `falsy` the [label](#ColorPresentation.label) + * is used. + */ + textEdit?: TextEdit; + + /** + * An optional array of additional [text edits](#TextEdit) that are applied when + * selecting this color presentation. Edits must not overlap with the main [edit](#ColorPresentation.textEdit) nor with themselves. + */ + additionalTextEdits?: TextEdit[]; + + /** + * Creates a new color presentation. + * + * @param label The label of this color presentation. + */ + constructor(label: string): void; + } + + /** + * The document color provider defines the contract between extensions and feature of + * picking and modifying colors in the editor. + */ + declare export interface DocumentColorProvider { + + /** + * Provide colors for the given document. + * + * @param document The document in which the command was invoked. + * @param token A cancellation token. + * @return An array of [color informations](#ColorInformation) or a thenable that resolves to such. The lack of a result + * can be signaled by returning `undefined`, `null`, or an empty array. + */ + provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult; + + /** + * Provide [representations](#ColorPresentation) for a color. + * + * @param color The color to show and insert. + * @param context A context object with additional information + * @param token A cancellation token. + * @return An array of color presentations or a thenable that resolves to such. The lack of a result + * can be signaled by returning `undefined`, `null`, or an empty array. + */ + provideColorPresentations(color: Color, context: { document: TextDocument, range: Range }, token: CancellationToken): ProviderResult; + } + + /** + * A tuple of two characters, like a pair of + * opening and closing brackets. + */ + declare export type CharacterPair = [string, string]; + + /** + * Describes how comments for a language work. + */ + declare export interface CommentRule { + + /** + * The line comment token, like `// this is a comment` + */ + lineComment?: string; + + /** + * The block comment character pair, like `/* block comment */` + */ + blockComment?: CharacterPair; + } + + /** + * Describes indentation rules for a language. + */ + declare export interface IndentationRule { + /** + * If a line matches this pattern, then all the lines after it should be unindendented once (until another rule matches). + */ + decreaseIndentPattern: RegExp; + /** + * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches). + */ + increaseIndentPattern: RegExp; + /** + * If a line matches this pattern, then **only the next line** after it should be indented once. + */ + indentNextLinePattern?: RegExp; + /** + * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules. + */ + unIndentedLinePattern?: RegExp; + } + + /** + * Describes what to do with the indentation when pressing Enter. + */ + declare export var IndentAction: { + /** + * Insert new line and copy the previous line's indentation. + */ + +None: 0, + /** + * Insert new line and indent once (relative to the previous line's indentation). + */ + +Indent: 1, + /** + * Insert two new lines: + * - the first one indented which will hold the cursor + * - the second one at the same indentation level + */ + +IndentOutdent: 2, + /** + * Insert new line and outdent once (relative to the previous line's indentation). + */ + +Outdent: 3 + } + declare export type IndentActionType = $Values; + + /** + * Describes what to do when pressing Enter. + */ + declare export interface EnterAction { + /** + * Describe what to do with the indentation. + */ + indentAction: IndentActionType; + /** + * Describes text to be appended after the new line and after the indentation. + */ + appendText?: string; + /** + * Describes the number of characters to remove from the new line's indentation. + */ + removeText?: number; + } + + /** + * Describes a rule to be evaluated when pressing Enter. + */ + declare export interface OnEnterRule { + /** + * This rule will only execute if the text before the cursor matches this regular expression. + */ + beforeText: RegExp; + /** + * This rule will only execute if the text after the cursor matches this regular expression. + */ + afterText?: RegExp; + /** + * The action to execute. + */ + action: EnterAction; + } + + /** + * The language configuration interfaces defines the contract between extensions + * and various editor features, like automatic bracket insertion, automatic indentation etc. + */ + declare export interface LanguageConfiguration { + /** + * The language's comment settings. + */ + comments?: CommentRule; + /** + * The language's brackets. + * This configuration implicitly affects pressing Enter around these brackets. + */ + brackets?: CharacterPair[]; + /** + * The language's word definition. + * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable + * to provide a word definition that uses exclusion of known separators. + * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number): + * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g + */ + wordPattern?: RegExp; + /** + * The language's indentation settings. + */ + indentationRules?: IndentationRule; + /** + * The language's rules to be evaluated when pressing Enter. + */ + onEnterRules?: OnEnterRule[]; + } + + /** + * The configuration target + */ + declare export var ConfigurationTarget: { + /** + * Global configuration + */ + +Global: 1, + + /** + * Workspace configuration + */ + +Workspace: 2, + + /** + * Workspace folder configuration + */ + +WorkspaceFolder: 3 + } + declare export type ConfigurationTargetType = $Values; + + /** + * Represents the configuration. It is a merged view of + * + * - Default configuration + * - Global configuration + * - Workspace configuration (if available) + * - Workspace folder configuration of the requested resource (if available) + * + * *Global configuration* comes from User Settings and shadows Defaults. + * + * *Workspace configuration* comes from Workspace Settings and shadows Global configuration. + * + * *Workspace Folder configuration* comes from `.vscode` folder under one of the [workspace folders](#workspace.workspaceFolders). + * + * *Note:* Workspace and Workspace Folder configurations contains `launch` and `tasks` settings. Their basename will be + * part of the section identifier. The following snippets shows how to retrieve all configurations + * from `launch.json`: + * + * ```ts + * // launch.json configuration + * const config = workspace.getConfiguration('launch', vscode.window.activeTextEditor.document.uri); + * + * // retrieve values + * const values = config.get('configurations'); + * ``` + * + * Refer to [Settings](https://code.visualstudio.com/docs/getstarted/settings) for more information. + */ + declare export interface WorkspaceConfiguration { + /** + * Return a value from this configuration. + * + * @param section Configuration name, supports _dotted_ names. + * @param defaultValue A value should be returned when no value could be found, is `undefined`. + * @return The value `section` denotes or the default. + */ + get(section: string, defaultValue?: T): T; + + /** + * Check if this configuration has a certain value. + * + * @param section Configuration name, supports _dotted_ names. + * @return `true` if the section doesn't resolve to `undefined`. + */ + has(section: string): boolean; + + /** + * Retrieve all information about a configuration setting. A configuration value + * often consists of a *default* value, a global or installation-wide value, + * a workspace-specific value and a folder-specific value. + * + * The *effective* value (returned by [`get`](#WorkspaceConfiguration.get)) + * is computed like this: `defaultValue` overwritten by `globalValue`, + * `globalValue` overwritten by `workspaceValue`. `workspaceValue` overwritten by `workspaceFolderValue`. + * Refer to [Settings Inheritence](https://code.visualstudio.com/docs/getstarted/settings) + * for more information. + * + * *Note:* The configuration name must denote a leaf in the configuration tree + * (`editor.fontSize` vs `editor`) otherwise no result is returned. + * + * @param section Configuration name, supports _dotted_ names. + * @return Information about a configuration setting or `undefined`. + */ + inspect(section: string): ?{ key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T, workspaceFolderValue?: T }; + + /** + * Update a configuration value. The updated configuration values are persisted. + * + * A value can be changed in + * + * - [Global configuration](#ConfigurationTarget.Global): Changes the value for all instances of the editor. + * - [Workspace configuration](#ConfigurationTarget.Workspace): Changes the value for current workspace, if available. + * - [Workspace folder configuration](#ConfigurationTarget.WorkspaceFolder): Changes the value for the + * [Workspace folder](#workspace.workspaceFolders) to which the current [configuration](#WorkspaceConfiguration) is scoped to. + * + * *Note 1:* Setting a global value in the presence of a more specific workspace value + * has no observable effect in that workspace, but in others. Setting a workspace value + * in the presence of a more specific folder value has no observable effect for the resources + * under respective [folder](#workspace.workspaceFolders), but in others. Refer to + * [Settings Inheritence](https://code.visualstudio.com/docs/getstarted/settings) for more information. + * + * *Note 2:* To remove a configuration value use `undefined`, like so: `config.update('somekey', undefined)` + * + * Will throw error when + * - Writing a configuration which is not registered. + * - Writing a configuration to workspace or folder target when no workspace is opened + * - Writing a configuration to folder target when there is no folder settings + * - Writing to folder target without passing a resource when getting the configuration (`workspace.getConfiguration(section, resource)`) + * - Writing a window configuration to folder target + * + * @param section Configuration name, supports _dotted_ names. + * @param value The new value. + * @param configurationTarget The [configuration target](#ConfigurationTarget) or a boolean value. + * - If `true` configuration target is `ConfigurationTarget.Global`. + * - If `false` configuration target is `ConfigurationTarget.Workspace`. + * - If `undefined` or `null` configuration target is + * `ConfigurationTarget.WorkspaceFolder` when configuration is resource specific + * `ConfigurationTarget.Workspace` otherwise. + */ + update(section: string, value: any, configurationTarget?: ConfigurationTargetType | boolean): Thenable; + + /** + * Readable dictionary that backs this configuration. + */ + +[key: string]: any; + } + + /** + * Represents a location inside a resource, such as a line + * inside a text file. + */ + declare export class Location { + + /** + * The resource identifier of this location. + */ + uri: Uri; + + /** + * The document range of this location. + */ + range: Range; + + /** + * Creates a new location object. + * + * @param uri The resource identifier. + * @param rangeOrPosition The range or position. Positions will be converted to an empty range. + */ + constructor(uri: Uri, rangeOrPosition: Range | Position): void; + } + + /** + * Represents the severity of diagnostics. + */ + declare export var DiagnosticSeverity: { + + /** + * Something not allowed by the rules of a language or other means. + */ + +Error: 0, + + /** + * Something suspicious but allowed. + */ + +Warning: 1, + + /** + * Something to inform about but not a problem. + */ + +Information: 2, + + /** + * Something to hint to a better way of doing it, like proposing + * a refactoring. + */ + +Hint: 3 + } + declare export type DiagnosticSeverityType = $Values; + + /** + * Represents a diagnostic, such as a compiler error or warning. Diagnostic objects + * are only valid in the scope of a file. + */ + declare export class Diagnostic { + + /** + * The range to which this diagnostic applies. + */ + range: Range; + + /** + * The human-readable message. + */ + message: string; + + /** + * A human-readable string describing the source of this + * diagnostic, e.g. 'typescript' or 'super lint'. + */ + source: string; + + /** + * The severity, default is [error](#DiagnosticSeverity.Error). + */ + severity: DiagnosticSeverityType; + + /** + * A code or identifier for this diagnostics. Will not be surfaced + * to the user, but should be used for later processing, e.g. when + * providing [code actions](#CodeActionContext). + */ + code: string | number; + + /** + * Creates a new diagnostic object. + * + * @param range The range to which this diagnostic applies. + * @param message The human-readable message. + * @param severity The severity, default is [error](#DiagnosticSeverity.Error). + */ + constructor(range: Range, message: string, severity?: DiagnosticSeverityType): void; + } + + /** + * A diagnostics collection is a container that manages a set of + * [diagnostics](#Diagnostic). Diagnostics are always scopes to a + * diagnostics collection and a resource. + * + * To get an instance of a `DiagnosticCollection` use + * [createDiagnosticCollection](#languages.createDiagnosticCollection). + */ + declare export interface DiagnosticCollection { + + /** + * The name of this diagnostic collection, for instance `typescript`. Every diagnostic + * from this collection will be associated with this name. Also, the task framework uses this + * name when defining [problem matchers](https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher). + */ + +name: string; + + /** + * Assign diagnostics for given resource. Will replace + * existing diagnostics for that resource. + * + * @param uri A resource identifier. + * @param diagnostics Array of diagnostics or `undefined` + */ + set(uri: Uri, diagnostics: ?Diagnostic[]): void; + + /** + * Replace all entries in this collection. + * + * Diagnostics of multiple tuples of the same uri will be merged, e.g + * `[[file1, [d1]], [file1, [d2]]]` is equivalent to `[[file1, [d1, d2]]]`. + * If a diagnostics item is `undefined` as in `[file1, undefined]` + * all previous but not subsequent diagnostics are removed. + * + * @param entries An array of tuples, like `[[file1, [d1, d2]], [file2, [d3, d4, d5]]]`, or `undefined`. + */ + set(entries: [Uri, ?Diagnostic[]][]): void; + + /** + * Remove all diagnostics from this collection that belong + * to the provided `uri`. The same as `#set(uri, undefined)`. + * + * @param uri A resource identifier. + */ + delete(uri: Uri): void; + + /** + * Remove all diagnostics from this collection. The same + * as calling `#set(undefined)`; + */ + clear(): void; + + /** + * Iterate over each entry in this collection. + * + * @param callback Function to execute for each entry. + * @param thisArg The `this` context used when invoking the handler function. + */ + forEach(callback: (uri: Uri, diagnostics: Diagnostic[], collection: DiagnosticCollection) => any, thisArg?: any): void; + + /** + * Get the diagnostics for a given resource. *Note* that you cannot + * modify the diagnostics-array returned from this call. + * + * @param uri A resource identifier. + * @returns An immutable array of [diagnostics](#Diagnostic) or `undefined`. + */ + get(uri: Uri): ?Diagnostic[]; + + /** + * Check if this collection contains diagnostics for a + * given resource. + * + * @param uri A resource identifier. + * @returns `true` if this collection has diagnostic for the given resource. + */ + has(uri: Uri): boolean; + + /** + * Dispose and free associated resources. Calls + * [clear](#DiagnosticCollection.clear). + */ + dispose(): void; + } + + /** + * Denotes a column in the editor window. Columns are + * used to show editors side by side. + */ + declare export var ViewColumn: { + /** + * A *symbolic* editor column representing the currently + * active column. This value can be used when opening editors, but the + * *resolved* [viewColumn](#TextEditor.viewColumn)-value of editors will always + * be `One`, `Two`, `Three`, or `undefined` but never `Active`. + */ + +Active: -1, + /** + * The left most editor column. + */ + +One: 1, + /** + * The center editor column. + */ + +Two: 2, + /** + * The right most editor column. + */ + +Three: 3 + } + declare export type ViewColumnType = $Values; + + /** + * An output channel is a container for textual information. + * + * To get an instance of an `OutputChannel` use + * [createOutputChannel](#window.createOutputChannel). + */ + declare export interface OutputChannel { + + /** + * The human-readable name of this output channel. + */ + +name: string; + + /** + * Append the given value to the channel. + * + * @param value A string, falsy values will not be printed. + */ + append(value: string): void; + + /** + * Append the given value and a line feed character + * to the channel. + * + * @param value A string, falsy values will be printed. + */ + appendLine(value: string): void; + + /** + * Removes all output from the channel. + */ + clear(): void; + + /** + * Reveal this channel in the UI. + * + * @param preserveFocus When `true` the channel will not take focus. + */ + show(preserveFocus?: boolean): void; + + /** + * Hide this channel from the UI. + */ + hide(): void; + + /** + * Dispose and free associated resources. + */ + dispose(): void; + } + + /** + * Represents the alignment of status bar items. + */ + declare export var StatusBarAlignment: { + + /** + * Aligned to the left side. + */ + +Left: 1, + + /** + * Aligned to the right side. + */ + +Right: 2 + } + declare export type StatusBarAlignmentType = $Values; + + /** + * A status bar item is a status bar contribution that can + * show text and icons and run a command on click. + */ + declare export interface StatusBarItem { + + /** + * The alignment of this item. + */ + +alignment: StatusBarAlignmentType; + + /** + * The priority of this item. Higher value means the item should + * be shown more to the left. + */ + +priority: number; + + /** + * The text to show for the entry. You can embed icons in the text by leveraging the syntax: + * + * `My text $(icon-name) contains icons like $(icon'name) this one.` + * + * Where the icon-name is taken from the [octicon](https://octicons.github.com) icon set, e.g. + * `light-bulb`, `thumbsup`, `zap` etc. + */ + text: string; + + /** + * The tooltip text when you hover over this entry. + */ + tooltip: ?string; + + /** + * The foreground color for this entry. + */ + color: null | string | ThemeColor; + + /** + * The identifier of a command to run on click. The command must be + * [known](#commands.getCommands). + */ + command: ?string; + + /** + * Shows the entry in the status bar. + */ + show(): void; + + /** + * Hide the entry in the status bar. + */ + hide(): void; + + /** + * Dispose and free associated resources. Call + * [hide](#StatusBarItem.hide). + */ + dispose(): void; + } + + /** + * Defines a generalized way of reporting progress updates. + */ + declare export interface Progress { + + /** + * Report a progress update. + * @param value A progress item, like a message or an updated percentage value + */ + report(value: T): void; + } + + /** + * An individual terminal instance within the integrated terminal. + */ + declare export interface Terminal { + + /** + * The name of the terminal. + */ + +name: string; + + /** + * The process ID of the shell process. + */ + +processId: Thenable; + + /** + * Send text to the terminal. The text is written to the stdin of the underlying pty process + * (shell) of the terminal. + * + * @param text The text to send. + * @param addNewLine Whether to add a new line to the text being sent, this is normally + * required to run a command in the terminal. The character(s) added are \n or \r\n + * depending on the platform. This defaults to `true`. + */ + sendText(text: string, addNewLine?: boolean): void; + + /** + * Show the terminal panel and reveal this terminal in the UI. + * + * @param preserveFocus When `true` the terminal will not take focus. + */ + show(preserveFocus?: boolean): void; + + /** + * Hide the terminal panel if this terminal is currently showing. + */ + hide(): void; + + /** + * Dispose and free associated resources. + */ + dispose(): void; + } + + /** + * Represents an extension. + * + * To get an instance of an `Extension` use [getExtension](#extensions.getExtension). + */ + declare export interface Extension { + + /** + * The canonical extension identifier in the form of: `publisher.name`. + */ + +id: string; + + /** + * The absolute file path of the directory containing this extension. + */ + +extensionPath: string; + + /** + * `true` if the extension has been activated. + */ + +isActive: boolean; + + /** + * The parsed contents of the extension's package.json. + */ + +packageJSON: any; + + /** + * The public API exported by this extension. It is an invalid action + * to access this field before this extension has been activated. + */ + +exports: T; + + /** + * Activates this extension and returns its public API. + * + * @return A promise that will resolve when this extension has been activated. + */ + activate(): Thenable; + } + + /** + * An extension context is a collection of utilities private to an + * extension. + * + * An instance of an `ExtensionContext` is provided as the first + * parameter to the `activate`-call of an extension. + */ + declare export interface ExtensionContext { + + /** + * An array to which disposables can be added. When this + * extension is deactivated the disposables will be disposed. + */ + subscriptions: { dispose(): any }[]; + + /** + * A memento object that stores state in the context + * of the currently opened [workspace](#workspace.workspaceFolders). + */ + workspaceState: Memento; + + /** + * A memento object that stores state independent + * of the current opened [workspace](#workspace.workspaceFolders). + */ + globalState: Memento; + + /** + * The absolute file path of the directory containing the extension. + */ + extensionPath: string; + + /** + * Get the absolute path of a resource contained in the extension. + * + * @param relativePath A relative path to a resource contained in the extension. + * @return The absolute path of the resource. + */ + asAbsolutePath(relativePath: string): string; + + /** + * An absolute file path of a workspace specific directory in which the extension + * can store private state. The directory might not exist on disk and creation is + * up to the extension. However, the parent directory is guaranteed to be existent. + * + * Use [`workspaceState`](#ExtensionContext.workspaceState) or + * [`globalState`](#ExtensionContext.globalState) to store key value data. + */ + storagePath: ?string; + + /* BEGIN PROPOSED *******************************************************************************/ + /** + * This extension's logger + */ + logger: Logger; + + /** + * Path where an extension can write log files. + * + * Extensions must create this directory before writing to it. The parent directory will always exist. + */ + +logDirectory: string; + /* END PROPOSED *********************************************************************************/ + } + + /** + * A memento represents a storage utility. It can store and retrieve + * values. + */ + declare export interface Memento { + + /** + * Return a value. + * + * @param key A string. + * @param defaultValue A value that should be returned when there is no + * value (`undefined`) with the given key. + * @return The stored value or the defaultValue. + */ + get(key: string, defaultValue?: T): T; + + /** + * Store a value. The value must be JSON-stringifyable. + * + * @param key A string. + * @param value A value. MUST not contain cyclic references. + */ + update(key: string, value: any): Thenable; + } + + /** + * Controls the behaviour of the terminal's visibility. + */ + declare export var TaskRevealKind: { + /** + * Always brings the terminal to front if the task is executed. + */ + +Always: 1, + + /** + * Only brings the terminal to front if a problem is detected executing the task + * (e.g. the task couldn't be started because). + */ + +Silent: 2, + + /** + * The terminal never comes to front when the task is executed. + */ + +Never: 3 + } + declare export type TaskRevealKindType = $Values; + + /** + * Controls how the task channel is used between tasks + */ + declare export var TaskPanelKind: { + + /** + * Shares a panel with other tasks. This is the default. + */ + +Shared: 1, + + /** + * Uses a dedicated panel for this tasks. The panel is not + * shared with other tasks. + */ + +Dedicated: 2, + + /** + * Creates a new panel whenever this task is executed. + */ + +New: 3 + } + declare export type TaskPanelKindType = $Values; + + /** + * Controls how the task is presented in the UI. + */ + declare export interface TaskPresentationOptions { + /** + * Controls whether the task output is reveal in the user interface. + * Defaults to `RevealKind.Always`. + */ + reveal?: TaskRevealKindType; + + /** + * Controls whether the command associated with the task is echoed + * in the user interface. + */ + echo?: boolean; + + /** + * Controls whether the panel showing the task output is taking focus. + */ + focus?: boolean; + + /** + * Controls if the task panel is used for this task only (dedicated), + * shared between tasks (shared) or if a new panel is created on + * every task execution (new). Defaults to `TaskInstanceKind.Shared` + */ + panel?: TaskPanelKindType; + } + + /** + * A grouping for tasks. The editor by default supports the + * 'Clean', 'Build', 'RebuildAll' and 'Test' group. + */ + declare export class TaskGroup { + + /** + * The clean task group; + */ + static Clean: TaskGroup; + + /** + * The build task group; + */ + static Build: TaskGroup; + + /** + * The rebuild all task group; + */ + static Rebuild: TaskGroup; + + /** + * The test all task group; + */ + static Test: TaskGroup; + + // private constructor(id: string, label: string): void; + } + + + /** + * A structure that defines a task kind in the system. + * The value must be JSON-stringifyable. + */ + declare export type TaskDefinition = { + /** + * The task definition describing the task provided by an extension. + * Usually a task provider defines more properties to identify + * a task. They need to be defined in the package.json of the + * extension under the 'taskDefinitions' extension point. The npm + * task definition for example looks like this + * ```typescript + * interface NpmTaskDefinition extends TaskDefinition { + * script: string; + * } + * ``` + */ + +type: string; + + /** + * Additional attributes of a concrete task definition. + */ + [name: string]: any; + } + + /** + * Options for a process execution + */ + declare export interface ProcessExecutionOptions { + /** + * The current working directory of the executed program or shell. + * If omitted the tools current workspace root is used. + */ + cwd?: string; + + /** + * The additional environment of the executed program or shell. If omitted + * the parent process' environment is used. If provided it is merged with + * the parent process' environment. + */ + env?: { [key: string]: string }; + } + + /** + * The execution of a task happens as an external process + * without shell interaction. + */ + declare export class ProcessExecution { + + /** + * Creates a process execution. + * + * @param process The process to start. + * @param args Arguments to be passed to the process. + * @param options Optional options for the started process. + */ + constructor(process: string, args?: string[], options?: ProcessExecutionOptions): void; + + /** + * The process to be executed. + */ + process: string; + + /** + * The arguments passed to the process. Defaults to an empty array. + */ + args: string[]; + + /** + * The process options used when the process is executed. + * Defaults to undefined. + */ + options?: ProcessExecutionOptions; + } + + /** + * Options for a shell execution + */ + declare export interface ShellExecutionOptions { + /** + * The shell executable. + */ + executable?: string; + + /** + * The arguments to be passed to the shell executable used to run the task. + */ + shellArgs?: string[]; + + /** + * The current working directory of the executed shell. + * If omitted the tools current workspace root is used. + */ + cwd?: string; + + /** + * The additional environment of the executed shell. If omitted + * the parent process' environment is used. If provided it is merged with + * the parent process' environment. + */ + env?: { [key: string]: string }; + } + + + declare export class ShellExecution { + /** + * Creates a process execution. + * + * @param commandLine The command line to execute. + * @param options Optional options for the started the shell. + */ + constructor(commandLine: string, options?: ShellExecutionOptions): void; + + /** + * The shell command line + */ + commandLine: string; + + /** + * The shell options used when the command line is executed in a shell. + * Defaults to undefined. + */ + options?: ShellExecutionOptions; + } + + /** + * The scope of a task. + */ + declare export var TaskScope: { + /** + * The task is a global task + */ + +Global: 1, + + /** + * The task is a workspace task + */ + +Workspace: 2 + } + declare export type TaskScopeType = $Values; + + /** + * A task to execute + */ + declare export class Task { + + /** + * Creates a new task. + * + * @param definition The task definition as defined in the taskDefinitions extension point. + * @param target Specifies the task's target. It is either a global or a workspace task or a task for a specific workspace folder. + * @param name The task's name. Is presented in the user interface. + * @param source The task's source (e.g. 'gulp', 'npm', ...). Is presented in the user interface. + * @param execution The process or shell execution. + * @param problemMatchers the names of problem matchers to use, like '$tsc' + * or '$eslint'. Problem matchers can be contributed by an extension using + * the `problemMatchers` extension point. + */ + constructor(taskDefinition: TaskDefinition, target?: WorkspaceFolder | typeof TaskScope.Global | typeof TaskScope.Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution, problemMatchers?: string | string[]): void; + + /** + * The task's definition. + */ + definition: TaskDefinition; + + /** + * The task's scope. + */ + scope?: typeof TaskScope.Global | typeof TaskScope.Workspace | WorkspaceFolder; + + /** + * The task's name + */ + name: string; + + /** + * The task's execution engine + */ + execution: ProcessExecution | ShellExecution; + + /** + * Whether the task is a background task or not. + */ + isBackground: boolean; + + /** + * A human-readable string describing the source of this + * shell task, e.g. 'gulp' or 'npm'. + */ + source: string; + + /** + * The task group this tasks belongs to. See TaskGroup + * for a predefined set of available groups. + * Defaults to undefined meaning that the task doesn't + * belong to any special group. + */ + group?: TaskGroup; + + /** + * The presentation options. Defaults to an empty literal. + */ + presentationOptions: TaskPresentationOptions; + + /** + * The problem matchers attached to the task. Defaults to an empty + * array. + */ + problemMatchers: string[]; + } + + /** + * A task provider allows to add tasks to the task service. + * A task provider is registered via #workspace.registerTaskProvider. + */ + declare export interface TaskProvider { + /** + * Provides tasks. + * @param token A cancellation token. + * @return an array of tasks + */ + provideTasks(token?: CancellationToken): ProviderResult; + + /** + * Resolves a task that has no [`execution`](#Task.execution) set. Tasks are + * often created from information found in the `task.json`-file. Such tasks miss + * the information on how to execute them and a task provider must fill in + * the missing information in the `resolveTask`-method. + * + * @param task The task to resolve. + * @param token A cancellation token. + * @return The resolved task + */ + resolveTask(task: Task, token?: CancellationToken): ProviderResult | void; + } + + /** + * An object representing an executed Task. It can be used + * to terminate a task. + * + * This interface is not intended to be implemented. + */ + declare export type TaskExecution = { + /** + * The task that got started. + */ + task: Task; + + /** + * Terminates the task execution. + */ + terminate(): void; + } + + /** + * An event signaling the start of a task execution. + * + * This interface is not intended to be implemented. + */ + declare export type TaskStartEvent = { + /** + * The task item representing the task that got started. + */ + execution: TaskExecution; + } + + /** + * An event signaling the end of an executed task. + * + * This interface is not intended to be implemented. + */ + declare export type TaskEndEvent = { + /** + * The task item representing the task that finished. + */ + execution: TaskExecution; + } + + /** + * An event signaling the start of a process execution + * triggered through a task + */ + declare export type TaskProcessStartEvent = { + + /** + * The task execution for which the process got started. + */ + execution: TaskExecution; + + /** + * The underlying process id. + */ + processId: number; + } + + /** + * An event signaling the end of a process execution + * triggered through a task + */ + declare export type TaskProcessEndEvent = { + + /** + * The task execution for which the process got started. + */ + execution: TaskExecution; + + /** + * The process's exit code. + */ + exitCode: number; + } + + declare export type TaskFilter = { + /** + * The task version as used in the tasks.json file. + * The string support the package.json semver notation. + */ + version?: string; + + /** + * The task type to return; + */ + type?: string; + } + + /** + * Namespace describing the environment the editor runs in. + */ + declare export var env: { + + /** + * The application name of the editor, like 'VS Code'. + * + * @readonly + */ + appName: string; + + /** + * The application root folder from which the editor is running. + * + * @readonly + */ + appRoot: string; + + /** + * Represents the preferred user-language, like `de-CH`, `fr`, or `en-US`. + * + * @readonly + */ + language: string; + + /** + * A unique identifier for the computer. + * + * @readonly + */ + machineId: string; + + /** + * A unique identifier for the current session. + * Changes each time the editor is started. + * + * @readonly + */ + sessionId: string; + } + + /** + * Namespace for dealing with commands. In short, a command is a function with a + * unique identifier. The function is sometimes also called _command handler_. + * + * Commands can be added to the editor using the [registerCommand](#commands.registerCommand) + * and [registerTextEditorCommand](#commands.registerTextEditorCommand) functions. Commands + * can be executed [manually](#commands.executeCommand) or from a UI gesture. Those are: + * + * * palette - Use the `commands`-section in `package.json` to make a command show in + * the [command palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette). + * * keybinding - Use the `keybindings`-section in `package.json` to enable + * [keybindings](https://code.visualstudio.com/docs/getstarted/keybindings#_customizing-shortcuts) + * for your extension. + * + * Commands from other extensions and from the editor itself are accessible to an extension. However, + * when invoking an editor command not all argument types are supported. + * + * This is a sample that registers a command handler and adds an entry for that command to the palette. First + * register a command handler with the identifier `extension.sayHello`. + * ```javascript + * commands.registerCommand('extension.sayHello', () => { + * window.showInformationMessage('Hello World!'); + * }); + * ``` + * Second, bind the command identifier to a title under which it will show in the palette (`package.json`). + * ```json + * { + * "contributes": { + * "commands": [{ + * "command": "extension.sayHello", + * "title": "Hello World" + * }] + * } + * } + * ``` + */ + declare export var commands: { + + /** + * Registers a command that can be invoked via a keyboard shortcut, + * a menu item, an action, or directly. + * + * Registering a command with an existing command identifier twice + * will cause an error. + * + * @param command A unique identifier for the command. + * @param callback A command handler function. + * @param thisArg The `this` context used when invoking the handler function. + * @return Disposable which unregisters this command on disposal. + */ + registerCommand(command: string, callback: (...args: any[]) => any, thisArg?: any): Disposable; + + /** + * Registers a text editor command that can be invoked via a keyboard shortcut, + * a menu item, an action, or directly. + * + * Text editor commands are different from ordinary [commands](#commands.registerCommand) as + * they only execute when there is an active editor when the command is called. Also, the + * command handler of an editor command has access to the active editor and to an + * [edit](#TextEditorEdit)-builder. + * + * @param command A unique identifier for the command. + * @param callback A command handler function with access to an [editor](#TextEditor) and an [edit](#TextEditorEdit). + * @param thisArg The `this` context used when invoking the handler function. + * @return Disposable which unregisters this command on disposal. + */ + registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, ...args: any[]) => void, thisArg?: any): Disposable; + + /** + * Executes the command denoted by the given command identifier. + * + * * *Note 1:* When executing an editor command not all types are allowed to + * be passed as arguments. Allowed are the primitive types `string`, `boolean`, + * `number`, `undefined`, and `null`, as well as [`Position`](#Position), [`Range`](#Range), [`Uri`](#Uri) and [`Location`](#Location). + * * *Note 2:* There are no restrictions when executing commands that have been contributed + * by extensions. + * + * @param command Identifier of the command to execute. + * @param rest Parameters passed to the command function. + * @return A thenable that resolves to the returned value of the given command. `undefined` when + * the command handler function doesn't return anything. + */ + executeCommand(command: string, ...rest: any[]): Thenable; + + /** + * Retrieve the list of all available commands. Commands starting an underscore are + * treated as internal commands. + * + * @param filterInternal Set `true` to not see internal commands (starting with an underscore) + * @return Thenable that resolves to a list of command ids. + */ + getCommands(filterInternal?: boolean): Thenable; + + /* BEGIN PROPOSED *******************************************************************************/ + /** + * Registers a diff information command that can be invoked via a keyboard shortcut, + * a menu item, an action, or directly. + * + * Diff information commands are different from ordinary [commands](#commands.registerCommand) as + * they only execute when there is an active diff editor when the command is called, and the diff + * information has been computed. Also, the command handler of an editor command has access to + * the diff information. + * + * @param command A unique identifier for the command. + * @param callback A command handler function with access to the [diff information](#LineChange). + * @param thisArg The `this` context used when invoking the handler function. + * @return Disposable which unregisters this command on disposal. + */ + registerDiffInformationCommand(command: string, callback: (diff: LineChange[], ...args: any[]) => any, thisArg?: any): Disposable; + /* END PROPOSED *********************************************************************************/ + } + + /** + * Represents the state of a window. + */ + declare export interface WindowState { + + /** + * Whether the current window is focused. + */ + +focused: boolean; + } + + /** + * Namespace for dealing with the current window of the editor. That is visible + * and active editors, as well as, UI elements to show messages, selections, and + * asking for user input. + */ + declare export var window: { + + /** + * The currently active editor or `undefined`. The active editor is the one + * that currently has focus or, when none has focus, the one that has changed + * input most recently. + */ + activeTextEditor: ?TextEditor; + + /** + * The currently visible editors or an empty array. + */ + visibleTextEditors: TextEditor[]; + + /** + * An [event](#Event) which fires when the [active editor](#window.activeTextEditor) + * has changed. *Note* that the event also fires when the active editor changes + * to `undefined`. + */ + +onDidChangeActiveTextEditor: Event; + + /** + * An [event](#Event) which fires when the array of [visible editors](#window.visibleTextEditors) + * has changed. + */ + +onDidChangeVisibleTextEditors: Event; + + /** + * An [event](#Event) which fires when the selection in an editor has changed. + */ + +onDidChangeTextEditorSelection: Event; + + /** + * An [event](#Event) which fires when the options of an editor have changed. + */ + +onDidChangeTextEditorOptions: Event; + + /** + * An [event](#Event) which fires when the view column of an editor has changed. + */ + +onDidChangeTextEditorViewColumn: Event; + + /** + * An [event](#Event) which fires when a terminal is disposed. + */ + +onDidCloseTerminal: Event; + + /** + * Represents the current window's state. + * + * @readonly + */ + state: WindowState; + + /** + * An [event](#Event) which fires when the focus state of the current window + * changes. The value of the event represents whether the window is focused. + */ + +onDidChangeWindowState: Event; + + /** + * Show the given document in a text editor. A [column](#ViewColumn) can be provided + * to control where the editor is being shown. Might change the [active editor](#window.activeTextEditor). + * + * @param document A text document to be shown. + * @param column A view column in which the [editor](#TextEditor) should be shown. The default is the [one](#ViewColumn.One), other values + * are adjusted to be `Min(column, columnCount + 1)`, the [active](#ViewColumn.Active)-column is + * not adjusted. + * @param preserveFocus When `true` the editor will not take focus. + * @return A promise that resolves to an [editor](#TextEditor). + */ + showTextDocument(document: TextDocument, column?: ViewColumnType, preserveFocus?: boolean): Thenable; + + /** + * Show the given document in a text editor. [Options](#TextDocumentShowOptions) can be provided + * to control options of the editor is being shown. Might change the [active editor](#window.activeTextEditor). + * + * @param document A text document to be shown. + * @param options [Editor options](#TextDocumentShowOptions) to configure the behavior of showing the [editor](#TextEditor). + * @return A promise that resolves to an [editor](#TextEditor). + */ + showTextDocument(document: TextDocument, options?: TextDocumentShowOptions): Thenable; + + /** + * A short-hand for `openTextDocument(uri).then(document => showTextDocument(document, options))`. + * + * @see [openTextDocument](#openTextDocument) + * + * @param uri A resource identifier. + * @param options [Editor options](#TextDocumentShowOptions) to configure the behavior of showing the [editor](#TextEditor). + * @return A promise that resolves to an [editor](#TextEditor). + */ + showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable; + + /** + * Create a TextEditorDecorationType that can be used to add decorations to text editors. + * + * @param options Rendering options for the decoration type. + * @return A new decoration type instance. + */ + createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType; + + /** + * Show an information message to users. Optionally provide an array of items which will be presented as + * clickable buttons. + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showInformationMessage(message: string, options?: MessageOptions, ...items: string[]): Thenable; + + /** + * Show an information message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showInformationMessage(message: string, options?: MessageOptions, ...items: T[]): Thenable; + + /** + * Show a warning message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showWarningMessage(message: string, options?: MessageOptions, ...items: string[]): Thenable; + + /** + * Show a warning message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showWarningMessage(message: string, options?: MessageOptions, ...items: T[]): Thenable; + + /** + * Show an error message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showErrorMessage(message: string, options?: MessageOptions, ...items: string[]): Thenable; + + /** + * Show an error message. + * + * @see [showInformationMessage](#window.showInformationMessage) + * + * @param message The message to show. + * @param options Configures the behaviour of the message. + * @param items A set of items that will be rendered as actions in the message. + * @return A thenable that resolves to the selected item or `undefined` when being dismissed. + */ + showErrorMessage(message: string, options?: MessageOptions, ...items: T[]): Thenable; + + /** + * Shows a selection list. + * + * @param items An array of strings, or a promise that resolves to an array of strings. + * @param options Configures the behavior of the selection list. + * @param token A token that can be used to signal cancellation. + * @return A promise that resolves to the selection or `undefined`. + */ + showQuickPick(items: string[] | Thenable, options?: QuickPickOptions, token?: CancellationToken): Thenable; + + /** + * Shows a selection list. + * + * @param items An array of items, or a promise that resolves to an array of items. + * @param options Configures the behavior of the selection list. + * @param token A token that can be used to signal cancellation. + * @return A promise that resolves to the selected item or `undefined`. + */ + showQuickPick(items: T[] | Thenable, options?: QuickPickOptions, token?: CancellationToken): Thenable; + + /** + * Shows a selection list of [workspace folders](#workspace.workspaceFolders) to pick from. + * Returns `undefined` if no folder is open. + * + * @param options Configures the behavior of the workspace folder list. + * @return A promise that resolves to the workspace folder or `undefined`. + */ + showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions): Thenable; + + /** + * Shows a file open dialog to the user which allows to select a file + * for opening-purposes. + * + * @param options Options that control the dialog. + * @returns A promise that resolves to the selected resources or `undefined`. + */ + showOpenDialog(options: OpenDialogOptions): Thenable; + + /** + * Shows a file save dialog to the user which allows to select a file + * for saving-purposes. + * + * @param options Options that control the dialog. + * @returns A promise that resolves to the selected resource or `undefined`. + */ + showSaveDialog(options: SaveDialogOptions): Thenable; + + /** + * Opens an input box to ask the user for input. + * + * The returned value will be `undefined` if the input box was canceled (e.g. pressing ESC). Otherwise the + * returned value will be the string typed by the user or an empty string if the user did not type + * anything but dismissed the input box with OK. + * + * @param options Configures the behavior of the input box. + * @param token A token that can be used to signal cancellation. + * @return A promise that resolves to a string the user provided or to `undefined` in case of dismissal. + */ + showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable; + + /** + * Create a new [output channel](#OutputChannel) with the given name. + * + * @param name Human-readable string which will be used to represent the channel in the UI. + */ + createOutputChannel(name: string): OutputChannel; + + /** + * Set a message to the status bar. This is a short hand for the more powerful + * status bar [items](#window.createStatusBarItem). + * + * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text). + * @param hideAfterTimeout Timeout in milliseconds after which the message will be disposed. + * @return A disposable which hides the status bar message. + */ + setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable; + + /** + * Set a message to the status bar. This is a short hand for the more powerful + * status bar [items](#window.createStatusBarItem). + * + * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text). + * @param hideWhenDone Thenable on which completion (resolve or reject) the message will be disposed. + * @return A disposable which hides the status bar message. + */ + setStatusBarMessage(text: string, hideWhenDone: Thenable): Disposable; + + /** + * Set a message to the status bar. This is a short hand for the more powerful + * status bar [items](#window.createStatusBarItem). + * + * *Note* that status bar messages stack and that they must be disposed when no + * longer used. + * + * @param text The message to show, supports icon substitution as in status bar [items](#StatusBarItem.text). + * @return A disposable which hides the status bar message. + */ + setStatusBarMessage(text: string): Disposable; + + /** + * Show progress in the editor. Progress is shown while running the given callback + * and while the promise it returned isn't resolved nor rejected. The location at which + * progress should show (and other details) is defined via the passed [`ProgressOptions`](#ProgressOptions). + * + * @param task A callback returning a promise. Progress state can be reported with + * the provided [progress](#Progress)-object. + * @return The thenable the task-callback returned. + */ + withProgress(options: ProgressOptions, task: (progress: Progress<{ message?: string; }>) => Thenable): Thenable; + + /** + * Creates a status bar [item](#StatusBarItem). + * + * @param alignment The alignment of the item. + * @param priority The priority of the item. Higher values mean the item should be shown more to the left. + * @return A new status bar item. + */ + createStatusBarItem(alignment?: StatusBarAlignmentType, priority?: number): StatusBarItem; + + /** + * Creates a [Terminal](#Terminal). The cwd of the terminal will be the workspace directory + * if it exists, regardless of whether an explicit customStartPath setting exists. + * + * @param name Optional human-readable string which will be used to represent the terminal in the UI. + * @param shellPath Optional path to a custom shell executable to be used in the terminal. + * @param shellArgs Optional args for the custom shell executable, this does not work on Windows (see #8429) + * @return A new Terminal. + */ + createTerminal(name?: string, shellPath?: string, shellArgs?: string[]): Terminal; + + /** + * Creates a [Terminal](#Terminal). The cwd of the terminal will be the workspace directory + * if it exists, regardless of whether an explicit customStartPath setting exists. + * + * @param options A TerminalOptions object describing the characteristics of the new terminal. + * @return A new Terminal. + */ + createTerminal(options: TerminalOptions): Terminal; + + /** + * Register a [TreeDataProvider](#TreeDataProvider) for the view contributed using the extension point `views`. + * @param viewId Id of the view contributed using the extension point `views`. + * @param treeDataProvider A [TreeDataProvider](#TreeDataProvider) that provides tree data for the view + */ + registerTreeDataProvider(viewId: string, treeDataProvider: TreeDataProvider): Disposable; + + /* BEGIN PROPOSED *******************************************************************************/ + registerDecorationProvider(provider: DecorationProvider): Disposable; + /* END PROPOSED *********************************************************************************/ + } + + /** + * A data provider that provides tree data + */ + declare export interface TreeDataProvider { + /** + * An optional event to signal that an element or root has changed. + * This will trigger the view to update the changed element/root and its children recursively (if shown). + * To signal that root has changed, do not pass any argument or pass `undefined` or `null`. + */ + onDidChangeTreeData?: Event; + + /** + * Get [TreeItem](#TreeItem) representation of the `element` + * + * @param element The element for which [TreeItem](#TreeItem) representation is asked for. + * @return [TreeItem](#TreeItem) representation of the element + */ + getTreeItem(element: T): TreeItem | Thenable; + + /** + * Get the children of `element` or root if no element is passed. + * + * @param element The element from which the provider gets children. Can be `undefined`. + * @return Children of `element` or root if no element is passed. + */ + getChildren(element?: T): ProviderResult; + } + + declare export class TreeItem { + /** + * A human-readable string describing this item. When `falsy`, it is derived from [resourceUri](#TreeItem.resourceUri). + */ + label?: string; + + /** + * Optional id for the tree item that has to be unique across tree. The id is used to preserve the selection and expansion state of the tree item. + * + * If not provided, an id is generated using the tree item's label. **Note** that when labels change, ids will change and that selection and expansion state cannot be kept stable anymore. + */ + id?: string; + + /** + * The icon path for the tree item. When `falsy`, it is derived from [resourceUri](#TreeItem.resourceUri). + */ + iconPath?: string | Uri | { light: string | Uri; dark: string | Uri }; + + /** + * The [uri](#Uri) of the resource representing this item. + * + * Will be used to derive the [label](#TreeItem.label), when it is not provided. + * Will be used to derive the icon from current file icon theme, when [iconPath](#TreeItem.iconPath) is not provided. + */ + resourceUri?: Uri; + + /** + * The [command](#Command) which should be run when the tree item is selected. + */ + command?: Command; + + /** + * [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. + */ + collapsibleState?: TreeItemCollapsibleStateType; + + /** + * Context value of the tree item. This can be used to contribute item specific actions in the tree. + * For example, a tree item is given a context value as `folder`. When contributing actions to `view/item/context` + * using `menus` extension point, you can specify context value for key `viewItem` in `when` expression like `viewItem == folder`. + * ``` + * "contributes": { + * "menus": { + * "view/item/context": [ + * { + * "command": "extension.deleteFolder", + * "when": "viewItem == folder" + * } + * ] + * } + * } + * ``` + * This will show action `extension.deleteFolder` only for items with `contextValue` is `folder`. + */ + contextValue?: string; + + /** + * @param label A human-readable string describing this item + * @param collapsibleState [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#TreeItemCollapsibleState.None) + */ + constructor(label: string, collapsibleState?: TreeItemCollapsibleStateType): void; + + /** + * @param resourceUri The [uri](#Uri) of the resource representing this item. + * @param collapsibleState [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#TreeItemCollapsibleState.None) + */ + constructor(resourceUri: Uri, collapsibleState?: TreeItemCollapsibleStateType): void; + } + + /** + * Collapsible state of the tree item + */ + declare export var TreeItemCollapsibleState: { + /** + * Determines an item can be neither collapsed nor expanded. Implies it has no children. + */ + +None: 0, + /** + * Determines an item is collapsed + */ + +Collapsed: 1, + /** + * Determines an item is expanded + */ + +Expanded: 2 + } + declare export type TreeItemCollapsibleStateType = $Values; + + /** + * Value-object describing what options a terminal should use. + */ + declare export interface TerminalOptions { + /** + * A human-readable string which will be used to represent the terminal in the UI. + */ + name?: string; + + /** + * A path to a custom shell executable to be used in the terminal. + */ + shellPath?: string; + + /** + * Args for the custom shell executable, this does not work on Windows (see #8429) + */ + shellArgs?: string[]; + + /** + * A path for the current working directory to be used for the terminal. + */ + cwd?: string; + + /** + * Object with environment variables that will be added to the VS Code process. + */ + env?: { [key: string]: string | null }; + } + + /** + * A location in the editor at which progress information can be shown. It depends on the + * location how progress is visually represented. + */ + declare export var ProgressLocation: { + + /** + * Show progress for the source control viewlet, as overlay for the icon and as progress bar + * inside the viewlet (when visible). + */ + +SourceControl: 1, + + /** + * Show progress in the status bar of the editor. + */ + +Window: 10 + } + declare export type ProgressLocationType = $Values; + + /** + * Value-object describing where and how progress should show. + */ + declare export interface ProgressOptions { + + /** + * The location at which progress should show. + */ + location: ProgressLocationType; + + /** + * A human-readable string which will be used to describe the + * operation. + */ + title?: string; + } + + /** + * An event describing an individual change in the text of a [document](#TextDocument). + */ + declare export interface TextDocumentContentChangeEvent { + /** + * The range that got replaced. + */ + range: Range; + /** + * The length of the range that got replaced. + */ + rangeLength: number; + /** + * The new text for the range. + */ + text: string; + } + + /** + * An event describing a transactional [document](#TextDocument) change. + */ + declare export interface TextDocumentChangeEvent { + + /** + * The affected document. + */ + document: TextDocument; + + /** + * An array of content changes. + */ + contentChanges: TextDocumentContentChangeEvent[]; + } + + /** + * Represents reasons why a text document is saved. + */ + declare export var TextDocumentSaveReason: { + + /** + * Manually triggered, e.g. by the user pressing save, by starting debugging, + * or by an API call. + */ + +Manual: 1, + + /** + * Automatic after a delay. + */ + +AfterDelay: 2, + + /** + * When the editor lost focus. + */ + +FocusOut: 3 + } + declare export type TextDocumentSaveReasonType = $Values; + + /** + * An event that is fired when a [document](#TextDocument) will be saved. + * + * To make modifications to the document before it is being saved, call the + * [`waitUntil`](#TextDocumentWillSaveEvent.waitUntil)-function with a thenable + * that resolves to an array of [text edits](#TextEdit). + */ + declare export interface TextDocumentWillSaveEvent { + + /** + * The document that will be saved. + */ + document: TextDocument; + + /** + * The reason why save was triggered. + */ + reason: TextDocumentSaveReasonType; + + /** + * Allows to pause the event loop and to apply [pre-save-edits](#TextEdit). + * Edits of subsequent calls to this function will be applied in order. The + * edits will be *ignored* if concurrent modifications of the document happened. + * + * *Note:* This function can only be called during event dispatch and not + * in an asynchronous manner: + * + * ```ts + * workspace.onWillSaveTextDocument(event => { + * // async, will *throw* an error + * setTimeout(() => event.waitUntil(promise)); + * + * // sync, OK + * event.waitUntil(promise); + * }) + * ``` + * + * @param thenable A thenable that resolves to [pre-save-edits](#TextEdit). + */ + waitUntil(thenable: Thenable): void; + + /** + * Allows to pause the event loop until the provided thenable resolved. + * + * *Note:* This function can only be called during event dispatch. + * + * @param thenable A thenable that delays saving. + */ + waitUntil(thenable: Thenable): void; + } + + /** + * An event describing a change to the set of [workspace folders](#workspace.workspaceFolders). + */ + declare export interface WorkspaceFoldersChangeEvent { + /** + * Added workspace folders. + */ + +added: WorkspaceFolder[]; + + /** + * Removed workspace folders. + */ + +removed: WorkspaceFolder[]; + } + + /** + * A workspace folder is one of potentially many roots opened by the editor. All workspace folders + * are equal which means there is no notion of an active or master workspace folder. + */ + declare export interface WorkspaceFolder { + + /** + * The associated uri for this workspace folder. + * + * *Note:* The [Uri](#Uri)-type was intentionally chosen such that future releases of the editor can support + * workspace folders that are not stored on the local disk, e.g. `ftp://server/workspaces/foo`. + */ + +uri: Uri; + + /** + * The name of this workspace folder. Defaults to + * the basename of its [uri-path](#Uri.path) + */ + +name: string; + + /** + * The ordinal number of this workspace folder. + */ + +index: number; + } + + /** + * Namespace for dealing with the current workspace. A workspace is the representation + * of the folder that has been opened. There is no workspace when just a file but not a + * folder has been opened. + * + * The workspace offers support for [listening](#workspace.createFileSystemWatcher) to fs + * events and for [finding](#workspace.findFiles) files. Both perform well and run _outside_ + * the editor-process so that they should be always used instead of nodejs-equivalents. + */ + declare export var workspace: { + +rootPath: string | void; + + /** + * List of workspace folders or `undefined` when no folder is open. + * *Note* that the first entry corresponds to the value of `rootPath`. + * + * @readonly + */ + workspaceFolders: ?WorkspaceFolder[]; + + /** + * The name of the workspace. `undefined` when no folder + * has been opened. + * + * @readonly + */ + name: ?string; + + /** + * An event that is emitted when a workspace folder is added or removed. + */ + +onDidChangeWorkspaceFolders: Event; + + /** + * Returns the [workspace folder](#WorkspaceFolder) that contains a given uri. + * * returns `undefined` when the given uri doesn't match any workspace folder + * * returns the *input* when the given uri is a workspace folder itself + * + * @param uri An uri. + * @return A workspace folder or `undefined` + */ + getWorkspaceFolder(uri: Uri): ?WorkspaceFolder; + + /** + * Returns a path that is relative to the workspace folder or folders. + * + * When there are no [workspace folders](#workspace.workspaceFolders) or when the path + * is not contained in them, the input is returned. + * + * @param pathOrUri A path or uri. When a uri is given its [fsPath](#Uri.fsPath) is used. + * @param includeWorkspaceFolder When `true` and when the given path is contained inside a + * workspace folder the name of the workspace is prepended. Defaults to `true` when there are + * multiple workspace folders and `false` otherwise. + * @return A path relative to the root or the input. + */ + asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string; + + /** + * Creates a file system watcher. + * + * A glob pattern that filters the file events on their absolute path must be provided. Optionally, + * flags to ignore certain kinds of events can be provided. To stop listening to events the watcher must be disposed. + * + * *Note* that only files within the current [workspace folders](#workspace.workspaceFolders) can be watched. + * + * @param globPattern A [glob pattern](#GlobPattern) that is applied to the absolute paths of created, changed, + * and deleted files. Use a [relative pattern](#RelativePattern) to limit events to a certain [workspace folder](#WorkspaceFolder). + * @param ignoreCreateEvents Ignore when files have been created. + * @param ignoreChangeEvents Ignore when files have been changed. + * @param ignoreDeleteEvents Ignore when files have been deleted. + * @return A new file system watcher instance. + */ + createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher; + + /** + * Find files across all [workspace folders](#workspace.workspaceFolders) in the workspace. + * + * @sample `findFiles('**​/*.js', '**​/node_modules/**', 10)` + * @param include A [glob pattern](#GlobPattern) that defines the files to search for. The glob pattern + * will be matched against the file paths of resulting matches relative to their workspace. Use a [relative pattern](#RelativePattern) + * to restrict the search results to a [workspace folder](#WorkspaceFolder). + * @param exclude A [glob pattern](#GlobPattern) that defines files and folders to exclude. The glob pattern + * will be matched against the file paths of resulting matches relative to their workspace. When `undefined` only default excludes will + * apply, when `null` no excludes will apply. + * @param maxResults An upper-bound for the result. + * @param token A token that can be used to signal cancellation to the underlying search engine. + * @return A thenable that resolves to an array of resource identifiers. Will return no results if no + * [workspace folders](#workspace.workspaceFolders) are opened. + */ + findFiles(include: GlobPattern, exclude?: GlobPattern | null, maxResults?: number, token?: CancellationToken): Thenable; + + /** + * Save all dirty files. + * + * @param includeUntitled Also save files that have been created during this session. + * @return A thenable that resolves when the files have been saved. + */ + saveAll(includeUntitled?: boolean): Thenable; + + /** + * Make changes to one or many resources as defined by the given + * [workspace edit](#WorkspaceEdit). + * + * When applying a workspace edit, the editor implements an 'all-or-nothing'-strategy, + * that means failure to load one document or make changes to one document will cause + * the edit to be rejected. + * + * @param edit A workspace edit. + * @return A thenable that resolves when the edit could be applied. + */ + applyEdit(edit: WorkspaceEdit): Thenable; + + /** + * All text documents currently known to the system. + * + * @readonly + */ + textDocuments: TextDocument[]; + + /** + * Opens a document. Will return early if this document is already open. Otherwise + * the document is loaded and the [didOpen](#workspace.onDidOpenTextDocument)-event fires. + * + * The document is denoted by an [uri](#Uri). Depending on the [scheme](#Uri.scheme) the + * following rules apply: + * * `file`-scheme: Open a file on disk, will be rejected if the file does not exist or cannot be loaded. + * * `untitled`-scheme: A new file that should be saved on disk, e.g. `untitled:c:\frodo\new.js`. The language + * will be derived from the file name. + * * For all other schemes the registered text document content [providers](#TextDocumentContentProvider) are consulted. + * + * *Note* that the lifecycle of the returned document is owned by the editor and not by the extension. That means an + * [`onDidClose`](#workspace.onDidCloseTextDocument)-event can occur at any time after opening it. + * + * @param uri Identifies the resource to open. + * @return A promise that resolves to a [document](#TextDocument). + */ + openTextDocument(uri: Uri): Thenable; + + /** + * A short-hand for `openTextDocument(Uri.file(fileName))`. + * + * @see [openTextDocument](#openTextDocument) + * @param fileName A name of a file on disk. + * @return A promise that resolves to a [document](#TextDocument). + */ + openTextDocument(fileName: string): Thenable; + + /** + * Opens an untitled text document. The editor will prompt the user for a file + * path when the document is to be saved. The `options` parameter allows to + * specify the *language* and/or the *content* of the document. + * + * @param options Options to control how the document will be created. + * @return A promise that resolves to a [document](#TextDocument). + */ + openTextDocument(options?: { language?: string; content?: string; }): Thenable; + + /** + * Register a text document content provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The uri-scheme to register for. + * @param provider A content provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable; + + /** + * An event that is emitted when a [text document](#TextDocument) is opened. + * + * To add an event listener when a visible text document is opened, use the [TextEditor](#TextEditor) events in the + * [window](#window) namespace. Note that: + * + * - The event is emitted before the [document](#TextDocument) is updated in the + * [active text editor](#window.activeTextEditor) + * - When a [text document](#TextDocument) is already open (e.g.: open in another [visible text editor](#window.visibleTextEditors)) this event is not emitted + * + */ + +onDidOpenTextDocument: Event; + + /** + * An event that is emitted when a [text document](#TextDocument) is disposed. + * + * To add an event listener when a visible text document is closed, use the [TextEditor](#TextEditor) events in the + * [window](#window) namespace. Note that this event is not emitted when a [TextEditor](#TextEditor) is closed + * but the document remains open in another [visible text editor](#window.visibleTextEditors). + */ + +onDidCloseTextDocument: Event; + + /** + * An event that is emitted when a [text document](#TextDocument) is changed. This usually happens + * when the [contents](#TextDocument.getText) changes but also when other things like the + * [dirty](#TextDocument.isDirty)-state changes. + */ + +onDidChangeTextDocument: Event; + + /** + * An event that is emitted when a [text document](#TextDocument) will be saved to disk. + * + * *Note 1:* Subscribers can delay saving by registering asynchronous work. For the sake of data integrity the editor + * might save without firing this event. For instance when shutting down with dirty files. + * + * *Note 2:* Subscribers are called sequentially and they can [delay](#TextDocumentWillSaveEvent.waitUntil) saving + * by registering asynchronous work. Protection against misbehaving listeners is implemented as such: + * * there is an overall time budget that all listeners share and if that is exhausted no further listener is called + * * listeners that take a long time or produce errors frequently will not be called anymore + * + * The current thresholds are 1.5 seconds as overall time budget and a listener can misbehave 3 times before being ignored. + */ + +onWillSaveTextDocument: Event; + + /** + * An event that is emitted when a [text document](#TextDocument) is saved to disk. + */ + +onDidSaveTextDocument: Event; + + /** + * Get a workspace configuration object. + * + * When a section-identifier is provided only that part of the configuration + * is returned. Dots in the section-identifier are interpreted as child-access, + * like `{ myExt: { setting: { doIt: true }}}` and `getConfiguration('myExt.setting').get('doIt') === true`. + * + * When a resource is provided, configuration scoped to that resource is returned. + * + * @param section A dot-separated identifier. + * @param resource A resource for which the configuration is asked for + * @return The full configuration or a subset. + */ + getConfiguration(section?: string, resource?: Uri): WorkspaceConfiguration; + + /** + * An event that is emitted when the [configuration](#WorkspaceConfiguration) changed. + */ + +onDidChangeConfiguration: Event; + + /** + * Register a filesystem provider for a given scheme, e.g. `ftp`. + * + * There can only be one provider per scheme and an error is being thrown when a scheme + * has been claimed by another provider or when it is reserved. + * + * @param scheme The uri-[scheme](#Uri.scheme) the provider registers for. + * @param provider The filesystem provider. + * @param options Immutable metadata about the provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options: { isCaseSensitive?: boolean }): Disposable; + + /* BEGIN PROPOSED *******************************************************************************/ + /** + * DEPRECATED + */ + registerSearchProvider(scheme: string, provider: FileSearchProvider & TextSearchProvider): Disposable; + + /** + * Register a file index provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The provider will be invoked for workspace folders that have this file scheme. + * @param provider The provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + // registerFileIndexProvider(scheme: string, provider: FileIndexProvider): Disposable; + + /** + * Register a search provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The provider will be invoked for workspace folders that have this file scheme. + * @param provider The provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerFileSearchProvider(scheme: string, provider: FileSearchProvider): Disposable; + + /** + * Register a text search provider. + * + * Only one provider can be registered per scheme. + * + * @param scheme The provider will be invoked for workspace folders that have this file scheme. + * @param provider The provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerTextSearchProvider(scheme: string, provider: TextSearchProvider): Disposable; + + /** + * Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace. + * @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words. + * @param callback A callback, called for each result + * @param token A token that can be used to signal cancellation to the underlying search engine. + * @return A thenable that resolves when the search is complete. + */ + findTextInFiles(query: TextSearchQuery, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable; + + /** + * Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace. + * @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words. + * @param options An optional set of query options. Include and exclude patterns, maxResults, etc. + * @param callback A callback, called for each result + * @param token A token that can be used to signal cancellation to the underlying search engine. + * @return A thenable that resolves when the search is complete. + */ + findTextInFiles(query: TextSearchQuery, options: FindTextInFilesOptions, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable; + + /** + * This method replaces `deleteCount` [workspace folders](#workspace.workspaceFolders) starting at index `start` + * by an optional set of `workspaceFoldersToAdd` on the `vscode.workspace.workspaceFolders` array. This "splice" + * behavior can be used to add, remove and change workspace folders in a single operation. + * + * If the first workspace folder is added, removed or changed, the currently executing extensions (including the * one that called this method) will be terminated and restarted so that the (deprecated) `rootPath` property is + * updated to point to the first workspace folder. + * + * Use the [`onDidChangeWorkspaceFolders()`](#onDidChangeWorkspaceFolders) event to get notified when the + * workspace folders have been updated. + * + * **Example:** adding a new workspace folder at the end of workspace folders + * ```typescript + * workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...}); + * ``` + * + * **Example:** removing the first workspace folder + * ```typescript + * workspace.updateWorkspaceFolders(0, 1); + * ``` + * + * **Example:** replacing an existing workspace folder with a new one + * ```typescript + * workspace.updateWorkspaceFolders(0, 1, { uri: ...}); + * ``` + * + * It is valid to remove an existing workspace folder and add it again with a different name + * to rename that folder. + * + * **Note:** it is not valid to call [updateWorkspaceFolders()](#updateWorkspaceFolders) multiple times + * without waiting for the [`onDidChangeWorkspaceFolders()`](#onDidChangeWorkspaceFolders) to fire. + * + * @param start the zero-based location in the list of currently opened [workspace folders](#WorkspaceFolder) + * from which to start deleting workspace folders. + * @param deleteCount the optional number of workspace folders to remove. + * @param workspaceFoldersToAdd the optional variable set of workspace folders to add in place of the deleted ones. + * Each workspace is identified with a mandatory URI and an optional name. + * @return true if the operation was successfully started and false otherwise if arguments were used that would result + * in invalid workspace folder state (e.g. 2 folders with the same URI). + */ + updateWorkspaceFolders(start: number, deleteCount: ?number, ...workspaceFoldersToAdd: { uri: Uri, name?: string }[]): boolean; + /* END PROPOSED *********************************************************************************/ + } + + /** + * Namespace for tasks functionality. + */ + declare export var tasks: { + /** + * Register a task provider. + * + * @param type The task kind type this provider is registered for. + * @param provider A task provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerTaskProvider(type: string, provider: TaskProvider): Disposable; + + /** + * Fetches all tasks available in the systems. This includes tasks + * from `tasks.json` files as well as tasks from task providers + * contributed through extensions. + * + * @param filter a filter to filter the return tasks. + */ + fetchTasks(filter?: TaskFilter): Thenable; + + /** + * Executes a task that is managed by VS Code. The returned + * task execution can be used to terminate the task. + * + * @param task the task to execute + */ + executeTask(task: Task): Thenable; + + /** + * The currently active task executions or an empty array. + * + * @readonly + */ + +taskExecutions: $ReadOnlyArray; + + /** + * Fires when a task starts. + */ + +onDidStartTask: Event; + + /** + * Fires when a task ends. + */ + +onDidEndTask: Event; + + /** + * Fires when the underlying process has been started. + * This event will not fire for tasks that don't + * execute an underlying process. + */ + +onDidStartTaskProcess: Event; + + /** + * Fires when the underlying process has ended. + * This event will not fire for tasks that don't + * execute an underlying process. + */ + +onDidEndTaskProcess: Event; + } + + /** + * An event describing the change in Configuration + */ + declare export interface ConfigurationChangeEvent { + + /** + * Returns `true` if the given section for the given resource (if provided) is affected. + * + * @param section Configuration name, supports _dotted_ names. + * @param resource A resource Uri. + * @return `true` if the given section for the given resource (if provided) is affected. + */ + affectsConfiguration(section: string, resource?: Uri): boolean; + } + + /** + * Namespace for participating in language-specific editor [features](https://code.visualstudio.com/docs/editor/editingevolved), + * like IntelliSense, code actions, diagnostics etc. + * + * Many programming languages exist and there is huge variety in syntaxes, semantics, and paradigms. Despite that, features + * like automatic word-completion, code navigation, or code checking have become popular across different tools for different + * programming languages. + * + * The editor provides an API that makes it simple to provide such common features by having all UI and actions already in place and + * by allowing you to participate by providing data only. For instance, to contribute a hover all you have to do is provide a function + * that can be called with a [TextDocument](#TextDocument) and a [Position](#Position) returning hover info. The rest, like tracking the + * mouse, positioning the hover, keeping the hover stable etc. is taken care of by the editor. + * + * ```javascript + * languages.registerHoverProvider('javascript', { + * provideHover(document, position, token) { + * return new Hover('I am a hover!'); + * } + * }); + * ``` + * + * Registration is done using a [document selector](#DocumentSelector) which is either a language id, like `javascript` or + * a more complex [filter](#DocumentFilter) like `{ language: 'typescript', scheme: 'file' }`. Matching a document against such + * a selector will result in a [score](#languages.match) that is used to determine if and how a provider shall be used. When + * scores are equal the provider that came last wins. For features that allow full arity, like [hover](#languages.registerHoverProvider), + * the score is only checked to be `>0`, for other features, like [IntelliSense](#languages.registerCompletionItemProvider) the + * score is used for determining the order in which providers are asked to participate. + */ + declare export var languages: { + + /** + * Return the identifiers of all known languages. + * @return Promise resolving to an array of identifier strings. + */ + getLanguages(): Thenable; + + /** + * Compute the match between a document [selector](#DocumentSelector) and a document. Values + * greater than zero mean the selector matches the document. + * + * A match is computed according to these rules: + * 1. When [`DocumentSelector`](#DocumentSelector) is an array, compute the match for each contained `DocumentFilter` or language identifier and take the maximum value. + * 2. A string will be desugared to become the `language`-part of a [`DocumentFilter`](#DocumentFilter), so `"fooLang"` is like `{ language: "fooLang" }`. + * 3. A [`DocumentFilter`](#DocumentFilter) will be matched against the document by comparing its parts with the document. The following rules apply: + * 1. When the `DocumentFilter` is empty (`{}`) the result is `0` + * 2. When `scheme`, `language`, or `pattern` are defined but one doesn’t match, the result is `0` + * 3. Matching against `*` gives a score of `5`, matching via equality or via a glob-pattern gives a score of `10` + * 4. The result is the maximun value of each match + * + * Samples: + * ```js + * // default document from disk (file-scheme) + * doc.uri; //'file:///my/file.js' + * doc.languageId; // 'javascript' + * match('javascript', doc); // 10; + * match({language: 'javascript'}, doc); // 10; + * match({language: 'javascript', scheme: 'file'}, doc); // 10; + * match('*', doc); // 5 + * match('fooLang', doc); // 0 + * match(['fooLang', '*'], doc); // 5 + * + * // virtual document, e.g. from git-index + * doc.uri; // 'git:/my/file.js' + * doc.languageId; // 'javascript' + * match('javascript', doc); // 10; + * match({language: 'javascript', scheme: 'git'}, doc); // 10; + * match('*', doc); // 5 + * ``` + * + * @param selector A document selector. + * @param document A text document. + * @return A number `>0` when the selector matches and `0` when the selector does not match. + */ + match(selector: DocumentSelector, document: TextDocument): number; + + /** + * Create a diagnostics collection. + * + * @param name The [name](#DiagnosticCollection.name) of the collection. + * @return A new diagnostic collection. + */ + createDiagnosticCollection(name?: string): DiagnosticCollection; + + /** + * Register a completion provider. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and groups of equal score are sequentially asked for + * completion items. The process stops when one or many providers of a group return a + * result. A failing provider (rejected promise or exception) will not fail the whole + * operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A completion provider. + * @param triggerCharacters Trigger completion when the user types one of the characters, like `.` or `:`. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider, ...triggerCharacters: string[]): Disposable; + + /** + * Register a code action provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A code action provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider): Disposable; + + /** + * Register a code lens provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A code lens provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider): Disposable; + + /** + * Register a definition provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A definition provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable; + + /** + * Register an implementation provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider An implementation provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable; + + /** + * Register a type definition provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A type definition provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable; + + /** + * Register a hover provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A hover provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable; + + /** + * Register a document highlight provider. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and groups sequentially asked for document highlights. + * The process stops when a provider returns a `non-falsy` or `non-failure` result. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A document highlight provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable; + + /** + * Register a document symbol provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A document symbol provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider): Disposable; + + /** + * Register a workspace symbol provider. + * + * Multiple providers can be registered. In that case providers are asked in parallel and + * the results are merged. A failing provider (rejected promise or exception) will not cause + * a failure of the whole operation. + * + * @param provider A workspace symbol provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider): Disposable; + + /** + * Register a reference provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A reference provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable; + + /** + * Register a reference provider. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A rename provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable; + + /** + * Register a formatting provider for a document. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A document formatting edit provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable; + + /** + * Register a formatting provider for a document range. + * + * *Note:* A document range provider is also a [document formatter](#DocumentFormattingEditProvider) + * which means there is no need to [register](registerDocumentFormattingEditProvider) a document + * formatter when also registering a range provider. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A document range formatting edit provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable; + + /** + * Register a formatting provider that works on type. The provider is active when the user enables the setting `editor.formatOnType`. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and the best-matching provider is used. Failure + * of the selected provider will cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider An on type formatting edit provider. + * @param firstTriggerCharacter A character on which formatting should be triggered, like `}`. + * @param moreTriggerCharacter More trigger characters. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable; + + /** + * Register a signature help provider. + * + * Multiple providers can be registered for a language. In that case providers are sorted + * by their [score](#languages.match) and called sequentially until a provider returns a + * valid result. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A signature help provider. + * @param triggerCharacters Trigger signature help when the user types one of the characters, like `,` or `(`. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; + + /** + * Register a document link provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A document link provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider): Disposable; + + /** + * Register a color provider. + * + * Multiple providers can be registered for a language. In that case providers are asked in + * parallel and the results are merged. A failing provider (rejected promise or exception) will + * not cause a failure of the whole operation. + * + * @param selector A selector that defines the documents this provider is applicable to. + * @param provider A color provider. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable; + + /** + * Set a [language configuration](#LanguageConfiguration) for a language. + * + * @param language A language identifier like `typescript`. + * @param configuration Language configuration. + * @return A [disposable](#Disposable) that unsets this configuration. + */ + setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable; + } + + /** + * Represents the input box in the Source Control viewlet. + */ + declare export interface SourceControlInputBox { + + /** + * Setter and getter for the contents of the input box. + */ + value: string; + + /** + * A string to show as place holder in the input box to guide the user. + */ + placeholder: string; + + /* BEGIN PROPOSED *******************************************************************************/ + /** + * A validation function for the input box. It's possible to change + * the validation provider simply by setting this property to a different function. + */ + +validateInput?: (value: string, cursorPosition: number) => ProviderResult; + /* END PROPOSED *********************************************************************************/ + } + + declare export interface QuickDiffProvider { + + /** + * Provide a [uri](#Uri) to the original resource of any given resource uri. + * + * @param uri The uri of the resource open in a text editor. + * @param token A cancellation token. + * @return A thenable that resolves to uri of the matching original resource. + */ + +provideOriginalResource?: (uri: Uri, token: CancellationToken) => ProviderResult; + } + + /** + * The theme-aware decorations for a + * [source control resource state](#SourceControlResourceState). + */ + declare export interface SourceControlResourceThemableDecorations { + + /** + * The icon path for a specific + * [source control resource state](#SourceControlResourceState). + */ + +iconPath?: string | Uri; + } + + /** + * The decorations for a [source control resource state](#SourceControlResourceState). + * Can be independently specified for light and dark themes. + */ + declare export interface SourceControlResourceDecorations extends SourceControlResourceThemableDecorations { + + /** + * Whether the [source control resource state](#SourceControlResourceState) should + * be striked-through in the UI. + */ + +strikeThrough?: boolean; + + /** + * Whether the [source control resource state](#SourceControlResourceState) should + * be faded in the UI. + */ + +faded?: boolean; + + /** + * The title for a specific + * [source control resource state](#SourceControlResourceState). + */ + +tooltip?: string; + + /** + * The light theme decorations. + */ + +light?: SourceControlResourceThemableDecorations; + + /** + * The dark theme decorations. + */ + +dark?: SourceControlResourceThemableDecorations; + + /* BEGIN PROPOSED *******************************************************************************/ + source?: string; + letter?: string; + color?: ThemeColor; + /* END PROPOSED *********************************************************************************/ + } + + /** + * An source control resource state represents the state of an underlying workspace + * resource within a certain [source control group](#SourceControlResourceGroup). + */ + declare export interface SourceControlResourceState { + + /** + * The [uri](#Uri) of the underlying resource inside the workspace. + */ + +resourceUri: Uri; + + /** + * The [command](#Command) which should be run when the resource + * state is open in the Source Control viewlet. + */ + +command?: Command; + + /** + * The [decorations](#SourceControlResourceDecorations) for this source control + * resource state. + */ + +decorations?: SourceControlResourceDecorations; + } + + /** + * A source control resource group is a collection of + * [source control resource states](#SourceControlResourceState). + */ + declare export interface SourceControlResourceGroup { + + /** + * The id of this source control resource group. + */ + +id: string; + + /** + * The label of this source control resource group. + */ + label: string; + + /** + * Whether this source control resource group is hidden when it contains + * no [source control resource states](#SourceControlResourceState). + */ + hideWhenEmpty?: boolean; + + /** + * This group's collection of + * [source control resource states](#SourceControlResourceState). + */ + resourceStates: SourceControlResourceState[]; + + /** + * Dispose this source control resource group. + */ + dispose(): void; + } + + /** + * An source control is able to provide [resource states](#SourceControlResourceState) + * to the editor and interact with the editor in several source control related ways. + */ + declare export interface SourceControl { + + /** + * The id of this source control. + */ + +id: string; + + /** + * The human-readable label of this source control. + */ + +label: string; + + /** + * The (optional) Uri of the root of this source control. + */ + +rootUri: ?Uri; + + /** + * The [input box](#SourceControlInputBox) for this source control. + */ + +inputBox: SourceControlInputBox; + + /** + * The UI-visible count of [resource states](#SourceControlResourceState) of + * this source control. + * + * Equals to the total number of [resource state](#SourceControlResourceState) + * of this source control, if undefined. + */ + count?: number; + + /** + * An optional [quick diff provider](#QuickDiffProvider). + */ + quickDiffProvider?: QuickDiffProvider; + + /** + * Optional commit template string. + * + * The Source Control viewlet will populate the Source Control + * input with this value when appropriate. + */ + commitTemplate?: string; + + /** + * Optional accept input command. + * + * This command will be invoked when the user accepts the value + * in the Source Control input. + */ + acceptInputCommand?: Command; + + /** + * Optional status bar commands. + * + * These commands will be displayed in the editor's status bar. + */ + statusBarCommands?: Command[]; + + /** + * Create a new [resource group](#SourceControlResourceGroup). + */ + createResourceGroup(id: string, label: string): SourceControlResourceGroup; + + /** + * Dispose this source control. + */ + dispose(): void; + } + + declare export var scm: { + + /** + * Creates a new [source control](#SourceControl) instance. + * + * @param id An `id` for the source control. Something short, eg: `git`. + * @param label A human-readable string for the source control. Eg: `Git`. + * @param rootUri An optional Uri of the root of the source control. Eg: `Uri.parse(workspaceRoot)`. + * @return An instance of [source control](#SourceControl). + */ + createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl; + } + + /** + * Configuration for a debug session. + */ + declare export interface DebugConfiguration { + /** + * The type of the debug session. + */ + type: string; + + /** + * The name of the debug session. + */ + name: string; + + /** + * The request type of the debug session. + */ + request: string; + + /** + * Port of a debugger running locally. If set, VS Code will attempt to + * connect to 127.0.0.1 on this port instead of trying to spawn the debugger + * process itself. + */ + debugServer?: number; + + /** + * Additional debug type specific properties. + */ + [key: string]: any; + } + + /** + * A debug session. + */ + declare export interface DebugSession { + + /** + * The unique ID of this debug session. + */ + +id: string; + + /** + * The debug session's type from the [debug configuration](#DebugConfiguration). + */ + +type: string; + + /** + * The debug session's name from the [debug configuration](#DebugConfiguration). + */ + +name: string; + + /** + * Send a custom request to the debug adapter. + */ + customRequest(command: string, args?: any): Thenable; + } + + /** + * A custom Debug Adapter Protocol event received from a [debug session](#DebugSession). + */ + declare export interface DebugSessionCustomEvent { + /** + * The [debug session](#DebugSession) for which the custom event was received. + */ + session: DebugSession; + + /** + * Type of event. + */ + event: string; + + /** + * Event specific information. + */ + body?: any; + } + + /** + * A debug configuration provider allows to add the initial debug configurations to a newly created launch.json + * and to resolve a launch configuration before it is used to start a new debug session. + * A debug configuration provider is registered via #debug.registerDebugConfigurationProvider. + */ + declare export interface DebugConfigurationProvider { + /** + * Provides initial [debug configuration](#DebugConfiguration). If more than one debug configuration provider is + * registered for the same type, debug configurations are concatenated in arbitrary order. + * + * @param folder The workspace folder for which the configurations are used or undefined for a folderless setup. + * @param token A cancellation token. + * @return An array of [debug configurations](#DebugConfiguration). + */ + +provideDebugConfigurations?: (folder: ?WorkspaceFolder, token?: CancellationToken) => ProviderResult; + + /** + * Resolves a [debug configuration](#DebugConfiguration) by filling in missing values or by adding/changing/removing attributes. + * If more than one debug configuration provider is registered for the same type, the resolveDebugConfiguration calls are chained + * in arbitrary order and the initial debug configuration is piped through the chain. + * Returning the value 'undefined' prevents the debug session from starting. + * + * @param folder The workspace folder from which the configuration originates from or undefined for a folderless setup. + * @param debugConfiguration The [debug configuration](#DebugConfiguration) to resolve. + * @param token A cancellation token. + * @return The resolved debug configuration or undefined. + */ + +resolveDebugConfiguration?: (folder: ?WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken) => ProviderResult; + + /* BEGIN PROPOSED *******************************************************************************/ + /** + * This optional method is called just before a debug adapter is started to determine its excutable path and arguments. + * Registering more than one debugAdapterExecutable for a type results in an error. + * @param folder The workspace folder from which the configuration originates from or undefined for a folderless setup. + * @param token A cancellation token. + * @return a [debug adapter's executable and optional arguments](#DebugAdapterExecutable) or undefined. + */ + +debugAdapterExecutable?: (folder: ?WorkspaceFolder, token?: CancellationToken) => ProviderResult; + /* END PROPOSED *********************************************************************************/ + + } + + /** + * Represents the debug console. + */ + declare export interface DebugConsole { + /** + * Append the given value to the debug console. + * + * @param value A string, falsy values will not be printed. + */ + append(value: string): void; + + /** + * Append the given value and a line feed character + * to the debug console. + * + * @param value A string, falsy values will be printed. + */ + appendLine(value: string): void; + } + + /** + * Namespace for dealing with debug sessions. + */ + declare export var debug: { + + /** + * The currently active [debug session](#DebugSession) or `undefined`. The active debug session is the one + * represented by the debug action floating window or the one currently shown in the drop down menu of the debug action floating window. + * If no debug session is active, the value is `undefined`. + */ + activeDebugSession: ?DebugSession; + + /** + * The currently active [debug console](#DebugConsole). + */ + activeDebugConsole: DebugConsole; + + /** + * List of breakpoints. + */ + breakpoints: Breakpoint[]; + + /** + * An [event](#Event) which fires when the [active debug session](#debug.activeDebugSession) + * has changed. *Note* that the event also fires when the active debug session changes + * to `undefined`. + */ + +onDidChangeActiveDebugSession: Event; + + /** + * An [event](#Event) which fires when a new [debug session](#DebugSession) has been started. + */ + +onDidStartDebugSession: Event; + + /** + * An [event](#Event) which fires when a custom DAP event is received from the [debug session](#DebugSession). + */ + +onDidReceiveDebugSessionCustomEvent: Event; + + /** + * An [event](#Event) which fires when a [debug session](#DebugSession) has terminated. + */ + +onDidTerminateDebugSession: Event; + + /** + * An event that is emitted when a breakpoint is added, removed, or changed. + */ + +onDidChangeBreakpoints: Event; + + /** + * Register a [debug configuration provider](#DebugConfigurationProvider) for a specifc debug type. + * More than one provider can be registered for the same type. + * + * @param type The debug type for which the provider is registered. + * @param provider The [debug configuration provider](#DebugConfigurationProvider) to register. + * @return A [disposable](#Disposable) that unregisters this provider when being disposed. + */ + registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider): Disposable; + + /** + * Start debugging by using either a named launch or named compound configuration, + * or by directly passing a [DebugConfiguration](#DebugConfiguration). + * The named configurations are looked up in '.vscode/launch.json' found in the given folder. + * Before debugging starts, all unsaved files are saved and the launch configurations are brought up-to-date. + * Folder specific variables used in the configuration (e.g. '${workspaceFolder}') are resolved against the given folder. + * @param folder The [workspace folder](#WorkspaceFolder) for looking up named configurations and resolving variables or `undefined` for a non-folder setup. + * @param nameOrConfiguration Either the name of a debug or compound configuration or a [DebugConfiguration](#DebugConfiguration) object. + * @return A thenable that resolves when debugging could be successfully started. + */ + startDebugging(folder: ?WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration): Thenable; + + /** + * Add breakpoints. + * @param breakpoints The breakpoints to add. + */ + addBreakpoints(breakpoints: Breakpoint[]): void; + + /** + * Remove breakpoints. + * @param breakpoints The breakpoints to remove. + */ + removeBreakpoints(breakpoints: Breakpoint[]): void; + } + + /** + * Namespace for dealing with installed extensions. Extensions are represented + * by an [extension](#Extension)-interface which allows to reflect on them. + * + * Extension writers can provide APIs to other extensions by returning their API public + * surface from the `activate`-call. + * + * ```javascript + * export function activate(context: vscode.ExtensionContext) { + * let api = { + * sum(a, b) { + * return a + b; + * }, + * mul(a, b) { + * return a * b; + * } + * }; + * // 'export' public api-surface + * return api; + * } + * ``` + * When depending on the API of another extension add an `extensionDependency`-entry + * to `package.json`, and use the [getExtension](#extensions.getExtension)-function + * and the [exports](#Extension.exports)-property, like below: + * + * ```javascript + * let mathExt = extensions.getExtension('genius.math'); + * let importedApi = mathExt.exports; + * + * console.log(importedApi.mul(42, 1)); + * ``` + */ + declare export var extensions: { + + /** + * Get an extension by its full identifier in the form of: `publisher.name`. + * + * @param extensionId An extension identifier. + * @return An extension or `undefined`. + */ + getExtension(extensionId: string): ?Extension; + + /** + * Get an extension its full identifier in the form of: `publisher.name`. + * + * @param extensionId An extension identifier. + * @return An extension or `undefined`. + */ + getExtension(extensionId: string): ?Extension; + + /** + * All extensions currently known to the system. + */ + all: Extension[]; + } + + /** + * Enumeration of file types. + */ + declare export var FileType: { + /** + * The file type is unknown. + */ + Unknown: 0, + /** + * A regular file. + */ + File: 1, + /** + * A directory. + */ + Directory: 2, + /** + * A symbolic link to a file. + */ + SymbolicLink: 64 + } + declare export type FileTypeType = $Values; + + /** + * The `FileStat`-type represents metadata about a file. + */ + declare export type FileStat = { + /** + * The type of the file, e.g. is a regular file, a directory, or symbolic link + * to a file. + */ + type: FileTypeType; + + /** + * The creation timestamp in milliseconds. + */ + ctime: number; + + /** + * The modification timestamp in milliseconds. + */ + mtime: number; + + /** + * The size in bytes. + */ + size: number; + } + + /** + * A type that filesystem providers should use to signal errors. + * + * This class has factory methods for common error-cases, like `EntryNotFound` when + * a file or folder doesn't exist, use them like so: `throw vscode.FileSystemError.EntryNotFound(someUri);` + */ + declare export class FileSystemError extends Error { + /** + * Create an error to signal that a file or folder wasn't found. + * @param messageOrUri Message or uri. + */ + static FileNotFound(messageOrUri?: string | Uri): FileSystemError; + + /** + * Create an error to signal that a file or folder already exists, e.g. when + * creating but not overwriting a file. + * @param messageOrUri Message or uri. + */ + static FileExists(messageOrUri?: string | Uri): FileSystemError; + + /** + * Create an error to signal that a file is not a folder. + * @param messageOrUri Message or uri. + */ + static FileNotADirectory(messageOrUri?: string | Uri): FileSystemError; + + /** + * Create an error to signal that a file is a folder. + * @param messageOrUri Message or uri. + */ + static FileIsADirectory(messageOrUri?: string | Uri): FileSystemError; + + /** + * Create an error to signal that an operation lacks required permissions. + * @param messageOrUri Message or uri. + */ + static NoPermissions(messageOrUri?: string | Uri): FileSystemError; + + /** + * Create an error to signal that the file system is unavailable or too busy to + * complete a request. + * @param messageOrUri Message or uri. + */ + static Unavailable(messageOrUri?: string | Uri): FileSystemError; + + /** + * Creates a new filesystem error. + * + * @param messageOrUri Message or uri. + */ + constructor(messageOrUri?: string | Uri) : void; + } + + declare export var FileChangeType: { + Changed: 1, + Created: 2, + Deleted: 3 + } + declare export type FileChangeTypeType = $Values; + + /** + * The event filesystem providers must use to signal a file change. + */ + declare export interface FileChangeEvent { + /** + * The type of change. + */ + type: FileChangeTypeType; + + /** + * The uri of the file that has changed. + */ + uri: Uri; + } + + /** + * The filesystem provider defines what the editor needs to read, write, discover, + * and to manage files and folders. It allows extensions to serve files from remote places, + * like ftp-servers, and to seamlessly integrate those into the editor. + * + * * *Note 1:* The filesystem provider API works with [uris](#Uri) and assumes hierarchical + * paths, e.g. `foo:/my/path` is a child of `foo:/my/` and a parent of `foo:/my/path/deeper`. + * * *Note 2:* There is an activation event `onFileSystem:` that fires when a file + * or folder is being accessed. + * + */ + declare export interface FileSystemProvider { + + /** + * An event to signal that a resource has been created, changed, or deleted. This + * event should fire for resources that are being [watched](#FileSystemProvider.watch) + * by clients of this provider. + */ + +onDidChangeFile: Event; + + /** + * Subscribe to events in the file or folder denoted by `uri`. + * @param uri The uri of the file to be watched. + * @param options Configures the watch. + * @returns A disposable that tells the provider to stop watching this `uri`. + */ + watch(uri: Uri, options: { recursive: boolean; excludes: string[] }): Disposable; + + /** + * Retrieve metadata about a file. + * + * @param uri The uri of the file to retrieve meta data about. + * @return The file metadata about the file. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `uri` doesn't exist. + */ + stat(uri: Uri): FileStat | Thenable; + + /** + * Retrieve the meta data of all entries of a [directory](#FileType.Directory) + * + * @param uri The uri of the folder. + * @return An array of name/type-tuples or a thenable that resolves to such. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `uri` doesn't exist. + */ + readDirectory(uri: Uri): [string, FileTypeType][] | Thenable<[string, FileTypeType][]>; + + /** + * Create a new directory. *Note* that new files are created via `write`-calls. + * + * @param uri The uri of the new folder. + * @returns Metadata about the created directory or a thenable that resolves to such. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when the parent of `uri` doesn't exist. + * @throws [`FileExists`](#FileSystemError.FileExists) when `uri` already exists. + * @throws [`NoPermissions`](#FileSystemError.NoPermissions) when permissions aren't sufficient. + */ + createDirectory(uri: Uri): void | Thenable; + + /** + * Read the entire contents of a file. + * + * @param uri The uri of the file. + * @return An array of bytes or a thenable that resolves to such. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `uri` doesn't exist. + */ + readFile(uri: Uri): Uint8Array | Thenable; + + /** + * Write data to a file, replacing its entire contents. + * + * @param uri The uri of the file. + * @param content The new content of the file. + * @param options Defines is missing files should or must be created. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `uri` doesn't exist and `create` is not set. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when the parent of `uri` doesn't exist and `create` is set. + * @throws [`FileExists`](#FileSystemError.FileExists) when `uri` already exists and `overwrite` is set. + * @throws [`NoPermissions`](#FileSystemError.NoPermissions) when permissions aren't sufficient. + */ + writeFile(uri: Uri, content: Uint8Array, options: { create: boolean, overwrite: boolean }): void | Thenable; + + /** + * Delete a file. + * + * @param uri The resource that is to be deleted. + * @param options Defines if deletion of folders is recursive. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `uri` doesn't exist. + * @throws [`NoPermissions`](#FileSystemError.NoPermissions) when permissions aren't sufficient. + */ + delete(uri: Uri, options: { recursive: boolean }): void | Thenable; + + /** + * Rename a file or folder. + * + * @param oldUri The existing file or folder. + * @param newUri The target location. + * @param options Defines if existing files should be overwriten. + * @returns Metadata about the renamed file or a thenable that resolves to such. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `oldUri` doesn't exist. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when parent of `newUri` doesn't exist + * @throws [`FileExists`](#FileSystemError.FileExists) when `newUri` exists and when the `overwrite` option is not `true`. + * @throws [`NoPermissions`](#FileSystemError.NoPermissions) when permissions aren't sufficient. + */ + rename(oldUri: Uri, newUri: Uri, options: { overwrite: boolean }): void | Thenable; + + /** + * Copy files or folders. Implementing this function is optional but it will speedup + * the copy operation. + * + * @param source The existing file or folder. + * @param destination The destination location. + * @param options Defines if existing files should be overwriten. + * @returns Metadata about the copied file or a thenable that resolves to such. + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when `source` doesn't exist + * @throws [`FileNotFound`](#FileSystemError.FileNotFound) when parent of `destination` doesn't exist + * @throws [`FileExists`](#FileSystemError.FileExists) when `destination` exists and when the `overwrite` option is not `true`. + * @throws [`NoPermissions`](#FileSystemError.NoPermissions) when permissions aren't sufficient. + */ + +copy?: (source: Uri, destination: Uri, options: { overwrite: boolean }) => void | Thenable; + } + + /* BEGIN PROPOSED *******************************************************************************/ + declare export interface FileSearchQuery { + pattern: string; + } + + /** + * The parameters of a query for text search. + */ + declare export interface TextSearchQuery { + /** + * The text pattern to search for. + */ + pattern: string; + + /** + * Whether or not `pattern` should be interpreted as a regular expression. + */ + isRegExp?: boolean; + + /** + * Whether or not the search should be case-sensitive. + */ + isCaseSensitive?: boolean; + + /** + * Whether or not to search for whole word matches only. + */ + isWordMatch?: boolean; + } + + /** + * A file glob pattern to match file paths against. + * TODO@roblou - merge this with the GlobPattern docs/definition in vscode.d.ts. + * @see [GlobPattern](#GlobPattern) + */ + declare export type GlobString = string; + + /** + * Options common to file and text search + */ + declare export interface SearchOptions { + /** + * The root folder to search within. + */ + folder: Uri; + + /** + * Files that match an `includes` glob pattern should be included in the search. + */ + includes: GlobString[]; + + /** + * Files that match an `excludes` glob pattern should be excluded from the search. + */ + excludes: GlobString[]; + + /** + * Whether external files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useIgnoreFiles"`. + */ + useIgnoreFiles: boolean; + + /** + * Whether symlinks should be followed while searching. + * See the vscode setting `"search.followSymlinks"`. + */ + followSymlinks: boolean; + + /** + * Whether global files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useGlobalIgnoreFiles"`. + */ + useGlobalIgnoreFiles: boolean; + } + + declare export interface FileSearchOptions extends SearchOptions { + maxResults: number; + } + + declare export type TextSearchPreviewOptions = { + /** + * The maximum number of lines in the preview. + * Only search providers that support multiline search will ever return more than one line in the match. + */ + matchLines: number; + + /** + * The maximum number of characters included per line. + */ + charsPerLine: number; + } + + /** + * Options that apply to text search. + */ + declare export interface TextSearchOptions extends SearchOptions { + /** + * The maximum number of results to be returned. + */ + maxResults: number; + + /** + * Options to specify the size of the result text preview. + */ + previewOptions?: TextSearchPreviewOptions; + + /** + * Exclude files larger than `maxFileSize` in bytes. + */ + maxFileSize?: number; + + /** + * Interpret files using this encoding. + * See the vscode setting `"files.encoding"` + */ + encoding?: string; + } + + /** + * Information collected when text search is complete. + */ + declare export type TextSearchComplete = { + /** + * Whether the search hit the limit on the maximum number of search results. + * `maxResults` on [`TextSearchOptions`](#TextSearchOptions) specifies the max number of results. + * - If exactly that number of matches exist, this should be false. + * - If `maxResults` matches are returned and more exist, this should be true. + * - If search hits an internal limit which is less than `maxResults`, this should be true. + */ + limitHit?: boolean; + } + + declare export type TextSearchResultPreview = { + /** + * The matching line of text, or a portion of the matching line that contains the match. + * For now, this can only be a single line. + */ + text: string; + + /** + * The Range within `text` corresponding to the text of the match. + */ + match: Range; + } + + /** + * A match from a text search + */ + declare export type TextSearchResult = { + /** + * The uri for the matching document. + */ + uri: Uri; + + /** + * The range of the match within the document. + */ + range: Range; + + /** + * A preview of the matching line + */ + preview: TextSearchResultPreview; + } + + declare export interface FileSearchProvider { + +provideFileSearchResults: (query: FileSearchQuery, options: FileSearchOptions, token: CancellationToken) => ProviderResult; + } + + declare export interface TextSearchProvider { + +provideTextSearchResults: (query: TextSearchQuery, options: TextSearchOptions, progress: Progress, token: CancellationToken) => ProviderResult; + } + + /** + * Options that can be set on a findTextInFiles search. + */ + declare export interface FindTextInFilesOptions { + /** + * A [glob pattern](#GlobPattern) that defines the files to search for. The glob pattern + * will be matched against the file paths of files relative to their workspace. Use a [relative pattern](#RelativePattern) + * to restrict the search results to a [workspace folder](#WorkspaceFolder). + */ + include?: GlobPattern; + + /** + * A [glob pattern](#GlobPattern) that defines files and folders to exclude. The glob pattern + * will be matched against the file paths of resulting matches relative to their workspace. When `undefined` only default excludes will + * apply, when `null` no excludes will apply. + */ + exclude?: GlobPattern | null; + + /** + * The maximum number of results to search for + */ + maxResults?: number; + + /** + * Whether external files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useIgnoreFiles"`. + */ + useIgnoreFiles?: boolean; + + /** + * Whether symlinks should be followed while searching. + * See the vscode setting `"search.followSymlinks"`. + */ + followSymlinks?: boolean; + + /** + * Whether global files that exclude files, like .gitignore, should be respected. + * See the vscode setting `"search.useGlobalIgnoreFiles"`. + */ + useGlobalIgnoreFiles: boolean; + + /** + * Interpret files using this encoding. + * See the vscode setting `"files.encoding"` + */ + encoding?: string; + } + + /** + * The contiguous set of modified lines in a diff. + */ + declare export interface LineChange { + +originalStartLineNumber: number; + +originalEndLineNumber: number; + +modifiedStartLineNumber: number; + +modifiedEndLineNumber: number; + } + + //#region decorations + //todo@joh -> make class + declare export interface DecorationData { + priority?: number; + title?: string; + bubble?: boolean; + abbreviation?: string; + color?: ThemeColor; + source?: string; + } + + declare export interface DecorationProvider { + onDidChangeDecorations: Event; + provideDecoration(uri: Uri, token: CancellationToken): ProviderResult; + } + + /** + * An event describing a change to the set of [breakpoints](#debug.Breakpoint). + */ + declare export interface BreakpointsChangeEvent { + /** + * Added breakpoints. + */ + +added: Breakpoint[]; + + /** + * Removed breakpoints. + */ + +removed: Breakpoint[]; + + /** + * Changed breakpoints. + */ + +changed: Breakpoint[]; + } + + /** + * The base class of all breakpoint types. + */ + declare export class Breakpoint { + /** + * Is breakpoint enabled. + */ + +enabled: boolean; + /** + * An optional expression for conditional breakpoints. + */ + +condition?: string; + /** + * An optional expression that controls how many hits of the breakpoint are ignored. + */ + +hitCondition?: string; + + // protected constructor(enabled?: boolean, condition?: string, hitCondition?: string); + } + + /** + * A breakpoint specified by a source location. + */ + declare export class SourceBreakpoint extends Breakpoint { + /** + * The source and line position of this breakpoint. + */ + +location: Location; + + /** + * Create a new breakpoint for a source location. + */ + constructor(location: Location, enabled?: boolean, condition?: string, hitCondition?: string): void; + } + + /** + * A breakpoint specified by a function name. + */ + declare export class FunctionBreakpoint extends Breakpoint { + /** + * The name of the function to which this breakpoint is attached. + */ + +functionName: string; + + /** + * Create a new function breakpoint. + */ + constructor(functionName: string, enabled?: boolean, condition?: string, hitCondition?: string): void; + } + + /** + * Represents a debug adapter executable and optional arguments passed to it. + */ + declare export class DebugAdapterExecutable { + /** + * The command path of the debug adapter executable. + * A command must be either an absolute path or the name of an executable looked up via the PATH environment variable. + * The special value 'node' will be mapped to VS Code's built-in node runtime. + */ + +command: string; + + /** + * Optional arguments passed to the debug adapter executable. + */ + +args: string[]; + + /** + * Create a new debug adapter specification. + */ + constructor(command: string, args?: string[]): void; + } + + /** + * The severity level of a log message + */ + declare export var LogLevel: { + Trace: 1, + Debug: 2, + Info: 3, + Warning: 4, + Error: 5, + Critical: 6, + Off: 7 + } + declare export type LogLevelType = $Values; + + /** + * A logger for writing to an extension's log file, and accessing its dedicated log directory. + */ + declare export interface Logger { + +onDidChangeLogLevel: Event; + +currentLevel: LogLevelType; + +logDirectory: Thenable; + + trace(message: string, ...args: any[]): void; + debug(message: string, ...args: any[]): void; + info(message: string, ...args: any[]): void; + warn(message: string, ...args: any[]): void; + error(message: string | Error, ...args: any[]): void; + critical(message: string | Error, ...args: any[]): void; + } + + declare export interface RenameInitialValue { + range: Range; + text?: string; + } + + /** + * Represents the validation type of the Source Control input. + */ + declare export var SourceControlInputBoxValidationType: { + + /** + * Something not allowed by the rules of a language or other means. + */ + Error: 0, + + /** + * Something suspicious but allowed. + */ + Warning: 1, + + /** + * Something to inform about but not a problem. + */ + Information: 2 + } + declare export type SourceControlInputBoxValidationTypeType = $Values; + + declare export interface SourceControlInputBoxValidation { + + /** + * The validation message to display. + */ + +message: string; + + /** + * The validation type. + */ + +type: SourceControlInputBoxValidationTypeType; + } + /* END PROPOSED *********************************************************************************/ + +} + +/** + * Thenable is a common denominator between ES6 promises, Q, jquery.Deferred, WinJS.Promise, + * and others. This API makes no assumption about what promise libary is being used which + * enables reusing existing code without migrating to a specific promise implementation. Still, + * we recommend the use of native promises which are available in this editor. + */ +declare type Thenable = Promise; diff --git a/flow-typed/npm/@babel/cli_vx.x.x.js b/flow-typed/npm/@babel/cli_vx.x.x.js new file mode 100644 index 0000000..c88ffa4 --- /dev/null +++ b/flow-typed/npm/@babel/cli_vx.x.x.js @@ -0,0 +1,87 @@ +// flow-typed signature: b7d25f6379a33dd8cf88f62f6b7a8340 +// flow-typed version: <>/@babel/cli_v^7.2.0/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/cli' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/cli' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/cli/bin/babel-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/cli/bin/babel' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/dir' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/file' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/index' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/options' { + declare module.exports: any; +} + +declare module '@babel/cli/lib/babel/util' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/cli/bin/babel-external-helpers.js' { + declare module.exports: $Exports<'@babel/cli/bin/babel-external-helpers'>; +} +declare module '@babel/cli/bin/babel.js' { + declare module.exports: $Exports<'@babel/cli/bin/babel'>; +} +declare module '@babel/cli/index' { + declare module.exports: $Exports<'@babel/cli'>; +} +declare module '@babel/cli/index.js' { + declare module.exports: $Exports<'@babel/cli'>; +} +declare module '@babel/cli/lib/babel-external-helpers.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel-external-helpers'>; +} +declare module '@babel/cli/lib/babel/dir.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/dir'>; +} +declare module '@babel/cli/lib/babel/file.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/file'>; +} +declare module '@babel/cli/lib/babel/index.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/index'>; +} +declare module '@babel/cli/lib/babel/options.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/options'>; +} +declare module '@babel/cli/lib/babel/util.js' { + declare module.exports: $Exports<'@babel/cli/lib/babel/util'>; +} diff --git a/flow-typed/npm/@babel/core_vx.x.x.js b/flow-typed/npm/@babel/core_vx.x.x.js new file mode 100644 index 0000000..8dc3690 --- /dev/null +++ b/flow-typed/npm/@babel/core_vx.x.x.js @@ -0,0 +1,298 @@ +// flow-typed signature: 3d04e46412960fc25d0211792b619f9a +// flow-typed version: <>/@babel/core_v^7.2.0/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/core' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/core' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/core/lib/config/caching' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/config-chain' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/config-descriptors' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/configuration' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/index-browser' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/package' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/plugins' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/types' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/files/utils' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/full' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/helpers/config-api' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/helpers/environment' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/item' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/partial' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/pattern-to-regex' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/plugin' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/util' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/option-assertions' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/options' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/plugins' { + declare module.exports: any; +} + +declare module '@babel/core/lib/config/validation/removed' { + declare module.exports: any; +} + +declare module '@babel/core/lib/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/parse' { + declare module.exports: any; +} + +declare module '@babel/core/lib/tools/build-external-helpers' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-ast' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-file-browser' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform-file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transform' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/block-hoist-plugin' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/generate' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/file/merge-map' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/index' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/normalize-file' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/normalize-opts' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/plugin-pass' { + declare module.exports: any; +} + +declare module '@babel/core/lib/transformation/util/missing-plugin-helper' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/core/lib/config/caching.js' { + declare module.exports: $Exports<'@babel/core/lib/config/caching'>; +} +declare module '@babel/core/lib/config/config-chain.js' { + declare module.exports: $Exports<'@babel/core/lib/config/config-chain'>; +} +declare module '@babel/core/lib/config/config-descriptors.js' { + declare module.exports: $Exports<'@babel/core/lib/config/config-descriptors'>; +} +declare module '@babel/core/lib/config/files/configuration.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/configuration'>; +} +declare module '@babel/core/lib/config/files/index-browser.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/index-browser'>; +} +declare module '@babel/core/lib/config/files/index.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/index'>; +} +declare module '@babel/core/lib/config/files/package.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/package'>; +} +declare module '@babel/core/lib/config/files/plugins.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/plugins'>; +} +declare module '@babel/core/lib/config/files/types.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/types'>; +} +declare module '@babel/core/lib/config/files/utils.js' { + declare module.exports: $Exports<'@babel/core/lib/config/files/utils'>; +} +declare module '@babel/core/lib/config/full.js' { + declare module.exports: $Exports<'@babel/core/lib/config/full'>; +} +declare module '@babel/core/lib/config/helpers/config-api.js' { + declare module.exports: $Exports<'@babel/core/lib/config/helpers/config-api'>; +} +declare module '@babel/core/lib/config/helpers/environment.js' { + declare module.exports: $Exports<'@babel/core/lib/config/helpers/environment'>; +} +declare module '@babel/core/lib/config/index.js' { + declare module.exports: $Exports<'@babel/core/lib/config/index'>; +} +declare module '@babel/core/lib/config/item.js' { + declare module.exports: $Exports<'@babel/core/lib/config/item'>; +} +declare module '@babel/core/lib/config/partial.js' { + declare module.exports: $Exports<'@babel/core/lib/config/partial'>; +} +declare module '@babel/core/lib/config/pattern-to-regex.js' { + declare module.exports: $Exports<'@babel/core/lib/config/pattern-to-regex'>; +} +declare module '@babel/core/lib/config/plugin.js' { + declare module.exports: $Exports<'@babel/core/lib/config/plugin'>; +} +declare module '@babel/core/lib/config/util.js' { + declare module.exports: $Exports<'@babel/core/lib/config/util'>; +} +declare module '@babel/core/lib/config/validation/option-assertions.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/option-assertions'>; +} +declare module '@babel/core/lib/config/validation/options.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/options'>; +} +declare module '@babel/core/lib/config/validation/plugins.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/plugins'>; +} +declare module '@babel/core/lib/config/validation/removed.js' { + declare module.exports: $Exports<'@babel/core/lib/config/validation/removed'>; +} +declare module '@babel/core/lib/index.js' { + declare module.exports: $Exports<'@babel/core/lib/index'>; +} +declare module '@babel/core/lib/parse.js' { + declare module.exports: $Exports<'@babel/core/lib/parse'>; +} +declare module '@babel/core/lib/tools/build-external-helpers.js' { + declare module.exports: $Exports<'@babel/core/lib/tools/build-external-helpers'>; +} +declare module '@babel/core/lib/transform-ast.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-ast'>; +} +declare module '@babel/core/lib/transform-file-browser.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-file-browser'>; +} +declare module '@babel/core/lib/transform-file.js' { + declare module.exports: $Exports<'@babel/core/lib/transform-file'>; +} +declare module '@babel/core/lib/transform.js' { + declare module.exports: $Exports<'@babel/core/lib/transform'>; +} +declare module '@babel/core/lib/transformation/block-hoist-plugin.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/block-hoist-plugin'>; +} +declare module '@babel/core/lib/transformation/file/file.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/file'>; +} +declare module '@babel/core/lib/transformation/file/generate.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/generate'>; +} +declare module '@babel/core/lib/transformation/file/merge-map.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/file/merge-map'>; +} +declare module '@babel/core/lib/transformation/index.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/index'>; +} +declare module '@babel/core/lib/transformation/normalize-file.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-file'>; +} +declare module '@babel/core/lib/transformation/normalize-opts.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/normalize-opts'>; +} +declare module '@babel/core/lib/transformation/plugin-pass.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/plugin-pass'>; +} +declare module '@babel/core/lib/transformation/util/missing-plugin-helper.js' { + declare module.exports: $Exports<'@babel/core/lib/transformation/util/missing-plugin-helper'>; +} diff --git a/flow-typed/npm/@babel/plugin-proposal-class-properties_vx.x.x.js b/flow-typed/npm/@babel/plugin-proposal-class-properties_vx.x.x.js new file mode 100644 index 0000000..6871bcb --- /dev/null +++ b/flow-typed/npm/@babel/plugin-proposal-class-properties_vx.x.x.js @@ -0,0 +1,32 @@ +// flow-typed signature: 692cb242d3fd537b33b2559dd6c7d7ee +// flow-typed version: <>/@babel/plugin-proposal-class-properties_v^7.2.1/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/plugin-proposal-class-properties' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/plugin-proposal-class-properties' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/plugin-proposal-class-properties/lib/index' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/plugin-proposal-class-properties/lib/index.js' { + declare module.exports: $Exports<'@babel/plugin-proposal-class-properties/lib/index'>; +} diff --git a/flow-typed/npm/@babel/preset-env_vx.x.x.js b/flow-typed/npm/@babel/preset-env_vx.x.x.js new file mode 100644 index 0000000..94c2e9f --- /dev/null +++ b/flow-typed/npm/@babel/preset-env_vx.x.x.js @@ -0,0 +1,144 @@ +// flow-typed signature: bad30672a723c38a858daa6723105883 +// flow-typed version: <>/@babel/preset-env_v^7.2.0/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * '@babel/preset-env' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module '@babel/preset-env' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module '@babel/preset-env/data/built-in-features' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/plugin-features' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/shipped-proposals' { + declare module.exports: any; +} + +declare module '@babel/preset-env/data/unreleased-labels' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/available-plugins' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/built-in-definitions' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/debug' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/default-includes' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/defaults' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/index' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/module-transformations' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/normalize-options' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/options' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/targets-parser' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/use-built-ins-entry-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/use-built-ins-plugin' { + declare module.exports: any; +} + +declare module '@babel/preset-env/lib/utils' { + declare module.exports: any; +} + +// Filename aliases +declare module '@babel/preset-env/data/built-in-features.js' { + declare module.exports: $Exports<'@babel/preset-env/data/built-in-features'>; +} +declare module '@babel/preset-env/data/plugin-features.js' { + declare module.exports: $Exports<'@babel/preset-env/data/plugin-features'>; +} +declare module '@babel/preset-env/data/shipped-proposals.js' { + declare module.exports: $Exports<'@babel/preset-env/data/shipped-proposals'>; +} +declare module '@babel/preset-env/data/unreleased-labels.js' { + declare module.exports: $Exports<'@babel/preset-env/data/unreleased-labels'>; +} +declare module '@babel/preset-env/lib/available-plugins.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/available-plugins'>; +} +declare module '@babel/preset-env/lib/built-in-definitions.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/built-in-definitions'>; +} +declare module '@babel/preset-env/lib/debug.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/debug'>; +} +declare module '@babel/preset-env/lib/default-includes.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/default-includes'>; +} +declare module '@babel/preset-env/lib/defaults.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/defaults'>; +} +declare module '@babel/preset-env/lib/index.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/index'>; +} +declare module '@babel/preset-env/lib/module-transformations.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/module-transformations'>; +} +declare module '@babel/preset-env/lib/normalize-options.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/normalize-options'>; +} +declare module '@babel/preset-env/lib/options.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/options'>; +} +declare module '@babel/preset-env/lib/targets-parser.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/targets-parser'>; +} +declare module '@babel/preset-env/lib/use-built-ins-entry-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/use-built-ins-entry-plugin'>; +} +declare module '@babel/preset-env/lib/use-built-ins-plugin.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/use-built-ins-plugin'>; +} +declare module '@babel/preset-env/lib/utils.js' { + declare module.exports: $Exports<'@babel/preset-env/lib/utils'>; +} diff --git a/flow-typed/npm/babel-preset-es2015_vx.x.x.js b/flow-typed/npm/@babel/preset-flow_vx.x.x.js similarity index 54% rename from flow-typed/npm/babel-preset-es2015_vx.x.x.js rename to flow-typed/npm/@babel/preset-flow_vx.x.x.js index 2406d1b..6f73bfa 100644 --- a/flow-typed/npm/babel-preset-es2015_vx.x.x.js +++ b/flow-typed/npm/@babel/preset-flow_vx.x.x.js @@ -1,19 +1,19 @@ -// flow-typed signature: f084516261280fefa34faad33af9d3b1 -// flow-typed version: <>/babel-preset-es2015_v^6.1.4/flow_v0.33.0 +// flow-typed signature: 4f9428726e974000d3fb9276f1c19797 +// flow-typed version: <>/@babel/preset-flow_v^7.0.0/flow_v0.75.0 /** * This is an autogenerated libdef stub for: * - * 'babel-preset-es2015' + * '@babel/preset-flow' * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ -declare module 'babel-preset-es2015' { +declare module '@babel/preset-flow' { declare module.exports: any; } @@ -22,11 +22,11 @@ declare module 'babel-preset-es2015' { * require those files directly. Feel free to delete any files that aren't * needed. */ -declare module 'babel-preset-es2015/lib/index' { +declare module '@babel/preset-flow/lib/index' { declare module.exports: any; } // Filename aliases -declare module 'babel-preset-es2015/lib/index.js' { - declare module.exports: $Exports<'babel-preset-es2015/lib/index'>; +declare module '@babel/preset-flow/lib/index.js' { + declare module.exports: $Exports<'@babel/preset-flow/lib/index'>; } diff --git a/flow-typed/npm/babel-cli_vx.x.x.js b/flow-typed/npm/babel-cli_vx.x.x.js deleted file mode 100644 index 4731a37..0000000 --- a/flow-typed/npm/babel-cli_vx.x.x.js +++ /dev/null @@ -1,150 +0,0 @@ -// flow-typed signature: c9abb69a6b7d9b51e77d8fded888da4d -// flow-typed version: <>/babel-cli_v^6.1.4/flow_v0.33.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-cli' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-cli' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-cli/bin/babel-doctor' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel-external-helpers' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/bin/babel' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/_babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/index' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/rules/deduped' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/rules/has-config' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/rules/index' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/rules/latest-packages' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-doctor/rules/npm-3' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-external-helpers' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel-node' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/dir' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/file' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/index' { - declare module.exports: any; -} - -declare module 'babel-cli/lib/babel/util' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-cli/bin/babel-doctor.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-doctor'>; -} -declare module 'babel-cli/bin/babel-external-helpers.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-external-helpers'>; -} -declare module 'babel-cli/bin/babel-node.js' { - declare module.exports: $Exports<'babel-cli/bin/babel-node'>; -} -declare module 'babel-cli/bin/babel.js' { - declare module.exports: $Exports<'babel-cli/bin/babel'>; -} -declare module 'babel-cli/index' { - declare module.exports: $Exports<'babel-cli'>; -} -declare module 'babel-cli/index.js' { - declare module.exports: $Exports<'babel-cli'>; -} -declare module 'babel-cli/lib/_babel-node.js' { - declare module.exports: $Exports<'babel-cli/lib/_babel-node'>; -} -declare module 'babel-cli/lib/babel-doctor/index.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/index'>; -} -declare module 'babel-cli/lib/babel-doctor/rules/deduped.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/rules/deduped'>; -} -declare module 'babel-cli/lib/babel-doctor/rules/has-config.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/rules/has-config'>; -} -declare module 'babel-cli/lib/babel-doctor/rules/index.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/rules/index'>; -} -declare module 'babel-cli/lib/babel-doctor/rules/latest-packages.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/rules/latest-packages'>; -} -declare module 'babel-cli/lib/babel-doctor/rules/npm-3.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-doctor/rules/npm-3'>; -} -declare module 'babel-cli/lib/babel-external-helpers.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-external-helpers'>; -} -declare module 'babel-cli/lib/babel-node.js' { - declare module.exports: $Exports<'babel-cli/lib/babel-node'>; -} -declare module 'babel-cli/lib/babel/dir.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/dir'>; -} -declare module 'babel-cli/lib/babel/file.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/file'>; -} -declare module 'babel-cli/lib/babel/index.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/index'>; -} -declare module 'babel-cli/lib/babel/util.js' { - declare module.exports: $Exports<'babel-cli/lib/babel/util'>; -} diff --git a/flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js b/flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js deleted file mode 100644 index cd415be..0000000 --- a/flow-typed/npm/babel-plugin-transform-flow-strip-types_vx.x.x.js +++ /dev/null @@ -1,32 +0,0 @@ -// flow-typed signature: 997acf3784fd47fbf0a58692386f4919 -// flow-typed version: <>/babel-plugin-transform-flow-strip-types_v^6.0.14/flow_v0.33.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-plugin-transform-flow-strip-types' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-plugin-transform-flow-strip-types' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'babel-plugin-transform-flow-strip-types/lib/index' { - declare module.exports: any; -} - -// Filename aliases -declare module 'babel-plugin-transform-flow-strip-types/lib/index.js' { - declare module.exports: $Exports<'babel-plugin-transform-flow-strip-types/lib/index'>; -} diff --git a/flow-typed/npm/babel-preset-stage-1_vx.x.x.js b/flow-typed/npm/babel-preset-stage-1_vx.x.x.js deleted file mode 100644 index 1c15d61..0000000 --- a/flow-typed/npm/babel-preset-stage-1_vx.x.x.js +++ /dev/null @@ -1,33 +0,0 @@ -// flow-typed signature: d822c7f330663e8aea9db39f7be776cd -// flow-typed version: <>/babel-preset-stage-1_v^6.1.2/flow_v0.33.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'babel-preset-stage-1' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'babel-preset-stage-1' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ - - -// Filename aliases -declare module 'babel-preset-stage-1/index' { - declare module.exports: $Exports<'babel-preset-stage-1'>; -} -declare module 'babel-preset-stage-1/index.js' { - declare module.exports: $Exports<'babel-preset-stage-1'>; -} diff --git a/flow-typed/npm/cross-spawn_vx.x.x.js b/flow-typed/npm/cross-spawn_vx.x.x.js index 6ef50d6..4b76ed0 100644 --- a/flow-typed/npm/cross-spawn_vx.x.x.js +++ b/flow-typed/npm/cross-spawn_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: cac02ad5eed6becf66286887fa6e29fa -// flow-typed version: <>/cross-spawn_v^4.0.0/flow_v0.33.0 +// flow-typed signature: 6a55f75034548453bfb7917744f2c121 +// flow-typed version: <>/cross-spawn_v^4.0.0/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/dequeue_vx.x.x.js b/flow-typed/npm/dequeue_vx.x.x.js index 38d9351..2c8a98a 100644 --- a/flow-typed/npm/dequeue_vx.x.x.js +++ b/flow-typed/npm/dequeue_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 45f0ef4e8c40b2f9960532b742cf8191 -// flow-typed version: <>/dequeue_v^1.0.5/flow_v0.33.0 +// flow-typed signature: c56e0e86d5cb587a30e05328d2d176ca +// flow-typed version: <>/dequeue_v^1.0.5/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/elegant-spinner_vx.x.x.js b/flow-typed/npm/elegant-spinner_vx.x.x.js new file mode 100644 index 0000000..01858c5 --- /dev/null +++ b/flow-typed/npm/elegant-spinner_vx.x.x.js @@ -0,0 +1,33 @@ +// flow-typed signature: 701997681b35c976b707d652d37f233c +// flow-typed version: <>/elegant-spinner_v^1.0.1/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'elegant-spinner' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'elegant-spinner' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ + + +// Filename aliases +declare module 'elegant-spinner/index' { + declare module.exports: $Exports<'elegant-spinner'>; +} +declare module 'elegant-spinner/index.js' { + declare module.exports: $Exports<'elegant-spinner'>; +} diff --git a/flow-typed/npm/event-kit_vx.x.x.js b/flow-typed/npm/event-kit_vx.x.x.js index 4f54eb4..138de9a 100644 --- a/flow-typed/npm/event-kit_vx.x.x.js +++ b/flow-typed/npm/event-kit_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 4414cfdb5a8adb4333949917ccb7ce36 -// flow-typed version: <>/event-kit_v^2.0.0/flow_v0.33.0 +// flow-typed signature: 58e47a16e5e55c6e42cc2dc2d6eccc4e +// flow-typed version: <>/event-kit_v^2.0.0/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/fs-plus_vx.x.x.js b/flow-typed/npm/fs-plus_vx.x.x.js index 8a384fc..e26b27c 100644 --- a/flow-typed/npm/fs-plus_vx.x.x.js +++ b/flow-typed/npm/fs-plus_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 1e68b2a106b622f95747db10eb9263b6 -// flow-typed version: <>/fs-plus_v^2.8.2/flow_v0.33.0 +// flow-typed signature: 3defc64282b21780169da4414eceb2fb +// flow-typed version: <>/fs-plus_v^2.8.2/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/lodash.debounce_vx.x.x.js b/flow-typed/npm/lodash.debounce_vx.x.x.js new file mode 100644 index 0000000..bfcefbe --- /dev/null +++ b/flow-typed/npm/lodash.debounce_vx.x.x.js @@ -0,0 +1,33 @@ +// flow-typed signature: 991b2fda05ec33b4345c283e3b8269ea +// flow-typed version: <>/lodash.debounce_v^4.0.8/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'lodash.debounce' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'lodash.debounce' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ + + +// Filename aliases +declare module 'lodash.debounce/index' { + declare module.exports: $Exports<'lodash.debounce'>; +} +declare module 'lodash.debounce/index.js' { + declare module.exports: $Exports<'lodash.debounce'>; +} diff --git a/flow-typed/npm/log4js_vx.x.x.js b/flow-typed/npm/log4js_vx.x.x.js index c82ef54..f08aded 100644 --- a/flow-typed/npm/log4js_vx.x.x.js +++ b/flow-typed/npm/log4js_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 9987092340170033eda0de5df802cafa -// flow-typed version: <>/log4js_v^0.6.37/flow_v0.33.0 +// flow-typed signature: 66741339276d77db8d9729d048b2e56f +// flow-typed version: <>/log4js_v^0.6.37/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/lru-cache_v4.0.x.js b/flow-typed/npm/lru-cache_v4.0.x.js index a9e4705..02c0590 100644 --- a/flow-typed/npm/lru-cache_v4.0.x.js +++ b/flow-typed/npm/lru-cache_v4.0.x.js @@ -1,26 +1,25 @@ -// flow-typed signature: 2b18e21f9bd758821dbc1c72e8aef6bf -// flow-typed version: 94e9f7e0a4/lru-cache_v4.0.x/flow_>=v0.26.0 - -declare module 'lru-cache' { +// flow-typed signature: ac5dc0012761b322fb7609d0b5f27e30 +// flow-typed version: da30fe6876/lru-cache_v4.0.x/flow_>=v0.25.0 +declare module "lru-cache" { declare type LRUCache = { - set: (key: K, value: V, maxAge?: number) => void; - get: (key: K) => V; - peek: (key: K) => V; - del: (key: K) => void; - reset: () => void; - has: (key: K) => boolean; + set: (key: K, value: V, maxAge?: number) => void, + get: (key: K) => V, + peek: (key: K) => V, + del: (key: K) => void, + reset: () => void, + has: (key: K) => boolean // TODO add the rest of the things documented at https://www.npmjs.com/package/lru-cache }; declare type Options = { - max?: number; - maxAge?: number; - length?: (value: V, key: K) => number; - dispose?: (key: K, value: V) => void; - stale?: boolean; + max?: number, + maxAge?: number, + length?: (value: V, key: K) => number, + dispose?: (key: K, value: V) => void, + stale?: boolean }; // TODO You can supply just an integer (max size), or even nothing at all. - declare var exports: (options: Options) => LRUCache; + declare module.exports: (options: Options) => LRUCache; } diff --git a/flow-typed/npm/mkdirp_v0.5.x.js b/flow-typed/npm/mkdirp_v0.5.x.js new file mode 100644 index 0000000..e26f9a4 --- /dev/null +++ b/flow-typed/npm/mkdirp_v0.5.x.js @@ -0,0 +1,13 @@ +// flow-typed signature: 82aa0feffc2bbd64dce3bec492f5d601 +// flow-typed version: 3315d89a00/mkdirp_v0.5.x/flow_>=v0.25.0 + +declare module 'mkdirp' { + declare type Options = number | { mode?: number; fs?: mixed }; + + declare type Callback = (err: ?Error, path: ?string) => void; + + declare module.exports: { + (path: string, options?: Options | Callback, callback?: Callback): void; + sync(path: string, options?: Options): void; + }; +} diff --git a/flow-typed/npm/mkdirp_vx.x.x.js b/flow-typed/npm/mkdirp_vx.x.x.js deleted file mode 100644 index 0e04580..0000000 --- a/flow-typed/npm/mkdirp_vx.x.x.js +++ /dev/null @@ -1,150 +0,0 @@ -// flow-typed signature: 59525f7f6d17528143c6a937dde99b53 -// flow-typed version: <>/mkdirp_v^0.5.1/flow_v0.33.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'mkdirp' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'mkdirp' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'mkdirp/bin/cmd' { - declare module.exports: any; -} - -declare module 'mkdirp/examples/pow' { - declare module.exports: any; -} - -declare module 'mkdirp/test/chmod' { - declare module.exports: any; -} - -declare module 'mkdirp/test/clobber' { - declare module.exports: any; -} - -declare module 'mkdirp/test/mkdirp' { - declare module.exports: any; -} - -declare module 'mkdirp/test/opts_fs_sync' { - declare module.exports: any; -} - -declare module 'mkdirp/test/opts_fs' { - declare module.exports: any; -} - -declare module 'mkdirp/test/perm_sync' { - declare module.exports: any; -} - -declare module 'mkdirp/test/perm' { - declare module.exports: any; -} - -declare module 'mkdirp/test/race' { - declare module.exports: any; -} - -declare module 'mkdirp/test/rel' { - declare module.exports: any; -} - -declare module 'mkdirp/test/return_sync' { - declare module.exports: any; -} - -declare module 'mkdirp/test/return' { - declare module.exports: any; -} - -declare module 'mkdirp/test/root' { - declare module.exports: any; -} - -declare module 'mkdirp/test/sync' { - declare module.exports: any; -} - -declare module 'mkdirp/test/umask_sync' { - declare module.exports: any; -} - -declare module 'mkdirp/test/umask' { - declare module.exports: any; -} - -// Filename aliases -declare module 'mkdirp/bin/cmd.js' { - declare module.exports: $Exports<'mkdirp/bin/cmd'>; -} -declare module 'mkdirp/examples/pow.js' { - declare module.exports: $Exports<'mkdirp/examples/pow'>; -} -declare module 'mkdirp/index' { - declare module.exports: $Exports<'mkdirp'>; -} -declare module 'mkdirp/index.js' { - declare module.exports: $Exports<'mkdirp'>; -} -declare module 'mkdirp/test/chmod.js' { - declare module.exports: $Exports<'mkdirp/test/chmod'>; -} -declare module 'mkdirp/test/clobber.js' { - declare module.exports: $Exports<'mkdirp/test/clobber'>; -} -declare module 'mkdirp/test/mkdirp.js' { - declare module.exports: $Exports<'mkdirp/test/mkdirp'>; -} -declare module 'mkdirp/test/opts_fs_sync.js' { - declare module.exports: $Exports<'mkdirp/test/opts_fs_sync'>; -} -declare module 'mkdirp/test/opts_fs.js' { - declare module.exports: $Exports<'mkdirp/test/opts_fs'>; -} -declare module 'mkdirp/test/perm_sync.js' { - declare module.exports: $Exports<'mkdirp/test/perm_sync'>; -} -declare module 'mkdirp/test/perm.js' { - declare module.exports: $Exports<'mkdirp/test/perm'>; -} -declare module 'mkdirp/test/race.js' { - declare module.exports: $Exports<'mkdirp/test/race'>; -} -declare module 'mkdirp/test/rel.js' { - declare module.exports: $Exports<'mkdirp/test/rel'>; -} -declare module 'mkdirp/test/return_sync.js' { - declare module.exports: $Exports<'mkdirp/test/return_sync'>; -} -declare module 'mkdirp/test/return.js' { - declare module.exports: $Exports<'mkdirp/test/return'>; -} -declare module 'mkdirp/test/root.js' { - declare module.exports: $Exports<'mkdirp/test/root'>; -} -declare module 'mkdirp/test/sync.js' { - declare module.exports: $Exports<'mkdirp/test/sync'>; -} -declare module 'mkdirp/test/umask_sync.js' { - declare module.exports: $Exports<'mkdirp/test/umask_sync'>; -} -declare module 'mkdirp/test/umask.js' { - declare module.exports: $Exports<'mkdirp/test/umask'>; -} diff --git a/flow-typed/npm/prettier_v1.x.x.js b/flow-typed/npm/prettier_v1.x.x.js new file mode 100644 index 0000000..f7e7b6e --- /dev/null +++ b/flow-typed/npm/prettier_v1.x.x.js @@ -0,0 +1,178 @@ +// flow-typed signature: 066c92e9ccb5f0711df8d73cbca837d6 +// flow-typed version: 9e32affdbd/prettier_v1.x.x/flow_>=v0.56.x + +declare module "prettier" { + declare export type AST = Object; + declare export type Doc = Object; + declare export type FastPath = Object; + + declare export type PrettierParserName = + | "babylon" + | "flow" + | "typescript" + | "postcss" + | "css" + | "less" + | "scss" + | "json" + | "graphql" + | "markdown" + | "vue"; + + declare export type PrettierParser = { + [name: PrettierParserName]: (text: string, options?: Object) => AST + }; + + declare export type CustomParser = ( + text: string, + parsers: PrettierParser, + options: Options + ) => AST; + + declare export type Options = {| + printWidth?: number, + tabWidth?: number, + useTabs?: boolean, + semi?: boolean, + singleQuote?: boolean, + trailingComma?: "none" | "es5" | "all", + bracketSpacing?: boolean, + jsxBracketSameLine?: boolean, + arrowParens?: "avoid" | "always", + rangeStart?: number, + rangeEnd?: number, + parser?: PrettierParserName | CustomParser, + filepath?: string, + requirePragma?: boolean, + insertPragma?: boolean, + proseWrap?: "always" | "never" | "preserve", + plugins?: Array + |}; + + declare export type Plugin = { + languages: SupportLanguage, + parsers: { [parserName: string]: Parser }, + printers: { [astFormat: string]: Printer } + }; + + declare export type Parser = { + parse: ( + text: string, + parsers: { [parserName: string]: Parser }, + options: Object + ) => AST, + astFormat: string + }; + + declare export type Printer = { + print: ( + path: FastPath, + options: Object, + print: (path: FastPath) => Doc + ) => Doc, + embed: ( + path: FastPath, + print: (path: FastPath) => Doc, + textToDoc: (text: string, options: Object) => Doc, + options: Object + ) => ?Doc + }; + + declare export type CursorOptions = {| + cursorOffset: number, + printWidth?: $PropertyType, + tabWidth?: $PropertyType, + useTabs?: $PropertyType, + semi?: $PropertyType, + singleQuote?: $PropertyType, + trailingComma?: $PropertyType, + bracketSpacing?: $PropertyType, + jsxBracketSameLine?: $PropertyType, + arrowParens?: $PropertyType, + parser?: $PropertyType, + filepath?: $PropertyType, + requirePragma?: $PropertyType, + insertPragma?: $PropertyType, + proseWrap?: $PropertyType, + plugins?: $PropertyType + |}; + + declare export type CursorResult = {| + formatted: string, + cursorOffset: number + |}; + + declare export type ResolveConfigOptions = {| + useCache?: boolean, + config?: string, + editorconfig?: boolean + |}; + + declare export type SupportLanguage = { + name: string, + since: string, + parsers: Array, + group?: string, + tmScope: string, + aceMode: string, + codemirrorMode: string, + codemirrorMimeType: string, + aliases?: Array, + extensions: Array, + filenames?: Array, + linguistLanguageId: number, + vscodeLanguageIds: Array + }; + + declare export type SupportOption = {| + since: string, + type: "int" | "boolean" | "choice" | "path", + deprecated?: string, + redirect?: SupportOptionRedirect, + description: string, + oppositeDescription?: string, + default: SupportOptionValue, + range?: SupportOptionRange, + choices?: SupportOptionChoice + |}; + + declare export type SupportOptionRedirect = {| + options: string, + value: SupportOptionValue + |}; + + declare export type SupportOptionRange = {| + start: number, + end: number, + step: number + |}; + + declare export type SupportOptionChoice = {| + value: boolean | string, + description?: string, + since?: string, + deprecated?: string, + redirect?: SupportOptionValue + |}; + + declare export type SupportOptionValue = number | boolean | string; + + declare export type SupportInfo = {| + languages: Array, + options: Array + |}; + + declare export type Prettier = {| + format: (source: string, options?: Options) => string, + check: (source: string, options?: Options) => boolean, + formatWithCursor: (source: string, options: CursorOptions) => CursorResult, + resolveConfig: { + (filePath: string, options?: ResolveConfigOptions): Promise, + sync(filePath: string, options?: ResolveConfigOptions): ?Options + }, + clearConfigCache: () => void, + getSupportInfo: (version?: string) => SupportInfo + |}; + + declare export default Prettier; +} diff --git a/flow-typed/npm/regenerator-runtime_vx.x.x.js b/flow-typed/npm/regenerator-runtime_vx.x.x.js index e65585f..d377cd2 100644 --- a/flow-typed/npm/regenerator-runtime_vx.x.x.js +++ b/flow-typed/npm/regenerator-runtime_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 9f0ed2c38768735b1171e8634a948641 -// flow-typed version: <>/regenerator-runtime_v^0.9.5/flow_v0.33.0 +// flow-typed signature: f38e014f44eb8111e35f18463cd31c53 +// flow-typed version: <>/regenerator-runtime_v^0.9.5/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/rimraf_v2.x.x.js b/flow-typed/npm/rimraf_v2.x.x.js new file mode 100644 index 0000000..13b8524 --- /dev/null +++ b/flow-typed/npm/rimraf_v2.x.x.js @@ -0,0 +1,18 @@ +// flow-typed signature: 1dff23447d5e18f5ac2b05aaec7cfb74 +// flow-typed version: a453e98ea2/rimraf_v2.x.x/flow_>=v0.25.0 + +declare module 'rimraf' { + declare type Options = { + maxBusyTries?: number, + emfileWait?: number, + glob?: boolean, + disableGlob?: boolean + }; + + declare type Callback = (err: ?Error, path: ?string) => void; + + declare module.exports: { + (f: string, opts?: Options | Callback, callback?: Callback): void; + sync(path: string, opts?: Options): void; + }; +} diff --git a/flow-typed/npm/rxjs_v5.0.x.js b/flow-typed/npm/rxjs_v5.0.x.js deleted file mode 100644 index ee3024a..0000000 --- a/flow-typed/npm/rxjs_v5.0.x.js +++ /dev/null @@ -1,322 +0,0 @@ -// flow-typed signature: 02770968100201152cae41962bc98c3c -// flow-typed version: e0dc1a4345/rxjs_v5.0.x/flow_>=v0.29.0 - -// FIXME(samgoldman) Remove top-level interface once Babel supports -// `declare interface` syntax. -// FIXME(samgoldman) Remove this once Subject can mixin Observer -interface rx$IObserver<-T> { - next(value: T): mixed; - error(error: any): mixed; - complete(): mixed; -} - -// FIXME: Technically at least one of these is required. -interface PartialObserver<-T> { - next?: (value: T) => mixed; - error?: (error: any) => mixed; - complete?: () => mixed; -} - -interface rx$ISubscription { - unsubscribe(): void; -} - -type TeardownLogic = rx$ISubscription | () => void; - -declare module 'rxjs' { - declare class Observable<+T> { - // This is actually variadic, but we only support one or two other observables. - static combineLatest( - t: Observable, - u: Observable, - // Prevents Flow from picking this case when it should pick the next one. - // Necessary with v0.28.0, but maybe not later versions. This can be - // removed if the tests pass without it. - _: void, - ): Observable<[T, U]>; - static combineLatest( - t: Observable, - u: Observable, - resultSelector: (t: T, u: U) => V, - ): Observable; - static combineLatest( - t: Observable, - u: Observable, - v: Observable, - _: void, - ): Observable<[T, U, V]>; - static combineLatest( - t: Observable, - u: Observable, - v: Observable, - resultSelector: (t: T, u: U, v: V) => W, - ): Observable; - - static concat(...sources: Observable[]): Observable; - - static create( - subscribe: (observer: Observer) => rx$ISubscription | Function | void - ): Observable; - - static defer(observableFactory: () => Observable): Observable; - - static from(iterable: Iterable): Observable; - - static fromEvent( - element: any, - eventName: string, - selector?: () => T, - ): Observable; - - static fromEventPattern( - addHandler: (handler: () => void) => void, - removeHandler: (handler: () => void) => void, - selector?: () => T, - ): Observable; - - static fromPromise(promise: Promise): Observable; - - static empty(): Observable; - - static interval(period: number): Observable; - - static merge( - source0: Observable, - source1: Observable, - ): Observable; - static merge( - source0: Observable, - source1: Observable, - source2: Observable, - ): Observable; - static merge(...sources: Observable[]): Observable; - - static never(): Observable; - - static of(...values: T[]): Observable; - - static throw(error: any): Observable; - - race(other: Observable): Observable; - - buffer(bufferBoundaries: Observable): Observable>; - - cache(bufferSize?: number, windowTime?: number): Observable; - - catch(selector: (err: any, caught: Observable) => Observable): Observable; - - // This is actually variadic, but we only support one or two other observables. - combineLatest(u: Observable): Observable<[T, U]>; - combineLatest(u: Observable, v: Observable): Observable<[T, U, V]>; - combineLatest( - u: Observable, - resultSelector: (t: T, u: U) => V, - ): Observable; - combineLatest( - u: Observable, - v: Observable, - resultSelector: (t: T, u: U, v: V) => W, - ): Observable; - - // This is actually variadic, but we only support one or two other observables. - withLatestFrom(u: Observable): Observable<[T, U]>; - withLatestFrom(u: Observable, v: Observable): Observable<[T, U, V]>; - withLatestFrom( - u: Observable, - resultSelector: (t: T, u: U) => V, - ): Observable; - withLatestFrom( - u: Observable, - v: Observable, - resultSelector: (t: T, u: U, v: V) => W, - ): Observable; - - concat(...sources: Observable[]): Observable; - - concatMap( - f: (value: T) => Observable | Promise | Iterable - ): Observable; - - debounceTime(duration: number): Observable; - - delay(dueTime: number): Observable; - - distinctUntilChanged(compare?: (x: T, y: T) => boolean): Observable; - - elementAt(index: number, defaultValue?: T): Observable; - - filter(predicate: (value: T) => boolean): Observable; - - finally(f: () => mixed): Observable; - - first( - predicate?: (value: T, index: number, source: Observable) => boolean, - ): Observable; - first( - predicate: ?(value: T, index: number, source: Observable) => boolean, - resultSelector: (value: T, index: number) => U, - ): Observable; - first( - predicate: ?(value: T, index: number, source: Observable) => boolean, - resultSelector: ?(value: T, index: number) => U, - defaultValue: U, - ): Observable; - - groupBy( - keySelector: (value: T) => mixed, - elementSelector?: (value: T) => T, - compare?: (x: T, y: T) => boolean, - ): Observable>; - - ignoreElements(): Observable; - - // Alias for `mergeMap` - flatMap( - project: (value: T) => Observable | Promise | Iterable - ): Observable; - - switchMap( - project: (value: T) => Observable | Promise | Iterable - ): Observable; - - map(f: (value: T) => U): Observable; - - mapTo(value: U): Observable; - - merge(other: Observable): Observable; - - mergeAll(): T; // assumption: T is Observable - - mergeMap( - project: (value: T, index?: number) => Observable | Promise | Iterable, - ): Observable; - - multicast( - subjectOrSubjectFactory: Subject | () => Subject, - ): ConnectableObservable; - - publish(): ConnectableObservable; - - publishLast(): ConnectableObservable; - - reduce( - accumulator: ( - acc: U, - currentValue: T, - index: number, - source: Observable, - ) => U, - seed: U, - ): Observable; - - sample(notifier: Observable): Observable; - - sampleTime(delay: number): Observable; - - publishReplay(): ConnectableObservable; - - retry(retryCount: number): Observable; - - retryWhen(notifier: (errors: Observable) => Observable): Observable; - - scan( - f: (acc: U, value: T) => U, - initialValue: U, - ): Observable; - - share(): Observable; - - skip(count: number): Observable; - - skipUntil(other: Observable | Promise): Observable; - - startWith(...values: Array): Observable; - - take(count: number): Observable; - - takeUntil(other: Observable): Observable; - - takeWhile(f: (value: T) => boolean): Observable; - - do( - onNext?: (value: T) => mixed, - onError?: (error: any) => mixed, - onCompleted?: () => mixed, - ): Observable; - do(observer: { - next?: (value: T) => mixed; - error?: (error: any) => mixed; - complete?: () => mixed; - }): Observable; - - throttleTime(duration: number): Observable; - - timeout(due: number | Date, errorToSend?: any): Observable; - - toArray(): Observable; - - toPromise(): Promise; - - subscribe(observer: PartialObserver): Subscription; - subscribe( - onNext: ?(value: T) => mixed, - onError: ?(error: any) => mixed, - onCompleted: ?() => mixed, - ): Subscription; - } - - declare class ConnectableObservable extends Observable { - connect(): Subscription; - refCount(): Observable; - } - - declare class Observer { - static create( - onNext?: (value: T) => mixed, - onError?: (error: any) => mixed, - onCompleted?: () => mixed, - ): Observer; - - asObserver(): Observer; - - next(value: T): mixed; - - error(error: any): mixed; - - complete(): mixed; - } - - // FIXME(samgoldman) should be `mixins Observable, Observer` - // once Babel parsing support exists: https://phabricator.babeljs.io/T6821 - declare class Subject extends Observable { - asObservable(): Observable; - - observers: Array>; - - unsubscribe(): void; - - // Copied from Observer - next(value: T): mixed; - error(error: any): mixed; - complete(): mixed; - - // For use in subclasses only: - _next(value: T): void; - _subscribe(observer: PartialObserver): Subscription; - } - - declare class BehaviorSubject extends Subject { - constructor(initialValue: T): void; - - getValue(): T; - } - - declare class ReplaySubject extends Subject { - - } - - declare class Subscription { - unsubscribe(): void; - add(teardown: TeardownLogic): Subscription; - } -} diff --git a/flow-typed/npm/rxjs_vx.x.x.js b/flow-typed/npm/rxjs_vx.x.x.js index e2bfd0d..0ab0aa4 100644 --- a/flow-typed/npm/rxjs_vx.x.x.js +++ b/flow-typed/npm/rxjs_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 2d747cd85c48f8b10bd707186368ffc7 -// flow-typed version: <>/rxjs_v^5.0.0-beta.8/flow_v0.33.0 +// flow-typed signature: a526bd29dc17a791c9e59cee475d111b +// flow-typed version: <>/rxjs_v^5.0.0-beta.8/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ @@ -158,10 +158,6 @@ declare module 'rxjs/add/operator/bufferWhen' { declare module.exports: any; } -declare module 'rxjs/add/operator/cache' { - declare module.exports: any; -} - declare module 'rxjs/add/operator/catch' { declare module.exports: any; } @@ -222,10 +218,6 @@ declare module 'rxjs/add/operator/distinct' { declare module.exports: any; } -declare module 'rxjs/add/operator/distinctKey' { - declare module.exports: any; -} - declare module 'rxjs/add/operator/distinctUntilChanged' { declare module.exports: any; } @@ -422,6 +414,10 @@ declare module 'rxjs/add/operator/share' { declare module.exports: any; } +declare module 'rxjs/add/operator/shareReplay' { + declare module.exports: any; +} + declare module 'rxjs/add/operator/single' { declare module.exports: any; } @@ -430,6 +426,10 @@ declare module 'rxjs/add/operator/skip' { declare module.exports: any; } +declare module 'rxjs/add/operator/skipLast' { + declare module.exports: any; +} + declare module 'rxjs/add/operator/skipUntil' { declare module.exports: any; } @@ -702,10 +702,6 @@ declare module 'rxjs/observable/merge' { declare module.exports: any; } -declare module 'rxjs/observable/MulticastObservable' { - declare module.exports: any; -} - declare module 'rxjs/observable/never' { declare module.exports: any; } @@ -806,10 +802,6 @@ declare module 'rxjs/operator/bufferWhen' { declare module.exports: any; } -declare module 'rxjs/operator/cache' { - declare module.exports: any; -} - declare module 'rxjs/operator/catch' { declare module.exports: any; } @@ -870,10 +862,6 @@ declare module 'rxjs/operator/distinct' { declare module.exports: any; } -declare module 'rxjs/operator/distinctKey' { - declare module.exports: any; -} - declare module 'rxjs/operator/distinctUntilChanged' { declare module.exports: any; } @@ -1070,6 +1058,10 @@ declare module 'rxjs/operator/share' { declare module.exports: any; } +declare module 'rxjs/operator/shareReplay' { + declare module.exports: any; +} + declare module 'rxjs/operator/single' { declare module.exports: any; } @@ -1078,6 +1070,10 @@ declare module 'rxjs/operator/skip' { declare module.exports: any; } +declare module 'rxjs/operator/skipLast' { + declare module.exports: any; +} + declare module 'rxjs/operator/skipUntil' { declare module.exports: any; } @@ -1350,6 +1346,10 @@ declare module 'rxjs/util/isArray' { declare module.exports: any; } +declare module 'rxjs/util/isArrayLike' { + declare module.exports: any; +} + declare module 'rxjs/util/isDate' { declare module.exports: any; } @@ -1398,10 +1398,18 @@ declare module 'rxjs/util/root' { declare module.exports: any; } +declare module 'rxjs/util/Set' { + declare module.exports: any; +} + declare module 'rxjs/util/subscribeToResult' { declare module.exports: any; } +declare module 'rxjs/util/TimeoutError' { + declare module.exports: any; +} + declare module 'rxjs/util/toSubscriber' { declare module.exports: any; } @@ -1517,9 +1525,6 @@ declare module 'rxjs/add/operator/bufferToggle.js' { declare module 'rxjs/add/operator/bufferWhen.js' { declare module.exports: $Exports<'rxjs/add/operator/bufferWhen'>; } -declare module 'rxjs/add/operator/cache.js' { - declare module.exports: $Exports<'rxjs/add/operator/cache'>; -} declare module 'rxjs/add/operator/catch.js' { declare module.exports: $Exports<'rxjs/add/operator/catch'>; } @@ -1565,9 +1570,6 @@ declare module 'rxjs/add/operator/dematerialize.js' { declare module 'rxjs/add/operator/distinct.js' { declare module.exports: $Exports<'rxjs/add/operator/distinct'>; } -declare module 'rxjs/add/operator/distinctKey.js' { - declare module.exports: $Exports<'rxjs/add/operator/distinctKey'>; -} declare module 'rxjs/add/operator/distinctUntilChanged.js' { declare module.exports: $Exports<'rxjs/add/operator/distinctUntilChanged'>; } @@ -1715,12 +1717,18 @@ declare module 'rxjs/add/operator/sequenceEqual.js' { declare module 'rxjs/add/operator/share.js' { declare module.exports: $Exports<'rxjs/add/operator/share'>; } +declare module 'rxjs/add/operator/shareReplay.js' { + declare module.exports: $Exports<'rxjs/add/operator/shareReplay'>; +} declare module 'rxjs/add/operator/single.js' { declare module.exports: $Exports<'rxjs/add/operator/single'>; } declare module 'rxjs/add/operator/skip.js' { declare module.exports: $Exports<'rxjs/add/operator/skip'>; } +declare module 'rxjs/add/operator/skipLast.js' { + declare module.exports: $Exports<'rxjs/add/operator/skipLast'>; +} declare module 'rxjs/add/operator/skipUntil.js' { declare module.exports: $Exports<'rxjs/add/operator/skipUntil'>; } @@ -1925,9 +1933,6 @@ declare module 'rxjs/observable/IteratorObservable.js' { declare module 'rxjs/observable/merge.js' { declare module.exports: $Exports<'rxjs/observable/merge'>; } -declare module 'rxjs/observable/MulticastObservable.js' { - declare module.exports: $Exports<'rxjs/observable/MulticastObservable'>; -} declare module 'rxjs/observable/never.js' { declare module.exports: $Exports<'rxjs/observable/never'>; } @@ -2003,9 +2008,6 @@ declare module 'rxjs/operator/bufferToggle.js' { declare module 'rxjs/operator/bufferWhen.js' { declare module.exports: $Exports<'rxjs/operator/bufferWhen'>; } -declare module 'rxjs/operator/cache.js' { - declare module.exports: $Exports<'rxjs/operator/cache'>; -} declare module 'rxjs/operator/catch.js' { declare module.exports: $Exports<'rxjs/operator/catch'>; } @@ -2051,9 +2053,6 @@ declare module 'rxjs/operator/dematerialize.js' { declare module 'rxjs/operator/distinct.js' { declare module.exports: $Exports<'rxjs/operator/distinct'>; } -declare module 'rxjs/operator/distinctKey.js' { - declare module.exports: $Exports<'rxjs/operator/distinctKey'>; -} declare module 'rxjs/operator/distinctUntilChanged.js' { declare module.exports: $Exports<'rxjs/operator/distinctUntilChanged'>; } @@ -2201,12 +2200,18 @@ declare module 'rxjs/operator/sequenceEqual.js' { declare module 'rxjs/operator/share.js' { declare module.exports: $Exports<'rxjs/operator/share'>; } +declare module 'rxjs/operator/shareReplay.js' { + declare module.exports: $Exports<'rxjs/operator/shareReplay'>; +} declare module 'rxjs/operator/single.js' { declare module.exports: $Exports<'rxjs/operator/single'>; } declare module 'rxjs/operator/skip.js' { declare module.exports: $Exports<'rxjs/operator/skip'>; } +declare module 'rxjs/operator/skipLast.js' { + declare module.exports: $Exports<'rxjs/operator/skipLast'>; +} declare module 'rxjs/operator/skipUntil.js' { declare module.exports: $Exports<'rxjs/operator/skipUntil'>; } @@ -2411,6 +2416,9 @@ declare module 'rxjs/util/Immediate.js' { declare module 'rxjs/util/isArray.js' { declare module.exports: $Exports<'rxjs/util/isArray'>; } +declare module 'rxjs/util/isArrayLike.js' { + declare module.exports: $Exports<'rxjs/util/isArrayLike'>; +} declare module 'rxjs/util/isDate.js' { declare module.exports: $Exports<'rxjs/util/isDate'>; } @@ -2447,9 +2455,15 @@ declare module 'rxjs/util/ObjectUnsubscribedError.js' { declare module 'rxjs/util/root.js' { declare module.exports: $Exports<'rxjs/util/root'>; } +declare module 'rxjs/util/Set.js' { + declare module.exports: $Exports<'rxjs/util/Set'>; +} declare module 'rxjs/util/subscribeToResult.js' { declare module.exports: $Exports<'rxjs/util/subscribeToResult'>; } +declare module 'rxjs/util/TimeoutError.js' { + declare module.exports: $Exports<'rxjs/util/TimeoutError'>; +} declare module 'rxjs/util/toSubscriber.js' { declare module.exports: $Exports<'rxjs/util/toSubscriber'>; } diff --git a/flow-typed/npm/semver_v5.1.x.js b/flow-typed/npm/semver_v5.1.x.js index 6331b84..75b6376 100644 --- a/flow-typed/npm/semver_v5.1.x.js +++ b/flow-typed/npm/semver_v5.1.x.js @@ -1,81 +1,198 @@ -// flow-typed signature: c5f918cd3de18b19a20558e6f3bbcc84 -// flow-typed version: cdd17a64e0/semver_v5.1.x/flow_>=v0.27.0 +// flow-typed signature: dc381ee55406f66b7272c6343db0834b +// flow-typed version: da30fe6876/semver_v5.1.x/flow_>=v0.25.x -// List of members taken from here: https://www.npmjs.com/package/semver/#functions -// TODO support the `loose` parameter -// TODO support SemVer instances as input parameters -declare module 'semver' { +declare module "semver" { declare type Release = - 'major' | - 'premajor' | - 'minor' | - 'preminor' | - 'patch' | - 'prepatch' | - 'prerelease'; + | "major" + | "premajor" + | "minor" + | "preminor" + | "patch" + | "prepatch" + | "prerelease"; // The supported comparators are taken from the source here: // https://github.com/npm/node-semver/blob/8bd070b550db2646362c9883c8d008d32f66a234/semver.js#L623 - declare type Comparator = - '===' | - '!==' | - '==' | - '=' | - '' | // Not sure why you would want this, but whatever. - '!=' | - '>' | - '>=' | - '<' | - '<='; + declare type Operator = + | "===" + | "!==" + | "==" + | "=" + | "" // Not sure why you would want this, but whatever. + | "!=" + | ">" + | ">=" + | "<" + | "<="; declare class SemVer { - loose: ?boolean, - raw: string, - major: number, - minor: number, - patch: number, - prerelease: Array, - build: Array, - version: string, - } - - // Functions - declare function valid(v: string): string | null; - declare function inc(v: string, release: Release): string | null; - declare function major(v: string): number; - declare function minor(v: string): number; - declare function patch(v: string): number; + build: Array; + loose: ?boolean; + major: number; + minor: number; + patch: number; + prerelease: Array; + raw: string; + version: string; - // Comparison - declare function gt(v1: string, v2: string): boolean; - declare function gte(v1: string, v2: string): boolean; - declare function lt(v1: string, v2: string): boolean; - declare function lte(v1: string, v2: string): boolean; - declare function eq(v1: string, v2: string): boolean; - declare function neq(v1: string, v2: string): boolean; - declare function cmp(v1: string, comparator: Comparator, v2: string): boolean; - declare function compare(v1: string, v2: string): -1 | 0 | 1; - declare function rcompare(v1: string, v2: string): -1 | 0 | 1; - declare function diff(v1: string, v2: string): ?Release; + constructor(version: string | SemVer, loose?: boolean): SemVer; + compare(other: string | SemVer): -1 | 0 | 1; + compareMain(other: string | SemVer): -1 | 0 | 1; + comparePre(other: string | SemVer): -1 | 0 | 1; + format(): string; + inc(release: Release, identifier: string): this; + } - // Ranges - declare function validRange(r: string): string | null; - declare function satisfies(version: string, range: string): boolean; - declare function maxSatisfying(versions: Array, range: string): string | null; - declare function gtr(version: string, range: string): boolean; - declare function ltr(version: string, range: string): boolean; - declare function outside(version: string, range: string, hilo: '>' | '<'): boolean; + declare class Comparator { + loose?: boolean; + operator: Operator; + semver: SemVer; + value: string; - // Not explicitly documented - declare function parse(version: string): ?SemVer; + constructor(comp: string | Comparator, loose?: boolean): Comparator; + parse(comp: string): void; + test(version: string): boolean; + } declare class Range { - set: Array>; - - constructor(range: string, loose?: boolean): Range; + loose: ?boolean; + raw: string; + set: Array>; + constructor(range: string | Range, loose?: boolean): Range; format(): string; + parseRange(range: string): Array; test(version: string): boolean; toString(): string; } + + declare var SEMVER_SPEC_VERSION: string; + declare var re: Array; + declare var src: Array; + + // Functions + declare function valid(v: string | SemVer, loose?: boolean): string | null; + declare function clean(v: string | SemVer, loose?: boolean): string | null; + declare function inc( + v: string | SemVer, + release: Release, + loose?: boolean, + identifier?: string + ): string | null; + declare function inc( + v: string | SemVer, + release: Release, + identifier: string + ): string | null; + declare function major(v: string | SemVer, loose?: boolean): number; + declare function minor(v: string | SemVer, loose?: boolean): number; + declare function patch(v: string | SemVer, loose?: boolean): number; + + // Comparison + declare function gt( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function gte( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function lt( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function lte( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function eq( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function neq( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function cmp( + v1: string | SemVer, + comparator: Operator, + v2: string | SemVer, + loose?: boolean + ): boolean; + declare function compare( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): -1 | 0 | 1; + declare function rcompare( + v1: string | SemVer, + v2: string | SemVer, + loose?: boolean + ): -1 | 0 | 1; + declare function compareLoose( + v1: string | SemVer, + v2: string | SemVer + ): -1 | 0 | 1; + declare function diff(v1: string | SemVer, v2: string | SemVer): ?Release; + declare function sort( + list: Array, + loose?: boolean + ): Array; + declare function rsort( + list: Array, + loose?: boolean + ): Array; + declare function compareIdentifiers( + v1: string | SemVer, + v2: string | SemVer + ): -1 | 0 | 1; + declare function rcompareIdentifiers( + v1: string | SemVer, + v2: string | SemVer + ): -1 | 0 | 1; + + // Ranges + declare function validRange( + range: string | Range, + loose?: boolean + ): string | null; + declare function satisfies( + version: string | SemVer, + range: string | Range, + loose?: boolean + ): boolean; + declare function maxSatisfying( + versions: Array, + range: string | Range, + loose?: boolean + ): string | SemVer | null; + declare function gtr( + version: string | SemVer, + range: string | Range, + loose?: boolean + ): boolean; + declare function ltr( + version: string | SemVer, + range: string | Range, + loose?: boolean + ): boolean; + declare function outside( + version: string | SemVer, + range: string | Range, + hilo: ">" | "<", + loose?: boolean + ): boolean; + + // Not explicitly documented, or deprecated + declare function parse(version: string, loose?: boolean): ?SemVer; + declare function toComparators( + range: string | Range, + loose?: boolean + ): Array>; } diff --git a/flow-typed/npm/shell-quote_vx.x.x.js b/flow-typed/npm/shell-quote_vx.x.x.js index 5c1c1fd..e14fc20 100644 --- a/flow-typed/npm/shell-quote_vx.x.x.js +++ b/flow-typed/npm/shell-quote_vx.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 543c87b814c00940bcb8ea0dea34cfb4 -// flow-typed version: <>/shell-quote_v^1.6.0/flow_v0.33.0 +// flow-typed signature: 3a1cef829c1ee220666860545198c5eb +// flow-typed version: <>/shell-quote_v^1.6.0/flow_v0.75.0 /** * This is an autogenerated libdef stub for: @@ -8,8 +8,8 @@ * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ diff --git a/flow-typed/npm/temp_v0.8.x.js b/flow-typed/npm/temp_v0.8.x.js new file mode 100644 index 0000000..5a41909 --- /dev/null +++ b/flow-typed/npm/temp_v0.8.x.js @@ -0,0 +1,44 @@ +// flow-typed signature: 446a675900cd2c7ec951acf8d486a0a8 +// flow-typed version: b45b36945a/temp_v0.8.x/flow_>=v0.58.x + +// https://github.com/bruce/node-temp +// https://www.npmjs.com/package/temp + +declare module 'temp' { + declare type Affixes = + | null + | string + // Use an exact object to prevent accidentally using the callback as the + // first arg. + | {|prefix?: string, suffix?: string, dir?: string|}; + + declare module.exports: { + // Settings + dir: string; + track(value?: boolean): $Exports<'temp'>; + + // Functions + mkdir( + affixes?: Affixes, + callback?: (err: ?ErrnoError, dirPath: string) => mixed, + ): void; + mkdirSync(affixes?: Affixes): string; + open( + affixes?: Affixes, + callback?: ( + err: ?ErrnoError, + info: {path: string, fd: ?number}, + ) => mixed, + ): void; + openSync(affixes?: Affixes): {path: string, fd: ?number}; + path(rawAffixes?: Affixes, defaultPrefix?: string): string; + cleanup( + callback?: ( + err: ?ErrnoError, + info: {files: number, dirs?: number}, + ) => mixed, + ): void; + cleanupSync(): {files: number, dirs: number}; + createWriteStream(affixes?: Affixes): stream$Writable; + }; +} diff --git a/flow-typed/npm/temp_vx.x.x.js b/flow-typed/npm/temp_vx.x.x.js deleted file mode 100644 index dffa84c..0000000 --- a/flow-typed/npm/temp_vx.x.x.js +++ /dev/null @@ -1,74 +0,0 @@ -// flow-typed signature: 213d30b33b1c1b4a6d2daae61f1a6134 -// flow-typed version: <>/temp_v^0.8.3/flow_v0.33.0 - -/** - * This is an autogenerated libdef stub for: - * - * 'temp' - * - * Fill this stub out by replacing all the `any` types. - * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: - * https://github.com/flowtype/flow-typed - */ - -declare module 'temp' { - declare module.exports: any; -} - -/** - * We include stubs for each file inside this npm package in case you need to - * require those files directly. Feel free to delete any files that aren't - * needed. - */ -declare module 'temp/examples/grepcount' { - declare module.exports: any; -} - -declare module 'temp/examples/pdfcreator' { - declare module.exports: any; -} - -declare module 'temp/lib/temp' { - declare module.exports: any; -} - -declare module 'temp/no_cleanup_on_exit' { - declare module.exports: any; -} - -declare module 'temp/no_cleanup_on_exit.spec' { - declare module.exports: any; -} - -declare module 'temp/no_cleanup' { - declare module.exports: any; -} - -declare module 'temp/test/temp-test' { - declare module.exports: any; -} - -// Filename aliases -declare module 'temp/examples/grepcount.js' { - declare module.exports: $Exports<'temp/examples/grepcount'>; -} -declare module 'temp/examples/pdfcreator.js' { - declare module.exports: $Exports<'temp/examples/pdfcreator'>; -} -declare module 'temp/lib/temp.js' { - declare module.exports: $Exports<'temp/lib/temp'>; -} -declare module 'temp/no_cleanup_on_exit.js' { - declare module.exports: $Exports<'temp/no_cleanup_on_exit'>; -} -declare module 'temp/no_cleanup_on_exit.spec.js' { - declare module.exports: $Exports<'temp/no_cleanup_on_exit.spec'>; -} -declare module 'temp/no_cleanup.js' { - declare module.exports: $Exports<'temp/no_cleanup'>; -} -declare module 'temp/test/temp-test.js' { - declare module.exports: $Exports<'temp/test/temp-test'>; -} diff --git a/flow-typed/npm/vscode-languageclient_vx.x.x.js b/flow-typed/npm/vscode-languageclient_vx.x.x.js new file mode 100644 index 0000000..2acd0ce --- /dev/null +++ b/flow-typed/npm/vscode-languageclient_vx.x.x.js @@ -0,0 +1,158 @@ +// flow-typed signature: eaa5d70a475e95c8a4a500628a9f9962 +// flow-typed version: <>/vscode-languageclient_v^4.4.2/flow_v0.75.0 + +/** + * This is an autogenerated libdef stub for: + * + * 'vscode-languageclient' + * + * Fill this stub out by replacing all the `any` types. + * + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: + * https://github.com/flowtype/flow-typed + */ + +declare module 'vscode-languageclient' { + declare module.exports: any; +} + +/** + * We include stubs for each file inside this npm package in case you need to + * require those files directly. Feel free to delete any files that aren't + * needed. + */ +declare module 'vscode-languageclient/lib/client' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/codeConverter' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/colorProvider' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/configuration' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/foldingRange' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/implementation' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/main' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/protocolCodeLens' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/protocolCompletionItem' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/protocolConverter' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/protocolDocumentLink' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/typeDefinition' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/async' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/electron' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/electronForkStart' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/is' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/processes' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/utils/uuid' { + declare module.exports: any; +} + +declare module 'vscode-languageclient/lib/workspaceFolders' { + declare module.exports: any; +} + +// Filename aliases +declare module 'vscode-languageclient/lib/client.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/client'>; +} +declare module 'vscode-languageclient/lib/codeConverter.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/codeConverter'>; +} +declare module 'vscode-languageclient/lib/colorProvider.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/colorProvider'>; +} +declare module 'vscode-languageclient/lib/configuration.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/configuration'>; +} +declare module 'vscode-languageclient/lib/foldingRange.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/foldingRange'>; +} +declare module 'vscode-languageclient/lib/implementation.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/implementation'>; +} +declare module 'vscode-languageclient/lib/main.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/main'>; +} +declare module 'vscode-languageclient/lib/protocolCodeLens.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/protocolCodeLens'>; +} +declare module 'vscode-languageclient/lib/protocolCompletionItem.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/protocolCompletionItem'>; +} +declare module 'vscode-languageclient/lib/protocolConverter.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/protocolConverter'>; +} +declare module 'vscode-languageclient/lib/protocolDocumentLink.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/protocolDocumentLink'>; +} +declare module 'vscode-languageclient/lib/typeDefinition.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/typeDefinition'>; +} +declare module 'vscode-languageclient/lib/utils/async.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/async'>; +} +declare module 'vscode-languageclient/lib/utils/electron.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/electron'>; +} +declare module 'vscode-languageclient/lib/utils/electronForkStart.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/electronForkStart'>; +} +declare module 'vscode-languageclient/lib/utils/is.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/is'>; +} +declare module 'vscode-languageclient/lib/utils/processes.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/processes'>; +} +declare module 'vscode-languageclient/lib/utils/uuid.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/utils/uuid'>; +} +declare module 'vscode-languageclient/lib/workspaceFolders.js' { + declare module.exports: $Exports<'vscode-languageclient/lib/workspaceFolders'>; +} diff --git a/flow-typed/npm/vscode_v0.11.x.js b/flow-typed/npm/vscode_v0.11.x.js deleted file mode 100644 index 0cb09b1..0000000 --- a/flow-typed/npm/vscode_v0.11.x.js +++ /dev/null @@ -1,3449 +0,0 @@ -// flow-typed signature: b083b939da1c0cf7b3c76d53b2582a2d -// flow-typed version: 94e9f7e0a4/vscode_v0.11.x/flow_>=v0.32.x - -declare module 'vscode' { - - /** - * The version of the editor. - */ - declare export var version: string; - - /** - * Represents a reference to a command. Provides a title which - * will be used to represent a command in the UI and, optionally, - * an array of arguments which will be passed to the command handler - * function when invoked. - */ - declare export interface Command { - /** - * Title of the command, like `save`. - */ - title: string; - - /** - * The identifier of the actual command handler. - * @see [commands.registerCommand](#commands.registerCommand). - */ - command: string; - - /** - * Arguments that the command handler should be - * invoked with. - */ - arguments?: any[]; - } - - /** - * Represents a line of text, such as a line of source code. - * - * TextLine objects are __immutable__. When a [document](#TextDocument) changes, - * previously retrieved lines will not represent the latest state. - */ - declare export interface TextLine { - - /** - * The zero-based line number. - * - * @readonly - */ - lineNumber: number; - - /** - * The text of this line without the line separator characters. - * - * @readonly - */ - text: string; - - /** - * The range this line covers without the line separator characters. - * - * @readonly - */ - range: Range; - - /** - * The range this line covers with the line separator characters. - * - * @readonly - */ - rangeIncludingLineBreak: Range; - - /** - * The offset of the first character which is not a whitespace character as defined - * by `/\s/`. - * - * @readonly - */ - firstNonWhitespaceCharacterIndex: number; - - /** - * Whether this line is whitespace only, shorthand - * for [TextLine.firstNonWhitespaceCharacterIndex](#TextLine.firstNonWhitespaceCharacterIndex]) === [TextLine.text.length](#TextLine.text.length). - * - * @readonly - */ - isEmptyOrWhitespace: boolean; - } - - - /** - * A snippet string is a template which allows to insert text - * and to control the editor cursor when insertion happens. - * - * A snippet can define tab stops and placeholders with `$1`, `$2` - * and `${3:foo}`. `$0` defines the final tab stop, it defaults to - * the end of the snippet. Variables are defined with `$name` and - * `${name:default value}`. The full snippet syntax is documented - * [here](http://code.visualstudio.com/docs/customization/userdefinedsnippets#_creating-your-own-snippets). - */ - declare export class SnippetString { - - /** - * The snippet string. - */ - value: string; - - /** */ - constructor(value: string): string; - - /** - * Builder-function that appends the given string to - * the [`value`](#SnippetString.value) of this snippet string. - * - * @param string A value to append 'as given'. The string will be escaped. - * @return This snippet string. - */ - appendText(string: string): SnippetString; - - /** - * Builder-function that appends a tabstop (`$1`, `$2` etc) to - * the [`value`](#SnippetString.value) of this snippet string. - * - * @param number The number of this tabstop, defaults to an auto-incremet - * value starting at 1. - * @return This snippet string. - */ - appendTabstop(number?: number): SnippetString; - - /** - * Builder-function that appends a placeholder (`${1:value}`) to - * the [`value`](#SnippetString.value) of this snippet string. - * - * @param value The value of this placeholder - either a string or a function - * with which a nested snippet can be created. - * @param number The number of this tabstop, defaults to an auto-incremet - * value starting at 1. - * @return This snippet string. - */ - appendPlaceholder(value: string | ((snippet: SnippetString) => any), number?: number): SnippetString; - - /** - * Builder-function that appends a variable (`${VAR}`) to - * the [`value`](#SnippetString.value) of this snippet string. - * - * @param name The name of the variable - excluding the `$`. - * @param defaultValue The default value which is used when the variable name cannot - * be resolved - either a string or a function with which a nested snippet can be created. - * @return This snippet string. - */ - appendVariable(name: string, defaultValue: string | ((snippet: SnippetString) => any)): SnippetString; - } - - - /** - * Represents a text document, such as a source file. Text documents have - * [lines](#TextLine) and knowledge about an underlying resource like a file. - */ - declare export interface TextDocument { - - /** - * The associated URI for this document. Most documents have the __file__-scheme, indicating that they - * represent files on disk. However, some documents may have other schemes indicating that they are not - * available on disk. - * - * @readonly - */ - uri: Uri; - - /** - * The file system path of the associated resource. Shorthand - * notation for [TextDocument.uri.fsPath](#TextDocument.uri.fsPath). Independent of the uri scheme. - * - * @readonly - */ - fileName: string; - - /** - * Is this document representing an untitled file. - * - * @readonly - */ - isUntitled: boolean; - - /** - * The identifier of the language associated with this document. - * - * @readonly - */ - languageId: string; - - /** - * The version number of this document (it will strictly increase after each - * change, including undo/redo). - * - * @readonly - */ - version: number; - - /** - * true if there are unpersisted changes. - * - * @readonly - */ - isDirty: boolean; - - /** - * Save the underlying file. - * - * @return A promise that will resolve to true when the file - * has been saved. - */ - save(): Thenable; - - /** - * The number of lines in this document. - * - * @readonly - */ - lineCount: number; - - /** - * Returns a text line denoted by the line number. Note - * that the returned object is *not* live and changes to the - * document are not reflected. - * - * @param line A line number in [0, lineCount). - * @return A [line](#TextLine). - */ - lineAt(line: number): TextLine; - - /** - * Returns a text line denoted by the position. Note - * that the returned object is *not* live and changes to the - * document are not reflected. - * - * The position will be [adjusted](#TextDocument.validatePosition). - * - * @see [TextDocument.lineAt](#TextDocument.lineAt) - * @param position A position. - * @return A [line](#TextLine). - */ - lineAt(position: Position): TextLine; - - /** - * Converts the position to a zero-based offset. - * - * The position will be [adjusted](#TextDocument.validatePosition). - * - * @param position A position. - * @return A valid zero-based offset. - */ - offsetAt(position: Position): number; - - /** - * Converts a zero-based offset to a position. - * - * @param offset A zero-based offset. - * @return A valid [position](#Position). - */ - positionAt(offset: number): Position; - - /** - * Get the text of this document. A substring can be retrieved by providing - * a range. The range will be [adjusted](#TextDocument.validateRange). - * - * @param range Include only the text included by the range. - * @return The text inside the provided range or the entire text. - */ - getText(range?: Range): string; - - /** - * Get a word-range at the given position. By default words are defined by - * common separators, like space, -, _, etc. In addition, per languge custom - * [word definitions](#LanguageConfiguration.wordPattern) can be defined. - * - * The position will be [adjusted](#TextDocument.validatePosition). - * - * @param position A position. - * @return A range spanning a word, or `undefined`. - */ - getWordRangeAtPosition(position: Position): Range; - - /** - * Ensure a range is completely contained in this document. - * - * @param range A range. - * @return The given range or a new, adjusted range. - */ - validateRange(range: Range): Range; - - /** - * Ensure a position is contained in the range of this document. - * - * @param position A position. - * @return The given position or a new, adjusted position. - */ - validatePosition(position: Position): Position; - } - - /** - * Represents a line and character position, such as - * the position of the cursor. - * - * Position objects are __immutable__. Use the [with](#Position.with) or - * [translate](#Position.translate) methods to derive new positions - * from an existing position. - */ - declare export class Position { - - /** - * The zero-based line value. - * @readonly - */ - line: number; - - /** - * The zero-based character value. - * @readonly - */ - character: number; - - /** - * @param line A zero-based line value. - * @param character A zero-based character value. - */ - constructor(line: number, character: number): void; - - /** - * Check if `other` is before this position. - * - * @param other A position. - * @return `true` if position is on a smaller line - * or on the same line on a smaller character. - */ - isBefore(other: Position): boolean; - - /** - * Check if `other` is before or equal to this position. - * - * @param other A position. - * @return `true` if position is on a smaller line - * or on the same line on a smaller or equal character. - */ - isBeforeOrEqual(other: Position): boolean; - - /** - * Check if `other` is after this position. - * - * @param other A position. - * @return `true` if position is on a greater line - * or on the same line on a greater character. - */ - isAfter(other: Position): boolean; - - /** - * Check if `other` is after or equal to this position. - * - * @param other A position. - * @return `true` if position is on a greater line - * or on the same line on a greater or equal character. - */ - isAfterOrEqual(other: Position): boolean; - - /** - * Check if `other` equals this position. - * - * @param other A position. - * @return `true` if the line and character of the given position are equal to - * the line and character of this position. - */ - isEqual(other: Position): boolean; - - /** - * Compare this to `other`. - * - * @param other A position. - * @return A number smaller than zero if this position is before the given position, - * a number greater than zero if this position is after the given position, or zero when - * this and the given position are equal. - */ - compareTo(other: Position): number; - - /** - * Create a new position relative to this position. - * - * @param lineDelta Delta value for the line value, default is `0`. - * @param characterDelta Delta value for the character value, default is `0`. - * @return A position which line and character is the sum of the current line and - * character and the corresponding deltas. - */ - translate(lineDelta?: number, characterDelta?: number): Position; - - /** - * Create a new position derived from this position. - * - * @param line Value that should be used as line value, default is the [existing value](#Position.line) - * @param character Value that should be used as character value, default is the [existing value](#Position.character) - * @return A position where line and character are replaced by the given values. - */ - with(line?: number, character?: number): Position; - } - - /** - * A range represents an ordered pair of two positions. - * It is guaranteed that [start](#Range.start).isBeforeOrEqual([end](#Range.end)) - * - * Range objects are __immutable__. Use the [with](#Range.with), - * [intersection](#Range.intersection), or [union](#Range.union) methods - * to derive new ranges from an existing range. - */ - declare export class Range { - - /** - * The start position. It is before or equal to [end](#Range.end). - * @readonly - */ - start: Position; - - /** - * The end position. It is after or equal to [start](#Range.start). - * @readonly - */ - end: Position; - - /** - * Create a new range from two positions. If `start` is not - * before or equal to `end`, the values will be swapped. - * - * @param start A position. - * @param end A position. - */ - constructor(start: Position, end: Position): void; - - /** - * Create a new range from number coordinates. It is a shorter equivalent of - * using `new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter))` - * - * @param startLine A zero-based line value. - * @param startCharacter A zero-based character value. - * @param endLine A zero-based line value. - * @param endCharacter A zero-based character value. - */ - constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number): void; - - /** - * `true` iff `start` and `end` are equal. - */ - isEmpty: boolean; - - /** - * `true` iff `start.line` and `end.line` are equal. - */ - isSingleLine: boolean; - - /** - * Check if a position or a range is contained in this range. - * - * @param positionOrRange A position or a range. - * @return `true` iff the position or range is inside or equal - * to this range. - */ - contains(positionOrRange: Position | Range): boolean; - - /** - * Check if `other` equals this range. - * - * @param other A range. - * @return `true` when start and end are [equal](#Position.isEqual) to - * start and end of this range. - */ - isEqual(other: Range): boolean; - - /** - * Intersect `range` with this range and returns a new range or `undefined` - * if the ranges have no overlap. - * - * @param range A range. - * @return A range of the greater start and smaller end positions. Will - * return undefined when there is no overlap. - */ - intersection(range: Range): Range; - - /** - * Compute the union of `other` with this range. - * - * @param other A range. - * @return A range of smaller start position and the greater end position. - */ - union(other: Range): Range; - - /** - * Create a new range derived from this range. - * - * @param start A position that should be used as start. The default value is the [current start](#Range.start). - * @param end A position that should be used as end. The default value is the [current end](#Range.end). - * @return A range derived from this range with the given start and end position. - * If start and end are not different this range will be returned. - */ - with(start?: Position, end?: Position): Range; - } - - /** - * Represents a text selection in an editor. - */ - declare export class Selection extends Range { - - /** - * The position at which the selection starts. - * This position might be before or after [active](#Selection.active). - */ - anchor: Position; - - /** - * The position of the cursor. - * This position might be before or after [anchor](#Selection.anchor). - */ - active: Position; - - /** - * Create a selection from two postions. - * - * @param anchor A position. - * @param active A position. - */ - constructor(anchor: Position, active: Position): void; - - /** - * Create a selection from four coordinates. - * - * @param anchorLine A zero-based line value. - * @param anchorCharacter A zero-based character value. - * @param activeLine A zero-based line value. - * @param activeCharacter A zero-based character value. - */ - constructor(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number): void; - - /** - * A selection is reversed if [active](#Selection.active).isBefore([anchor](#Selection.anchor)). - */ - isReversed: boolean; - } - - /** - * Represents an event describing the change in a [text editor's selections](#TextEditor.selections). - */ - declare export interface TextEditorSelectionChangeEvent { - /** - * The [text editor](#TextEditor) for which the selections have changed. - */ - textEditor: TextEditor; - /** - * The new value for the [text editor's selections](#TextEditor.selections). - */ - selections: Selection[]; - } - - /** - * Represents an event describing the change in a [text editor's options](#TextEditor.options). - */ - declare export interface TextEditorOptionsChangeEvent { - /** - * The [text editor](#TextEditor) for which the options have changed. - */ - textEditor: TextEditor; - /** - * The new value for the [text editor's options](#TextEditor.options). - */ - options: TextEditorOptions; - } - - /** - * Represents a [text editor](#TextEditor)'s [options](#TextEditor.options). - */ - declare export interface TextEditorOptions { - - /** - * The size in spaces a tab takes. This is used for two purposes: - * - the rendering width of a tab character; - * - the number of spaces to insert when [insertSpaces](#TextEditorOptions.insertSpaces) is true. - */ - tabSize: number; - - /** - * When pressing Tab insert [n](#TextEditorOptions.tabSize) spaces. - */ - insertSpaces: boolean; - } - - /** - * Represents a handle to a set of decorations - * sharing the same [styling options](#DecorationRenderOptions) in a [text editor](#TextEditor). - * - * To get an instance of a `TextEditorDecorationType` use - * [createTextEditorDecorationType](#window.createTextEditorDecorationType). - */ - declare export interface TextEditorDecorationType { - - /** - * Internal representation of the handle. - * @readonly - */ - key: string; - - /** - * Remove this decoration type and all decorations on all text editors using it. - */ - dispose(): void; - } - - /** - * Represents different [reveal](#TextEditor.revealRange) strategies in a text editor. - */ - declare export type TextEditorRevealTypeType = 0 | 1 | 2; - declare export var TextEditorRevealType: { - /** - * The range will be revealed with as little scrolling as possible. - */ - Default: 0, - /** - * The range will always be revealed in the center of the viewport. - */ - InCenter: 1, - /** - * If the range is outside the viewport, it will be revealed in the center of the viewport. - * Otherwise, it will be revealed with as little scrolling as possible. - */ - InCenterIfOutsideViewport: 2, - } - - /** - * Represents different positions for rendering a decoration in an [overview ruler](#DecorationRenderOptions.overviewRulerLane). - * The overview ruler supports three lanes. - */ - declare export type OverviewRulerLaneType = 1 | 2 | 4 | 6; - declare export var OverviewRulerLane: { - Left: 1, - Center: 2, - Right: 4, - Full: 7 - } - - /** - * Represents theme specific rendering styles for a [text editor decoration](#TextEditorDecorationType). - */ - declare export interface ThemableDecorationRenderOptions { - /** - * Background color of the decoration. Use rgba() and define transparent background colors to play well with other decorations. - */ - backgroundColor?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - outlineColor?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - outlineStyle?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - outlineWidth?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - borderColor?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - borderRadius?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - borderSpacing?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - borderStyle?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - borderWidth?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - textDecoration?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - cursor?: string; - - /** - * CSS styling property that will be applied to text enclosed by a decoration. - */ - color?: string; - - /** - * An **absolute path** to an image to be rendered in the gutterIconPath. - */ - gutterIconPath?: string; - - /** - * The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations. - */ - overviewRulerColor?: string; - } - - /** - * Represents rendering styles for a [text editor decoration](#TextEditorDecorationType). - */ - declare export interface DecorationRenderOptions extends ThemableDecorationRenderOptions { - /** - * Should the decoration be rendered also on the whitespace after the line text. - * Defaults to `false`. - */ - isWholeLine?: boolean; - - /** - * The position in the overview ruler where the decoration should be rendered. - */ - overviewRulerLane?: OverviewRulerLaneType; - - /** - * Overwrite options for light themes. - */ - light?: ThemableDecorationRenderOptions; - - /** - * Overwrite options for dark themes. - */ - dark?: ThemableDecorationRenderOptions; - } - - /** - * Represents options for a specific decoration in a [decoration set](#TextEditorDecorationType). - */ - declare export interface DecorationOptions { - - /** - * Range to which this decoration is applied. - */ - range: Range; - - /** - * A message that should be rendered when hovering over the decoration. - */ - hoverMessage: MarkedString | MarkedString[]; - } - - /** - * Represents an editor that is attached to a [document](#TextDocument). - */ - declare export interface TextEditor { - - /** - * The document associated with this text editor. The document will be the same for the entire lifetime of this text editor. - */ - document: TextDocument; - - /** - * The primary selection on this text editor. Shorthand for `TextEditor.selections[0]`. - */ - selection: Selection; - - /** - * The selections in this text editor. The primary selection is always at index 0. - */ - selections: Selection[]; - - /** - * Text editor options. - */ - options: TextEditorOptions; - - /** - * Perform an edit on the document associated with this text editor. - * - * The given callback-function is invoked with an [edit-builder](#TextEditorEdit) which must - * be used to make edits. Note that the edit-builder is only valid while the - * callback executes. - * - * @param callback A function which can make edits using an [edit-builder](#TextEditorEdit). - * @return A promise that resolves with a value indicating if the edits could be applied. - */ - edit(callback: (editBuilder: TextEditorEdit) => void): Thenable; - - /** - * Adds a set of decorations to the text editor. If a set of decorations already exists with - * the given [decoration type](#TextEditorDecorationType), they will be replaced. - * - * @see [createTextEditorDecorationType](#window.createTextEditorDecorationType). - * - * @param decorationType A decoration type. - * @param rangesOrOptions Either [ranges](#Range) or more detailed [options](#DecorationOptions). - */ - setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: Range[] | DecorationOptions[]): void; - - /** - * Scroll as indicated by `revealType` in order to reveal the given range. - * - * @param range A range. - * @param revealType The scrolling strategy for revealing `range`. - */ - revealRange(range: Range, revealType?: TextEditorRevealTypeType): void; - - /** - * Show the text editor. - * - * @deprecated **This method is deprecated.** Use [window.showTextDocument](#window.showTextDocument) - * instead. This method shows unexpected behavior and will be removed in the next major update. - * - * @param column The [column](#ViewColumn) in which to show this editor. - */ - show(column?: ViewColumnType): void; - - /** - * Hide the text editor. - * - * @deprecated **This method is deprecated.** Use the command 'workbench.action.closeActiveEditor' instead. - * This method shows unexpected behavior and will be removed in the next major update. - */ - hide(): void; - } - - /** - * A complex edit that will be applied in one transaction on a TextEditor. - * This holds a description of the edits and if the edits are valid (i.e. no overlapping regions, document was not changed in the meantime, etc.) - * they can be applied on a [document](#Document) associated with a [text editor](#TextEditor). - * - */ - declare export interface TextEditorEdit { - /** - * Replace a certain text region with a new value. - * You can use \r\n or \n in `value` and they will be normalized to the current [document](#Document). - * - * @param location The range this operation should remove. - * @param value The new text this operation should insert after removing `location`. - */ - replace(location: Position | Range | Selection, value: string): void; - - /** - * Insert text at a location. - * You can use \r\n or \n in `value` and they will be normalized to the current [document](#Document). - * Although the equivalent text edit can be made with [replace](#TextEditorEdit.replace), `insert` will produce a different resulting selection (it will get moved). - * - * @param location The position where the new text should be inserted. - * @param value The new text this operation should insert. - */ - insert(location: Position, value: string): void; - - /** - * Delete a certain text region. - * - * @param location The range this operation should remove. - */ - delete(location: Range | Selection): void; - } - - /** - * A universal resource identifier representing either a file on disk - * or another resource, like untitled resources. - */ - declare export class Uri { - - /** - * Create an URI from a file system path. The [scheme](#Uri.scheme) - * will be `file`. - * - * @param path A file system or UNC path. - * @return A new Uri instance. - */ - static file(path: string): Uri; - - /** - * Create an URI from a string. Will throw if the given value is not - * valid. - * - * @param value The string value of an Uri. - * @return A new Uri instance. - */ - static parse(value: string): Uri; - - /** - * Scheme is the `http` part of `http://www.msft.com/some/path?query#fragment`. - * The part before the first colon. - */ - scheme: string; - - /** - * Authority is the `www.msft.com` part of `http://www.msft.com/some/path?query#fragment`. - * The part between the first double slashes and the next slash. - */ - authority: string; - - /** - * Path is the `/some/path` part of `http://www.msft.com/some/path?query#fragment`. - */ - path: string; - - /** - * Query is the `query` part of `http://www.msft.com/some/path?query#fragment`. - */ - query: string; - - /** - * Fragment is the `fragment` part of `http://www.msft.com/some/path?query#fragment`. - */ - fragment: string; - - /** - * The string representing the corresponding file system path of this URI. - * - * Will handle UNC paths and normalize windows drive letters to lower-case. Also - * uses the platform specific path separator. Will *not* validate the path for - * invalid characters and semantics. Will *not* look at the scheme of this URI. - */ - fsPath: string; - - /** - * Returns a canonical representation of this URI. The representation and normalization - * of a URI depends on the scheme. - * - * @returns A string that is the encoded version of this Uri. - */ - toString(): string; - - /** - * Returns a JSON representation of this Uri. - * - * @return An object. - */ - toJSON(): any; - } - - /** - * A cancellation token is passed to an asynchronous or long running - * operation to request cancellation, like cancelling a request - * for completion items because the user continued to type. - */ - declare export interface CancellationToken { - - /** - * Is `true` when the token has been cancelled, `false` otherwise. - */ - isCancellationRequested: boolean; - - /** - * An [event](#Event) which fires upon cancellation. - */ - onCancellationRequested: Event; - } - - /** - * A cancellation source creates and controls a [cancellation token](#CancellationToken). - */ - declare export class CancellationTokenSource { - - /** - * The cancellation token of this source. - */ - token: CancellationToken; - - /** - * Signal cancellation on the token. - */ - cancel(): void; - - /** - * Dispose object and free resources. Will call [cancel](#CancellationTokenSource.cancel). - */ - dispose(): void; - } - - /** - * Represents a type which can release resources, such - * as event listening or a timer. - */ - declare export class Disposable { - - /** - * Combine many disposable-likes into one. Use this method - * when having objects with a dispose function which are not - * instances of Disposable. - * - * @param disposableLikes Objects that have at least a `dispose`-function member. - * @return Returns a new disposable which, upon dispose, will - * dispose all provided disposables. - */ - static from(...disposableLikes: { dispose: () => any }[]): Disposable; - - /** - * Creates a new Disposable calling the provided function - * on dispose. - * @param callOnDispose Function that disposes something. - */ - constructor(callOnDispose: Function): void; - - /** - * Dispose this object. - */ - dispose(): any; - } - - /** - * Represents a typed event. - * - * A function that represents an event to which you subscribe by calling it with - * a listener function as argument. - * - * @sample `item.onDidChange(function(event) { console.log("Event happened: " + event); });` - */ - declare export interface Event { - - /** - * A function that represents an event to which you subscribe by calling it with - * a listener function as argument. - * - * @param listener The listener function will be called when the event happens. - * @param thisArgs The `this`-argument which will be used when calling the event listener. - * @param disposables An array to which a [disposeable](#Disposable) will be added. - * @return A disposable which unsubscribes the event listener. - */ - (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable; - } - - /** - * A file system watcher notifies about changes to files and folders - * on disk. - * - * To get an instance of a `FileSystemWatcher` use - * [createFileSystemWatcher](#workspace.createFileSystemWatcher). - */ - declare export interface FileSystemWatcher extends Disposable { - - /** - * true if this file system watcher has been created such that - * it ignores creation file system events. - */ - ignoreCreateEvents: boolean; - - /** - * true if this file system watcher has been created such that - * it ignores change file system events. - */ - ignoreChangeEvents: boolean; - - /** - * true if this file system watcher has been created such that - * it ignores delete file system events. - */ - ignoreDeleteEvents: boolean; - - /** - * An event which fires on file/folder creation. - */ - onDidCreate: Event; - - /** - * An event which fires on file/folder change. - */ - onDidChange: Event; - - /** - * An event which fires on file/folder deletion. - */ - onDidDelete: Event; - } - - /** - * Represents an item that can be selected from - * a list of items. - */ - declare export interface QuickPickItem { - - /** - * A label. Will be rendered prominent. - */ - label: string; - - /** - * A description. Will be rendered less prominent. - */ - description: string; - } - - /** - * Options to configure the behavior of the quick pick UI. - */ - declare export interface QuickPickOptions { - /** - * An optional flag to include the description when filtering the picks. - */ - matchOnDescription?: boolean; - - /** - * An optional string to show as place holder in the input box to guide the user what to pick on. - */ - placeHolder?: string; - } - - /** - * Represents an action that is shown with an information, warning, or - * error message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * @see [showWarningMessage](#window.showWarningMessage) - * @see [showErrorMessage](#window.showErrorMessage) - */ - declare export interface MessageItem { - - /** - * A short title like 'Retry', 'Open Log' etc. - */ - title: string; - } - - /** - * Options to configure the behavior of the input box UI. - */ - declare export interface InputBoxOptions { - - /** - * The value to prefill in the input box. - */ - value?: string; - - /** - * The text to display underneath the input box. - */ - prompt?: string; - - /** - * An optional string to show as place holder in the input box to guide the user what to type. - */ - placeHolder?: string; - - /** - * Set to true to show a password prompt that will not show the typed value. - */ - password?: boolean; - } - - /** - * A document filter denotes a document by different properties like - * the [language](#TextDocument.languageId), the [scheme](#Uri.scheme) of - * its resource, or a glob-pattern that is applied to the [path](#TextDocument.fileName). - * - * @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` - * @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**∕project.json' }` - */ - declare export interface DocumentFilter { - - /** - * A language id, like `typescript`. - */ - language?: string; - - /** - * A Uri [scheme](#Uri.scheme), like `file` or `untitled`. - */ - scheme?: string; - - /** - * A glob pattern, like `*.{ts,js}`. - */ - pattern?: string; - } - - /** - * A language selector is the combination of one or many language identifiers - * and [language filters](#LanguageFilter). - * - * @sample `let sel:DocumentSelector = 'typescript'`; - * @sample `let sel:DocumentSelector = ['typescript', { language: 'json', pattern: '**∕tsconfig.json' }]`; - */ - declare export type DocumentSelector = string | DocumentFilter | (string | DocumentFilter)[]; - - /** - * Contains additional diagnostic information about the context in which - * a [code action](#CodeActionProvider.provideCodeActions) is run. - */ - declare export interface CodeActionContext { - - /** - * An array of diagnostics. - * - * @readonly - */ - diagnostics: Diagnostic[]; - } - - /** - * The code action interface defines the contract between extensions and - * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature. - * - * A code action can be any command that is [known](#commands.getCommands) to the system. - */ - declare export interface CodeActionProvider { - - /** - * Provide commands for the given document and range. - * - * @param document The document in which the command was invoked. - * @param range The range for which the command was invoked. - * @param context Context carrying additional information. - * @param token A cancellation token. - * @return An array of commands or a thenable of such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): Command[] | Thenable; - } - - /** - * A code lens represents a [command](#Command) that should be shown along with - * source text, like the number of references, a way to run tests, etc. - * - * A code lens is _unresolved_ when no command is associated to it. For performance - * reasons the creation of a code lens and resolving should be done to two stages. - * - * @see [CodeLensProvider.provideCodeLenses](#CodeLensProvider.provideCodeLenses) - * @see [CodeLensProvider.resolveCodeLens](#CodeLensProvider.resolveCodeLens) - */ - declare export class CodeLens { - - /** - * The range in which this code lens is valid. Should only span a single line. - */ - range: Range; - - /** - * The command this code lens represents. - */ - command: Command; - - /** - * `true` when there is a command associated. - */ - isResolved: boolean; - - /** - * Creates a new code lens object. - * - * @param range The range to which this code lens applies. - * @param command The command associated to this code lens. - */ - constructor(range: Range, command?: Command): void; - } - - /** - * A code lens provider adds [commands](#Command) to source text. The commands will be shown - * as dedicated horizontal lines in between the source text. - */ - declare export interface CodeLensProvider { - - /** - * Compute a list of [lenses](#CodeLens). This call should return as fast as possible and if - * computing the commands is expensive implementors should only return code lens objects with the - * range set and implement [resolve](#CodeLensProvider.resolveCodeLens). - * - * @param document The document in which the command was invoked. - * @param token A cancellation token. - * @return An array of code lenses or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideCodeLenses(document: TextDocument, token: CancellationToken): CodeLens[] | Thenable; - - /** - * This function will be called for each visible code lens, usually when scrolling and after - * calls to [compute](#CodeLensProvider.provideCodeLenses)-lenses. - * - * @param codeLens code lens that must be resolved. - * @param token A cancellation token. - * @return The given, resolved code lens or thenable that resolves to such. - */ - resolveCodeLens?: (codeLens: CodeLens, token: CancellationToken) => CodeLens | Thenable; - } - - /** - * The definition of a symbol represented as one or many [locations](#Location). - * For most programming languages there is only one location at which a symbol is - * defined. - */ - declare export type Definition = Location | Location[]; - - /** - * The definition provider interface defines the contract between extensions and - * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition) - * and peek definition features. - */ - declare export interface DefinitionProvider { - - /** - * Provide the definition of the symbol at the given position and document. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param token A cancellation token. - * @return A definition or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined` or `null`. - */ - provideDefinition(document: TextDocument, position: Position, token: CancellationToken): Definition | Thenable; - } - - /** - * FormattedString can be used to render text with a tiny subset of markdown. FormattedString - * is either a string that supports **bold** and __italic__ or a code-block that - * provides a language and a code Snippet. - */ - declare export type MarkedString = string | { language: string; value: string }; - - /** - * A hover represents additional information for a symbol or word. Hovers are - * rendered in a tooltip-like widget. - */ - declare export class Hover { - - /** - * The contents of this hover. - */ - contents: MarkedString[]; - - /** - * The range to which this hover applies. When missing, the - * editor will use the range at the current position or the - * current position itself. - */ - range: Range; - - /** - * Creates a new hover object. - * - * @param contents The contents of the hover. - * @param range The range to which the hover applies. - */ - constructor(contents: MarkedString | MarkedString[], range?: Range): void; - } - - /** - * The hover provider interface defines the contract between extensions and - * the [hover](https://code.visualstudio.com/docs/editor/editingevolved#_hover)-feature. - */ - declare export interface HoverProvider { - - /** - * Provide a hover for the given position and document. Multiple hovers at the same - * position will be merged by the editor. A hover can have a range which defaults - * to the word range at the position when omitted. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param token A cancellation token. - * @return A hover or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined` or `null`. - */ - provideHover(document: TextDocument, position: Position, token: CancellationToken): Hover | Thenable; - } - - /** - * A document highlight kind. - */ - declare export type DocumentHighlightKindType = 0 | 1 | 2; - declare export var DocumentHighlightKind: { - - /** - * A textual occurrence. - */ - Text: 0, - - /** - * Read-access of a symbol, like reading a variable. - */ - Read: 1, - - /** - * Write-access of a symbol, like writing to a variable. - */ - Write: 2, - } - - /** - * A document highlight is a range inside a text document which deserves - * special attention. Usually a document highlight is visualized by changing - * the background color of its range. - */ - declare export class DocumentHighlight { - - /** - * The range this highlight applies to. - */ - range: Range; - - /** - * The highlight kind, default is [text](#DocumentHighlightKind.Text). - */ - kind: DocumentHighlightKindType; - - /** - * Creates a new document highlight object. - * - * @param range The range the highlight applies to. - * @param kind The highlight kind, default is [text](#DocumentHighlightKind.Text). - */ - constructor(range: Range, kind?: DocumentHighlightKindType): void; - } - - /** - * The document highlight provider interface defines the contract between extensions and - * the word-highlight-feature. - */ - declare export interface DocumentHighlightProvider { - - /** - * Provide a set of document highlights, like all occurrences of a variable or - * all exit-points of a function. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param token A cancellation token. - * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideDocumentHighlights(document: TextDocument, position: Position, token: CancellationToken): DocumentHighlight[] | Thenable; - } - - /** - * A symbol kind. - */ - declare export type SymbolKindType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17; - declare export var SymbolKind: { - File: 0, - Module: 1, - Namespace: 2, - Package: 3, - Class: 4, - Method: 5, - Property: 6, - Field: 7, - Constructor: 8, - Enum: 9, - Interface: 10, - Function: 11, - Variable: 12, - Constant: 13, - String: 14, - Number: 15, - Boolean: 16, - Array: 17, - } - - /** - * Represents information about programming constructs like variables, classes, - * interfaces etc. - */ - declare export class SymbolInformation { - - /** - * The name of this symbol. - */ - name: string; - - /** - * The name of the symbol containing this symbol. - */ - containerName: string; - - /** - * The kind of this symbol. - */ - kind: SymbolKindType; - - /** - * The location of this symbol. - */ - location: Location; - - /** - * Creates a new symbol information object. - * - * @param name The name of the symbol. - * @param kind The kind of the symbol. - * @param range The range of the location of the symbol. - * @param uri The resource of the location of symbol, defaults to the current document. - * @param containerName The name of the symbol containing the symbol. - */ - constructor(name: string, kind: SymbolKindType, range: Range, uri?: Uri, containerName?: string): void; - } - - /** - * The document symbol provider interface defines the contract between extensions and - * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_goto-symbol)-feature. - */ - declare export interface DocumentSymbolProvider { - - /** - * Provide symbol information for the given document. - * - * @param document The document in which the command was invoked. - * @param token A cancellation token. - * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideDocumentSymbols(document: TextDocument, token: CancellationToken): SymbolInformation[] | Thenable; - } - - /** - * The workspace symbol provider interface defines the contract between extensions and - * the [symbol search](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name)-feature. - */ - declare export interface WorkspaceSymbolProvider { - - /** - * Project-wide search for a symbol matching the given query string. It is up to the provider - * how to search given the query string, like substring, indexOf etc. - * - * @param query A non-empty query string. - * @param token A cancellation token. - * @return An array of document highlights or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideWorkspaceSymbols(query: string, token: CancellationToken): SymbolInformation[] | Thenable; - } - - /** - * Value-object that contains additional information when - * requesting references. - */ - declare export interface ReferenceContext { - - /** - * Include the declaration of the current symbol. - */ - includeDeclaration: boolean; - } - - /** - * The reference provider interface defines the contract between extensions and - * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature. - */ - declare export interface ReferenceProvider { - - /** - * Provide a set of project-wide references for the given position and document. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param context - * @param token A cancellation token. - * @return An array of locations or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): Location[] | Thenable; - } - - /** - * A text edit represents edits that should be applied - * to a document. - */ - declare export class TextEdit { - - /** - * Utility to create a replace edit. - * - * @param range A range. - * @param newText A string. - * @return A new text edit object. - */ - static replace(range: Range, newText: string): TextEdit; - - /** - * Utility to create an insert edit. - * - * @param position A position, will become an empty range. - * @param newText A string. - * @return A new text edit object. - */ - static insert(position: Position, newText: string): TextEdit; - - /** - * Utility to create a delete edit. - * - * @param range A range. - * @return A new text edit object. - */ - static delete(range: Range): TextEdit; - - /** - * The range this edit applies to. - */ - range: Range; - - /** - * The string this edit will insert. - */ - newText: string; - - /** - * Create a new TextEdit. - * - * @param range A range. - * @param newText A string. - */ - constructor(range: Range, newText: string): void; - } - - /** - * A workspace edit represents textual changes for many documents. - */ - declare export class WorkspaceEdit { - - /** - * The number of affected resources. - * - * @readonly - */ - size: number; - - /** - * Replace the given range with given text for the given resource. - * - * @param uri A resource identifier. - * @param range A range. - * @param newText A string. - */ - replace(uri: Uri, range: Range, newText: string): void; - - /** - * Insert the given text at the given position. - * - * @param uri A resource identifier. - * @param position A position. - * @param newText A string. - */ - insert(uri: Uri, position: Position, newText: string): void; - - /** - * Delete the text at the given range. - * - * @param uri A resource identifier. - * @param range A range. - */ - delete(uri: Uri, range: Range): void; - - /** - * Check if this edit affects the given resource. - * @param uri A resource identifier. - * @return `true` if the given resource will be touched by this edit. - */ - has(uri: Uri): boolean; - - /** - * Set (and replace) text edits for a resource. - * - * @param uri A resource identifier. - * @param edits An array of text edits. - */ - set(uri: Uri, edits: TextEdit[]): void; - - /** - * Get the text edits for a resource. - * - * @param uri A resource identifier. - * @return An array of text edits. - */ - get(uri: Uri): TextEdit[]; - - /** - * Get all text edits grouped by resource. - * - * @return An array of `[Uri, TextEdit[]]`-tuples. - */ - entries(): [Uri, TextEdit[]][]; - } - - /** - * The rename provider interface defines the contract between extensions and - * the [rename](https://code.visualstudio.com/docs/editor/editingevolved#_rename-symbol)-feature. - */ - declare export interface RenameProvider { - - /** - * Provide an edit that describes changes that have to be made to one - * or many resources to rename a symbol to a different name. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param newName The new name of the symbol. If the given name is not valid, the provider must return a rejected promise. - * @param token A cancellation token. - * @return A workspace edit or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined` or `null`. - */ - provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): WorkspaceEdit | Thenable; - } - - /** - * Value-object describing what options formatting should use. - */ - declare export interface FormattingOptions { - - /** - * Size of a tab in spaces. - */ - tabSize: number; - - /** - * Prefer spaces over tabs. - */ - insertSpaces: boolean; - - /** - * Signature for further properties. - */ - [key: string]: boolean | number | string; - } - - /** - * The document formatting provider interface defines the contract between extensions and - * the formatting-feature. - */ - declare export interface DocumentFormattingEditProvider { - - /** - * Provide formatting edits for a whole document. - * - * @param document The document in which the command was invoked. - * @param options Options controlling formatting. - * @param token A cancellation token. - * @return A set of text edits or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideDocumentFormattingEdits(document: TextDocument, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable; - } - - /** - * The document formatting provider interface defines the contract between extensions and - * the formatting-feature. - */ - declare export interface DocumentRangeFormattingEditProvider { - - /** - * Provide formatting edits for a range in a document. - * - * The given range is a hint and providers can decide to format a smaller - * or larger range. Often this is done by adjusting the start and end - * of the range to full syntax nodes. - * - * @param document The document in which the command was invoked. - * @param range The range which should be formatted. - * @param options Options controlling formatting. - * @param token A cancellation token. - * @return A set of text edits or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable; - } - - /** - * The document formatting provider interface defines the contract between extensions and - * the formatting-feature. - */ - declare export interface OnTypeFormattingEditProvider { - - /** - * Provide formatting edits after a character has been typed. - * - * The given position and character should hint to the provider - * what range the position to expand to, like find the matching `{` - * when `}` has been entered. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param ch The character that has been typed. - * @param options Options controlling formatting. - * @param token A cancellation token. - * @return A set of text edits or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, or an empty array. - */ - provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): TextEdit[] | Thenable; - } - - /** - * Represents a parameter of a callable-signature. A parameter can - * have a label and a doc-comment. - */ - declare export class ParameterInformation { - - /** - * The label of this signature. Will be shown in - * the UI. - */ - label: string; - - /** - * The human-readable doc-comment of this signature. Will be shown - * in the UI but can be omitted. - */ - documentation: string; - - /** - * Creates a new parameter information object. - * - * @param label A label string. - * @param documentation A doc string. - */ - constructor(label: string, documentation?: string): void; - } - - /** - * Represents the signature of something callable. A signature - * can have a label, like a function-name, a doc-comment, and - * a set of parameters. - */ - declare export class SignatureInformation { - - /** - * The label of this signature. Will be shown in - * the UI. - */ - label: string; - - /** - * The human-readable doc-comment of this signature. Will be shown - * in the UI but can be omitted. - */ - documentation: string; - - /** - * The parameters of this signature. - */ - parameters: ParameterInformation[]; - - /** - * Creates a new signature information object. - * - * @param label A label string. - * @param documentation A doc string. - */ - constructor(label: string, documentation?: string): void; - } - - /** - * Signature help represents the signature of something - * callable. There can be multiple signatures but only one - * active and only one active parameter. - */ - declare export class SignatureHelp { - - /** - * One or more signatures. - */ - signatures: SignatureInformation[]; - - /** - * The active signature. - */ - activeSignature: number; - - /** - * The active parameter of the active signature. - */ - activeParameter: number; - } - - /** - * The signature help provider interface defines the contract between extensions and - * the [parameter hints](https://code.visualstudio.com/docs/editor/editingevolved#_parameter-hints)-feature. - */ - declare export interface SignatureHelpProvider { - - /** - * Provide help for the signature at the given position and document. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param token A cancellation token. - * @return Signature help or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined` or `null`. - */ - provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken): SignatureHelp | Thenable; - } - - /** - * Completion item kinds. - */ - declare export type CompletionItemKindType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 - | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17; - declare export var CompletionItemKind: { - Text: 0, - Method: 1, - Function: 2, - Constructor: 3, - Field: 4, - Variable: 5, - Class: 6, - Interface: 7, - Module: 8, - Property: 9, - Unit: 10, - Value: 11, - Enum: 12, - Keyword: 13, - Snippet: 14, - Color: 15, - File: 16, - Reference: 17, - } - - /** - * A completion item represents a text snippet that is - * proposed to complete text that is being typed. - * - * @see [CompletionItemProvider.provideCompletionItems](#CompletionItemProvider.provideCompletionItems) - * @see [CompletionItemProvider.resolveCompletionItem](#CompletionItemProvider.resolveCompletionItem) - */ - declare export class CompletionItem { - - /** - * The label of this completion item. By default - * this is also the text that is inserted when selecting - * this completion. - */ - label: string; - - /** - * The kind of this completion item. Based on the kind - * an icon is chosen by the editor. - */ - kind: CompletionItemKindType; - - /** - * A human-readable string with additional information - * about this item, like type or symbol information. - */ - detail: string; - - /** - * A human-readable string that represents a doc-comment. - */ - documentation: string; - - /** - * A string that should be used when comparing this item - * with other items. When `falsy` the [label](#CompletionItem.label) - * is used. - */ - sortText: string; - - /** - * A string that should be used when filtering a set of - * completion items. When `falsy` the [label](#CompletionItem.label) - * is used. - */ - filterText: string; - - /** - * A string that should be inserted in a document when selecting - * this completion. When `falsy` the [label](#CompletionItem.label) - * is used. - */ - insertText: string | SnippetString; - - /** - * An [edit](#TextEdit) which is applied to a document when selecting - * this completion. When an edit is provided the value of - * [insertText](#CompletionItem.insertText) is ignored. - * - * The [range](#Range) of the edit must be single-line and one the same - * line completions where [requested](#CompletionItemProvider.provideCompletionItems) at. - */ - textEdit: TextEdit; - - /** - * Creates a new completion item. - * - * Completion items must have at least a [label](#CompletionItem.label) which then - * will be used as insert text as well as for sorting and filtering. - * - * @param label The label of the completion. - */ - constructor(label: string): void; - } - - /** - * The completion item provider interface defines the contract between extensions and - * the [IntelliSense](https://code.visualstudio.com/docs/editor/editingevolved#_intellisense). - * - * When computing *complete* completion items is expensive, providers can optionally implement - * the `resolveCompletionItem`-function. In that case it is enough to return completion - * items with a [label](#CompletionItem.label) from the - * [provideCompletionItems](#CompletionItemProvider.provideCompletionItems)-function. Subsequently, - * when a completion item is shown in the UI and gains focus this provider is asked to resolve - * the item, like adding [doc-comment](#CompletionItem.documentation) or [details](#CompletionItem.detail). - */ - declare export interface CompletionItemProvider { - - /** - * Provide completion items for the given position and document. - * - * @param document The document in which the command was invoked. - * @param position The position at which the command was invoked. - * @param token A cancellation token. - * @return An array of completions or a thenable that resolves to such. The lack of a result can be - * signaled by returning `undefined`, `null`, an empty array. - */ - provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): CompletionItem[] | Thenable; - - /** - * Given a completion item fill in more data, like [doc-comment](#CompletionItem.documentation) - * or [details](#CompletionItem.detail). - * - * The editor will only resolve a completion item once. - * - * @param item A completion item currently active in the UI. - * @param token A cancellation token. - * @return The resolved completion item or a thenable that resolves to of such. It is OK to return the given - * `item`. When no result is returned, the given `item` will be used. - */ - resolveCompletionItem?: (item: CompletionItem, token: CancellationToken) => CompletionItem | Thenable; - } - - /** - * A tuple of two characters, like a pair of - * opening and closing brackets. - */ - declare export type CharacterPair = [string, string]; - - /** - * Describes how comments for a language work. - */ - declare export interface CommentRule { - - /** - * The line comment token, like `// this is a comment` - */ - lineComment?: string; - - /** - * The block comment character pair, like `/* block comment */` - */ - blockComment?: CharacterPair; - } - - /** - * Describes indentation rules for a language. - */ - declare export interface IndentationRule { - /** - * If a line matches this pattern, then all the lines after it should be unindendented once (until another rule matches). - */ - decreaseIndentPattern: RegExp; - /** - * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches). - */ - increaseIndentPattern: RegExp; - /** - * If a line matches this pattern, then **only the next line** after it should be indented once. - */ - indentNextLinePattern?: RegExp; - /** - * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules. - */ - unIndentedLinePattern?: RegExp; - } - - /** - * Describes what to do with the indentation when pressing Enter. - */ - declare export type IndentActionType = 0 | 1 | 2 | 3; - declare export var IndentAction: { - /** - * Insert new line and copy the previous line's indentation. - */ - None: 0, - /** - * Insert new line and indent once (relative to the previous line's indentation). - */ - Indent: 1, - /** - * Insert two new lines: - * - the first one indented which will hold the cursor - * - the second one at the same indentation level - */ - IndentOutdent: 2, - /** - * Insert new line and outdent once (relative to the previous line's indentation). - */ - Outdent: 3, - } - - /** - * Describes what to do when pressing Enter. - */ - declare export interface EnterAction { - /** - * Describe what to do with the indentation. - */ - indentAction: IndentActionType; - /** - * Describes text to be appended after the new line and after the indentation. - */ - appendText?: string; - /** - * Describes the number of characters to remove from the new line's indentation. - */ - removeText?: number; - } - - /** - * Describes a rule to be evaluated when pressing Enter. - */ - declare export interface OnEnterRule { - /** - * This rule will only execute if the text before the cursor matches this regular expression. - */ - beforeText: RegExp; - /** - * This rule will only execute if the text after the cursor matches this regular expression. - */ - afterText?: RegExp; - /** - * The action to execute. - */ - action: EnterAction; - } - - /** - * The language configuration interfaces defines the contract between extensions - * and various editor features, like automatic bracket insertion, automatic indentation etc. - */ - declare export interface LanguageConfiguration { - /** - * The language's comment settings. - */ - comments?: CommentRule; - /** - * The language's brackets. - * This configuration implicitly affects pressing Enter around these brackets. - */ - brackets?: CharacterPair[]; - /** - * The language's word definition. - * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable - * to provide a word definition that uses exclusion of known separators. - * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number): - * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g - */ - wordPattern?: RegExp; - /** - * The language's indentation settings. - */ - indentationRules?: IndentationRule; - /** - * The language's rules to be evaluated when pressing Enter. - */ - onEnterRules?: OnEnterRule[]; - - /** - * **Deprecated** Do not use. - * - * @deprecated Will be replaced by a better API soon. - */ - __electricCharacterSupport?: { - brackets: { - tokenType: string; - open: string; - close: string; - isElectric: boolean; - }[]; - docComment?: { - scope: string; - open: string; - lineStart: string; - close?: string; - }; - }; - - /** - * **Deprecated** Do not use. - * - * @deprecated Will be replaced by a better API soon. - */ - __characterPairSupport?: { - autoClosingPairs: { - open: string; - close: string; - notIn?: string[]; - }[]; - }; - } - - /** - * Represents the workspace configuration. The workspace configuration - * is always a merged view of the configuration of the current [workspace](#workspace.rootPath) - * and the installation-wide configuration. - */ - declare export interface WorkspaceConfiguration { - - /** - * Return a value from this configuration. - * - * @param section Configuration name, supports _dotted_ names. - * @param defaultValue A value should be returned when no value could be found, is `undefined`. - * @return The value `section` denotes or the default. - */ - get(section: string, defaultValue?: T): T; - - /** - * Check if this configuration has a certain value. - * - * @param section configuration name, supports _dotted_ names. - * @return `true` iff the section doesn't resolve to `undefined`. - */ - has(section: string): boolean; - - /** - * Readable dictionary that backs this configuration. - * @readonly - */ - [key: string]: any; - } - - /** - * Represents a location inside a resource, such as a line - * inside a text file. - */ - declare export class Location { - - /** - * The resource identifier of this location. - */ - uri: Uri; - - /** - * The document range of this locations. - */ - range: Range; - - /** - * Creates a new location object. - * - * @param uri The resource identifier. - * @param rangeOrPosition The range or position. Positions will be converted to an empty range. - */ - constructor(uri: Uri, rangeOrPosition: Range | Position): void; - } - - /** - * Represents the severity of diagnostics. - */ - declare export type DiagnosticSeverityType = 0 | 1 | 2 | 3; - declare export var DiagnosticSeverity: { - - /** - * Something not allowed by the rules of a language or other means. - */ - Error: 0, - - /** - * Something suspicious but allowed. - */ - Warning: 1, - - /** - * Something to inform about but not a problem. - */ - Information: 2, - - /** - * Something to hint to a better way of doing it, like proposing - * a refactoring. - */ - Hint: 3, - } - - /** - * Represents a diagnostic, such as a compiler error or warning. Diagnostic objects - * are only valid in the scope of a file. - */ - declare export class Diagnostic { - - /** - * The range to which this diagnostic applies. - */ - range: Range; - - /** - * The human-readable message. - */ - message: string; - - /** - * A human-readable string describing the source of this - * diagnostic, e.g. 'typescript' or 'super lint'. - */ - source: string; - - /** - * The severity, default is [error](#DiagnosticSeverity.Error). - */ - severity: DiagnosticSeverityType; - - /** - * A code or identifier for this diagnostics. Will not be surfaced - * to the user, but should be used for later processing, e.g. when - * providing [code actions](#CodeActionContext). - */ - code: string | number; - - /** - * Creates a new diagnostic object. - * - * @param range The range to which this diagnostic applies. - * @param message The human-readable message. - * @param severity The severity, default is [error](#DiagnosticSeverity.Error). - */ - constructor(range: Range, message: string, severity?: DiagnosticSeverityType): void; - } - - /** - * A diagnostics collection is a container that manages a set of - * [diagnostics](#Diagnostic). Diagnostics are always scopes to a - * a diagnostics collection and a resource. - * - * To get an instance of a `DiagnosticCollection` use - * [createDiagnosticCollection](#languages.createDiagnosticCollection). - */ - declare export interface DiagnosticCollection { - - /** - * The name of this diagnostic collection, for instance `typescript`. Every diagnostic - * from this collection will be associated with this name. Also, the task framework uses this - * name when defining [problem matchers](https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher). - */ - name: string; - - /** - * Assign diagnostics for given resource. Will replace - * existing diagnostics for that resource. - * - * @param uri A resource identifier. - * @param diagnostics Array of diagnostics or `undefined` - */ - set(uri: Uri, diagnostics: Diagnostic[]): void; - - /** - * Remove all diagnostics from this collection that belong - * to the provided `uri`. The same as `#set(uri, undefined)`. - * - * @param uri A resource identifier. - */ - delete(uri: Uri): void; - - /** - * Replace all entries in this collection. - * - * @param entries An array of tuples, like `[[file1, [d1, d2]], [file2, [d3, d4, d5]]]`, or `undefined`. - */ - set(entries: [Uri, Diagnostic[]][]): void; - - /** - * Remove all diagnostics from this collection. The same - * as calling `#set(undefined)`; - */ - clear(): void; - - /** - * Dispose and free associated resources. Calls - * [clear](#DiagnosticCollection.clear). - */ - dispose(): void; - } - - /** - * Denotes a column in the VS Code window. Columns are - * used to show editors side by side. - */ - declare export type ViewColumnType = 1 | 2 | 3; - declare export var ViewColumn: { - One: 1, - Two: 2, - Three: 3 - } - - /** - * An output channel is a container for readonly textual information. - * - * To get an instance of an `OutputChannel` use - * [createOutputChannel](#window.createOutputChannel). - */ - declare export interface OutputChannel { - - /** - * The human-readable name of this output channel. - * @readonly - */ - name: string; - - /** - * Append the given value to the channel. - * - * @param value A string, falsy values will not be printed. - */ - append(value: string): void; - - /** - * Append the given value and a line feed character - * to the channel. - * - * @param value A string, falsy values will be printed. - */ - appendLine(value: string): void; - - /** - * Removes all output from the channel. - */ - clear(): void; - - /** - * Reveal this channel in the UI. - * - * @param column The column in which to show the channel, default in [one](#ViewColumn.One). - */ - show(column?: ViewColumnType): void; - - /** - * Hide this channel from the UI. - */ - hide(): void; - - /** - * Dispose and free associated resources. - */ - dispose(): void; - } - - /** - * Represents the alignment of status bar items. - */ - declare export type StatusBarAlignmentType = 0 | 1; - declare export var StatusBarAlignment: { - - /** - * Aligned to the left side. - */ - Left: 0, - - /** - * Aligned to the right side. - */ - Right: 1, - } - - /** - * A status bar item is a status bar contribution that can - * show text and icons and run a command on click. - */ - declare export interface StatusBarItem { - - /** - * The alignment of this item. - * - * @readonly - */ - alignment: StatusBarAlignmentType; - - /** - * The priority of this item. Higher value means the item should - * be shown more to the left. - * - * @readonly - */ - priority: number; - - /** - * The text to show for the entry. You can embed icons in the text by leveraging the syntax: - * - * `My text $(icon-name) contains icons like $(icon'name) this one.` - * - * Where the icon-name is taken from the [octicon](https://octicons.github.com) icon set, e.g. - * `light-bulb`, `thumbsup`, `zap` etc. - */ - text: string; - - /** - * The tooltip text when you hover over this entry. - */ - tooltip: string; - - /** - * The foreground color for this entry. - */ - color: string; - - /** - * The identifier of a command to run on click. The command must be - * [known](#commands.getCommands). - */ - command: string; - - /** - * Shows the entry in the status bar. - */ - show(): void; - - /** - * Hide the entry in the status bar. - */ - hide(): void; - - /** - * Dispose and free associated resources. Call - * [hide](#StatusBarItem.hide). - */ - dispose(): void; - } - - /** - * Represents an extension. - * - * To get an instance of an `Extension` use [getExtension](#extensions.getExtension). - */ - declare export interface Extension { - - /** - * The canonical extension identifier in the form of: `publisher.name`. - * - * @readonly - */ - id: string; - - /** - * The absolute file path of the directory containing this extension. - * - * @readonly - */ - extensionPath: string; - - /** - * `true` if the extension has been activated. - * - * @readonly - */ - isActive: boolean; - - /** - * The parsed contents of the extension's package.json. - * - * @readonly - */ - packageJSON: any; - - /** - * The public API declare exported by this extension. It is an invalid action - * to access this field before this extension has been activated. - * - * @readonly - */ - exports: T; - - /** - * Activates this extension and returns its public API. - * - * @return A promise that will resolve when this extension has been activated. - */ - activate(): Thenable; - } - - /** - * An extension context is a collection of utilities private to an - * extension. - * - * An instance of an `ExtensionContext` is provided as the first - * parameter to the `activate`-call of an extension. - */ - declare export interface ExtensionContext { - - /** - * An array to which disposables can be added. When this - * extension is deactivated the disposables will be disposed. - */ - subscriptions: { dispose(): any }[]; - - /** - * A memento object that stores state in the context - * of the currently opened [workspace](#workspace.path). - */ - workspaceState: Memento; - - /** - * A memento object that stores state independent - * of the current opened [workspace](#workspace.path). - */ - globalState: Memento; - - /** - * The absolute file path of the directory containing the extension. - */ - extensionPath: string; - - /** - * Get the absolute path of a resource contained in the extension. - * - * @param relativePath A relative path to a resource contained in the extension. - * @return The absolute path of the resource. - */ - asAbsolutePath(relativePath: string): string; - } - - /** - * A memento represents a storage utility. It can store and retrieve - * values. - */ - declare export interface Memento { - - /** - * Return a value. - * - * @param key A string. - * @param defaultValue A value that should be returned when there is no - * value (`undefined`) with the given key. - * @return The stored value, `undefined`, or the defaultValue. - */ - get(key: string, defaultValue?: T): T; - - /** - * Store a value. The value must be JSON-stringifyable. - * - * @param key A string. - * @param value A value. MUST not contain cyclic references. - */ - update(key: string, value: any): Thenable; - } - - /** - * Namespace for dealing with commands. In short, a command is a function with a - * unique identifier. The function is sometimes also called _command handler_. - * - * Commands can be added to the editor using the [registerCommand](#commands.registerCommand) - * and [registerTextEditorCommand](#commands.registerTextEditorCommand) functions. Commands - * can be executed [manually](#commands.executeCommand) or from a UI gesture. Those are: - * - * * palette - Use the `commands`-section in `package.json` to make a command show in - * the [command palette](https://code.visualstudio.com/docs/editor/codebasics#_command-palette). - * * keybinding - Use the `keybindings`-section in `package.json` to enable - * [keybindings](https://code.visualstudio.com/docs/customization/keybindings#_customizing-shortcuts) - * for your extension. - * - * Commands from other extensions and from the editor itself are accessible to an extension. However, - * when invoking an editor command not all argument types are supported. - * - * This is a sample that registers a command handler and adds an entry for that command to the palette. First - * register a command handler with the identfier `extension.sayHello`. - * ```javascript - * commands.registerCommand('extension.sayHello', () => { - * window.showInformationMessage('Hello World!'); - * }); - * ``` - * Second, bind the command identfier to a title under which it will show in the palette (`package.json`). - * ```json - * { - * "contributes": { - * "commands": [{ - * "command": "extension.sayHello", - * "title": "Hello World" - * }] - * } - * ``` - */ - declare export var commands: { - - /** - * Registers a command that can be invoked via a keyboard shortcut, - * a menu item, an action, or directly. - * - * Registering a command with an existing command identifier twice - * will cause an error. - * - * @param command A unique identifier for the command. - * @param callback A command handler function. - * @param thisArg The `this` context used when invoking the handler function. - * @return Disposable which unregisters this command on disposal. - */ - registerCommand(command: string, callback: (...args: any[]) => any, thisArg?: any): Disposable; - - /** - * Registers a text editor command that can be invoked via a keyboard shortcut, - * a menu item, an action, or directly. - * - * Text editor commands are different from ordinary [commands](#commands.registerCommand) as - * they only execute when there is an active editor when the command is called. Also, the - * command handler of an editor command has access to the active editor and to an - * [edit](#TextEditorEdit)-builder. - * - * @param command A unique identifier for the command. - * @param callback A command handler function with access to an [editor](#TextEditor) and an [edit](#TextEditorEdit). - * @param thisArg The `this` context used when invoking the handler function. - * @return Disposable which unregisters this command on disposal. - */ - registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit) => void, thisArg?: any): Disposable; - - /** - * Executes the command denoted by the given command identifier. - * - * When executing an editor command not all types are allowed to - * be passed as arguments. Allowed are the primitive types `string`, `boolean`, - * `number`, `undefined`, and `null`, as well as classes defined in this API. - * There are no restrictions when executing commands that have been contributed - * by extensions. - * - * @param command Identifier of the command to execute. - * @param rest Parameters passed to the command function. - * @return A thenable that resolves to the returned value of the given command. `undefined` when - * the command handler function doesn't return anything. - */ - executeCommand(command: string, ...rest: any[]): Thenable; - - /** - * Retrieve the list of all available commands. Commands starting an underscore are - * treated as internal commands. - * - * @param filterInternal Set `true` to not see internal commands (starting with an underscore) - * @return Thenable that resolves to a list of command ids. - */ - getCommands(filterInternal?: boolean): Thenable; - } - - /** - * Namespace for dealing with the current window of the editor. That is visible - * and active editors, as well as, UI elements to show messages, selections, and - * asking for user input. - */ - declare export var window: { - - /** - * The currently active editor or undefined. The active editor is the one - * that currently has focus or, when none has focus, the one that has changed - * input most recently. - */ - activeTextEditor: TextEditor; - - /** - * The currently visible editors or an empty array. - */ - visibleTextEditors: TextEditor[]; - - /** - * An [event](#Event) which fires when the [active editor](#window.activeTextEditor) - * has changed. - */ - onDidChangeActiveTextEditor: Event; - - /** - * An [event](#Event) which fires when the selection in an editor has changed. - */ - onDidChangeTextEditorSelection: Event; - - /** - * An [event](#Event) which fires when the options of an editor have changed. - */ - onDidChangeTextEditorOptions: Event; - - /** - * Show the given document in a text editor. A [column](#ViewColumn) can be provided - * to control where the editor is being shown. Might change the [active editor](#window.activeTextEditor). - * - * @param document A text document to be shown. - * @param column A view column in which the editor should be shown. The default is the [one](#ViewColumn.One), other values - * are adjusted to be __Min(column, columnCount + 1)__. - * @return A promise that resolves to an [editor](#TextEditor). - */ - showTextDocument(document: TextDocument, column?: ViewColumnType): Thenable; - - /** - * Create a TextEditorDecorationType that can be used to add decorations to text editors. - * - * @param options Rendering options for the decoration type. - * @return A new decoration type instance. - */ - createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType; - - /** - * Show an information message to users. Optionally provide an array of items which will be presented as - * clickable buttons. - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showInformationMessage(message: string, ...items: string[]): Thenable; - - /** - * Show an information message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showInformationMessage(message: string, ...items: T[]): Thenable; - - /** - * Show a warning message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showWarningMessage(message: string, ...items: string[]): Thenable; - - /** - * Show a warning message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showWarningMessage(message: string, ...items: T[]): Thenable; - - /** - * Show an error message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showErrorMessage(message: string, ...items: string[]): Thenable; - - /** - * Show an error message. - * - * @see [showInformationMessage](#window.showInformationMessage) - * - * @param message The message to show. - * @param items A set of items that will be rendered as actions in the message. - * @return A thenable that resolves to the selected item or `undefined`. The thenable will be rejected - * when the message was dismissed. - */ - showErrorMessage(message: string, ...items: T[]): Thenable; - - /** - * Shows a selection list. - * - * @param items An array of strings, or a promise that resolves to an array of strings. - * @param options Configures the behavior of the selection list. - * @return A promise that resolves to the selection or undefined. - */ - showQuickPick(items: string[] | Thenable, options?: QuickPickOptions): Thenable; - - /** - * Shows a selection list. - * - * @param items An array of items, or a promise that resolves to an array of items. - * @param options Configures the behavior of the selection list. - * @return A promise that resolves to the selected item or undefined. - */ - showQuickPick(items: T[] | Thenable, options?: QuickPickOptions): Thenable; - - /** - * Opens an input box to ask the user for input. - * - * The returned value will be undefined if the input box was canceled (e.g. pressing ESC). Otherwise the - * returned value will be the string typed by the user or an empty string if the user did not type - * anything but dismissed the input box with OK. - * - * @param options Configures the behavior of the input box. - * @return A promise that resolves to a string the user provided or to `undefined` in case of dismissal. - */ - showInputBox(options?: InputBoxOptions): Thenable; - - /** - * Create a new [output channel](#OutputChannel) with the given name. - * - * @param name Human-readable string which will be used to represent the channel in the UI. - */ - createOutputChannel(name: string): OutputChannel; - - /** - * Set a message to the status bar. This is a short hand for the more powerful - * status bar [items](#window.createStatusBarItem). - * - * @param text The message to show, support icon subtitution as in status bar [items](#StatusBarItem.text). - * @return A disposable which hides the status bar message. - */ - setStatusBarMessage(text: string): Disposable; - - /** - * Set a message to the status bar. This is a short hand for the more powerful - * status bar [items](#window.createStatusBarItem). - * - * @param text The message to show, support icon subtitution as in status bar [items](#StatusBarItem.text). - * @param hideAfterTimeout Timeout in milliseconds after which the message will be disposed. - * @return A disposable which hides the status bar message. - */ - setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable; - - /** - * Set a message to the status bar. This is a short hand for the more powerful - * status bar [items](#window.createStatusBarItem). - * - * @param text The message to show, support icon subtitution as in status bar [items](#StatusBarItem.text). - * @param hideWhenDone Thenable on which completion (resolve or reject) the message will be disposed. - * @return A disposable which hides the status bar message. - */ - setStatusBarMessage(text: string, hideWhenDone: Thenable): Disposable; - - /** - * Creates a status bar [item](#StatusBarItem). - * - * @param alignment The alignment of the item. - * @param priority The priority of the item. Higher values mean the item should be shown more to the left. - * @return A new status bar item. - */ - createStatusBarItem(alignment?: StatusBarAlignmentType, priority?: number): StatusBarItem; - } - - /** - * An event describing an individual change in the text of a [document](#TextDocument). - */ - declare export interface TextDocumentContentChangeEvent { - /** - * The range that got replaced. - */ - range: Range; - /** - * The length of the range that got replaced. - */ - rangeLength: number; - /** - * The new text for the range. - */ - text: string; - } - - /** - * An event describing a transactional [document](#TextDocument) change. - */ - declare export interface TextDocumentChangeEvent { - - /** - * The affected document. - */ - document: TextDocument; - - /** - * An array of content changes. - */ - contentChanges: TextDocumentContentChangeEvent[]; - } - - /** - * Namespace for dealing with the current workspace. A workspace is the representation - * of the folder that has been opened. There is no workspace when just a file but not a - * folder has been opened. - * - * The workspace offers support for [listening](#workspace.createFileSystemWatcher) to fs - * events and for [finding](#workspace#findFiles) files. Both perform well and run _outside_ - * the editor-process so that they should be always used instead of nodejs-equivalents. - */ - declare export var workspace: { - - /** - * Creates a file system watcher. - * - * A glob pattern that filters the file events must be provided. Optionally, flags to ignore certain - * kinds of events can be provided. To stop listening to events the watcher must be disposed. - * - * @param globPattern A glob pattern that is applied to the names of created, changed, and deleted files. - * @param ignoreCreateEvents Ignore when files have been created. - * @param ignoreChangeEvents Ignore when files have been changed. - * @param ignoreDeleteEvents Ignore when files have been deleted. - * @return A new file system watcher instance. - */ - createFileSystemWatcher(globPattern: string, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher; - - /** - * The folder that is open in VS Code. `undefined` when no folder - * has been opened. - */ - rootPath: string; - - /** - * Returns a path that is relative to the workspace root. - * - * When there is no [workspace root](#workspace.rootPath) or when the path - * is not a child of that folder, the input is returned. - * - * @param pathOrUri A path or uri. When a uri is given its [fsPath](#Uri.fsPath) is used. - * @return A path relative to the root or the input. - */ - asRelativePath(pathOrUri: string | Uri): string; - - /** - * Find files in the workspace. - * - * @sample `findFiles('**∕*.js', '**∕node_modules∕**', 10)` - * @param include A glob pattern that defines the files to search for. - * @param exclude A glob pattern that defines files and folders to exclude. - * @param maxResults An upper-bound for the result. - * @return A thenable that resolves to an array of resource identifiers. - */ - findFiles(include: string, exclude: string, maxResults?: number): Thenable; - - /** - * Save all dirty files. - * - * @param includeUntitled Also save files that have been created during this session. - * @return A thenable that resolves when the files have been saved. - */ - saveAll(includeUntitled?: boolean): Thenable; - - /** - * Make changes to one or many resources as defined by the given - * [workspace edit](#WorkspaceEdit). - * - * When applying a workspace edit, the editor implements an 'all-or-nothing'-strategy, - * that means failure to load one document or make changes to one document will cause - * the edit to be rejected. - * - * @param edit A workspace edit. - * @return A thenable that resolves when the edit could be applied. - */ - applyEdit(edit: WorkspaceEdit): Thenable; - - /** - * All text documents currently known to the system. - * - * @readonly - */ - textDocuments: TextDocument[]; - - /** - * Opens the denoted document from disk. Will return early if the - * document is already open, otherwise the document is loaded and the - * [open document](#workspace.onDidOpenTextDocument)-event fires. - * The document to open is denoted by the [uri](#Uri). Two schemes are supported: - * - * file: A file on disk, will be rejected if the file does not exist or cannot be loaded, e.g. 'file:///Users/frodo/r.ini'. - * untitled: A new file that should be saved on disk, e.g. 'untitled:/Users/frodo/new.js'. The language will be derived from the file name. - * - * Uris with other schemes will make this method return a rejected promise. - * - * @param uri Identifies the resource to open. - * @return A promise that resolves to a [document](#TextDocument). - */ - openTextDocument(uri: Uri): Thenable; - - /** - * A short-hand for `openTextDocument(Uri.file(fileName))`. - * - * @see [openTextDocument](#openTextDocument) - * @param fileName A name of a file on disk. - * @return A promise that resolves to a [document](#TextDocument). - */ - openTextDocument(fileName: string): Thenable; - - /** - * An event that is emitted when a [text document](#TextDocument) is opened. - */ - onDidOpenTextDocument: Event; - - /** - * An event that is emitted when a [text document](#TextDocument) is disposed. - */ - onDidCloseTextDocument: Event; - - /** - * An event that is emitted when a [text document](#TextDocument) is changed. - */ - onDidChangeTextDocument: Event; - - /** - * An event that is emitted when a [text document](#TextDocument) is saved to disk. - */ - onDidSaveTextDocument: Event; - - /** - * Get a configuration object. - * - * When a section-identifier is provided only that part of the configuration - * is returned. Dots in the section-identifier are interpreted as child-access, - * like `{ myExt: { setting: { doIt: true }}}` and `getConfiguration('myExt.setting.doIt') === true`. - * - * - * @param section A dot-separated identifier. - * @return The full workspace configuration or a subset. - */ - getConfiguration(section?: string): WorkspaceConfiguration; - - /** - * An event that is emitted when the [configuration](#WorkspaceConfiguration) changed. - */ - onDidChangeConfiguration: Event; - } - - /** - * Namespace for participating in language-specific editor [features](https://code.visualstudio.com/docs/editor/editingevolved), - * like IntelliSense, code actions, diagnostics etc. - * - * Many programming languages exist and there is huge variety in syntaxes, semantics, and paradigms. Despite that, features - * like automatic word-completion, code navigation, or code checking have become popular across different tools for different - * programming languages. - * - * The editor provides an API that makes it simple to provide such common features by having all UI and actions already in place and - * by allowing you to participate by providing data only. For instance, to contribute a hover all you have to do is provide a function - * that can be called with a [TextDocument](#TextDocument) and a [Position](#Position) returning hover info. The rest, like tracking the - * mouse, positioning the hover, keeping the hover stable etc. is taken care of by the editor. - * - * ```javascript - * languages.registerHoverProvider('javascript', { - * provideHover(document, position, token) { - * return new Hover('I am a hover!'); - * } - * }); - * ``` - * - * Registration is done using a [document selector](#DocumentSelector) which is either a language id, like `javascript` or - * a more complex [filter](#DocumentFilter) like `{ language: 'typescript', scheme: 'file' }`. Matching a document against such - * a selector will result in a [score](#languages.match) that is used to determine if and how a provider shall be used. When - * scores are equal the provider that came last wins. For features that allow full arity, like [hover](#languages.registerHoverProvider), - * the score is only checked to be `>0`, for other features, like [IntelliSense](#languages.registerCompletionItemProvider) the - * score is used for determining the order in which providers are asked to participate. - */ - declare export var languages: { - - /** - * Return the identifiers of all known languages. - * @return Promise resolving to an array of identifier strings. - */ - getLanguages(): Thenable; - - /** - * Compute the match between a document [selector](#DocumentSelector) and a document. Values - * greater than zero mean the selector matches the document. The more individual matches a selector - * and a document have, the higher the score is. These are the abstract rules given a `selector`: - * - * ``` - * (1) When selector is an array, return the maximum individual result. - * (2) When selector is a string match that against the [languageId](#TextDocument.languageId). - * (2.1) When both are equal score is `10`, - * (2.2) When the selector is `*` score is `5`, - * (2.3) Else score is `0`. - * (3) When selector is a [filter](#DocumentFilter) every property must score higher `0`. Iff the score is the sum of the following: - * (3.1) When [language](#DocumentFilter.language) is set apply rules from #2, when `0` the total score is `0`. - * (3.2) When [scheme](#Document.scheme) is set and equals the [uri](#TextDocument.uri)-scheme add `10` to the score, else the total score is `0`. - * (3.3) When [pattern](#Document.pattern) is set - * (3.3.1) pattern eqauls the [uri](#TextDocument.uri)-fsPath add `10` to the score, - * (3.3.1) if the pattern matches as glob-pattern add `5` to the score, - * (3.3.1) the total score is `0` - * ``` - * - * @param selector A document selector. - * @param document A text document. - * @return A number `>0` when the selector matches and `0` when the selector does not match. - */ - match(selector: DocumentSelector, document: TextDocument): number; - - /** - * Create a diagnostics collection. - * - * @param name The [name](#DiagnosticCollection.name) of the collection. - * @return A new diagnostic collection. - */ - createDiagnosticCollection(name?: string): DiagnosticCollection; - - /** - * Register a completion provider. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and groups of equal score are sequentially asked for - * completion items. The process stops when one or many providers of a group return a - * result. A failing provider (rejected promise or exception) will not fail the whole - * operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A completion provider. - * @param triggerCharacters Trigger completion when the user types one of the characters, like `.` or `:`. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider, ...triggerCharacters: string[]): Disposable; - - /** - * Register a code action provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A code action provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider): Disposable; - - /** - * Register a code lens provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A code lens provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider): Disposable; - - /** - * Register a definition provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A definition provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable; - - /** - * Register a hover provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A hover provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable; - - /** - * Register a document highlight provider. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and groups sequentially asked for document highlights. - * The process stops when a provider returns a `non-falsy` or `non-failure` result. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A document highlight provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable; - - /** - * Register a document symbol provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A document symbol provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider): Disposable; - - /** - * Register a workspace symbol provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param provider A workspace symbol provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider): Disposable; - - /** - * Register a reference provider. - * - * Multiple providers can be registered for a language. In that case providers are asked in - * parallel and the results are merged. A failing provider (rejected promise or exception) will - * not cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A reference provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable; - - /** - * Register a reference provider. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the result of best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A rename provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable; - - /** - * Register a formatting provider for a document. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the result of best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A document formatting edit provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable; - - /** - * Register a formatting provider for a document range. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the result of best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A document range formatting edit provider. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable; - - /** - * Register a formatting provider that works on type. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the result of best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider An on type formatting edit provider. - * @param firstTriggerCharacter A character on which formatting should be triggered, like `}`. - * @param moreTriggerCharacter More trigger characters. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable; - - /** - * Register a signature help provider. - * - * Multiple providers can be registered for a language. In that case providers are sorted - * by their [score](#languages.match) and the result of best-matching provider is used. Failure - * of the selected provider will cause a failure of the whole operation. - * - * @param selector A selector that defines the documents this provider is applicable to. - * @param provider A signature help provider. - * @param triggerCharacters Trigger signature help when the user types one of the characters, like `,` or `(`. - * @return A [disposable](#Disposable) that unregisters this provider when being disposed. - */ - registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; - - /** - * Set a [language configuration](#LanguageConfiguration) for a language. - * - * @param language A language identifier like `typescript`. - * @param configuration Language configuration. - * @return A [disposable](#Disposable) that unsets this configuration. - */ - setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable; - } - - /** - * Namespace for dealing with installed extensions. Extensions are represented - * by an [extension](#Extension)-interface which allows to reflect on them. - * - * Extension writers can provide APIs to other extensions by returning their API public - * surface from the `activate`-call. - * - * ```javascript - * declare export function activate(context: vscode.ExtensionContext) { - * - * let api = { - * sum(a, b) { - * return a + b; - * }, - * mul(a, b) { - * return a * b; - * } - * }; - * - * // 'declare export' public api-surface - * return api; - * } - * ``` - * When depending on the API of another extension add an `extensionDependency`-entry - * to `package.json`, and use the [getExtension](#extensions.getExtension)-function - * and the [declare exports](#Extension.declare exports)-property, like below: - * - * ```javascript - * let mathExt = extensions.getExtension('genius.math'); - * let importedApi = mathExt.declare exports; - * - * console.log(importedApi.mul(42, 1)); - * ``` - */ - declare export var extensions: { - - /** - * Get an extension by its full identifier in the form of: `publisher.name`. - * - * @param extensionId An extension identifier. - * @return An extension or `undefined`. - */ - getExtension(extensionId: string): Extension; - - /** - * Get an extension its full identifier in the form of: `publisher.name`. - * - * @param extensionId An extension identifier. - * @return An extension or `undefined`. - */ - getExtension(extensionId: string): Extension; - - /** - * All extensions currently known to the system. - */ - all: Extension[]; - } -} - -/** - * Thenable is a common denominator between ES6 promises, Q, jquery.Deferred, WinJS.Promise, - * and others. This API makes no assumption about what promise libary is being used which - * enables reusing existing code without migrating to a specific promise implementation. Still, - * we recommend the use of native promises which are available in VS Code. - */ -// TODO - starting with Flow v0.33.0, we can use $Thenable -// https://github.com/facebook/flow/pull/2291 -declare type Thenable = Promise; diff --git a/flow-typed/npm/rimraf_vx.x.x.js b/flow-typed/npm/vscode_vx.x.x.js similarity index 52% rename from flow-typed/npm/rimraf_vx.x.x.js rename to flow-typed/npm/vscode_vx.x.x.js index 0a88889..d55cfbc 100644 --- a/flow-typed/npm/rimraf_vx.x.x.js +++ b/flow-typed/npm/vscode_vx.x.x.js @@ -1,19 +1,19 @@ -// flow-typed signature: 9db622efcbebde647b9d11e35af698a2 -// flow-typed version: <>/rimraf_v^2.5.4/flow_v0.33.0 +// flow-typed signature: 08f318531dd88388fb45a65144aa2aa6 +// flow-typed version: <>/vscode_v^1.1.21/flow_v0.75.0 /** * This is an autogenerated libdef stub for: * - * 'rimraf' + * 'vscode' * * Fill this stub out by replacing all the `any` types. * - * Once filled out, we encourage you to share your work with the - * community by sending a pull request to: + * Once filled out, we encourage you to share your work with the + * community by sending a pull request to: * https://github.com/flowtype/flow-typed */ -declare module 'rimraf' { +declare module 'vscode' { declare module.exports: any; } @@ -22,18 +22,18 @@ declare module 'rimraf' { * require those files directly. Feel free to delete any files that aren't * needed. */ -declare module 'rimraf/bin' { +declare module 'vscode/lib/shared' { declare module.exports: any; } -declare module 'rimraf/rimraf' { +declare module 'vscode/lib/testrunner' { declare module.exports: any; } // Filename aliases -declare module 'rimraf/bin.js' { - declare module.exports: $Exports<'rimraf/bin'>; +declare module 'vscode/lib/shared.js' { + declare module.exports: $Exports<'vscode/lib/shared'>; } -declare module 'rimraf/rimraf.js' { - declare module.exports: $Exports<'rimraf/rimraf'>; +declare module 'vscode/lib/testrunner.js' { + declare module.exports: $Exports<'vscode/lib/testrunner'>; } diff --git a/lib/flowDiagnostics.js b/lib/flowDiagnostics.js index b7c2f21..71b1f4d 100644 --- a/lib/flowDiagnostics.js +++ b/lib/flowDiagnostics.js @@ -53,7 +53,11 @@ export function setupDiagnostics(context: ExtensionContext): void { // Update diagnostics when document is edited subscriptions.push( vscode.workspace.onDidChangeTextDocument(event => { - const isDocumentActive = vscode.window.activeTextEditor.document.fileName === event.document.fileName; + const { activeTextEditor } = vscode.window; + if (!activeTextEditor) { + return; + } + const isDocumentActive = activeTextEditor.document.fileName === event.document.fileName; if (isDocumentActive && isRunOnEditEnabled() && hasFlowPragma(event.document.getText())) { debouncedUpdateDiagnostics(context, event.document); diff --git a/lib/flowLSP/features/Status/StatusFeature.js b/lib/flowLSP/features/Status/StatusFeature.js index 2f3cca9..06b7044 100644 --- a/lib/flowLSP/features/Status/StatusFeature.js +++ b/lib/flowLSP/features/Status/StatusFeature.js @@ -10,10 +10,10 @@ import StatusBarWidget from '../StatusBarWidget'; type StaticFeature = lsp.StaticFeature; export default class StatusFeature implements StaticFeature { - _client: lsp.BaseLanguageClient; + _client: lsp.LanguageClient; _widget: StatusBarWidget; - constructor(client: lsp.BaseLanguageClient, widget: StatusBarWidget) { + constructor(client: lsp.LanguageClient, widget: StatusBarWidget) { this._client = client; this._widget = widget; } @@ -23,7 +23,7 @@ export default class StatusFeature implements StaticFeature { capabilities.window.status = { dynamicRegistration: false }; } - initialize(): lsp.Disposable { + initialize(): lsp.IDisposable { const statusProvider = new StatusProvider(this._client); return new Status(statusProvider, this._widget); } diff --git a/lib/flowLSP/features/Status/StatusProvider.js b/lib/flowLSP/features/Status/StatusProvider.js index 2aea513..33e5ee5 100644 --- a/lib/flowLSP/features/Status/StatusProvider.js +++ b/lib/flowLSP/features/Status/StatusProvider.js @@ -10,6 +10,15 @@ import { convertToStatus, Defer } from './utils'; type StatusListener = (status: StatusData) => void; +const ShowStatusRequest = { + type: new lsp.RequestType< + ShowStatusParams, + MessageActionItem | null, + void, + void, + >('window/showStatus'), +}; + export default class StatusProvider { _client: lsp.LanguageClient; @@ -21,7 +30,7 @@ export default class StatusProvider { this._client = client; this._client.onReady().then(() => { this._client.onRequest( - 'window/showStatus', + ShowStatusRequest.type, this._handleShowStatusRequest, ); }); @@ -45,12 +54,24 @@ export default class StatusProvider { this._currentStatusID += 1; - const statusWithId = - status.kind !== 'red' && status.kind !== 'yellow' - ? status - : { ...status, id: String(this._currentStatusID) }; - - this._updateStatus(statusWithId); + switch (status.kind) { + case 'red': + this._updateStatus({ + kind: 'red', + ...status, + id: String(this._currentStatusID), + }); + break; + case 'yellow': + this._updateStatus({ + kind: 'yellow', + ...status, + id: String(this._currentStatusID), + }); + break; + default: + this._updateStatus(status); + } return this._statusActionDeferred.promise; } @@ -62,7 +83,8 @@ export default class StatusProvider { _handleShowStatusRequest = ( params: ShowStatusParams, - ): Promise => { + token: any, + ): Promise => { const actions = params.actions || []; const status = convertToStatus(params); if (!status) { @@ -75,7 +97,7 @@ export default class StatusProvider { } else { const chosenAction = actions.find(action => action.title === response); // invariant(chosenAction != null); - return chosenAction; + return chosenAction || null; } }); }; diff --git a/lib/flowLSP/features/Status/types.js b/lib/flowLSP/features/Status/types.js index fe01a7a..97e1080 100644 --- a/lib/flowLSP/features/Status/types.js +++ b/lib/flowLSP/features/Status/types.js @@ -36,9 +36,9 @@ export type StatusData = | {| kind: 'green', message?: string |} | {| kind: 'yellow', + id?: string, message: string, buttons: Array, - id?: string, shortMessage?: string, progress?: {| numerator: number, denominator?: number |}, |} diff --git a/lib/flowLSP/features/StatusBarWidget.js b/lib/flowLSP/features/StatusBarWidget.js index d311c87..c918648 100644 --- a/lib/flowLSP/features/StatusBarWidget.js +++ b/lib/flowLSP/features/StatusBarWidget.js @@ -29,7 +29,7 @@ type State = { export default class StatusBarWidget { _item: vscode.StatusBarItem; - _defaultColor: string; + _defaultColor: string | vscode.ThemeColor | null; _spinner = Spinner(); _spinnerTimeoutID: ?TimeoutID; diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js index c88edfe..4e26e43 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js @@ -17,7 +17,7 @@ type State = { }; export default class TypeCoverage { - _subscriptions: vscode.Disposable[] = []; + _subscriptions: Array = []; _diagnostics: vscode.DiagnosticCollection; _documentSelector: vscode.DocumentSelector; _provider: TypeCoverageProvider; @@ -103,17 +103,23 @@ export default class TypeCoverage { } _renderDiagnostics() { - const { state } = this; + const { + coverage, + showUncovered, + activeDocument, + pendingRequest, + } = this.state; + this._diagnostics.clear(); - if (!state.showUncovered || !state.activeDocument || state.pendingRequest) { + if (!showUncovered || !activeDocument || pendingRequest) { return; } - if (state.coverage && state.coverage.uncoveredRanges.length > 0) { - const diagnostics: vscode.Diagnostic[] = state.coverage.uncoveredRanges.map( + if (coverage && coverage.uncoveredRanges.length > 0) { + const diagnostics: vscode.Diagnostic[] = coverage.uncoveredRanges.map( uncoveredRangeToDiagnostic, ); - this._diagnostics.set(state.activeDocument.uri, diagnostics); + this._diagnostics.set(activeDocument.uri, diagnostics); } } diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js index eb8684f..a38fdef 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js @@ -14,13 +14,18 @@ import { } from './types'; const TypeCoverageRequest = { - type: new lsp.RequestType('textDocument/typeCoverage'), + type: new lsp.RequestType< + TypeCoverageParams, + TypeCoverageResult | void, + void, + lsp.TextDocumentRegistrationOptions, + >('textDocument/typeCoverage'), }; export default class TypeCoverageFeature extends lsp.TextDocumentFeature { _widget: StatusBarWidget; - constructor(client: lsp.BaseLanguageClient, widget: StatusBarWidget) { + constructor(client: lsp.LanguageClient, widget: StatusBarWidget) { super(client, TypeCoverageRequest.type); this._widget = widget; } @@ -29,7 +34,7 @@ export default class TypeCoverageFeature extends lsp.TextDocumentFeature { diff --git a/lib/flowLSP/features/TypeCoverage/types.js b/lib/flowLSP/features/TypeCoverage/types.js index d24330f..264f31b 100644 --- a/lib/flowLSP/features/TypeCoverage/types.js +++ b/lib/flowLSP/features/TypeCoverage/types.js @@ -14,7 +14,7 @@ export type TypeCoverageResult = { }; export type TypeCoverageParams = { - textDocument: lsp.TextDocumentIdentifier, + textDocument: lsp.ITextDocumentIdentifier, }; export interface TypeCoverageProvider { diff --git a/lib/flowLSP/ignoreFlowFrequentErrors.js b/lib/flowLSP/ignoreFlowFrequentErrors.js index 05e6a66..a0615d5 100644 --- a/lib/flowLSP/ignoreFlowFrequentErrors.js +++ b/lib/flowLSP/ignoreFlowFrequentErrors.js @@ -7,6 +7,7 @@ import * as lsp from 'vscode-languageclient'; // @HACK: couldnt find any clean way to implement this export default function ignoreFlowFrequentErrors(client: lsp.LanguageClient) { const origLogFailedRequest = client.logFailedRequest; + // $FlowDisableNextLine: hack to wrap failedRequest client.logFailedRequest = (type: lsp.RPCMessageType, error: any) => { if (notEnoughTypeInformationError(type, error)) { return; diff --git a/lib/flowLSP/index.js b/lib/flowLSP/index.js index 5ae96bb..8a4b537 100644 --- a/lib/flowLSP/index.js +++ b/lib/flowLSP/index.js @@ -1,6 +1,4 @@ /* @flow */ -'use strict'; - import * as path from 'path'; import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient'; @@ -69,7 +67,6 @@ export async function activate(context: vscode.ExtensionContext) { // Create the language client and start the client. const client = new lsp.LanguageClient('flow', 'Flow', serverOptions, clientOptions); - const defaultErrorHandler: lsp.ErrorHandler = client.createDefaultErrorHandler(); const statusBarWidget = new StatusBarWidget(); context.subscriptions.push(statusBarWidget); diff --git a/lib/flowLSP/middlewares/hover.js b/lib/flowLSP/middlewares/hover.js index 24d164a..d9cd7c6 100644 --- a/lib/flowLSP/middlewares/hover.js +++ b/lib/flowLSP/middlewares/hover.js @@ -1,6 +1,5 @@ /* @flow */ // HoverMiddleware: format hover contents field data - import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient'; import { format } from '../../utils'; @@ -10,7 +9,7 @@ export default function provideHover( position: vscode.Position, token: vscode.CancellationToken, next: lsp.ProvideHoverSignature, -) { +): Promise { return Promise.resolve(next(document, position, token)).then(value => { if (!value) { return value; diff --git a/package.json b/package.json index b36f9e6..59f4ff8 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "dequeue": "^1.0.5", "elegant-spinner": "^1.0.1", "event-kit": "^2.0.0", - "flow-bin": "^0.68.0", + "flow-bin": "^0.75.0", "fs-plus": "^2.8.2", "fuzzaldrin": "^2.1.0", "lodash.debounce": "^4.0.8", @@ -135,7 +135,7 @@ "@babel/plugin-proposal-class-properties": "^7.2.1", "@babel/preset-env": "^7.2.0", "@babel/preset-flow": "^7.0.0", - "vscode": "0.11.x" + "vscode": "^1.1.21" }, "icon": "flow-logo.png", "repository": { diff --git a/yarn.lock b/yarn.lock index 8f38e75..0239909 100644 --- a/yarn.lock +++ b/yarn.lock @@ -646,33 +646,34 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" +ajv@^6.5.5: + version "6.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61" + integrity sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww== dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" -ansi-regex@^0.2.0, ansi-regex@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-styles@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -680,6 +681,11 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -688,6 +694,13 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" @@ -699,11 +712,13 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= dependencies: arr-flatten "^1.0.1" + array-slice "^0.2.3" arr-diff@^4.0.0: version "4.0.0" @@ -719,6 +734,11 @@ arr-flatten@^1.1.0: resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -732,10 +752,6 @@ array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" @@ -744,20 +760,21 @@ array-reduce@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1, array-uniq@^1.0.2: +array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -775,10 +792,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -801,13 +814,15 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== balanced-match@^0.4.1: version "0.4.2" @@ -832,10 +847,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - binary-extensions@^1.0.0: version "1.8.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" @@ -846,12 +857,6 @@ block-stream@*: dependencies: inherits "~2.0.0" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - brace-expansion@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" @@ -859,14 +864,6 @@ brace-expansion@^1.1.7: balanced-match "^0.4.1" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -883,6 +880,11 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8= + browserslist@^4.3.4: version "4.3.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.5.tgz#1a917678acc07b55606748ea1adf9846ea8920f7" @@ -896,13 +898,19 @@ buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" -buffer-shims@~1.0.0: +buffer-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= -builtin-modules@^1.0.0: +buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" cache-base@^1.0.1: version "1.0.1" @@ -919,50 +927,15 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - caniuse-lite@^1.0.30000912: version "1.0.30000916" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000916.tgz#3428d3f529f0a7b2bfaaec65e796037bdd433aab" integrity sha512-D6J9jloPm2MPkg0PXcODLMQAJKkeixKO9xhqTUMvtd44MtTYMyyDXPQ2Lk9IgBq5FH0frwiPa/N/w8ncQf7kIQ== -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -chalk@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" - dependencies: - ansi-styles "^1.1.0" - escape-string-regexp "^1.0.0" - has-ansi "^0.1.0" - strip-ansi "^0.3.0" - supports-color "^0.2.0" - -chalk@^1.0.0, chalk@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" @@ -1011,7 +984,7 @@ clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" -clone-stats@^0.0.1, clone-stats@~0.0.1: +clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -1027,6 +1000,11 @@ clone@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + cloneable-readable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" @@ -1035,10 +1013,6 @@ cloneable-readable@^1.0.0: process-nextick-args "^1.0.6" through2 "^2.0.1" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1063,21 +1037,19 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - -commander@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@^2.8.1, commander@^2.9.0: +commander@^2.8.1: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" dependencies: @@ -1096,10 +1068,17 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -convert-source-map@^1.1.0, convert-source-map@^1.1.1: +convert-source-map@^1.1.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" +convert-source-map@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -1116,40 +1095,18 @@ cross-spawn@^4.0.0: lru-cache "^4.0.1" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" -dateformat@^1.0.7-1.2.3: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -dateformat@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" - -debug@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: - ms "0.7.1" + ms "2.0.0" debug@^2.1.2, debug@^2.3.3: version "2.6.9" @@ -1171,10 +1128,6 @@ debug@^4.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -1191,6 +1144,13 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1230,25 +1190,21 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -diff@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww== duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" -duplexify@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" +duplexify@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== dependencies: - end-of-stream "1.0.0" + end-of-stream "^1.0.0" inherits "^2.0.1" readable-stream "^2.0.0" stream-shift "^1.0.0" @@ -1268,23 +1224,14 @@ elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" -end-of-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" - dependencies: - once "~1.3.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: - is-arrayish "^0.2.1" - -escape-string-regexp@1.0.2, escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" + once "^1.4.0" -escape-string-regexp@^1.0.5: +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1297,7 +1244,7 @@ event-kit@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/event-kit/-/event-kit-2.3.0.tgz#459ba0646d4b7dbca5d9bf2b3c4e2d0103e85e15" -event-stream@^3.3.1, event-stream@~3.3.4: +event-stream@3.3.4, event-stream@~3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" dependencies: @@ -1309,24 +1256,6 @@ event-stream@^3.3.1, event-stream@~3.3.4: stream-combiner "~0.0.4" through "~2.3.1" -event-stream@~3.1.5: - version "3.1.7" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.1.7.tgz#b4c540012d0fe1498420f3d8946008db6393c37a" - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.2" - stream-combiner "~0.0.4" - through "~2.3.1" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1340,11 +1269,12 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= dependencies: - fill-range "^2.1.0" + kind-of "^1.1.0" extend-shallow@^2.0.1: version "2.0.1" @@ -1360,15 +1290,14 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0: +extend@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^2.0.4: version "2.0.4" @@ -1388,12 +1317,15 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -fancy-log@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" - dependencies: - chalk "^1.1.1" - time-stamp "^1.0.0" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fd-slicer@~1.0.1: version "1.0.1" @@ -1401,20 +1333,6 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1425,42 +1343,35 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -first-chunk-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" +flow-bin@^0.75.0: + version "0.75.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.75.0.tgz#b96d1ee99d3b446a3226be66b4013224ce9df260" + integrity sha1-uW0e6Z07RGoyJr5mtAEyJM6d8mA= -flow-bin@^0.68.0: - version "0.68.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.68.0.tgz#86c2d14857d306eb2e85e274f2eebf543564f623" +flush-write-stream@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.5" + combined-stream "^1.0.6" mime-types "^2.1.12" fragment-cache@^0.2.1: @@ -1481,6 +1392,14 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs-plus@^2.8.2: version "2.10.1" resolved "https://registry.yarnpkg.com/fs-plus/-/fs-plus-2.10.1.tgz#3204781d7840611e6364e7b6fb058c96327c5aa5" @@ -1507,15 +1426,21 @@ fsevents@^1.2.2: nan "^2.9.2" node-pre-gyp "^0.10.0" -fstream@~0.1.28: - version "0.1.31" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-0.1.31.tgz#7337f058fbbbbefa8c9f561a28cab0849202c988" +fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: - graceful-fs "~3.0.2" + graceful-fs "^4.1.2" inherits "~2.0.0" - mkdirp "0.5" + mkdirp ">=0.5 0" rimraf "2" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + fuzzaldrin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fuzzaldrin/-/fuzzaldrin-2.1.0.tgz#90204c3e2fdaa6941bb28d16645d418063a90e9b" @@ -1533,20 +1458,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1558,20 +1469,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.0.0, glob-parent@^3.1.0: +glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= @@ -1579,33 +1477,31 @@ glob-parent@^3.0.0, glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-stream@^5.3.2: - version "5.3.5" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= dependencies: extend "^3.0.0" - glob "^5.0.3" - glob-parent "^3.0.0" - micromatch "^2.3.7" - ordered-read-streams "^0.3.0" - through2 "^0.6.0" - to-absolute-glob "^0.1.1" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - dependencies: - inherits "2" - minimatch "0.3" - -glob@^5.0.15, glob@^5.0.3: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: + fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "2 || 3" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -1620,7 +1516,7 @@ glob@^7.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.5: +glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -1637,193 +1533,112 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== -glogg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" - dependencies: - sparkles "^1.0.0" - graceful-fs@^4.0.0, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@^4.1.11: +graceful-fs@^4.1.11, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graceful-fs@~3.0.2: - version "3.0.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" - dependencies: - natives "^1.1.0" - "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== -gulp-chmod@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/gulp-chmod/-/gulp-chmod-1.3.0.tgz#8bb6e8c11895dcbf9b42520c874347a5022bcb0d" +gulp-chmod@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-chmod/-/gulp-chmod-2.0.0.tgz#00c390b928a0799b251accf631aa09e01cc6299c" + integrity sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw= dependencies: deep-assign "^1.0.0" stat-mode "^0.2.0" through2 "^2.0.0" -gulp-filter@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-4.0.0.tgz#395f58a256c559cdb9e0d157f1caaf5248a38dcb" +gulp-filter@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-5.1.0.tgz#a05e11affb07cf7dcf41a7de1cb7b63ac3783e73" + integrity sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM= dependencies: - gulp-util "^3.0.6" multimatch "^2.0.0" + plugin-error "^0.1.2" streamfilter "^1.0.5" -gulp-gunzip@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/gulp-gunzip/-/gulp-gunzip-0.0.3.tgz#7b6e07b0f58fd3d42515c48ead5a63df0572f62f" +gulp-gunzip@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz#15b741145e83a9c6f50886241b57cc5871f151a9" + integrity sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak= dependencies: through2 "~0.6.5" vinyl "~0.4.6" -gulp-remote-src@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/gulp-remote-src/-/gulp-remote-src-0.4.2.tgz#ceb3770e3444328d61386fbaaab200bc11cd98a8" - dependencies: - event-stream "~3.3.4" - node.extend "~1.1.2" - request "~2.79.0" - through2 "~2.0.3" - vinyl "~2.0.1" - -gulp-sourcemaps@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz#b86ff349d801ceb56e1d9e7dc7bbcb4b7dee600c" - dependencies: - convert-source-map "^1.1.1" - graceful-fs "^4.1.2" - strip-bom "^2.0.0" - through2 "^2.0.0" - vinyl "^1.0.0" - -gulp-symdest@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/gulp-symdest/-/gulp-symdest-1.1.0.tgz#c165320732d192ce56fd94271ffa123234bf2ae0" +gulp-remote-src-vscode@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.1.tgz#a528509457affff3ff30cc73a4a97afe31c41c1d" + integrity sha512-mw4OGjtC/jlCWJFhbcAlel4YPvccChlpsl3JceNiB/DLJi24/UPxXt53/N26lgI3dknEqd4ErfdHrO8sJ5bATQ== dependencies: - event-stream "^3.3.1" - mkdirp "^0.5.1" - queue "^3.1.0" - vinyl-fs "^2.4.3" + event-stream "3.3.4" + node.extend "^1.1.2" + request "^2.79.0" + through2 "^2.0.3" + vinyl "^2.0.1" -gulp-untar@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/gulp-untar/-/gulp-untar-0.0.4.tgz#635cc7d67d3d48aec0dbc69822623fc7c33f7d37" +gulp-untar@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/gulp-untar/-/gulp-untar-0.0.7.tgz#92067d79e0fa1e92d60562a100233a44a5aa08b4" + integrity sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw== dependencies: - event-stream "~3.1.5" - gulp-util "~2.2.14" - streamifier "~0.1.0" - tar "~0.1.19" - through2 "~0.4.1" + event-stream "~3.3.4" + streamifier "~0.1.1" + tar "^2.2.1" + through2 "~2.0.3" + vinyl "^1.2.0" -gulp-util@^3.0.6: - version "3.0.8" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^2.0.0" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulp-util@~2.2.14: - version "2.2.20" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" - dependencies: - chalk "^0.5.0" - dateformat "^1.0.7-1.2.3" - lodash._reinterpolate "^2.4.1" - lodash.template "^2.4.1" - minimist "^0.2.0" - multipipe "^0.1.0" - through2 "^0.5.0" - vinyl "^0.2.1" - -gulp-vinyl-zip@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/gulp-vinyl-zip/-/gulp-vinyl-zip-1.4.0.tgz#56382f2ccb57231bb0478c78737ccd572973bee1" - dependencies: - event-stream "^3.3.1" - queue "^3.0.10" - through2 "^0.6.3" - vinyl "^0.4.6" - vinyl-fs "^2.0.0" +gulp-vinyl-zip@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz#b79cc1a0e2c3b158ffee294590ade1e9caaf5e7b" + integrity sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q== + dependencies: + event-stream "3.3.4" + queue "^4.2.1" + through2 "^2.0.3" + vinyl "^2.0.2" + vinyl-fs "^3.0.3" yauzl "^2.2.1" yazl "^2.2.1" -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - dependencies: - glogg "^1.0.0" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -has-ansi@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ansi-regex "^0.2.0" + ajv "^6.5.5" + har-schema "^2.0.0" -has-ansi@^2.0.0: +has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0: version "2.0.1" @@ -1860,28 +1675,24 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + function-bind "^1.1.1" -hosted-git-info@^2.1.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" - -http-signature@~1.1.0: +he@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: - assert-plus "^0.2.0" + assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" @@ -1899,12 +1710,6 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1912,7 +1717,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1927,6 +1732,14 @@ invariant@^2.2.2: dependencies: loose-envify "^1.0.0" +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -1941,10 +1754,6 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -1955,12 +1764,6 @@ is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1993,16 +1796,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2014,32 +1807,16 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" dependencies: number-is-nan "^1.0.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2053,20 +1830,10 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= is-number@^3.0.0: version "3.0.0" @@ -2091,42 +1858,43 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-utf8@^0.2.0: +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-valid-glob@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= -is-windows@^1.0.2: +is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" +is@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79" + integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg== isarray@0.0.1: version "0.0.1" @@ -2155,13 +1923,6 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -jade@0.26.3: - version "0.26.3" - resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" - dependencies: - commander "0.6.1" - mkdirp "0.3.0" - jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" @@ -2195,11 +1956,16 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -2220,10 +1986,6 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - jsprim@^1.2.2: version "1.4.0" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" @@ -2233,235 +1995,57 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -kind-of@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" - dependencies: - is-buffer "^1.1.5" - -kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - -load-json-file@^1.0.0: +kind-of@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._escapehtmlchar@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" - dependencies: - lodash._htmlescapes "~2.4.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= -lodash._escapestringchar@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz#ecfe22618a2ade50bfeea43937e51df66f0edb72" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._htmlescapes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz#32d14bf0844b6de6f8b62a051b4f67c228b624cb" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._isnative@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" - -lodash._objecttypes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^2.4.1, lodash._reinterpolate@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz#4f1227aa5a8711fc632f5b07a1f4607aab8b3222" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._reunescapedhtml@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz#747c4fc40103eb3bb8a0976e571f7a2659e93ba7" - dependencies: - lodash._htmlescapes "~2.4.1" - lodash.keys "~2.4.1" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash._shimkeys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" - dependencies: - lodash._objecttypes "~2.4.1" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.defaults@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" - dependencies: - lodash._objecttypes "~2.4.1" - lodash.keys "~2.4.1" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.escape@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz#2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4" - dependencies: - lodash._escapehtmlchar "~2.4.1" - lodash._reunescapedhtml "~2.4.1" - lodash.keys "~2.4.1" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.isequal@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - -lodash.isobject@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" +kind-of@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" dependencies: - lodash._objecttypes "~2.4.1" + is-buffer "^1.1.5" -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" +kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" + is-buffer "^1.1.5" -lodash.keys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: - lodash._isnative "~2.4.1" - lodash._shimkeys "~2.4.1" - lodash.isobject "~2.4.1" + is-buffer "^1.1.5" -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -lodash.template@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz#9e611007edf629129a974ab3c48b817b3e1cf20d" - dependencies: - lodash._escapestringchar "~2.4.1" - lodash._reinterpolate "~2.4.1" - lodash.defaults "~2.4.1" - lodash.escape "~2.4.1" - lodash.keys "~2.4.1" - lodash.templatesettings "~2.4.1" - lodash.values "~2.4.1" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -lodash.templatesettings@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz#ea76c75d11eb86d4dbe89a83893bb861929ac699" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" dependencies: - lodash._reinterpolate "~2.4.1" - lodash.escape "~2.4.1" + readable-stream "^2.0.5" -lodash.values@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= dependencies: - lodash.keys "~2.4.1" + flush-write-stream "^1.0.2" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" lodash@^4.17.10: version "4.17.11" @@ -2481,17 +2065,6 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - lru-cache@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -2504,10 +2077,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" @@ -2519,45 +2088,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-stream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" - -micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -2581,20 +2111,25 @@ mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" -mime-types@^2.1.12, mime-types@~2.1.7: +mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== + +mime-types@^2.1.12: version "2.1.15" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" dependencies: mime-db "~1.27.0" -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" +mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== dependencies: - lru-cache "2" - sigmund "~1.0.0" + mime-db "~1.37.0" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2604,11 +2139,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" - -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -2635,34 +2166,27 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - -mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -mocha@^2.3.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" - dependencies: - commander "2.3.0" - debug "2.2.0" - diff "1.4.0" - escape-string-regexp "1.0.2" - glob "3.2.11" - growl "1.9.2" - jade "0.26.3" +mocha@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" + integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA== + dependencies: + browser-stdout "1.3.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" mkdirp "0.5.1" - supports-color "1.2.0" - to-iso-string "0.0.2" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + supports-color "4.4.0" ms@0.7.3: version "0.7.3" @@ -2687,12 +2211,6 @@ multimatch@^2.0.0: arrify "^1.0.0" minimatch "^3.0.0" -multipipe@^0.1.0, multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - nan@^2.9.2: version "2.11.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" @@ -2715,10 +2233,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -natives@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" - needle@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" @@ -2751,11 +2265,13 @@ node-releases@^1.0.5: dependencies: semver "^5.3.0" -node.extend@~1.1.2: - version "1.1.6" - resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.6.tgz#a7b882c82d6c93a4863a5504bd5de8ec86258b96" +node.extend@^1.1.2: + version "1.1.8" + resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz#0aab3e63789f4e6d68b42bc00073ad1881243cf0" + integrity sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA== dependencies: - is "^3.1.0" + has "^1.0.3" + is "^3.2.1" nopt@^4.0.1: version "4.0.1" @@ -2764,22 +2280,20 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" +now-and-later@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + integrity sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4= + dependencies: + once "^1.3.2" + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" @@ -2806,15 +2320,12 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2827,9 +2338,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== object-visit@^1.0.0: version "1.0.1" @@ -2838,12 +2350,15 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" object.pick@^1.3.0: version "1.3.0" @@ -2852,23 +2367,17 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - -ordered-read-streams@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= dependencies: - is-stream "^1.0.1" readable-stream "^2.0.1" os-homedir@^1.0.0: @@ -2895,21 +2404,6 @@ output-file-sync@^2.0.0: is-plain-obj "^1.1.0" mkdirp "^0.5.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -2919,12 +2413,6 @@ path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2934,14 +2422,6 @@ path-parse@^1.0.5: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -2952,33 +2432,27 @@ pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - prettier@1.15.3: version "1.15.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" @@ -2992,34 +2466,62 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +psl@^1.1.24: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -queue@^3.0.10, queue@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/queue/-/queue-3.1.0.tgz#6c49d01f009e2256788789f2bffac6b8b9990585" - dependencies: - inherits "~2.0.0" +querystringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" +queue@^4.2.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/queue/-/queue-4.5.1.tgz#6e4290a2d7e99dc75b34494431633fe5437b0dac" + integrity sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw== dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + inherits "~2.0.0" rc@^1.2.7: version "1.2.8" @@ -3031,22 +2533,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.2: +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -3067,14 +2554,18 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.0" util-deprecate "~1.0.1" -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" +readable-stream@^2.3.3, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" readdirp@^2.0.0: version "2.1.0" @@ -3085,13 +2576,6 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" @@ -3115,13 +2599,6 @@ regenerator-transform@^0.13.3: dependencies: private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -3154,6 +2631,23 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + remove-trailing-separator@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" @@ -3162,17 +2656,11 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" @@ -3181,57 +2669,43 @@ replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" -request@^2.67.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" +request@^2.79.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" + aws-sign2 "~0.7.0" + aws4 "^1.8.0" caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" + combined-stream "~1.0.6" + extend "~3.0.2" forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" tunnel-agent "^0.6.0" - uuid "^3.0.0" + uuid "^3.3.2" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" + value-or-function "^3.0.0" resolve-url@^0.2.1: version "0.2.1" @@ -3270,7 +2744,7 @@ safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" -safe-buffer@^5.1.2: +safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -3292,7 +2766,7 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: +semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3342,10 +2816,6 @@ shell-quote@^1.6.0: array-reduce "~0.0.0" jsonify "~0.0.0" -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -3385,12 +2855,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" @@ -3402,44 +2866,27 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" +source-map-support@^0.5.0: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: - source-map "0.1.32" + buffer-from "^1.0.0" + source-map "^0.6.0" source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" - dependencies: - amdefine ">=0.0.4" - source-map@^0.5.0, source-map@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -3448,12 +2895,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@0.2: - version "0.2.10" - resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" - dependencies: - through "2" - split@0.3: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -3503,9 +2944,10 @@ streamfilter@^1.0.5: dependencies: readable-stream "^2.0.2" -streamifier@~0.1.0: +streamifier@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f" + integrity sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8= string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" @@ -3525,15 +2967,12 @@ string_decoder@~1.0.0: dependencies: buffer-shims "~1.0.0" -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - ansi-regex "^0.2.1" + safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -3541,40 +2980,16 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-bom-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" - dependencies: - first-chunk-stream "^1.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ== + dependencies: + has-flag "^2.0.0" supports-color@^5.3.0: version "5.5.0" @@ -3587,6 +3002,15 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" @@ -3600,14 +3024,6 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -tar@~0.1.19: - version "0.1.20" - resolved "https://registry.yarnpkg.com/tar/-/tar-0.1.20.tgz#42940bae5b5f22c74483699126f9f3f27449cb13" - dependencies: - block-stream "*" - fstream "~0.1.28" - inherits "2" - temp@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -3622,14 +3038,7 @@ through2-filter@^2.0.0: through2 "~2.0.0" xtend "~4.0.0" -through2@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" - dependencies: - readable-stream "~1.0.17" - xtend "~3.0.0" - -through2@^0.6.0, through2@^0.6.1, through2@^0.6.3, through2@~0.6.5: +through2@^0.6.1, through2@~0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" dependencies: @@ -3643,36 +3052,31 @@ through2@^2.0.0, through2@^2.0.1, through2@~2.0.0, through2@~2.0.3: readable-stream "^2.1.5" xtend "~4.0.1" -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" + readable-stream "~2.3.6" + xtend "~4.0.1" through@2, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -time-stamp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" - -to-absolute-glob@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= dependencies: - extend-shallow "^2.0.1" + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-iso-string@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -3698,15 +3102,20 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= dependencies: - punycode "^1.4.1" + through2 "^2.0.3" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" trim-right@^1.0.1: version "1.0.1" @@ -3718,14 +3127,15 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + underscore-plus@1.x: version "1.6.6" resolved "https://registry.yarnpkg.com/underscore-plus/-/underscore-plus-1.6.6.tgz#65ecde1bdc441a35d89e650fd70dcf13ae439a7d" @@ -3789,11 +3199,26 @@ upath@^1.0.5: resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -3803,20 +3228,15 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= verror@1.3.6: version "1.3.6" @@ -3824,27 +3244,28 @@ verror@1.3.6: dependencies: extsprintf "1.0.2" -vinyl-fs@^2.0.0, vinyl-fs@^2.4.3: - version "2.4.4" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" +vinyl-fs@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== dependencies: - duplexify "^3.2.0" - glob-stream "^5.3.2" + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" graceful-fs "^4.0.0" - gulp-sourcemaps "1.6.0" - is-valid-glob "^0.3.0" + is-valid-glob "^1.0.0" lazystream "^1.0.0" - lodash.isequal "^4.0.0" - merge-stream "^1.0.0" - mkdirp "^0.5.0" - object-assign "^4.0.0" - readable-stream "^2.0.4" - strip-bom "^2.0.0" - strip-bom-stream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" through2 "^2.0.0" - through2-filter "^2.0.0" - vali-date "^1.0.0" - vinyl "^1.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" vinyl-source-stream@^1.1.0: version "1.1.0" @@ -3853,44 +3274,44 @@ vinyl-source-stream@^1.1.0: through2 "^0.6.1" vinyl "^0.4.3" -vinyl@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz#bca938209582ec5a49ad538a00fa1f125e513252" +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= dependencies: - clone-stats "~0.0.1" + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" -vinyl@^0.4.3, vinyl@^0.4.6, vinyl@~0.4.6: +vinyl@^0.4.3, vinyl@~0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" dependencies: clone "^0.2.0" clone-stats "^0.0.1" -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^1.0.0: +vinyl@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= dependencies: clone "^1.0.0" clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@~2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c" +vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.0.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== dependencies: - clone "^1.0.0" + clone "^2.1.1" clone-buffer "^1.0.0" clone-stats "^1.0.0" cloneable-readable "^1.0.0" - is-stream "^1.1.0" remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" @@ -3919,22 +3340,24 @@ vscode-languageserver-types@3.13.0: resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz#b704b024cef059f7b326611c99b9c8753c0a18b4" integrity sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA== -vscode@0.11.x: - version "0.11.18" - resolved "https://registry.yarnpkg.com/vscode/-/vscode-0.11.18.tgz#04adab8127a7c3f7b3458d1ca964851fdfa00768" - dependencies: - glob "^5.0.15" - gulp-chmod "^1.3.0" - gulp-filter "^4.0.0" - gulp-gunzip "0.0.3" - gulp-remote-src "^0.4.0" - gulp-symdest "^1.0.0" - gulp-untar "0.0.4" - gulp-vinyl-zip "^1.1.2" - mocha "^2.3.3" - request "^2.67.0" - semver "^5.1.0" - source-map-support "^0.3.2" +vscode@^1.1.21: + version "1.1.26" + resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.26.tgz#33d0feacd8ab5f78a0c4672235376c70cdea494b" + integrity sha512-z1Nf5J38gjUFbuDCbJHPN6OJ//5EG+e/yHlh6ERxj/U9B2Qc3aiHaFr38/fee/GGnxvRw/XegLMOG+UJwKi/Qg== + dependencies: + glob "^7.1.2" + gulp-chmod "^2.0.0" + gulp-filter "^5.0.1" + gulp-gunzip "1.0.0" + gulp-remote-src-vscode "^0.5.1" + gulp-untar "^0.0.7" + gulp-vinyl-zip "^2.1.2" + mocha "^4.0.1" + request "^2.88.0" + semver "^5.4.1" + source-map-support "^0.5.0" + url-parse "^1.4.3" + vinyl-fs "^3.0.3" vinyl-source-stream "^1.1.0" which@^1.2.9: @@ -3953,20 +3376,10 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - dependencies: - object-keys "~0.4.0" - -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" From 222e3c52300c7d47fe3900adaea959ba7a71f4fe Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Tue, 18 Dec 2018 00:05:25 +0530 Subject: [PATCH 09/12] feat(lsp): add version & flowconfig check --- lib/flowLSP/index.js | 88 +++++++++++++++++++++++++++++++++++++------- lib/utils/index.js | 1 + lib/utils/util.js | 17 ++++++++- 3 files changed, 91 insertions(+), 15 deletions(-) diff --git a/lib/flowLSP/index.js b/lib/flowLSP/index.js index 8a4b537..835495d 100644 --- a/lib/flowLSP/index.js +++ b/lib/flowLSP/index.js @@ -2,16 +2,22 @@ import * as path from 'path'; import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient'; +import * as fs from 'fs-plus'; import { checkNode, checkFlow, + getFlowVersion, isFlowEnabled, isRunOnEditEnabled, shouldStopFlowOnExit, - isFlowStatusEnabled + isFlowStatusEnabled, } from '../utils'; import { setupLogging } from '../flowLogging'; -import { clearWorkspaceCaches, getPathToFlow } from '../pkg/flow-base/lib/FlowHelpers'; +import { + clearWorkspaceCaches, + getPathToFlow, +} from '../pkg/flow-base/lib/FlowHelpers'; +import semver from 'semver'; import hoverMiddleware from './middlewares/hover'; import TypeCoverageFeature from './features/TypeCoverage'; @@ -21,18 +27,26 @@ import ignoreFlowFrequentErrors from './ignoreFlowFrequentErrors'; const languages = [ { language: 'javascript', scheme: 'file' }, - { language: 'javascriptreact', scheme: 'file' } + { language: 'javascriptreact', scheme: 'file' }, ]; export async function activate(context: vscode.ExtensionContext) { if (!isFlowEnabled()) { return; } - global.vscode = vscode; + global.vscode = vscode; setupLogging(context); - checkNode(); - checkFlow(); + + // only activate plugin if .flowconfig present + if (!(await checkFlowConfigExists())) { + return; + } + + // make sure flow supports lsp + if (!(await checkFlowSupportsLSP())) { + return; + } const pathToFlow = await getPathToFlow(); @@ -42,8 +56,8 @@ export async function activate(context: vscode.ExtensionContext) { 'lsp', ...['--from', 'vscode'], // auto stop flow process - shouldStopFlowOnExit() ? '--autostop' : null - ].filter(Boolean) + shouldStopFlowOnExit() ? '--autostop' : null, + ].filter(Boolean), }; // Options to control the language client @@ -51,22 +65,27 @@ export async function activate(context: vscode.ExtensionContext) { documentSelector: languages, uriConverters: { code2Protocol: uri => uri.toString(true), // this disables URL-encoding for file URLs - protocol2Code: value => vscode.Uri.parse(value) + protocol2Code: value => vscode.Uri.parse(value), }, outputChannel: global.flowOutputChannel, middleware: { // using middleware to format hover content - provideHover: hoverMiddleware + provideHover: hoverMiddleware, }, initializationOptions: { // [Partial 'runOnEdit' support] // flow lsp currently only support live syntax errors - liveSyntaxErrors: isRunOnEditEnabled() - } + liveSyntaxErrors: isRunOnEditEnabled(), + }, }; // Create the language client and start the client. - const client = new lsp.LanguageClient('flow', 'Flow', serverOptions, clientOptions); + const client = new lsp.LanguageClient( + 'flow', + 'Flow', + serverOptions, + clientOptions, + ); const statusBarWidget = new StatusBarWidget(); context.subscriptions.push(statusBarWidget); @@ -79,7 +98,10 @@ export async function activate(context: vscode.ExtensionContext) { vscode.workspace.onDidChangeConfiguration(config => { if (config.affectsConfiguration('flow')) { vscode.window - .showInformationMessage('Flow settings changed, reload vscode to apply changes.', 'Reload') + .showInformationMessage( + 'Flow settings changed, reload vscode to apply changes.', + 'Reload', + ) .then(selected => { if (selected === 'Reload') { vscode.commands.executeCommand('workbench.action.reloadWindow'); @@ -90,3 +112,41 @@ export async function activate(context: vscode.ExtensionContext) { context.subscriptions.push(client.start()); } + +async function checkFlowSupportsLSP(): Promise { + const version = await getFlowVersion(); + const checkVersion = '>=0.75'; + if (!semver.satisfies(version, checkVersion)) { + const msg = `Flow version ${version} doesn't support lsp mode. Please upgrade to version ${checkVersion}.`; + writeToOutputChannel('ERROR', msg); + vscode.window.showErrorMessage(msg); + return false; + } + return true; +} + +async function checkFlowConfigExists(): Promise { + return new Promise(resolve => { + const rootPath = vscode.workspace.rootPath; + // rootPath is undefined (if only file open in vscode) + if (!rootPath) { + return resolve(false); + } + + fs.exists(path.join(rootPath, '.flowconfig'), exists => { + if (!exists) { + writeToOutputChannel( + 'INFO', + `Could not find a .flowconfig in rootPath '${rootPath}'`, + ); + } + resolve(exists); + }); + }); +} + +function writeToOutputChannel(level: 'ERROR' | 'INFO', msg: string) { + global.flowOutputChannel.appendLine( + `[${level} - ${new Date().toLocaleTimeString()}] ${msg}`, + ); +} diff --git a/lib/utils/index.js b/lib/utils/index.js index ff0745b..378715c 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -2,6 +2,7 @@ export { checkFlow, checkNode, + getFlowVersion, isFlowEnabled, useLSP, isRunOnEditEnabled, diff --git a/lib/utils/util.js b/lib/utils/util.js index a25d755..6705593 100644 --- a/lib/utils/util.js +++ b/lib/utils/util.js @@ -7,7 +7,10 @@ import type {ExtensionContext} from 'vscode' import { buildSearchFlowCommand, getPathToFlow -} from "../pkg/flow-base/lib/FlowHelpers" +} from '../pkg/flow-base/lib/FlowHelpers' +import { + runCommand +} from '../pkg/commons-node/process'; const NODE_NOT_FOUND = '[Flow] Cannot find node in PATH. The simplest way to resolve it is install node globally' const FLOW_NOT_FOUND = '[Flow] Cannot find flow in PATH. Try to install it by npm install flow-bin -g' @@ -102,3 +105,15 @@ export async function checkFlow() { window.showErrorMessage(FLOW_NOT_FOUND); } } + +export async function getFlowVersion(): Promise { + const flowPath = await getPathToFlow(); + const resp = await runCommand( + flowPath, + ['version', '--json'] + ).toPromise(); + + const versionJson = JSON.parse(resp); + return versionJson.semver; +} + From a93157cc832aa446e0f6c6a8e7e01630108202e3 Mon Sep 17 00:00:00 2001 From: Mayank Agarwal Date: Tue, 18 Dec 2018 00:08:56 +0530 Subject: [PATCH 10/12] fix(coverage): fix missing coverage in some cases changes - request coverage only if connected to server - recompute coverage when server gets connected (will fix missing coverage for initial file) --- .../features/TypeCoverage/TypeCoverage.js | 27 +++++--- .../TypeCoverage/TypeCoverageFeature.js | 36 ++-------- .../TypeCoverage/TypeCoverageProvider.js | 69 +++++++++++++++++++ lib/flowLSP/features/TypeCoverage/types.js | 8 +-- 4 files changed, 96 insertions(+), 44 deletions(-) create mode 100644 lib/flowLSP/features/TypeCoverage/TypeCoverageProvider.js diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js index 4e26e43..97aff4a 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverage.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverage.js @@ -2,10 +2,10 @@ import * as vscode from 'vscode'; import { - TypeCoverageProvider, type TypeCoverageResult, type UncoveredRange, } from './types'; +import TypeCoverageProvider from './TypeCoverageProvider'; import StatusBarWidget from '../StatusBarWidget'; import { shouldShowUncoveredCode } from '../../../utils/util'; @@ -14,6 +14,7 @@ type State = { activeDocument: null | vscode.TextDocument, coverage: null | TypeCoverageResult, pendingRequest: null | Request, + isConnected: boolean, }; export default class TypeCoverage { @@ -28,6 +29,7 @@ export default class TypeCoverage { activeDocument: null, coverage: null, pendingRequest: null, + isConnected: false, }; constructor( @@ -42,19 +44,20 @@ export default class TypeCoverage { 'flow_coverage', ); + this._provider.onConnectionStatus(this._handleConnectionStatus); this._subscriptions.push( vscode.commands.registerCommand('flow.show-coverage', () => { this._setState({ showUncovered: !this.state.showUncovered }); }), vscode.workspace.onDidSaveTextDocument(document => - this._handleDocumentChange(document), + this._computeCoverage(document), ), vscode.window.onDidChangeActiveTextEditor(editor => { - this._handleDocumentChange(editor ? editor.document : null); + this._computeCoverage(editor ? editor.document : null); }), ); if (vscode.window.activeTextEditor) { - this._handleDocumentChange(vscode.window.activeTextEditor.document); + this._computeCoverage(vscode.window.activeTextEditor.document); } } @@ -66,15 +69,15 @@ export default class TypeCoverage { } render() { - this._renderStatusBar(); + this._renderCoverage(); this._renderDiagnostics(); } - _renderStatusBar() { + _renderCoverage() { const { state } = this; const { coverage } = state; - if (state.activeDocument) { + if (state.activeDocument && state.isConnected) { // computing coverage for first time if (!coverage && state.pendingRequest) { this._widget.setCoverage({ @@ -131,8 +134,16 @@ export default class TypeCoverage { this.render(); } - _handleDocumentChange(document: null | vscode.TextDocument) { + _handleConnectionStatus = (params: { isConnected: boolean }) => { + this._setState({ isConnected: params.isConnected }); + if (params.isConnected && vscode.window.activeTextEditor) { + this._computeCoverage(vscode.window.activeTextEditor.document); + } + } + + _computeCoverage(document: null | vscode.TextDocument) { if ( + !this.state.isConnected || !document || !vscode.languages.match(this._documentSelector, document) ) { diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js index a38fdef..48008e0 100644 --- a/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverageFeature.js @@ -10,17 +10,8 @@ import TypeCoverage from './TypeCoverage'; import { type TypeCoverageParams, type TypeCoverageResult, - ProvideTypeCoverageResult, } from './types'; - -const TypeCoverageRequest = { - type: new lsp.RequestType< - TypeCoverageParams, - TypeCoverageResult | void, - void, - lsp.TextDocumentRegistrationOptions, - >('textDocument/typeCoverage'), -}; +import TypeCoverageProvider, { TypeCoverageRequest } from './TypeCoverageProvider'; export default class TypeCoverageFeature extends lsp.TextDocumentFeature { _widget: StatusBarWidget; @@ -30,7 +21,10 @@ export default class TypeCoverageFeature extends lsp.TextDocumentFeature { - const params = { - textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier( - document, - ), - }; - return client.sendRequest(TypeCoverageRequest.type, params).then( - coverage => coverage, - error => { - client.logFailedRequest(TypeCoverageRequest.type, error); - return Promise.resolve(null); - }, - ); - }; - + const provider = new TypeCoverageProvider(this._client); return new TypeCoverage( options.documentSelector, - { provideTypeCoverage }, + provider, this._widget, ); } diff --git a/lib/flowLSP/features/TypeCoverage/TypeCoverageProvider.js b/lib/flowLSP/features/TypeCoverage/TypeCoverageProvider.js new file mode 100644 index 0000000..bb161ff --- /dev/null +++ b/lib/flowLSP/features/TypeCoverage/TypeCoverageProvider.js @@ -0,0 +1,69 @@ +/* @flow */ +import * as vscode from 'vscode'; +import * as lsp from 'vscode-languageclient'; +import { + type TypeCoverageResult, + type TypeCoverageParams, + type ConnectionStatusParams, +} from './types'; + +export const TypeCoverageRequest = { + type: new lsp.RequestType< + TypeCoverageParams, + TypeCoverageResult | void, + void, + lsp.TextDocumentRegistrationOptions, + >('textDocument/typeCoverage'), +}; + +const ConnectionStatusNotification = { + type: new lsp.NotificationType( + 'telemetry/connectionStatus', + ), +}; + +type ConnectionStatusListener = (params: ConnectionStatusParams) => void; + +export default class TypeCoverageProvider { + _client: lsp.LanguageClient; + _listeners: Array = []; + + constructor(client: lsp.LanguageClient) { + this._client = client; + this._client.onNotification( + ConnectionStatusNotification.type, + this._handleConnectionStatus, + ); + } + + onConnectionStatus = (listener: ConnectionStatusListener) => { + // TODO: option to unlisten + this._listeners.push(listener); + }; + + provideTypeCoverage = ( + document: vscode.TextDocument, + ): vscode.ProviderResult => { + const client = this._client; + + const params = { + textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier( + document, + ), + }; + + return client.sendRequest(TypeCoverageRequest.type, params).then( + coverage => coverage, + error => { + client.logFailedRequest(TypeCoverageRequest.type, error); + return Promise.resolve(null); + }, + ); + }; + + _handleConnectionStatus = (params: ConnectionStatusParams) => { + this._listeners.forEach(listener => { + listener(params); + }); + }; +} diff --git a/lib/flowLSP/features/TypeCoverage/types.js b/lib/flowLSP/features/TypeCoverage/types.js index 264f31b..33baa25 100644 --- a/lib/flowLSP/features/TypeCoverage/types.js +++ b/lib/flowLSP/features/TypeCoverage/types.js @@ -17,10 +17,4 @@ export type TypeCoverageParams = { textDocument: lsp.ITextDocumentIdentifier, }; -export interface TypeCoverageProvider { - provideTypeCoverage: ProvideTypeCoverageResult; -} - -export interface ProvideTypeCoverageResult { - (document: vscode.TextDocument): vscode.ProviderResult; -} +export type ConnectionStatusParams = { isConnected: boolean }; From 06a414c5823668df3744b01f2e9bad4bc164d577 Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Wed, 19 Dec 2018 00:06:13 +0000 Subject: [PATCH 11/12] Address all feedback in #295 --- .flowconfig | 2 +- lib/flowLSP/features/Status/Status.js | 1 + package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.flowconfig b/.flowconfig index 67e43f9..8bc4532 100644 --- a/.flowconfig +++ b/.flowconfig @@ -17,4 +17,4 @@ suppress_comment=.*\\$FlowIssue.* suppress_comment=\\(.\\|\n\\)*\\$FlowDisableNextLine [version] -^0.75.0 +^0.89.0 diff --git a/lib/flowLSP/features/Status/Status.js b/lib/flowLSP/features/Status/Status.js index 489fd50..9ec89ee 100644 --- a/lib/flowLSP/features/Status/Status.js +++ b/lib/flowLSP/features/Status/Status.js @@ -135,6 +135,7 @@ export default class Status { }; dispose() { + this._widget.dispose(); this._command.dispose(); } } diff --git a/package.json b/package.json index 59f4ff8..9a4109a 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "dequeue": "^1.0.5", "elegant-spinner": "^1.0.1", "event-kit": "^2.0.0", - "flow-bin": "^0.75.0", + "flow-bin": "^0.89.0", "fs-plus": "^2.8.2", "fuzzaldrin": "^2.1.0", "lodash.debounce": "^4.0.8", diff --git a/yarn.lock b/yarn.lock index 0239909..3d588f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1343,10 +1343,10 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -flow-bin@^0.75.0: - version "0.75.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.75.0.tgz#b96d1ee99d3b446a3226be66b4013224ce9df260" - integrity sha1-uW0e6Z07RGoyJr5mtAEyJM6d8mA= +flow-bin@^0.89.0: + version "0.89.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.89.0.tgz#6bd29c2af7e0f429797f820662f33749105c32fa" + integrity sha512-DkO4PsXYrl53V6G5+t5HbRMC5ajYUQej2LEGPUZ+j9okTb41Sn5j9vfxsCpXMEAslYnQoysHhYu4GUZsQX/DrQ== flush-write-stream@^1.0.2: version "1.0.3" From a31f31a566b37f58b4db9fcee294e0762995852f Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Wed, 19 Dec 2018 00:09:18 +0000 Subject: [PATCH 12/12] Convert LSP to be the default, and migrate to version 1.0 --- CHANGELOG.md | 5 +++++ package.json | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5d0adb..900e25d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ### Master +### 1.0.0 + +* Converts Flow LSP support to be default, and moves to using the flow-lsp module as the base: + - [@Mayank1791989](https://github.com/Mayank1791989) [#295](https://github.com/flowtype/flow-for-vscode/pull/295) + ### 0.8.4 * A potential fix for killing flow processes diff --git a/package.json b/package.json index 9a4109a..b48d0f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flow-for-vscode", - "version": "0.8.4", + "version": "1.0.0", "publisher": "flowtype", "description": "Flow support for VS Code", "displayName": "Flow Language Support", @@ -59,8 +59,8 @@ }, "flow.useLSP": { "type": "boolean", - "default": false, - "description": "Run Flow through Language Server Protocol [EXPERIMENTAL]." + "default": true, + "description": "Turn off to switch from the official Flow Language Server implementation to talking directly to flow." }, "flow.runOnAllFiles": { "type": "boolean",