From b86c62f21793b17be6c688bcf0dcbbf8f5209e6f Mon Sep 17 00:00:00 2001 From: joshuawilson Date: Fri, 19 Feb 2021 11:07:31 -0500 Subject: [PATCH 1/5] fix(deps): Update all dependancies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @kubernetes/client-node ^0.11.1 → ^0.14.0 fs-extra ^8.1.0 → ^9.1.0 globby ^11.0.0 → ^11.0.2 got ^10.6.0 → ^11.8.1 hasha ^5.2.0 → ^5.2.2 js-yaml ^3.13.1 → ^4.0.0 mkdirp ^1.0.3 → ^1.0.4 mocha ^7.1.0 → ^8.3.0 rxjs ^6.5.4 → ^6.6.3 semver ^7.1.3 → ^7.3.4 shelljs ^0.8.3 → ^0.8.4 validator ^12.2.0 → ^13.5.2 vscode-kubernetes-tools-api 1.0.0 → 1.3.0 vscode-test ^1.3.0 → ^1.5.1 @sinonjs/referee ^5.1.0 → ^7.0.0 @types/byline ^4.2.31 → ^4.2.32 @types/chai ^4.2.11 → ^4.2.15 @types/collections ^5.0.1 → ^5.1.0 @types/fs-extra ^8.1.0 → ^9.0.7 @types/glob ^7.1.1 → ^7.1.3 @types/got ^9.6.9 → ^9.6.11 @types/js-yaml ^3.12.2 → ^4.0.0 @types/mkdirp ^1.0.0 → ^1.0.1 @types/mocha ^7.0.2 → ^8.2.1 @types/node ^13.9.1 → ^14.14.30 @types/request ^2.48.4 → ^2.48.5 @types/semver ^7.1.0 → ^7.3.4 @types/shelljs ^0.8.6 → ^0.8.8 @types/sinon ^7.5.2 → ^9.0.10 @types/sinon-chai ^3.2.3 → ^3.2.5 @types/tmp 0.1.0 → 0.2.0 @types/validator ^12.0.1 → ^13.1.3 @types/vscode ^1.52.0 → ^1.53.0 @typescript-eslint/eslint-plugin ^2.23.0 → ^4.15.1 @typescript-eslint/parser ^2.23.0 → ^4.15.1 chai ^4.2.0 → ^4.3.0 codecov ^3.7.1 → ^3.8.1 decache ^4.5.1 → ^4.6.0 eslint ^6.8.0 → ^7.20.0 eslint-config-airbnb-base ^14.1.0 → ^14.2.1 eslint-config-prettier ^6.10.0 → ^7.2.0 eslint-import-resolver-typescript ^2.0.0 → ^2.4.0 eslint-plugin-import ^2.20.1 → ^2.22.1 eslint-plugin-json ^2.1.1 → ^2.1.2 eslint-plugin-prettier ^3.1.2 → ^3.3.1 mocha-jenkins-reporter ^0.4.2 → ^0.4.5 proxyquire ^2.1.0 → ^2.1.3 prettier ^2.0.5 → ^2.2.1 sinon ^9.0.1 → ^9.2.4 source-map-support ^0.5.16 → ^0.5.19 tmp 0.1.0 → 0.2.1 typescript ^3.8.3 → ^4.1.5 vscode-extension-tester ^3.2.2 → ^3.2.6 vscode-extension-tester-native ^3.0.0 → ^3.0.2 --- package-lock.json | 4575 ++++++++++++++++++++++----------------------- package.json | 108 +- 2 files changed, 2295 insertions(+), 2388 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa7b2525..0c6da6e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,33 +5,96 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", + "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "@kubernetes/client-node": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.11.1.tgz", - "integrity": "sha512-0A4nwErxzJiGt3WYMR6rvcQF46hFz04b6uCmW7Kuj+Cl0zwe7KKxeMiqbZDtHPOq1CcOHOIcKNWCacUKL5CdxQ==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.14.0.tgz", + "integrity": "sha512-/37JHuEUAQ5GQ4kLKBmCYvGgf5W1KZWKreKGWFYH8VvT2Hl/o0aJZasu2w0EHEfmE11JCn0X9arVmOTyVCYvww==", "requires": { "@types/js-yaml": "^3.12.1", "@types/node": "^10.12.0", "@types/request": "^2.47.1", + "@types/stream-buffers": "^3.0.3", + "@types/tar": "^4.0.3", "@types/underscore": "^1.8.9", "@types/ws": "^6.0.1", "byline": "^5.0.0", @@ -39,98 +102,158 @@ "isomorphic-ws": "^4.0.1", "js-yaml": "^3.13.1", "jsonpath-plus": "^0.19.0", - "openid-client": "2.5.0", + "openid-client": "^4.1.1", "request": "^2.88.0", "rfc4648": "^1.3.0", "shelljs": "^0.8.2", + "stream-buffers": "^3.0.2", + "tar": "^6.0.2", + "tmp-promise": "^3.0.2", "tslib": "^1.9.3", "underscore": "^1.9.1", - "ws": "^6.1.0" + "ws": "^7.3.1" }, "dependencies": { + "@types/js-yaml": { + "version": "3.12.6", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.6.tgz", + "integrity": "sha512-cK4XqrLvP17X6c0C8n4iTbT59EixqyXL3Fk8/Rsk4dF3oX4dg70gYUXrXVUUHpnsGMPNlTQMqf+TVmNPX6FmSQ==" + }, "@types/node": { - "version": "10.17.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.15.tgz", - "integrity": "sha512-daFGV9GSs6USfPgxceDA8nlSe48XrVCJfDeYm7eokxq/ye7iuOH87hKXgMtEAVLFapkczbZsx868PMDT1Y0a6A==" + "version": "10.17.53", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.53.tgz", + "integrity": "sha512-q1igVlMUU+10kzjxNlcLDH7gekuvFK1nevnp7MAyc6sqvK5siWSS37EuvKX9fM8d49SBcoP0iP9tqVHmdAjNhQ==" + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } } } }, "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" }, "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" } }, "@nut-tree/libnut": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-1.0.2.tgz", - "integrity": "sha512-XwwMYVqY4Lo6i45f5gMy3IF5V0njwxIsLqtWbn1s1sKGMAz61zP4xFytgLxSgFQSukSvoQeawtBWq/WlNvtTmQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.1.0.tgz", + "integrity": "sha512-aCSbURPPYC6hwJG9lT9JsjWwC8jj4Hpv2CoGIIDh+l4oPvIPTLvGTabOkcmEgz5zIxmUWAJ8kCZsnxsGE4B/EA==", "dev": true, "requires": { - "@nut-tree/libnut-darwin": "1.0.2", - "@nut-tree/libnut-linux": "1.0.2", - "@nut-tree/libnut-win32": "1.0.2" + "@nut-tree/libnut-darwin": "2.1.0", + "@nut-tree/libnut-linux": "2.1.0", + "@nut-tree/libnut-win32": "2.1.0" } }, "@nut-tree/libnut-darwin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-1.0.2.tgz", - "integrity": "sha512-626xDzjSjD9Ux3K7jMaxJ0kRFqsF/3yfF6JCOvEIn1od7MJdAbUBP0qkRvPdg2J8mPxhLgjAc9EfEX5Kt0loFQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.1.0.tgz", + "integrity": "sha512-gqDrieSng6wKuotx7R7SYa3Eq08+j4GNlV/4EJc+m08x2lGTUO2oyYyr30sYqGp2A+Fx8MBAZjHxJOxd9KnwkQ==", "dev": true, "requires": { - "bindings": "^1.5.0", - "cmake-js": "^5.3.2", - "node-addon-api": "^1.7.1" + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" } }, "@nut-tree/libnut-linux": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-1.0.2.tgz", - "integrity": "sha512-9dnEt0n63T0sl+nWn+Ok2ykByeVSaSEwPsiXHMbOkykE6m5pClJ5T3iNIU27/bxr8IC4zL1me/m3NAooa6HkRA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.1.0.tgz", + "integrity": "sha512-g6UoVtoR6F0aN1BcWgkX40lEZzqU06/GpT2fT5i9b4kWfgcVafnrvqrd+RhG4TPfhAB7LgypNcyEWad49R/j7g==", "dev": true, "requires": { - "bindings": "^1.5.0", - "cmake-js": "^5.3.2", - "node-addon-api": "^1.7.1" + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" } }, "@nut-tree/libnut-win32": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-1.0.2.tgz", - "integrity": "sha512-Dsg0eGqC1WYI3EpbwaNMHW/MHmdTol7RcWDumoO9krQX9J9TKk+V7kh0aauf/NXA7zpDx2WmPvqeSyraUlZcXg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.1.0.tgz", + "integrity": "sha512-LsEmC5Jx1Oe3tJ4SrB2yUSd+tI2vIl5DQV8FjscwUZYIAauWX+cMMq6gPui8BSVJbXj+ACWYnORW2O3o7dxKqA==", "dev": true, "requires": { - "bindings": "^1.5.0", - "cmake-js": "^5.3.2", - "node-addon-api": "^1.7.1" + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" } }, "@nut-tree/nut-js": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-1.3.2.tgz", - "integrity": "sha512-3ivf7SyHsrOtowrUUCvGCS4DwGVlidqkOefk/se1tX8rLnHFMs/se58aoMrfSiAW3yNGAthIRgcoBsFRDfPyZQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-1.5.0.tgz", + "integrity": "sha512-4RC9daQkn4L49BqzlfY3qpt/HM87FhF7LXqKhQ/8g1LNvIONdlaJoZOxNvw0mJO0zQt1zsZ5bIrxhjwUGlwJGg==", "dev": true, "requires": { - "@nut-tree/libnut": "1.0.2", + "@nut-tree/libnut": "2.1.0", "clipboardy": "2.0.0", - "opencv4nodejs-prebuilt": "5.3.0" + "opencv4nodejs-prebuilt": "5.3.0-2" }, "dependencies": { "clipboardy": { @@ -145,59 +268,54 @@ } } }, + "@panva/asn1.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz", + "integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==" + }, "@sindresorhus/is": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.0.tgz", - "integrity": "sha512-lXKXfypKo644k4Da4yXkPCrwcvn6SlUW2X2zFbuflKHNjf0w9htru01bo26uMhleMXsDmnZ12eJLdrAZa9MANg==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", + "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" }, "@sinonjs/commons": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", - "integrity": "sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.0.tgz", - "integrity": "sha512-atR1J/jRXvQAb47gfzSK8zavXy7BcpnYq21ALon0U99etu99vsir0trzIO3wpeLtW+LLVY6X7EkfVTbjGSH8Ww==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } }, - "@sinonjs/formatio": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-5.0.1.tgz", - "integrity": "sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^5.0.2" - } - }, "@sinonjs/referee": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/referee/-/referee-5.1.0.tgz", - "integrity": "sha512-a0w70bVMd+i0KUGzbDTv1YiE9usG9xOVOQEO+swYGSPPpQK7dpDbyb246ERsJfW4MBn2VePpSIn6NFzmFDy8sA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/referee/-/referee-7.0.0.tgz", + "integrity": "sha512-9qqUyXxxUaq9I2+4tpD71/DRvZubSCN+Os72jC4lMYmrQPLZBWCc43Zz9B6GVkp6QkgmsVOkXrk1xs63AxDOLw==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^5.0.1", "@sinonjs/samsam": "^5.0.2", "array-from": "2.1.1", - "bane": "^1.x", + "event-emitter": "^0.3.5", "lodash.includes": "^4.3.0", "lodash.isarguments": "^3.1.0", - "object-assign": "^4.1.1" + "object-assign": "^4.1.1", + "util": "^0.12.3" } }, "@sinonjs/samsam": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.0.3.tgz", - "integrity": "sha512-QucHkc2uMJ0pFGjJUDP3F9dq5dx8QIaqISl9QgwLOh6P9yv877uONPGXh/OH/0zmM3tW1JjuJltAZV2l7zU+uQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", + "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", "dev": true, "requires": { "@sinonjs/commons": "^1.6.0", @@ -222,13 +340,12 @@ "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, "@types/byline": { - "version": "4.2.31", - "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.31.tgz", - "integrity": "sha1-DmH8ucA+BH0hxEllVMcRYperYM0=", + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@types/byline/-/byline-4.2.32.tgz", + "integrity": "sha512-qtlm/J6XOO9p+Ep/ZB5+mCFEDhzWDDHWU4a1eReN7lkPZXW9rkloq2jcAhvKKmlO5tL2GSvKROb+PTsNVhBiyQ==", "dev": true, "requires": { "@types/node": "*" @@ -251,53 +368,40 @@ "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" }, "@types/chai": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.11.tgz", - "integrity": "sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.15.tgz", + "integrity": "sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ==", "dev": true }, "@types/collections": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/collections/-/collections-5.0.1.tgz", - "integrity": "sha512-4WXczg3rywC7GmVfduL9NU+YW6t3+EHCfB0BTuIug0Babj1Vs64ZYsPrRL2N52YOd9yxilpdXEbOk5KO+aWiGw==", - "dev": true - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/collections/-/collections-5.1.0.tgz", + "integrity": "sha512-4uPJ+dIGUCd4LcGm2MZINkZPG7VfvBNqeRVoNfmhktdX+KteGcf3pqJEEFltRCwnHZW1HMbeBHQUhm8aoX1lbw==", "dev": true }, "@types/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.7.tgz", + "integrity": "sha512-YGq2A6Yc3bldrLUlm17VNWOnUbnEzJ9CMgOeLFtQF3HOCN5lQBO8VyjG00a5acA5NNSM30kHVGp1trZgnVgi1Q==", "dev": true, "requires": { "@types/node": "*" } }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, "@types/got": { - "version": "9.6.9", - "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.9.tgz", - "integrity": "sha512-w+ZE+Ovp6fM+1sHwJB7RN3f3pTJHZkyABuULqbtknqezQyWadFEp5BzOXaZzRqAw2md6/d3ybxQJt+BNgpvzOg==", + "version": "9.6.11", + "resolved": "https://registry.npmjs.org/@types/got/-/got-9.6.11.tgz", + "integrity": "sha512-dr3IiDNg5TDesGyuwTrN77E1Cd7DCdmCFtEfSGqr83jMMtcwhf/SGPbN2goY4JUWQfvxwY56+e5tjfi+oXeSdA==", "dev": true, "requires": { "@types/node": "*", @@ -311,14 +415,15 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "@types/js-yaml": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.2.tgz", - "integrity": "sha512-0CFu/g4mDSNkodVwWijdlr8jH7RoplRWNgovjFLEZeT+QEbbZXjBmCe3HwaWheAlCbHwomTwzZoSedeOycABug==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==", + "dev": true }, "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/json5": { @@ -341,30 +446,38 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, + "@types/minipass": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz", + "integrity": "sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg==", + "requires": { + "@types/node": "*" + } + }, "@types/mkdirp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.0.tgz", - "integrity": "sha512-ONFY9//bCEr3DWKON3iDv/Q8LXnhaYYaNDeFSN0AtO5o4sLf9F0pstJKKKjQhXE0kJEeHs8eR6SAsROhhc2Csw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-1.0.1.tgz", + "integrity": "sha512-HkGSK7CGAXncr8Qn/0VqNtExEE+PHMWb+qlR1faHMao7ng6P3tAaoWWBMdva0gL5h4zprjIO89GJOLXsMcDm1Q==", "dev": true, "requires": { "@types/node": "*" } }, "@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.1.tgz", + "integrity": "sha512-NysN+bNqj6E0Hv4CTGWSlPzMW6vTKjDpOteycDkV4IWBsO+PU48JonrPzV9ODjiI2XrjmA05KInLgF5ivZ/YGQ==", "dev": true }, "@types/node": { - "version": "13.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.1.tgz", - "integrity": "sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ==" + "version": "14.14.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.30.tgz", + "integrity": "sha512-gUWhy8s45fQp4PqqKecsnOkdW0kt1IaKjgOIR3HPokkzTmQj9ji2wWFID5THu1MKrtO+d4s2lVrlEhXUsPXSvg==" }, "@types/request": { - "version": "2.48.4", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz", - "integrity": "sha512-W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw==", + "version": "2.48.5", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", + "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", "requires": { "@types/caseless": "*", "@types/node": "*", @@ -393,18 +506,15 @@ "dev": true }, "@types/semver": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.1.0.tgz", - "integrity": "sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==", - "dev": true, - "requires": { - "@types/node": "*" - } + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ==", + "dev": true }, "@types/shelljs": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.6.tgz", - "integrity": "sha512-svx2eQS268awlppL/P8wgDLBrsDXdKznABHJcuqXyWpSKJgE1s2clXlBvAwbO/lehTmG06NtEWJRkAk4tAgenA==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.8.tgz", + "integrity": "sha512-lD3LWdg6j8r0VRBFahJVaxoW0SIcswxKaFUrmKl33RJVeeoNYQAz4uqCJ5Z6v4oIBOsC5GozX+I5SorIKiTcQA==", "dev": true, "requires": { "@types/glob": "*", @@ -412,53 +522,79 @@ } }, "@types/sinon": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz", - "integrity": "sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg==", - "dev": true + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.10.tgz", + "integrity": "sha512-/faDC0erR06wMdybwI/uR8wEKV/E83T0k4sepIpB7gXuy2gzx2xiOjmztq6a2Y6rIGJ04D+6UU0VBmWy+4HEMA==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } }, "@types/sinon-chai": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.3.tgz", - "integrity": "sha512-TOUFS6vqS0PVL1I8NGVSNcFaNJtFoyZPXZ5zur+qlhDfOmQECZZM4H4kKgca6O8L+QceX/ymODZASfUfn+y4yQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz", + "integrity": "sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==", "dev": true, "requires": { "@types/chai": "*", "@types/sinon": "*" } }, + "@types/sinonjs__fake-timers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", + "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", + "dev": true + }, + "@types/stream-buffers": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.3.tgz", + "integrity": "sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ==", + "requires": { + "@types/node": "*" + } + }, "@types/string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/string-format/-/string-format-2.0.0.tgz", "integrity": "sha512-mMwtmgN0ureESnJ3SuMM4W9lsi4CgOxs43YxNo14SDHgzJ+OPYO3yM7nOTJTh8x5YICseBdtrySUbvxnpb+NYQ==", "dev": true }, + "@types/tar": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-4.0.4.tgz", + "integrity": "sha512-0Xv+xcmkTsOZdIF4yCnd7RkOOyfyqPaqJ7RZFKnwdxfDbkN3eAAE9sHl8zJFqBz4VhxolW9EErbjR1oyH7jK2A==", + "requires": { + "@types/minipass": "*", + "@types/node": "*" + } + }, "@types/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.0.tgz", + "integrity": "sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ==", "dev": true }, "@types/tough-cookie": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", - "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==" }, "@types/underscore": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz", - "integrity": "sha512-CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ==" + "version": "1.10.24", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.10.24.tgz", + "integrity": "sha512-T3NQD8hXNW2sRsSbLNjF/aBo18MyJlbw0lSpQHB/eZZtScPdexN4HSa8cByYwTw9Wy7KuOFr81mlDQcQQaZ79w==" }, "@types/validator": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-12.0.1.tgz", - "integrity": "sha512-l57fIANZLMe8DArz+SDb+7ATXnDm15P7u2wHBw5mb0aSMd+UuvmvhouBF2hdLgQPDMJ39sh9g2MJO4GkZ0VAdQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.1.3.tgz", + "integrity": "sha512-DaOWN1zf7j+8nHhqXhIgNmS+ltAC53NXqGxYuBhWqWgqolRhddKzfZU814lkHQSTG0IUfQxU7Cg0gb8fFWo2mA==", "dev": true }, "@types/vscode": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.52.0.tgz", - "integrity": "sha512-Kt3bvWzAvvF/WH9YEcrCICDp0Z7aHhJGhLJ1BxeyNP6yRjonWqWnAIh35/pXAjswAnWOABrYlF7SwXR9+1nnLA==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.53.0.tgz", + "integrity": "sha512-XjFWbSPOM0EKIT2XhhYm3D3cx3nn3lshMUcWNy1eqefk+oqRuBq8unVb6BYIZqXy9lQZyeUl7eaBCOZWv+LcXQ==", "dev": true }, "@types/ws": { @@ -470,73 +606,93 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz", - "integrity": "sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz", + "integrity": "sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.23.0", - "eslint-utils": "^1.4.3", + "@typescript-eslint/experimental-utils": "4.15.1", + "@typescript-eslint/scope-manager": "4.15.1", + "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", + "semver": "^7.3.2", "tsutils": "^3.17.1" } }, "@typescript-eslint/experimental-utils": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz", - "integrity": "sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz", + "integrity": "sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.23.0", - "eslint-scope": "^5.0.0" + "@typescript-eslint/scope-manager": "4.15.1", + "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/typescript-estree": "4.15.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", - "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.1.tgz", + "integrity": "sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.23.0", - "@typescript-eslint/typescript-estree": "2.23.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/scope-manager": "4.15.1", + "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/typescript-estree": "4.15.1", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz", + "integrity": "sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/visitor-keys": "4.15.1" } }, + "@typescript-eslint/types": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.1.tgz", + "integrity": "sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz", - "integrity": "sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz", + "integrity": "sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw==", "dev": true, "requires": { + "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/visitor-keys": "4.15.1", "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", + "globby": "^11.0.1", "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", + "semver": "^7.3.2", "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, + "@typescript-eslint/visitor-keys": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz", + "integrity": "sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.15.1", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==" + }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -544,32 +700,32 @@ "dev": true }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } }, "aggregate-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz", - "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "requires": { - "clean-stack": "^1.0.0", - "indent-string": "^3.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, "ajv": { @@ -587,7 +743,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "dev": true, + "optional": true }, "ansi": { "version": "0.3.1", @@ -596,29 +753,37 @@ "dev": true }, "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } } }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -645,9 +810,9 @@ "dev": true }, "arch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", - "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, "are-we-there-yet": { @@ -686,6 +851,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, "array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", @@ -693,93 +864,16 @@ "dev": true }, "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", "is-string": "^1.0.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - } } }, "array-union": { @@ -788,92 +882,14 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - } + "es-abstract": "^1.18.0-next.1" } }, "asn1": { @@ -902,9 +918,9 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -913,11 +929,6 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -926,8 +937,16 @@ "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } }, "aws-sign2": { "version": "0.7.0", @@ -964,22 +983,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "bane": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bane/-/bane-1.1.2.tgz", - "integrity": "sha1-vGQkjMgjFgx98/I4uH/mLEThB7k=", - "dev": true - }, "base64-js": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" }, - "base64url": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -991,23 +999,21 @@ "big-integer": { "version": "1.6.48", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", - "dev": true + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, "requires": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" } }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "binary-search": { "version": "1.3.6", @@ -1034,9 +1040,9 @@ } }, "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", "dev": true }, "boolbase": { @@ -1077,19 +1083,19 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" }, "dependencies": { "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true } } @@ -1131,8 +1137,7 @@ "buffer-indexof-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=", - "dev": true + "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=" }, "buffer-shims": { "version": "1.0.0", @@ -1143,8 +1148,7 @@ "buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" }, "byline": { "version": "5.0.0", @@ -1152,12 +1156,9 @@ "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" }, "cacheable-lookup": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-2.0.0.tgz", - "integrity": "sha512-s2piO6LvA7xnL1AR03wuEdSx3BZT3tIJpZ56/lcJwzO/6DTJZlTs7X3lrvPxk6d1PlDe6PrVe2TjlUIZNFglAQ==", - "requires": { - "keyv": "^4.0.0" - } + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" }, "cacheable-request": { "version": "7.0.1", @@ -1174,15 +1175,25 @@ }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { "pump": "^3.0.0" } } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -1196,9 +1207,9 @@ "dev": true }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, "caseless": { "version": "0.12.0", @@ -1206,9 +1217,9 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.0.tgz", + "integrity": "sha512-/BFd2J30EcOwmdOgXvVsmM48l0Br0nmZPlO0uOW4XKh6kpsUumRXBgPV+IlaqFaqr9cYbeoZAM1Npx0i4A+aiA==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1223,19 +1234,59 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, "requires": { "traverse": ">=0.3.0 <0.4" } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "chardet": { @@ -1251,32 +1302,46 @@ "dev": true }, "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "version": "1.0.0-rc.5", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.5.tgz", + "integrity": "sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw==", + "dev": true, + "requires": { + "cheerio-select-tmp": "^0.1.0", + "dom-serializer": "~1.2.0", + "domhandler": "^4.0.0", + "entities": "~2.1.0", + "htmlparser2": "^6.0.0", + "parse5": "^6.0.0", + "parse5-htmlparser2-tree-adapter": "^6.0.0" + } + }, + "cheerio-select-tmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz", + "integrity": "sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ==", "dev": true, "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "css-select": "^3.1.2", + "css-what": "^4.0.0", + "domelementtype": "^2.1.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.4" } }, "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.1", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "readdirp": "~3.5.0" } }, "chownr": { @@ -1286,9 +1351,9 @@ "dev": true }, "clean-stack": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", - "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-cursor": { "version": "3.1.0", @@ -1300,9 +1365,9 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "clipboardy": { @@ -1317,33 +1382,21 @@ } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^5.0.0" } } } @@ -1367,22 +1420,14 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { "mimic-response": "^1.0.0" - }, - "dependencies": { - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - } } }, "cmake-js": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-5.3.2.tgz", - "integrity": "sha512-OsRQ3ZgoV3nJ+3bZr9MEvSuhGS7xc3LgmPZ2gCXlLqF5Wxi6mUQNK70dm/2UUf4/QNBssdYWB5Y7BSRX9FFUrg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", "dev": true, "requires": { - "bluebird": "^3", "debug": "^4", "fs-extra": "^5.0.0", "is-iojs": "^1.0.1", @@ -1394,7 +1439,6 @@ "semver": "^5.0.3", "splitargs": "0", "tar": "^4", - "traceur": "0.0.x", "unzipper": "^0.8.13", "url-join": "0", "which": "^1.0.9", @@ -1424,14 +1468,11 @@ "wrap-ansi": "^2.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "fs-extra": { "version": "5.0.0", @@ -1453,6 +1494,15 @@ "number-is-nan": "^1.0.0" } }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1479,6 +1529,12 @@ "ansi-regex": "^2.0.0" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "url-join": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", @@ -1496,9 +1552,9 @@ } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { @@ -1525,22 +1581,35 @@ "dev": true }, "codecov": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.7.1.tgz", - "integrity": "sha512-JHWxyPTkMLLJn9SmKJnwAnvY09kg2Os2+Ux+GG7LwZ9g8gzDDISpIN5wAsH1UBaafA/yGcd3KofMaorE8qd6Lw==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.1.tgz", + "integrity": "sha512-Qm7ltx1pzLPsliZY81jyaQ80dcNR4/JpcX0IHCIWrHBXgseySqbdbYfkdiXd7o/xmzQpGRVCKGYeTrHUpn6Dcw==", "dev": true, "requires": { "argv": "0.0.2", "ignore-walk": "3.0.3", - "js-yaml": "3.13.1", + "js-yaml": "3.14.0", "teeny-request": "6.0.1", "urlgrey": "0.4.4" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -1548,7 +1617,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.8", @@ -1577,9 +1647,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", "dev": true }, "console-control-strings": { @@ -1619,23 +1689,34 @@ } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", + "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^4.0.0", + "domhandler": "^4.0.0", + "domutils": "^2.4.3", + "nth-check": "^2.0.0" } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", + "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", "dev": true }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1645,45 +1726,47 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" }, "dependencies": { "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "decache": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.5.1.tgz", - "integrity": "sha512-5J37nATc6FmOTLbcsr9qx7Nm28qQyg1SK4xyEHqM0IBkNhWFp0Sm+vKoWYHD8wq+OUEb9jLyaKFfzzd1A9hcoA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.0.tgz", + "integrity": "sha512-PppOuLiz+DFeaUvFXEYZjLxAkKiMYH/do/b/MxpDe/8AgKBi5GhZxridoVIbBq72GDbL36e4p0Ce2jTGUwwU+w==", "dev": true, "requires": { "callsite": "^1.0.0" } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" }, "decompress-response": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", - "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "requires": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } } }, "deep-eql": { @@ -1716,6 +1799,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -1744,9 +1828,9 @@ "dev": true }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "dir-glob": { "version": "3.0.1", @@ -1766,38 +1850,40 @@ } }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", + "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "entities": "^2.0.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz", + "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "^2.1.0" } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz", + "integrity": "sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0" } }, "duplex": { @@ -1809,16 +1895,10 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, "requires": { "readable-stream": "^2.0.2" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1836,8 +1916,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "end-of-stream": { "version": "1.4.4", @@ -1847,10 +1926,19 @@ "once": "^1.4.0" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true }, "error-ex": { @@ -1863,30 +1951,25 @@ } }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - } + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" } }, "es-to-primitive": { @@ -1900,23 +1983,48 @@ "is-symbol": "^1.0.2" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, "requires": { - "es6-promise": "^4.0.3" + "d": "^1.0.1", + "ext": "^1.1.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.8.1", @@ -1946,114 +2054,163 @@ } }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", + "levn": "^0.4.1", + "lodash": "^4.17.20", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "ms": "^2.1.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "eslint-config-airbnb-base": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", - "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, "requires": { - "confusing-browser-globals": "^1.0.9", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.2" } }, "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", + "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -2069,51 +2226,47 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } } } }, "eslint-import-resolver-typescript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.0.0.tgz", - "integrity": "sha512-bT5Frpl8UWoHBtY25vKUOMoVIMlJQOMefHLyQ4Tz3MQpIZ2N6yYKEEIHMo38bszBNUuMBW6M3+5JNYxeiGFH4w==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz", + "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==", "dev": true, "requires": { "debug": "^4.1.1", + "glob": "^7.1.6", "is-glob": "^4.0.1", - "resolve": "^1.12.0", - "tiny-glob": "^0.2.6", + "resolve": "^1.17.0", "tsconfig-paths": "^3.9.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "ms": "^2.1.1" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } } } }, "eslint-module-utils": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -2128,33 +2281,28 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, "eslint-plugin-import": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", + "array-includes": "^3.1.1", + "array.prototype.flat": "^1.2.3", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", + "eslint-import-resolver-node": "^0.3.4", + "eslint-module-utils": "^2.6.0", "has": "^1.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.0", + "object.values": "^1.1.1", "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" }, "dependencies": { "debug": { @@ -2176,67 +2324,87 @@ "isarray": "^1.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } } } }, "eslint-plugin-json": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.1.tgz", - "integrity": "sha512-Ktsab8ij33V2KFLhh4alC1FYztdmbV32DeMZYYUCZm4kKLW1s4DrleKKgtbAHSJsmshCK5QGOZtfyc2r3jCRsg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-2.1.2.tgz", + "integrity": "sha512-isM/fsUxS4wN1+nLsWoV5T4gLgBQnsql3nMTr8u+cEls1bL8rRQO5CP5GtxJxaOfbcKqnz401styw+H/P+e78Q==", "dev": true, "requires": { - "lodash": "^4.17.15", - "vscode-json-languageservice": "^3.5.1" + "lodash": "^4.17.19", + "vscode-json-languageservice": "^3.7.0" } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "esprima": { @@ -2245,21 +2413,37 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", - "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -2274,6 +2458,16 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -2294,6 +2488,23 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", + "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2348,15 +2559,16 @@ "dev": true }, "fast-glob": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz", - "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.0", "merge2": "^1.3.0", - "micromatch": "^4.0.2" + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" } }, "fast-json-stable-stringify": { @@ -2371,11 +2583,11 @@ "dev": true }, "fastq": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", - "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", + "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", "requires": { - "reusify": "^1.0.0" + "reusify": "^1.0.4" } }, "fd-slicer": { @@ -2397,12 +2609,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-uri-to-path": { @@ -2439,39 +2651,24 @@ } }, "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "requires": { - "is-buffer": "~2.0.3" - } + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "for-in": { @@ -2489,6 +2686,12 @@ "for-in": "^1.0.1" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2504,15 +2707,6 @@ "mime-types": "^2.1.12" } }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2520,13 +2714,14 @@ "dev": true }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs-minipass": { @@ -2544,16 +2739,15 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, "fstream": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -2565,17 +2759,25 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "requires": { "minimist": "^1.2.5" } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } } } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -2607,11 +2809,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } }, "get-stream": { "version": "4.1.0", @@ -2742,24 +2949,18 @@ } }, "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "requires": { "type-fest": "^0.8.1" } }, - "globalyzer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", - "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==", - "dev": true - }, "globby": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", - "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -2770,65 +2971,34 @@ }, "dependencies": { "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==" + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" } } }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, "got": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-10.6.0.tgz", - "integrity": "sha512-3LIdJNTdCFbbJc+h/EH0V5lpNpbJ6Bfwykk21lcQvQsEcrzdi/ltCyQehFHLzJ/ka0UMH4Slg0hkYvAZN9qUDg==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz", + "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==", "requires": { - "@sindresorhus/is": "^2.0.0", - "@szmarczak/http-timer": "^4.0.0", + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", "@types/cacheable-request": "^6.0.1", - "cacheable-lookup": "^2.0.0", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", "cacheable-request": "^7.0.1", - "decompress-response": "^5.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^5.0.0", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", "lowercase-keys": "^2.0.0", - "mimic-response": "^2.1.0", "p-cancelable": "^2.0.0", - "p-event": "^4.0.0", - "responselike": "^2.0.0", - "to-readable-stream": "^2.0.0", - "type-fest": "^0.10.0" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "type-fest": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.10.0.tgz", - "integrity": "sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==" - } + "responselike": "^2.0.0" } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "growl": { "version": "1.10.5", @@ -2873,6 +3043,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2880,25 +3051,14 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, "has-unicode": { "version": "2.0.1", @@ -2907,9 +3067,9 @@ "dev": true }, "hasha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", - "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "requires": { "is-stream": "^2.0.0", "type-fest": "^0.8.0" @@ -2928,36 +3088,21 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.0.tgz", + "integrity": "sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.4.4", + "entities": "^2.0.0" } }, "http-cache-semantics": { @@ -2966,12 +3111,13 @@ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "requires": { - "agent-base": "4", - "debug": "3.1.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, "http-signature": { @@ -2984,13 +3130,22 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "1.0.0-beta.5.2", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", + "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "agent-base": "6", + "debug": "4" } }, "iconv-lite": { @@ -3003,9 +3158,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "ignore": { @@ -3030,9 +3185,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3046,9 +3201,9 @@ "dev": true }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "inflight": { "version": "1.0.6", @@ -3071,39 +3226,30 @@ "dev": true }, "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, "invert-kv": { "version": "1.0.0", @@ -3111,6 +3257,15 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3126,20 +3281,31 @@ } }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true }, "is-docker": { "version": "2.1.1", @@ -3164,7 +3330,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", "dev": true }, "is-glob": { @@ -3181,6 +3352,12 @@ "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3189,12 +3366,13 @@ "is-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true }, "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" }, "is-plain-object": { "version": "2.0.4", @@ -3205,26 +3383,16 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -3237,11 +3405,25 @@ "dev": true }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, "requires": { - "has-symbols": "^1.0.0" + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -3331,6 +3513,24 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -3365,13 +3565,12 @@ } } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "jose": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-2.0.4.tgz", + "integrity": "sha512-EArN9f6aq1LT/fIGGsfghOnNXn4noD+3dG5lL/ljY3LcRjw1u9w+4ahu/4ahsN6N0kRLyyW6zqdoYk7LNx3+YQ==", "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" + "@panva/asn1.js": "^1.0.0" } }, "js-tokens": { @@ -3381,12 +3580,18 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + } } }, "jsbn": { @@ -3427,28 +3632,21 @@ "dev": true, "requires": { "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "jsonc-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", - "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "jsonpath-plus": { @@ -3468,9 +3666,9 @@ } }, "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz", + "integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==", "dev": true, "requires": { "lie": "~3.3.0", @@ -3480,15 +3678,15 @@ } }, "just-extend": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", - "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.1.tgz", + "integrity": "sha512-aWgeGFW67BP3e5181Ep1Fv2v8z//iBJfrvyTnq8wG86vEESwmonn1zPBJ0VfmT9CJq2FIT0VsETtrNFm2a+SHA==", "dev": true }, "keyv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", - "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", "requires": { "json-buffer": "3.0.1" } @@ -3500,14 +3698,6 @@ "dev": true, "requires": { "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } } }, "lazy-cache": { @@ -3577,8 +3767,7 @@ "listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" }, "load-json-file": { "version": "2.0.0", @@ -3590,14 +3779,6 @@ "parse-json": "^2.2.0", "pify": "^2.0.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } } }, "locate-path": { @@ -3608,12 +3789,21 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true }, "lodash.get": { "version": "4.4.2", @@ -3652,39 +3842,84 @@ "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "requires": { - "chalk": "^2.4.2" - } - }, - "long": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "requires": { - "tmpl": "1.0.x" - } + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } }, "markdown-it": { "version": "10.0.0", @@ -3765,9 +4000,9 @@ "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.2", @@ -3804,9 +4039,9 @@ "dev": true }, "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, "minimatch": { "version": "3.0.4", @@ -3819,8 +4054,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "2.9.0", @@ -3830,6 +4064,14 @@ "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } } }, "minizlib": { @@ -3866,9 +4108,9 @@ } }, "mkdirp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.3.tgz", - "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "mkdirp-classic": { "version": "0.5.3", @@ -3877,235 +4119,132 @@ "dev": true }, "mocha": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.0.tgz", - "integrity": "sha512-MymHK8UkU0K15Q/zX7uflZgVoRWiTjy0fXE/QjKts6mowUvGxOdPhZ2qj3b0iZdUrNZlW9LAIMFHB4IW+2b3EQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.0.tgz", + "integrity": "sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q==", "requires": { - "ansi-colors": "3.2.3", + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", + "chokidar": "3.5.1", + "debug": "4.3.1", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", + "js-yaml": "4.0.0", + "log-symbols": "4.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", + "ms": "2.1.3", + "nanoid": "3.1.20", + "serialize-javascript": "5.0.1", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", "wide-align": "1.1.3", - "yargs": "13.3.0", - "yargs-parser": "13.1.1", - "yargs-unparser": "1.6.0" + "workerpool": "6.1.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "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" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" } } } }, "mocha-jenkins-reporter": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/mocha-jenkins-reporter/-/mocha-jenkins-reporter-0.4.2.tgz", - "integrity": "sha512-ofQ41SUX5Uh3eHLn/ki4UTsh/7Yuk6p8N3RbxB275TLPErjkJGXuiT5i0haJ51UdJ+bkUhdyIpcCOHS3XSNVsg==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/mocha-jenkins-reporter/-/mocha-jenkins-reporter-0.4.5.tgz", + "integrity": "sha512-QoKXaxWz3gpzCBgfaqu2OZKVyibAwRTD/BF7ApMfNgafzzch9s8hMNVPTxRom9smmUAfaDfzARWKvrQMK7XACA==", "dev": true, "requires": { "diff": "4.0.1", - "mkdirp": "0.5.1", - "mocha": "^5.2.0", + "mkdirp": "^0.5.4", "xml": "^1.0.1" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "diff": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "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" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "minimist": "^1.2.5" } } } @@ -4117,9 +4256,9 @@ "dev": true }, "monaco-page-objects": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/monaco-page-objects/-/monaco-page-objects-1.2.5.tgz", - "integrity": "sha512-gQ7/fqlBvBnDXx6AInpACfhKV1tSph02CZmRagIcWs0XljK32WhelDPcRoUF6ll/yf9bLzB57d3K4KRD/LJWUA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/monaco-page-objects/-/monaco-page-objects-1.4.2.tgz", + "integrity": "sha512-XcZ8ZCAUTfRdr6ZDanBQ2JIipP0YtTcdoBCNHlen6ZkKd1a8YoWJvn86fbJ2wxSe3w0orHvQcGAT/fBWIKZ3iQ==", "dev": true, "requires": { "clipboardy": "^2.0.0", @@ -4127,50 +4266,13 @@ "fs-extra": "^9.0.1", "merge-deep": "github:jrichter1/merge-deep#functions", "ts-essentials": "^7.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - } } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "mute-stream": { "version": "0.0.8", @@ -4179,11 +4281,16 @@ "dev": true }, "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true }, + "nanoid": { + "version": "3.1.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", + "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" + }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -4211,15 +4318,21 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nise": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.3.tgz", - "integrity": "sha512-EGlhjm7/4KvmmE6B/UFsKh7eHykRl9VH+au8dduHLCyWUO/hr7+N+WtTvDUwc9zHuM1IaIJs/0lQ6Ag1jDkQSg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.4.tgz", + "integrity": "sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0", @@ -4230,9 +4343,9 @@ } }, "node-abi": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.18.0.tgz", - "integrity": "sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==", + "version": "2.19.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", + "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", "dev": true, "requires": { "semver": "^5.4.1" @@ -4247,51 +4360,17 @@ } }, "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==", "dev": true }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" - }, - "node-jose": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.3.tgz", - "integrity": "sha512-kupfi4uGWhRjnOmtie2T64cLge5a1TZyalEa8uWWWBgtKBcu41A4IGKpI9twZAxRnmviamEUQRK7LSyfFb2w8A==", - "requires": { - "base64url": "^3.0.1", - "es6-promise": "^4.2.6", - "lodash": "^4.17.11", - "long": "^4.0.0", - "node-forge": "^0.8.1", - "uuid": "^3.3.2" - } - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -4357,12 +4436,12 @@ } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "number-is-nan": { @@ -4379,222 +4458,66 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==" }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" } }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - } - } - }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - } } }, "oidc-token-hash": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-3.0.2.tgz", - "integrity": "sha512-dTzp80/y/da+um+i+sOucNqiPpwRL7M/xPwj7pH1TFA2/bqQ+OK2sJahSXbemEoLtPkHcFLyhLhLWZa9yW5+RA==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz", + "integrity": "sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==" }, "once": { "version": "1.4.0", @@ -4605,25 +4528,25 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, "opencv4nodejs-prebuilt": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opencv4nodejs-prebuilt/-/opencv4nodejs-prebuilt-5.3.0.tgz", - "integrity": "sha512-bdnSv+q1ng1oZAZZhLNsc7kNrYcS3abrna66nuwMu8ybodd0mQsb0EQJvXfrZz0VWmgyKb1Wo7/V2TUCl6tD1g==", + "version": "5.3.0-2", + "resolved": "https://registry.npmjs.org/opencv4nodejs-prebuilt/-/opencv4nodejs-prebuilt-5.3.0-2.tgz", + "integrity": "sha512-l0JealJQRgSnvQHMFDP2mM/hFn8o9zOqPjljGyAzSFXzJZkR0KgXbm66Ezwjsk+IcaSo90+OUMz3D645lNUdVw==", "dev": true, "requires": { "@types/node": ">6", "nan": "^2.14.0", "native-node-utils": "^0.2.7", "npmlog": "^4.1.2", - "prebuild-install": "^5.3.2" + "prebuild-install": "^5.3.3" }, "dependencies": { "ansi-regex": { @@ -4702,134 +4625,17 @@ } }, "openid-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-2.5.0.tgz", - "integrity": "sha512-t3hFD7xEoW1U25RyBcRFaL19fGGs6hNVTysq9pgmiltH0IVUPzH/bQV9w24pM5Q7MunnGv2/5XjIru6BQcWdxg==", - "requires": { - "base64url": "^3.0.0", - "got": "^8.3.2", - "lodash": "^4.17.11", - "lru-cache": "^5.1.1", - "node-jose": "^1.1.0", - "object-hash": "^1.3.1", - "oidc-token-hash": "^3.0.1", - "p-any": "^1.1.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - } + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-4.4.0.tgz", + "integrity": "sha512-FZq6rMaItawQc0mMrxlya96fydO7jlkW4I0Hrke3E4ogLAYcFbSefcJlKFLRvr+S5x9N6PMH6OZl9LHgu7JXvw==", + "requires": { + "got": "^11.8.0", + "jose": "^2.0.4", + "lru-cache": "^6.0.0", + "make-error": "^1.3.6", + "object-hash": "^2.0.1", + "oidc-token-hash": "^5.0.1", + "p-any": "^3.0.0" } }, "optimist": { @@ -4908,11 +4714,12 @@ } }, "p-any": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-any/-/p-any-1.1.0.tgz", - "integrity": "sha512-Ef0tVa4CZ5pTAmKn+Cg3w8ABBXh+hHO1aV8281dKOoUHfX+3tjG2EaFcC+aZyagg9b4EYGsHEjz21DnEE8Og2g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-any/-/p-any-3.0.0.tgz", + "integrity": "sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==", "requires": { - "p-some": "^2.0.0" + "p-cancelable": "^2.0.0", + "p-some": "^5.0.0" } }, "p-cancelable": { @@ -4920,24 +4727,11 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, - "p-event": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.1.0.tgz", - "integrity": "sha512-4vAd06GCsgflX4wHN1JqrMzBh/8QZ4j+rzp0cd2scXRwuBEv+QR3wrVA5aLhWDLw4y2WgDKvzWF3CCLmVM1UgA==", - "requires": { - "p-timeout": "^2.0.1" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -4957,19 +4751,12 @@ } }, "p-some": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-some/-/p-some-2.0.1.tgz", - "integrity": "sha1-Zdh8ixVO289SIdFnd4ttLhUPbwY=", - "requires": { - "aggregate-error": "^1.0.0" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-some/-/p-some-5.0.0.tgz", + "integrity": "sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==", "requires": { - "p-finally": "^1.0.0" + "aggregate-error": "^3.0.0", + "p-cancelable": "^2.0.0" } }, "p-try": { @@ -5020,18 +4807,24 @@ } }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "@types/node": "*" + "parse5": "^6.0.1" } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -5071,9 +4864,9 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true }, "pend": { @@ -5088,14 +4881,15 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", - "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pkg-dir": { "version": "2.0.0", @@ -5130,16 +4924,16 @@ } }, "prebuild-install": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.5.tgz", - "integrity": "sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", + "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", "dev": true, "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", "node-abi": "^2.7.0", "noop-logger": "^0.1.1", @@ -5169,9 +4963,9 @@ } }, "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "requires": { "buffer": "^5.5.0", @@ -5217,15 +5011,6 @@ "number-is-nan": "^1.0.0" } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -5259,24 +5044,24 @@ } }, "tar-fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", - "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "tar-stream": "^2.1.4" } }, "tar-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", - "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { - "bl": "^4.0.1", + "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -5304,15 +5089,10 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, "prettier-linter-helpers": { @@ -5370,14 +5150,22 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, - "query-string": { + "queue-microtask": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", + "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + }, + "quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "safe-buffer": "^5.1.0" } }, "rc": { @@ -5428,12 +5216,6 @@ "requires": { "pify": "^2.0.0" } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true } } }, @@ -5469,11 +5251,11 @@ } }, "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "requires": { - "picomatch": "^2.0.4" + "picomatch": "^2.2.1" } }, "rechoir": { @@ -5485,9 +5267,9 @@ } }, "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "remap-istanbul": { @@ -5563,10 +5345,11 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "resolve": { "version": "1.12.0", @@ -5576,6 +5359,11 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", + "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5612,45 +5400,256 @@ "dev": true, "requires": { "eslint": "^6.8.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + } } }, "rfc4648": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.3.0.tgz", - "integrity": "sha512-x36K12jOflpm1V8QjPq3I+pt7Z1xzeZIjiC8J2Oxd7bE1efTrOG241DTYVJByP/SxR9jl1t7iZqYxDX864jgBQ==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.4.0.tgz", + "integrity": "sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg==" }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "requires": { - "is-promise": "^2.1.0" + "queue-microtask": "^1.2.2" } }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" - }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { "tslib": "^1.9.0" } @@ -5665,6 +5664,15 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -5683,6 +5691,15 @@ "xml2js": "^0.4.17" }, "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "tmp": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", @@ -5695,14 +5712,26 @@ } }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-immediate-shim": { "version": "1.0.1", @@ -5713,8 +5742,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "shallow-clone": { "version": "0.1.2", @@ -5728,12 +5756,6 @@ "mixin-object": "^2.0.1" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5771,9 +5793,9 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -5810,21 +5832,26 @@ "requires": { "mimic-response": "^2.0.0" } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true } } }, "sinon": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.1.tgz", - "integrity": "sha512-iTTyiQo5T94jrOx7X7QLBZyucUJ2WvL9J13+96HMfm2CGoJYbIPqRfl6wgNcqmzk0DI28jeGx5bUTXizkrqBmg==", + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/formatio": "^5.0.1", - "@sinonjs/samsam": "^5.0.3", + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", "diff": "^4.0.2", - "nise": "^4.0.1", + "nise": "^4.0.4", "supports-color": "^7.1.0" }, "dependencies": { @@ -5841,9 +5868,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -5863,32 +5890,42 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-map": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", @@ -5900,9 +5937,9 @@ } }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -5918,9 +5955,9 @@ } }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -5928,15 +5965,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -5944,9 +5981,9 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "splitargs": { @@ -5976,6 +6013,11 @@ "tweetnacl": "~0.14.0" } }, + "stream-buffers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", + "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==" + }, "stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", @@ -5985,11 +6027,6 @@ "stubs": "^3.0.0" } }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, "string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", @@ -5999,7 +6036,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6010,31 +6046,30 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } } } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "string_decoder": { @@ -6053,18 +6088,12 @@ } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } + "ansi-regex": "^5.0.0" } }, "strip-bom": { @@ -6079,9 +6108,9 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "stubs": { @@ -6094,44 +6123,40 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "ajv": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true } } }, @@ -6158,6 +6183,12 @@ "requires": { "minimist": "^1.2.5" } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -6222,43 +6253,20 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz", "integrity": "sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g==", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^4.0.0", - "node-fetch": "^2.2.0", - "stream-events": "^1.0.5", - "uuid": "^3.3.2" - }, - "dependencies": { - "agent-base": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", - "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } + "dev": true, + "requires": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.2.0", + "stream-events": "^1.0.5", + "uuid": "^3.3.2" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true }, "https-proxy-agent": { "version": "4.0.0", @@ -6268,14 +6276,6 @@ "requires": { "agent-base": "5", "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - } } } } @@ -6307,28 +6307,31 @@ "xtend": "~4.0.1" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "tiny-glob": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.6.tgz", - "integrity": "sha512-A7ewMqPu1B5PWwC3m7KVgAu96Ch5LA0w4SnEN/LbDREj/gAD0nPWboRbn8YoP9ISZXqeNAlMvKSKoEuhcfK3Pw==", + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { - "globalyzer": "^0.1.0", - "globrex": "^0.1.1" + "rimraf": "^3.0.0" } }, - "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "dev": true, + "tmp-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", + "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", "requires": { - "rimraf": "^2.6.3" + "tmp": "^0.2.0" + }, + "dependencies": { + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + } } }, "tmpl": { @@ -6343,11 +6346,6 @@ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", "dev": true }, - "to-readable-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", - "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6370,72 +6368,19 @@ "punycode": "^2.1.1" } }, - "traceur": { - "version": "0.0.111", - "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.111.tgz", - "integrity": "sha1-wE3nTRRpbDNzQn3k/Ajsr5E/w6E=", - "dev": true, - "requires": { - "commander": "2.9.x", - "glob": "5.0.x", - "rsvp": "^3.0.13", - "semver": "^4.3.3", - "source-map-support": "~0.2.8" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "source-map-support": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", - "dev": true, - "requires": { - "source-map": "0.1.32" - } - } - } - }, "traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } }, "ts-essentials": { "version": "7.0.1", @@ -6453,25 +6398,17 @@ "json5": "^1.0.1", "minimist": "^1.2.0", "strip-bom": "^3.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", + "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -6496,6 +6433,12 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -6535,9 +6478,9 @@ } }, "typescript": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", - "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true }, "uc.micro": { @@ -6567,14 +6510,14 @@ } }, "underscore": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", - "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz", + "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==" }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, "unzip-stream": { "version": "0.3.1", @@ -6614,12 +6557,6 @@ "setimmediate": "~1.0.4" }, "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -6663,25 +6600,32 @@ "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=", "dev": true }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", "dev": true }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6693,9 +6637,9 @@ "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "validate-npm-package-license": { @@ -6709,9 +6653,9 @@ } }, "validator": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-12.2.0.tgz", - "integrity": "sha512-jJfE/DW6tIK1Ek8nCfNFqt8Wb3nzMoAbocBF6/Icgg1ZFSBpObdnwVY2jQj6qUqzhx5jc71fpvBWyLGO7Xl+nQ==" + "version": "13.5.2", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", + "integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ==" }, "verror": { "version": "1.10.0", @@ -6724,9 +6668,9 @@ } }, "vsce": { - "version": "1.81.1", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.81.1.tgz", - "integrity": "sha512-1yWAYRxTx/PKSFZnuELe7GPyIo70H/XKJqf6wGikofUK3f3TCNGI6F9xkTQFvXKNe0AygUuxN7kITyPIQGMP+w==", + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.85.0.tgz", + "integrity": "sha512-YVFwjXWvHRwk75mm3iL4Wr3auCdbBPTv2amtLf97ccqH0hkt0ZVBddu7iOs4HSEbSr9xiiaZwQHUsqMm6Ks0ag==", "dev": true, "requires": { "azure-devops-node-api": "^7.2.0", @@ -6751,10 +6695,21 @@ "yazl": "^2.2.2" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "semver": { @@ -6775,9 +6730,9 @@ } }, "vscode-extension-tester": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-3.2.2.tgz", - "integrity": "sha512-ZoVs/HO0kRKX+IQ6E67u1iwadE1xn5NbqlQf0NSbFZ0NQj/IiTYWJkTKqCed3BO7TGeFR6pCqKc5xBzb2NXXsA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/vscode-extension-tester/-/vscode-extension-tester-3.2.6.tgz", + "integrity": "sha512-yhPkfUpgCxK5AdeqW0gsvDRquBixGgTb2BC6RgdaXHvi9pna7nomlwzDeLWNZkiT2p+Rg+bcF61ftggMER2gcQ==", "dev": true, "requires": { "@types/selenium-webdriver": "^3.0.15", @@ -6786,93 +6741,68 @@ "fs-extra": "^9.0.1", "glob": "^7.1.6", "js-yaml": "^3.13.1", - "monaco-page-objects": "^1.2.5", + "monaco-page-objects": "^1.4.2", "request": "^2.88.0", + "sanitize-filename": "^1.6.3", "selenium-webdriver": "^3.0.0", "targz": "^1.0.1", "unzip-stream": "^0.3.0", "vsce": "^1.81.0", - "vscode-extension-tester-locators": "^1.50.0" + "vscode-extension-tester-locators": "^1.53.0" }, "dependencies": { "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } + "argparse": "^1.0.7", + "esprima": "^4.0.0" } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true } } }, "vscode-extension-tester-locators": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/vscode-extension-tester-locators/-/vscode-extension-tester-locators-1.50.0.tgz", - "integrity": "sha512-dxxsQZk9s/zxKIj5aLKqVYqdPMAfQW9rSCGMVuLK6Ac0EDnx2uMe99DthzrfCOiov5BEXdA1MoqCcydrBxxNRg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/vscode-extension-tester-locators/-/vscode-extension-tester-locators-1.53.0.tgz", + "integrity": "sha512-/ObRO+/W3YLVFuH10qbSYivvBsXy+1z564Ka8H8HJ5TJBf0SG1IJzdJe2ocyeosD4OQLoNOWPhhQdrhZoHUkxw==", "dev": true }, "vscode-extension-tester-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vscode-extension-tester-native/-/vscode-extension-tester-native-3.0.0.tgz", - "integrity": "sha512-lpmEeudGVfet0DOVX5OjDTIp8gDxKneTliwOPiJgw2HgaK96lHCzopmwb5Bk2yGU6+LY66Pyk2UkitTcKBaoHA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vscode-extension-tester-native/-/vscode-extension-tester-native-3.0.2.tgz", + "integrity": "sha512-jWtSU9b8mxJOWHhzF18Qc4uzNvE3+2Ilw7aZ9PQzfJA9zh8C2PUYjKwhCmGaMSGJXFHuVrrRVUZ9inh03QxW/w==", "dev": true, "requires": { - "@nut-tree/nut-js": "1.3.2", + "@nut-tree/nut-js": "1.5.0", "clipboardy": "^2.0.0", - "fs-extra": "^8.1.0" + "fs-extra": "^9.0.1" } }, "vscode-json-languageservice": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.5.1.tgz", - "integrity": "sha512-F8jPqcAC1mbQOMKvGYS4dGEw9JCZxVEi7tc5ASZLfcfwKq2URZKB4fOtdy1GEsTLsrW11tVrBjEPntpXzqp/NA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.11.0.tgz", + "integrity": "sha512-QxI+qV97uD7HHOCjh3MrM1TfbdwmTXrMckri5Tus1/FQiG3baDZb2C9Y0y8QThs7PwHYBIQXcAc59ZveCRZKPA==", "dev": true, "requires": { - "jsonc-parser": "^2.2.1", + "jsonc-parser": "^3.0.0", "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "^3.15.1", - "vscode-nls": "^4.1.1", - "vscode-uri": "^2.1.1" + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^5.0.0", + "vscode-uri": "^2.1.2" } }, "vscode-kubernetes-tools-api": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vscode-kubernetes-tools-api/-/vscode-kubernetes-tools-api-1.0.0.tgz", - "integrity": "sha512-f9nmtYMZ32Dsmr4r0LoJ/JRl//gMsXqjYujOFQJg/dbIIFQMrUKOL+8+EWAz1h8rqgvMsj1NatSIThUFNlL65A==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vscode-kubernetes-tools-api/-/vscode-kubernetes-tools-api-1.3.0.tgz", + "integrity": "sha512-5+4OdwrRinoTsE8i6s8pPY+BbGh5U7DNAA/3pn5wlOhvQpivaBMdi89bRKfdAffPjt/bvHodje4BFm5GSNjFxQ==" }, "vscode-languageserver-textdocument": { "version": "1.0.1", @@ -6881,31 +6811,56 @@ "dev": true }, "vscode-languageserver-types": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", - "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==", + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==", "dev": true }, "vscode-nls": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", - "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", + "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==", "dev": true }, "vscode-test": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz", - "integrity": "sha512-LddukcBiSU2FVTDr3c1D8lwkiOvwlJdDL2hqVbn6gIz+rpTqUCkMZSKYm94Y1v0WXlHSDQBsXyY+tchWQgGVsw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.5.1.tgz", + "integrity": "sha512-tDloz6euDne+GeUSglhufL0c2xhuYAPAT74hjsuGxfflALfXF9bYnJ7ehZEeVkr/ZnQEh/T8EBrfPL+m0h5qEQ==", "requires": { - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.4", - "rimraf": "^2.6.3" + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + } } }, "vscode-uri": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.1.tgz", - "integrity": "sha512-eY9jmGoEnVf8VE8xr5znSah7Qt1P/xsCdErz+g8HYZtJ7bZqKH5E3d+6oVNm1AC/c6IHUDokbmVXKOi4qPAC9A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", "dev": true }, "walker": { @@ -6925,17 +6880,27 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -6991,34 +6956,48 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "workerpool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", + "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==" + }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^5.0.0" } } } @@ -7038,31 +7017,20 @@ }, "dependencies": { "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } } } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==" }, "xml": { "version": "1.0.1", @@ -7093,14 +7061,14 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.0", @@ -7108,99 +7076,33 @@ "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" } }, "yauzl": { @@ -7221,6 +7123,11 @@ "requires": { "buffer-crc32": "~0.2.3" } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 4db1192c..c9580bff 100644 --- a/package.json +++ b/package.json @@ -47,77 +47,77 @@ "watch": "tsc -watch -p ./" }, "dependencies": { - "@kubernetes/client-node": "^0.11.1", + "@kubernetes/client-node": "^0.14.0", "binary-search": "^1.3.6", "byline": "^5.0.0", - "fs-extra": "^8.1.0", + "fs-extra": "^9.1.0", "git-fetch-pack": "^0.1.1", "git-transport-protocol": "^0.1.0", "glob": "^7.1.6", - "globby": "^11.0.0", - "got": "^10.6.0", - "hasha": "^5.2.0", - "js-yaml": "^3.13.1", - "mkdirp": "^1.0.3", - "mocha": "^7.1.0", + "globby": "^11.0.2", + "got": "^11.8.1", + "hasha": "^5.2.2", + "js-yaml": "^4.0.0", + "mkdirp": "^1.0.4", + "mocha": "^8.3.0", "request": "^2.88.2", "request-progress": "^3.0.0", - "rxjs": "^6.5.4", - "semver": "^7.1.3", - "shelljs": "^0.8.3", + "rxjs": "^6.6.3", + "semver": "^7.3.4", + "shelljs": "^0.8.4", "string-format": "^2.0.0", - "validator": "^12.2.0", - "vscode-kubernetes-tools-api": "1.0.0", - "vscode-test": "^1.3.0", + "validator": "^13.5.2", + "vscode-kubernetes-tools-api": "1.3.0", + "vscode-test": "^1.5.1", "yaml": "^1.10.0" }, "devDependencies": { - "@sinonjs/referee": "^5.1.0", - "@types/byline": "^4.2.31", - "@types/chai": "^4.2.11", - "@types/collections": "^5.0.1", - "@types/fs-extra": "^8.1.0", - "@types/glob": "^7.1.1", - "@types/got": "^9.6.9", - "@types/js-yaml": "^3.12.2", - "@types/mkdirp": "^1.0.0", - "@types/mocha": "^7.0.2", - "@types/node": "^13.9.1", - "@types/request": "^2.48.4", + "@sinonjs/referee": "^7.0.0", + "@types/byline": "^4.2.32", + "@types/chai": "^4.2.15", + "@types/collections": "^5.1.0", + "@types/fs-extra": "^9.0.7", + "@types/glob": "^7.1.3", + "@types/got": "^9.6.11", + "@types/js-yaml": "^4.0.0", + "@types/mkdirp": "^1.0.1", + "@types/mocha": "^8.2.1", + "@types/node": "^14.14.30", + "@types/request": "^2.48.5", "@types/rewire": "^2.5.28", - "@types/semver": "^7.1.0", - "@types/shelljs": "^0.8.6", - "@types/sinon": "^7.5.2", - "@types/sinon-chai": "^3.2.3", + "@types/semver": "^7.3.4", + "@types/shelljs": "^0.8.8", + "@types/sinon": "^9.0.10", + "@types/sinon-chai": "^3.2.5", "@types/string-format": "^2.0.0", - "@types/tmp": "0.1.0", - "@types/validator": "^12.0.1", - "@types/vscode": "^1.52.0", - "@typescript-eslint/eslint-plugin": "^2.23.0", - "@typescript-eslint/parser": "^2.23.0", - "chai": "^4.2.0", - "codecov": "^3.7.1", - "decache": "^4.5.1", - "eslint": "^6.8.0", - "eslint-config-airbnb-base": "^14.1.0", - "eslint-config-prettier": "^6.10.0", - "eslint-import-resolver-typescript": "^2.0.0", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-json": "^2.1.1", - "eslint-plugin-prettier": "^3.1.2", + "@types/tmp": "0.2.0", + "@types/validator": "^13.1.3", + "@types/vscode": "^1.53.0", + "@typescript-eslint/eslint-plugin": "^4.15.1", + "@typescript-eslint/parser": "^4.15.1", + "chai": "^4.3.0", + "codecov": "^3.8.1", + "decache": "^4.6.0", + "eslint": "^7.20.0", + "eslint-config-airbnb-base": "^14.2.1", + "eslint-config-prettier": "^7.2.0", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-json": "^2.1.2", + "eslint-plugin-prettier": "^3.3.1", "istanbul": "^0.4.5", - "mocha-jenkins-reporter": "^0.4.2", - "proxyquire": "^2.1.0", - "prettier": "^2.0.5", + "mocha-jenkins-reporter": "^0.4.5", + "proxyquire": "^2.1.3", + "prettier": "^2.2.1", "remap-istanbul": "^0.13.0", "rewire": "^5.0.0", - "sinon": "^9.0.1", + "sinon": "^9.2.4", "sinon-chai": "^3.5.0", - "source-map-support": "^0.5.16", - "tmp": "0.1.0", - "typescript": "^3.8.3", - "vscode-extension-tester": "^3.2.2", - "vscode-extension-tester-native": "^3.0.0", + "source-map-support": "^0.5.19", + "tmp": "0.2.1", + "typescript": "^4.1.5", + "vscode-extension-tester": "^3.2.6", + "vscode-extension-tester-native": "^3.0.2", "walker": "^1.0.7" }, "extensionDependencies": [ From 5d0c7462c45fc20ed0d3e69751fa094485d41de2 Mon Sep 17 00:00:00 2001 From: joshuawilson Date: Tue, 23 Feb 2021 14:26:32 -0500 Subject: [PATCH 2/5] fix(eslint): update after eslint rules updated. Clean up tests to use BDD style Chai --- .eslintrc | 41 +++- .vscode/settings.json | 2 + CHANGELOG.md | 2 +- README.md | 2 +- build/install-vscode.ts | 27 +-- build/unit-tests.ts | 1 + build/verify-tools.ts | 13 +- package-lock.json | 199 +----------------- package.json | 5 +- src/cli/cli-config.ts | 99 +++++---- src/cli/cmdCli.ts | 36 ++-- src/cli/config.ts | 14 +- src/cli/execute.ts | 5 +- src/cli/kn-api.ts | 4 +- src/cli/virtualfs.ts | 27 ++- src/editor/knativeOpenTextDocument.ts | 11 +- src/editor/knativeSchemaRegister.ts | 2 + src/eventingTree/brokerDataProvider.ts | 6 +- src/eventingTree/channelDataProvider.ts | 6 +- src/eventingTree/eventingDataProvider.ts | 13 +- src/eventingTree/eventingExplorer.ts | 8 +- src/eventingTree/eventingTreeItem.ts | 85 ++++---- src/eventingTree/sourceDataProvider.ts | 18 +- src/eventingTree/subscriptionDataProvider.ts | 20 +- src/eventingTree/triggerDataProvider.ts | 16 +- src/extension.ts | 14 +- src/knative/apiServerSource.ts | 3 +- src/knative/baseSource.ts | 9 +- src/knative/bindingSource.ts | 3 +- src/knative/broker.ts | 7 +- src/knative/channel.ts | 7 +- src/knative/kEvent.ts | 2 +- src/knative/knativeEvents.ts | 4 +- src/knative/knativeServices.ts | 2 +- src/knative/knativeSubscriptions.ts | 8 +- src/knative/knativeTriggers.ts | 8 +- src/knative/pingSource.ts | 3 +- src/knative/revision.ts | 11 +- src/knative/service.ts | 11 +- src/knative/subscription.ts | 9 +- src/knative/trigger.ts | 9 +- src/servingTree/servingDataProvider.ts | 51 ++--- src/servingTree/servingExplorer.ts | 11 +- src/servingTree/servingTreeItem.ts | 101 +++++---- src/util/download.ts | 4 +- src/util/parse.ts | 2 +- src/util/platform.ts | 5 +- src/util/watch.ts | 20 +- src/util/windowUtils.ts | 2 +- test/cli/cli-config.test.ts | 53 ++--- test/cli/cmdCli.test.ts | 35 +-- test/cli/execute.test.ts | 12 +- test/cli/kn-api.test.ts | 141 ++++++------- test/cli/kubectl-api.test.ts | 28 +-- test/cli/virtualfs.test.ts | 113 +++++----- test/coverage.ts | 36 +++- test/editor/knativeOpenTextDocument.test.ts | 25 ++- test/editor/knativeReadonlyProvider.test.ts | 7 +- test/editor/knativeSchemaRegister.test.ts | 19 +- test/eventingTree/brokerDataProvider.test.ts | 24 +-- test/eventingTree/channelDataProvider.test.ts | 26 ++- .../eventingTree/eventingDataProvider.test.ts | 125 +++++------ test/eventingTree/eventingExplorer.test.ts | 5 +- test/eventingTree/eventingTreeItem.test.ts | 52 ++--- test/eventingTree/sourceDataProvider.test.ts | 122 ++++++----- .../subscriptionDataProvider.test.ts | 88 ++++---- test/eventingTree/triggerDataProvider.test.ts | 68 +++--- test/extension.test.ts | 31 +-- test/index.ts | 39 ++-- test/knative/knativeBrokers.test.ts | 24 +-- test/knative/knativeChannels.test.ts | 24 +-- test/knative/knativeEvents.test.ts | 36 ++-- test/knative/knativeItem.test.ts | 16 +- test/knative/knativeServices.test.ts | 50 +++-- test/knative/knativeSources.test.ts | 35 +-- test/knative/knativeSubscriptions.test.ts | 53 +++-- test/knative/knativeTriggers.test.ts | 43 ++-- test/knative/revision.test.ts | 4 +- test/output/knOutputChannel.test.ts | 12 +- test/servingTree/servingDataProvider.test.ts | 127 +++++------ test/servingTree/servingExplorer.test.ts | 15 +- test/servingTree/servingTreeItem.test.ts | 64 +++--- test/ui-test/common/testUtils.ts | 9 +- test/ui-test/extensionUITest.ts | 16 +- test/ui-test/initializationUITest.ts | 1 + test/util/download.test.ts | 33 +-- test/util/filters.test.ts | 8 +- test/util/format.test.ts | 14 +- test/util/parse.test.ts | 12 +- test/util/platform.test.ts | 16 +- test/util/watch.test.ts | 15 +- test/util/window.test.ts | 8 +- 92 files changed, 1276 insertions(+), 1376 deletions(-) diff --git a/.eslintrc b/.eslintrc index 8a5c563d..a32361c3 100644 --- a/.eslintrc +++ b/.eslintrc @@ -12,6 +12,7 @@ "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:import/recommended", "prettier", "prettier/@typescript-eslint" ], @@ -22,10 +23,7 @@ "project": "./tsconfig.json", "sourceType": "module" }, - "plugins": [ - "@typescript-eslint", - "prettier" - ], + "plugins": ["@typescript-eslint", "prettier", "import"], "rules": { "camelcase": 2, "consistent-return": 0, @@ -47,6 +45,32 @@ "mjs": "never" } ], + "import/first": [ + "off" + ], + "import/order": ["error", + { + "groups": [ + "builtin", + "external", + "sibling", + "parent", + "internal", + "index", + "object" + ], + "pathGroups": [ + { + "pattern": "~/**", + "group": "internal" + } + ], + "alphabetize": { + "order": "asc" /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */, + "caseInsensitive": true /* ignore case. Options: [true, false] */ + } + } + ], "import/no-default-export": "off", "import/no-duplicates": ["error"], "import/no-unresolved": ["error"], @@ -60,7 +84,8 @@ "no-else-return": ["error"], "no-global-strict": 0, "no-irregular-whitespace": ["error"], - "no-shadow": ["error"], + "no-shadow": ["off"], + "@typescript-eslint/no-shadow": "error", "no-underscore-dangle": 0, "@typescript-eslint/no-use-before-define": 2, "@typescript-eslint/await-thenable": "error", @@ -73,10 +98,7 @@ }, "settings": { "import/core-modules": ["vscode"], - "import/extensions": [ - ".ts", - ".tsx" - ], + "import/extensions": [".ts", ".tsx"], "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, @@ -84,7 +106,6 @@ "typescript": { "extensions": [".ts"] }, - "": {}, "node": { "extensions": [".ts", ".js", ".jsx"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index a9e3edc0..acaebe75 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -95,6 +95,8 @@ "serviceaccount", "sinkbindings", "sinonjs", + "spawnargs", + "spawnfile", "subresources", "thenable", "triggerb", diff --git a/CHANGELOG.md b/CHANGELOG.md index b480d22b..e2b95b85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,7 +76,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Patch to allow locally built versions of the `kn` cli tool. - Patch to add a `Refresh` button the explorer. -- Patch to fix the `Report Issue` button in the exporer. +- Patch to fix the `Report Issue` button in the explorer. - Patch to add a default value when no Service is found. ## 0.1.3 (2020/03/08) diff --git a/README.md b/README.md index 1e085084..6271492a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [Knative](https://knative.tips/intro/knative/) (pronounced kay-native) is a set of open source components for Kubernetes that implements functionality to: - * run stateless workloads such as microservices + * run stateless workloads such as micro-services * event subscription, delivery and handling on Kubernetes clusters. diff --git a/build/install-vscode.ts b/build/install-vscode.ts index 4a555d78..273d94af 100644 --- a/build/install-vscode.ts +++ b/build/install-vscode.ts @@ -3,18 +3,21 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { downloadAndUnzipVSCode } from 'vscode-test'; import { execSync } from 'child_process'; -import { dirname, join } from 'path'; import { platform } from 'os'; +import { dirname, join } from 'path'; +import { downloadAndUnzipVSCode } from 'vscode-test'; -downloadAndUnzipVSCode().then((executable: string): void => { - let exe: string = executable; - if (platform() === 'darwin') { - exe = `'${join(exe.substring(0, exe.indexOf('.app') + 4), 'Contents', 'Resources', 'app', 'bin', 'code')}'`; - } else { - exe = join(dirname(exe), 'bin', 'code'); - } - execSync(`${exe} --install-extension ms-kubernetes-tools.vscode-kubernetes-tools`); - execSync(`${exe} --install-extension redhat.vscode-yaml`); -}); +downloadAndUnzipVSCode() + .then((executable: string): void => { + let exe: string = executable; + if (platform() === 'darwin') { + exe = `'${join(exe.substring(0, exe.indexOf('.app') + 4), 'Contents', 'Resources', 'app', 'bin', 'code')}'`; + } else { + exe = join(dirname(exe), 'bin', 'code'); + } + execSync(`${exe} --install-extension ms-kubernetes-tools.vscode-kubernetes-tools`); + execSync(`${exe} --install-extension redhat.vscode-yaml`); + }) + // eslint-disable-next-line no-console, @typescript-eslint/restrict-template-expressions + .catch((err) => console.log(`There was an error while downloading and unzipping, error = ${err}`)); diff --git a/build/unit-tests.ts b/build/unit-tests.ts index f0dba840..c29749a8 100644 --- a/build/unit-tests.ts +++ b/build/unit-tests.ts @@ -26,4 +26,5 @@ async function main(): Promise { } } +// eslint-disable-next-line @typescript-eslint/no-floating-promises main(); diff --git a/build/verify-tools.ts b/build/verify-tools.ts index eb436cbc..43620df1 100644 --- a/build/verify-tools.ts +++ b/build/verify-tools.ts @@ -6,17 +6,17 @@ // import { CancellationToken } from 'vscode'; import { exec } from 'child_process'; +import { tmpdir } from 'os'; +import { join, resolve } from 'path'; import { existsSync } from 'fs-extra'; import { fromFile } from 'hasha'; import { sync } from 'mkdirp'; -import { tmpdir } from 'os'; -import { join, resolve } from 'path'; -// import { Config } from '../src/cli/cli-config'; +import configData = require('../src/cli/cli-config.json'); import { DownloadUtil } from '../src/util/download'; +// import { Config } from '../src/cli/cli-config'; // import loadJSON from '../src/util/parse'; // const configData = '../src/cli/cli-config.json'; -import configData = require('../src/cli/cli-config.json'); async function downloadFileAndCreateSha256( targetFolder: string, @@ -41,12 +41,17 @@ async function downloadFileAndCreateSha256( function verifyTools(): void { Object.keys(configData).forEach((key) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access Object.keys(configData[key].platform).forEach((OS) => { const targetFolder = resolve(tmpdir(), OS); + // eslint-disable-next-line @typescript-eslint/no-floating-promises downloadFileAndCreateSha256( targetFolder, + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access configData[key].platform[OS].dlFileName, + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access configData[key].platform[OS].url, + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access configData[key].platform[OS].sha256sum, ); }); diff --git a/package-lock.json b/package-lock.json index 0c6da6e5..eff70f65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -296,22 +296,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "@sinonjs/referee": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/referee/-/referee-7.0.0.tgz", - "integrity": "sha512-9qqUyXxxUaq9I2+4tpD71/DRvZubSCN+Os72jC4lMYmrQPLZBWCc43Zz9B6GVkp6QkgmsVOkXrk1xs63AxDOLw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/samsam": "^5.0.2", - "array-from": "2.1.1", - "event-emitter": "^0.3.5", - "lodash.includes": "^4.3.0", - "lodash.isarguments": "^3.1.0", - "object-assign": "^4.1.1", - "util": "^0.12.3" - } - }, "@sinonjs/samsam": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", @@ -470,9 +454,9 @@ "dev": true }, "@types/node": { - "version": "14.14.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.30.tgz", - "integrity": "sha512-gUWhy8s45fQp4PqqKecsnOkdW0kt1IaKjgOIR3HPokkzTmQj9ji2wWFID5THu1MKrtO+d4s2lVrlEhXUsPXSvg==" + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==" }, "@types/request": { "version": "2.48.5", @@ -851,18 +835,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", - "dev": true - }, "array-includes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", @@ -939,15 +911,6 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "available-typed-arrays": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", - "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", - "dev": true, - "requires": { - "array-filter": "^1.0.0" - } - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1707,16 +1670,6 @@ "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", "dev": true }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1983,38 +1936,6 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2458,16 +2379,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -2488,23 +2399,6 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", - "dev": true - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2686,12 +2580,6 @@ "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3257,15 +3145,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3332,12 +3211,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "is-generator-function": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", - "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", - "dev": true - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -3413,19 +3286,6 @@ "has-symbols": "^1.0.1" } }, - "is-typed-array": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", - "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.0-next.2", - "foreach": "^2.0.5", - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3811,18 +3671,6 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, "lodash.pad": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", @@ -4318,12 +4166,6 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -6433,12 +6275,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -6612,20 +6448,6 @@ "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", "dev": true }, - "util": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", - "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6886,21 +6708,6 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, - "which-typed-array": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", - "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.2", - "call-bind": "^1.0.0", - "es-abstract": "^1.18.0-next.1", - "foreach": "^2.0.5", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.1", - "is-typed-array": "^1.1.3" - } - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", diff --git a/package.json b/package.json index c9580bff..bf33a95f 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "yaml": "^1.10.0" }, "devDependencies": { - "@sinonjs/referee": "^7.0.0", "@types/byline": "^4.2.32", "@types/chai": "^4.2.15", "@types/collections": "^5.1.0", @@ -82,7 +81,7 @@ "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", - "@types/node": "^14.14.30", + "@types/node": "^14.14.31", "@types/request": "^2.48.5", "@types/rewire": "^2.5.28", "@types/semver": "^7.3.4", @@ -107,8 +106,8 @@ "eslint-plugin-prettier": "^3.3.1", "istanbul": "^0.4.5", "mocha-jenkins-reporter": "^0.4.5", - "proxyquire": "^2.1.3", "prettier": "^2.2.1", + "proxyquire": "^2.1.3", "remap-istanbul": "^0.13.0", "rewire": "^5.0.0", "sinon": "^9.2.4", diff --git a/src/cli/cli-config.ts b/src/cli/cli-config.ts index 4f7ef2be..66442fc9 100644 --- a/src/cli/cli-config.ts +++ b/src/cli/cli-config.ts @@ -4,27 +4,33 @@ *-----------------------------------------------------------------------------------------------*/ import * as fs from 'fs'; -import * as fsExtra from 'fs-extra'; import * as path from 'path'; import { commands, Progress, ProgressLocation, Uri, window } from 'vscode'; -import * as shell from 'shelljs'; +import * as fsExtra from 'fs-extra'; import { fromFileSync } from 'hasha'; import { satisfies } from 'semver'; +import * as shell from 'shelljs'; // import { KnCli, createCliCommand } from './cmdCli'; -import { DownloadUtil } from '../util/download'; -import { Platform } from '../util/platform'; +import * as configData from './cli-config.json'; import { KnAPI } from './kn-api'; import { KubectlAPI } from './kubectl-api'; -import * as configData from './cli-config.json'; +import { DownloadUtil } from '../util/download'; +import { Platform } from '../util/platform'; // import loadJSON from '../util/parse'; // import configData = require('./cli-config.json'); // const configData = './cli-config.json'; -export interface Config { - cmd?: CliConfig; - kn?: CliConfig; - kubectl?: CliConfig; +export interface PlatformData { + url: string; + sha256sum: string; + dlFileName: string; + cmdFileName?: string; +} +export interface PlatformOS { + win32: PlatformData; + darwin: PlatformData; + linux: PlatformData; } export interface CliConfig { description: string; @@ -34,22 +40,18 @@ export interface CliConfig { versionRange: string; versionRangeLabel: string; filePrefix: string; + cmdFileName: string; + versionLocalBuildRange?: number; platform?: PlatformOS; url?: string; sha256sum?: string; dlFileName?: string; - cmdFileName: string; + location?: string; } -export interface PlatformOS { - win32: PlatformData; - darwin: PlatformData; - linux: PlatformData; -} -export interface PlatformData { - url: string; - sha256sum: string; - dlFileName: string; - cmdFileName?: string; +export interface Config { + cmd?: CliConfig; + kn?: CliConfig; + kubectl?: CliConfig; } /** @@ -130,7 +132,7 @@ async function selectTool(locations: string[], versionRange: string, versionLoca } return foundLocation; } catch (error) { - // eslint-disable-next-line no-console + // eslint-disable-next-line no-console, @typescript-eslint/restrict-template-expressions console.log(`The selectTool method had an error: ${error}`); return undefined; } @@ -138,18 +140,17 @@ async function selectTool(locations: string[], versionRange: string, versionLoca export class CmdCliConfig { public static loadMetadata(requirements: Config, platformOS: string): Config { - const reqs = JSON.parse(JSON.stringify(requirements)); - // eslint-disable-next-line no-restricted-syntax - for (const object in requirements) { - if (reqs[object].platform) { - if (reqs[object].platform[platformOS]) { - Object.assign(reqs[object], reqs[object].platform[platformOS]); - delete reqs[object].platform; + const reqs = JSON.parse(JSON.stringify(requirements)) as Config; + Object.keys(requirements).forEach((object) => { + if ((reqs[object] as CliConfig).platform) { + if ((reqs[object] as CliConfig).platform[platformOS]) { + Object.assign(reqs[object], (reqs[object] as CliConfig).platform[platformOS]); + delete (reqs[object] as CliConfig).platform; } else { delete reqs[object]; } } - } + }); return reqs; } @@ -176,13 +177,17 @@ export class CmdCliConfig { static async detectOrDownload(cmd: string): Promise { try { // If the location of the cli has been set, then read it. - let toolLocation: string = CmdCliConfig.tools[cmd].location; + let toolLocation: string = (CmdCliConfig.tools[cmd] as CliConfig).location; // So if the tool location hasn't been set then we need to figure that out. if (toolLocation === undefined) { const cliFile = `.vs-${cmd}`; // Look in [HOME]/.vs-[CMD]/ for the [CMD] cli executable - const toolCacheLocation = path.resolve(Platform.getUserHomePath(), cliFile, CmdCliConfig.tools[cmd].cmdFileName); + const toolCacheLocation = path.resolve( + Platform.getUserHomePath(), + cliFile, + (CmdCliConfig.tools[cmd] as CliConfig).cmdFileName, + ); // If [CMD] cli is installed, get it's install location/path const whichLocation = shell.which(cmd); // Get a list of locations. @@ -191,19 +196,25 @@ export class CmdCliConfig { // selectTool(toolLocations, KnCliConfig.tools[cmd].versionRange).then((foundToolLocation) => { let foundToolLocation: string = await selectTool( toolLocations, - CmdCliConfig.tools[cmd].versionRange, - CmdCliConfig.tools[cmd].versionLocalBuildRange, + (CmdCliConfig.tools[cmd] as CliConfig).versionRange, + (CmdCliConfig.tools[cmd] as CliConfig).versionLocalBuildRange, ); // If the cli tool is still not found then we will need to install it. if (foundToolLocation === undefined || foundToolLocation === null) { // Set the download location for the cli executable. - const toolDlLocation = path.resolve(Platform.getUserHomePath(), cliFile, CmdCliConfig.tools[cmd].dlFileName); + const toolDlLocation = path.resolve( + Platform.getUserHomePath(), + cliFile, + (CmdCliConfig.tools[cmd] as CliConfig).dlFileName, + ); // Message for expected version number - const installRequest = `Download and install v${CmdCliConfig.tools[cmd].version}`; + const installRequest = `Download and install v${(CmdCliConfig.tools[cmd] as CliConfig).version}`; // Create a pop-up that asks to download and install. // let response: string; const response: string = await window.showInformationMessage( - `Cannot find ${CmdCliConfig.tools[cmd].description} ${CmdCliConfig.tools[cmd].versionRangeLabel}.`, + `Cannot find ${(CmdCliConfig.tools[cmd] as CliConfig).description} ${ + (CmdCliConfig.tools[cmd] as CliConfig).versionRangeLabel + }.`, installRequest, 'Help', 'Cancel', @@ -217,14 +228,14 @@ export class CmdCliConfig { { cancellable: true, location: ProgressLocation.Notification, - title: `Downloading ${CmdCliConfig.tools[cmd].description}`, + title: `Downloading ${(CmdCliConfig.tools[cmd] as CliConfig).description}`, }, async ( progress: Progress<{ increment: number; message: string }>, // token: CancellationToken, ) => { await DownloadUtil.downloadFile( - CmdCliConfig.tools[cmd].url, + (CmdCliConfig.tools[cmd] as CliConfig).url, toolDlLocation, // token, (dlProgress, increment) => progress.report({ increment, message: `${dlProgress}%` }), @@ -237,11 +248,13 @@ export class CmdCliConfig { let action = 'hash matches so install it'; // Check the hash against the one on file to make sure it downloaded. If it doesn't match tell the user, // so they can download it again. - if (sha256sum !== CmdCliConfig.tools[cmd].sha256sum) { + if (sha256sum !== (CmdCliConfig.tools[cmd] as CliConfig).sha256sum) { // Delete the file since something went wrong with the download. fsExtra.removeSync(toolDlLocation); action = await window.showInformationMessage( - `Checksum for downloaded ${CmdCliConfig.tools[cmd].description} v${CmdCliConfig.tools[cmd].version} is not correct.`, + `Checksum for downloaded ${(CmdCliConfig.tools[cmd] as CliConfig).description} v${ + (CmdCliConfig.tools[cmd] as CliConfig).version + } is not correct.`, 'Download again', 'Cancel', ); @@ -249,7 +262,7 @@ export class CmdCliConfig { if (action === 'Download again') { // If the download failed and we need to start it over, recursively call it. - CmdCliConfig.detectOrDownload(cmd); + await CmdCliConfig.detectOrDownload(cmd); } else if (action !== 'Cancel') { // The downloaded file is an executable and we need to rename it to [CMD] fs.renameSync(toolDlLocation, toolCacheLocation); @@ -262,7 +275,7 @@ export class CmdCliConfig { }, ); } else if (response === `Help`) { - commands.executeCommand( + await commands.executeCommand( 'vscode.open', Uri.parse(`https://github.com/talamer/vscode-knative/blob/master/README.md#requirements`), ); @@ -270,7 +283,7 @@ export class CmdCliConfig { } if (foundToolLocation) { // eslint-disable-next-line require-atomic-updates - CmdCliConfig.tools[cmd].location = foundToolLocation; + (CmdCliConfig.tools[cmd] as CliConfig).location = foundToolLocation; } toolLocation = foundToolLocation; // }); diff --git a/src/cli/cmdCli.ts b/src/cli/cmdCli.ts index bb1bca58..be110333 100644 --- a/src/cli/cmdCli.ts +++ b/src/cli/cmdCli.ts @@ -13,15 +13,15 @@ export interface CliExitData { readonly stdout: string; readonly stderr?: string; } -export interface Cli { - execute(cmd: CliCommand, opts?: SpawnOptions): Promise; -} - export interface CliCommand { cliCommand: string; cliArguments: string[]; } +export interface Cli { + execute(cmd: CliCommand, opts?: SpawnOptions): Promise; +} + export function createCliCommand(cliCommand: string, ...cliArguments: string[]): CliCommand { return { cliCommand, cliArguments }; } @@ -82,21 +82,33 @@ export class CmdCli implements Cli { // do not reject it here, because caller in some cases need the error and the streams // to make a decision // eslint-disable-next-line no-console - console.error(`error: ${err}`); + console.error(`error: ${err.message}`); error = err; }); command.on('exit', () => { if (error) { + // let message: string | undefined; if (typeof error === 'string' && error.search('no such host') > 0) { - window.showErrorMessage(`The cluster is not up. Please log into a running cluster.`, { modal: true }, 'OK'); + window.showErrorMessage(`The cluster is not up. Please log into a running cluster.`, { modal: true }, 'OK').then( + () => 'OK', + () => undefined, + ); } else if (typeof error === 'string' && error.search('no configuration') > 0) { - window.showErrorMessage(`The kubeconfig file can't be found.`, { modal: true }, 'OK'); - } else if (typeof error === 'string' && error.search('no Knative') > 0) { - window.showErrorMessage( - `The Knative / Serving Operator is not installed. Please install it to use this extension.`, - { modal: true }, - 'OK', + window.showErrorMessage(`The kubeconfig file can't be found.`, { modal: true }, 'OK').then( + () => 'OK', + () => undefined, ); + } else if (typeof error === 'string' && error.search('no Knative') > 0) { + window + .showErrorMessage( + `The Knative / Serving Operator is not installed. Please install it to use this extension.`, + { modal: true }, + 'OK', + ) + .then( + () => 'OK', + () => undefined, + ); } else { reject(error); } diff --git a/src/cli/config.ts b/src/cli/config.ts index 8c7bfcdb..5739a802 100644 --- a/src/cli/config.ts +++ b/src/cli/config.ts @@ -50,12 +50,6 @@ export const enum SourceType { BINARY = 'binary', } -export interface Config { - kind: Kind; - apiVersion: string; - ComponentSettings: ComponentSettings; -} - export interface ComponentSettings { Type: string; SourceLocation: string; @@ -68,6 +62,12 @@ export interface ComponentSettings { Ports: string[]; } +export interface Config { + kind: Kind; + apiVersion: string; + ComponentSettings: ComponentSettings; +} + export function getOutputFormat(): string { - return workspace.getConfiguration(EXTENSION_CONFIG_KEY)['vs-knative.outputFormat']; + return workspace.getConfiguration(EXTENSION_CONFIG_KEY)['vs-knative.outputFormat'] as string; } diff --git a/src/cli/execute.ts b/src/cli/execute.ts index 95bb3566..329c77a9 100644 --- a/src/cli/execute.ts +++ b/src/cli/execute.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { Terminal } from 'vscode'; import * as path from 'path'; +import { Terminal } from 'vscode'; import { CmdCliConfig } from './cli-config'; import { CmdCli, Cli, CliCommand, CliExitData, cliCommandToString } from './cmdCli'; import { WindowUtil } from '../util/windowUtils'; @@ -49,12 +49,15 @@ export function loadItems(result: CliExitData): any[] { // eslint-disable-next-line @typescript-eslint/no-explicit-any let data: any[] = []; try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const { items } = JSON.parse(result.stdout); if (items) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment data = items; } } catch (ignore) { // do nothing } + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return data; } diff --git a/src/cli/kn-api.ts b/src/cli/kn-api.ts index 1e0c2e1f..bb983e06 100644 --- a/src/cli/kn-api.ts +++ b/src/cli/kn-api.ts @@ -82,7 +82,7 @@ export class KnAPI { if (createServiceObj.annotation) { createServiceObj.annotation.forEach((value, key) => { commandArguments.push('--annotation'); - commandArguments.push(`${key}=${value}`); + commandArguments.push(`${key}=${value.toString()}`); }); } // If labels were added then include them all. @@ -149,7 +149,7 @@ export class KnAPI { if (updateServiceObj.annotation) { updateServiceObj.annotation.forEach((value, key) => { commandArguments.push('--annotation'); - commandArguments.push(`${key}=${value}`); + commandArguments.push(`${key}=${value.toString()}`); }); } // If labels were added then include them all. diff --git a/src/cli/virtualfs.ts b/src/cli/virtualfs.ts index 7552b245..48d3fef0 100644 --- a/src/cli/virtualfs.ts +++ b/src/cli/virtualfs.ts @@ -6,6 +6,9 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import * as fs from 'fs'; +import * as path from 'path'; +import * as querystring from 'querystring'; import { Disposable, Event, @@ -20,16 +23,13 @@ import { workspace, WorkspaceFolder, } from 'vscode'; -import * as path from 'path'; -import * as fs from 'fs'; -import * as querystring from 'querystring'; import * as yaml from 'yaml'; -import { Execute } from './execute'; import { CliExitData } from './cmdCli'; -import { KnAPI } from './kn-api'; import * as config from './config'; -import { Errorable } from '../util/errorable'; +import { Execute } from './execute'; +import { KnAPI } from './kn-api'; import { registerSchema } from '../editor/knativeSchemaRegister'; +import { Errorable } from '../util/errorable'; export const KN_RESOURCE_SCHEME = 'knmsx'; export const KN_RESOURCE_AUTHORITY = 'loadknativecore'; @@ -53,7 +53,7 @@ export function vfsUri( export async function showWorkspaceFolderPick(): Promise { if (!workspace.workspaceFolders) { - window.showErrorMessage('This command requires an open Workspace folder.', { modal: true }, 'OK'); + await window.showErrorMessage('This command requires an open Workspace folder.', { modal: true }, 'OK'); return undefined; } if (workspace.workspaceFolders.length === 1) { @@ -68,7 +68,7 @@ export async function selectRootFolder(): Promise { return undefined; } if (folder.uri.scheme !== 'file') { - window.showErrorMessage('This command requires a filesystem folder'); // TODO: make it not + await window.showErrorMessage('This command requires a filesystem folder'); // TODO: make it not return undefined; } return folder.uri.fsPath; @@ -218,7 +218,7 @@ export class KnativeResourceVirtualFileSystemProvider implements FileSystemProvi const eced = await this.execLoadResource(uri.scheme, resourceAuthority, ns, context, name, outputFormat); if (Errorable.failed(eced)) { - window.showErrorMessage(eced.error[0]); + await window.showErrorMessage(eced.error[0]); throw eced.error[0]; } @@ -267,14 +267,23 @@ export class KnativeResourceVirtualFileSystemProvider implements FileSystemProvi if (ced.error) { return ced; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const doc = yaml.parse(ced.stdout); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.creationTimestamp; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.generation; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.managedFields; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.resourceVersion; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.selfLink; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.metadata.uid; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.spec.template.metadata; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access delete doc.status; const cleanStdout = yaml.stringify(doc); diff --git a/src/editor/knativeOpenTextDocument.ts b/src/editor/knativeOpenTextDocument.ts index eea85e0e..9f236fe4 100644 --- a/src/editor/knativeOpenTextDocument.ts +++ b/src/editor/knativeOpenTextDocument.ts @@ -4,10 +4,10 @@ *-----------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { vfsUri, KN_RESOURCE_SCHEME } from '../cli/virtualfs'; -import { ServingTreeItem } from '../servingTree/servingTreeItem'; import { KN_READONLY_SCHEME } from './knativeReadonlyProvider'; +import { vfsUri, KN_RESOURCE_SCHEME } from '../cli/virtualfs'; import { EventingTreeItem } from '../eventingTree/eventingTreeItem'; +import { ServingTreeItem } from '../servingTree/servingTreeItem'; /** * This is set up as a Command. It can be called from a menu or by clicking on the tree item. @@ -35,13 +35,14 @@ export async function openTreeItemInEditor( const uri = vfsUri(schema, contextValue, name, outputFormat); await vscode.workspace.openTextDocument(uri).then( - (doc) => { + async (doc) => { if (doc) { - vscode.window.showTextDocument(doc, { preserveFocus: true, preview: true }); + await vscode.window.showTextDocument(doc, { preserveFocus: true, preview: true }); } else { - throw Error(`Error loading resource located at ${uri}`); + throw Error(`Error loading resource located at ${uri.toString()}`); } }, + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions (err) => vscode.window.showErrorMessage(`Error loading document: ${err}`), ); } diff --git a/src/editor/knativeSchemaRegister.ts b/src/editor/knativeSchemaRegister.ts index 6895f6bb..b900209c 100644 --- a/src/editor/knativeSchemaRegister.ts +++ b/src/editor/knativeSchemaRegister.ts @@ -27,6 +27,8 @@ function onRequestSchemaContent(schemaUri: string): string | undefined { } export async function registerSchema(): Promise { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const yamlExtensionAPI = await extensions.getExtension('redhat.vscode-yaml').activate(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call yamlExtensionAPI.registerContributor(SCHEME, onRequestSchemaURI, onRequestSchemaContent, `apiVersion: serving.knative.dev/v1`); } diff --git a/src/eventingTree/brokerDataProvider.ts b/src/eventingTree/brokerDataProvider.ts index b3875736..27478790 100644 --- a/src/eventingTree/brokerDataProvider.ts +++ b/src/eventingTree/brokerDataProvider.ts @@ -5,14 +5,14 @@ import { TreeItemCollapsibleState } from 'vscode'; import { EventingTreeItem } from './eventingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; -import { KnAPI } from '../cli/kn-api'; import { EventingContextType } from '../cli/config'; -import { compareNodes } from '../knative/knativeItem'; +import { Execute, loadItems } from '../cli/execute'; +import { KnAPI } from '../cli/kn-api'; import { Broker } from '../knative/broker'; import { KnativeBrokers } from '../knative/knativeBrokers'; import { KnativeEvents } from '../knative/knativeEvents'; +import { compareNodes } from '../knative/knativeItem'; export class BrokerDataProvider { public knExecutor = new Execute(); diff --git a/src/eventingTree/channelDataProvider.ts b/src/eventingTree/channelDataProvider.ts index 8a57cbdf..03d145c6 100644 --- a/src/eventingTree/channelDataProvider.ts +++ b/src/eventingTree/channelDataProvider.ts @@ -5,14 +5,14 @@ import { TreeItemCollapsibleState } from 'vscode'; import { EventingTreeItem } from './eventingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; -import { KnAPI } from '../cli/kn-api'; import { EventingContextType } from '../cli/config'; -import { compareNodes } from '../knative/knativeItem'; +import { Execute, loadItems } from '../cli/execute'; +import { KnAPI } from '../cli/kn-api'; import { Channel } from '../knative/channel'; import { KnativeChannels } from '../knative/knativeChannels'; import { KnativeEvents } from '../knative/knativeEvents'; +import { compareNodes } from '../knative/knativeItem'; export class ChannelDataProvider { public knExecutor = new Execute(); diff --git a/src/eventingTree/eventingDataProvider.ts b/src/eventingTree/eventingDataProvider.ts index d1a48602..43b07fd9 100644 --- a/src/eventingTree/eventingDataProvider.ts +++ b/src/eventingTree/eventingDataProvider.ts @@ -13,16 +13,16 @@ import { TreeItemCollapsibleState, } from 'vscode'; import * as vscode from 'vscode'; -import { EventingTreeItem } from './eventingTreeItem'; import { BrokerDataProvider } from './brokerDataProvider'; import { ChannelDataProvider } from './channelDataProvider'; +import { EventingTreeItem } from './eventingTreeItem'; import { SourceDataProvider } from './sourceDataProvider'; import { SubscriptionDataProvider } from './subscriptionDataProvider'; import { TriggerDataProvider } from './triggerDataProvider'; import { EventingContextType } from '../cli/config'; import { KnativeResourceVirtualFileSystemProvider } from '../cli/virtualfs'; -import { KnativeEvents } from '../knative/knativeEvents'; import { KEvent } from '../knative/kEvent'; +import { KnativeEvents } from '../knative/knativeEvents'; import { ServingTreeItem } from '../servingTree/servingTreeItem'; export class EventingDataProvider implements TreeDataProvider { @@ -164,7 +164,8 @@ export class EventingDataProvider implements TreeDataProvider { - return new KEvent(e); - }, - ); + const events: KEvent[] = eventingConcepts.map((e): KEvent => new KEvent(e)); this.events.addEvents(events); diff --git a/src/eventingTree/eventingExplorer.ts b/src/eventingTree/eventingExplorer.ts index 4e848435..ddecd3bf 100644 --- a/src/eventingTree/eventingExplorer.ts +++ b/src/eventingTree/eventingExplorer.ts @@ -3,14 +3,14 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import * as path from 'path'; import { Disposable, TreeView, window, workspace } from 'vscode'; import * as vscode from 'vscode'; -import * as path from 'path'; -import { Platform } from '../util/platform'; -import { EventingTreeItem } from './eventingTreeItem'; import { EventingDataProvider } from './eventingDataProvider'; -import { WatchUtil, FileContentChangeNotifier } from '../util/watch'; +import { EventingTreeItem } from './eventingTreeItem'; import { ServingTreeItem } from '../servingTree/servingTreeItem'; +import { Platform } from '../util/platform'; +import { WatchUtil, FileContentChangeNotifier } from '../util/watch'; const kubeConfigFolder: string = path.join(Platform.getUserHomePath(), '.kube'); const kubeconfigParam: string[][] = [[kubeConfigFolder, 'config']]; diff --git a/src/eventingTree/eventingTreeItem.ts b/src/eventingTree/eventingTreeItem.ts index e31e94b2..246267a1 100644 --- a/src/eventingTree/eventingTreeItem.ts +++ b/src/eventingTree/eventingTreeItem.ts @@ -3,13 +3,12 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { ProviderResult, TreeItemCollapsibleState, Uri, TreeItem, Command, TreeItemLabel } from 'vscode'; import * as path from 'path'; +import { ProviderResult, TreeItemCollapsibleState, Uri, TreeItem, Command, TreeItemLabel } from 'vscode'; +import format = require('string-format'); import { EventingContextType } from '../cli/config'; import { KnativeItem } from '../knative/knativeItem'; -import format = require('string-format'); - const { Collapsed } = TreeItemCollapsibleState; const CONTEXT_DATA = { @@ -26,7 +25,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase broker_folder: { icon: 'folder-opened.svg', tooltip: '', @@ -40,14 +38,12 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase channel_folder: { icon: 'folder-opened.svg', tooltip: '', description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase source_apiserver: { icon: 'source-generic.svg', // icon: 'EVT.svg', @@ -55,7 +51,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase source_binding: { icon: 'source-generic.svg', // icon: 'EVT.svg', @@ -63,7 +58,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase source_folder: { icon: 'folder-opened.svg', tooltip: '', @@ -77,7 +71,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase source_ping: { icon: 'source-generic.svg', // icon: 'EVT.svg', @@ -92,7 +85,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase subscription_folder: { icon: 'folder-opened.svg', tooltip: '', @@ -106,7 +98,6 @@ const CONTEXT_DATA = { description: '', getChildren: (): undefined[] => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase trigger_folder: { icon: 'folder-opened.svg', tooltip: '', @@ -124,7 +115,28 @@ const CONTEXT_DATA = { export class EventingTreeItem extends TreeItem { private name: string; - private desc: string; + private desc: string = undefined; + + private empty = [ + 'No Broker Found', + 'No Channel Found', + 'No Source Found', + 'No Subscription Found', + 'No Trigger Found', + 'Brokers', + 'Channels', + 'Sources', + 'Subscriptions', + 'Triggers', + ]; + + public command: Command = undefined; + + public tooltip: string = undefined; + + public iconPath: Uri = undefined; + + public description: string = undefined; constructor( private parent: EventingTreeItem | null, @@ -137,43 +149,20 @@ export class EventingTreeItem extends TreeItem { ) { super(label, collapsibleState); this.name = label.label; - } - - get iconPath(): Uri { - return Uri.file(path.join(__dirname, `../../../images/context`, CONTEXT_DATA[this.contextValue].icon)); - } - - get tooltip(): string { - return format(CONTEXT_DATA[this.contextValue].tooltip, this); - } - - // The description is the text after the label. It is grey and a smaller font. - get description(): string { - return this.desc || CONTEXT_DATA[this.contextValue].description; - } - - get command(): Command { - const empty = [ - 'No Broker Found', - 'No Channel Found', - 'No Source Found', - 'No Subscription Found', - 'No Trigger Found', - 'Brokers', - 'Channels', - 'Sources', - 'Subscriptions', - 'Triggers', - ]; - if (empty.find((element) => element === this.name)) { - return; + if (this.empty.find((element) => element === this.name)) { + this.command = undefined; + } else { + this.command = { + command: 'eventing.explorer.openFile', + title: 'Describe', + arguments: [this], + }; + } + if (CONTEXT_DATA[this.contextValue]) { + this.tooltip = format(CONTEXT_DATA[this.contextValue].tooltip, this); + this.iconPath = Uri.file(path.join(__dirname, `../../../images/context`, CONTEXT_DATA[this.contextValue].icon)); + this.description = this.desc || CONTEXT_DATA[this.contextValue].description; } - const c: Command = { - command: 'eventing.explorer.openFile', - title: 'Describe', - arguments: [this], - }; - return c; } getName(): string { diff --git a/src/eventingTree/sourceDataProvider.ts b/src/eventingTree/sourceDataProvider.ts index 8b46674f..4be924e9 100644 --- a/src/eventingTree/sourceDataProvider.ts +++ b/src/eventingTree/sourceDataProvider.ts @@ -5,23 +5,23 @@ import { TreeItemCollapsibleState, Uri } from 'vscode'; import { EventingTreeItem } from './eventingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; -import { KnAPI } from '../cli/kn-api'; import { EventingContextType, ServingContextType } from '../cli/config'; -import { compareNodes } from '../knative/knativeItem'; -import { GenericSource } from '../knative/genericSource'; +import { Execute, loadItems } from '../cli/execute'; +import { KnAPI } from '../cli/kn-api'; import { APIServerSource } from '../knative/apiServerSource'; -import { KnativeSources, SourceTypes } from '../knative/knativeSources'; -import { KnativeEvents } from '../knative/knativeEvents'; import { Items, BaseSource } from '../knative/baseSource'; import { BindingSource } from '../knative/bindingSource'; -import { PingSource } from '../knative/pingSource'; -import { ServingTreeItem } from '../servingTree/servingTreeItem'; -import { Sink } from '../knative/sink'; import { Broker } from '../knative/broker'; import { Channel } from '../knative/channel'; +import { GenericSource } from '../knative/genericSource'; +import { KnativeEvents } from '../knative/knativeEvents'; +import { compareNodes } from '../knative/knativeItem'; +import { KnativeSources, SourceTypes } from '../knative/knativeSources'; +import { PingSource } from '../knative/pingSource'; import { Service } from '../knative/service'; +import { Sink } from '../knative/sink'; +import { ServingTreeItem } from '../servingTree/servingTreeItem'; export class SourceDataProvider { public knExecutor = new Execute(); diff --git a/src/eventingTree/subscriptionDataProvider.ts b/src/eventingTree/subscriptionDataProvider.ts index 44cee576..f45fc9f8 100644 --- a/src/eventingTree/subscriptionDataProvider.ts +++ b/src/eventingTree/subscriptionDataProvider.ts @@ -5,18 +5,18 @@ import { TreeItemCollapsibleState, Uri } from 'vscode'; import { EventingTreeItem } from './eventingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; -import { KnAPI } from '../cli/kn-api'; import { EventingContextType, ServingContextType } from '../cli/config'; +import { Execute, loadItems } from '../cli/execute'; +import { KnAPI } from '../cli/kn-api'; +import { Broker } from '../knative/broker'; +import { Channel } from '../knative/channel'; +import { KnativeEvents } from '../knative/knativeEvents'; import { compareNodes } from '../knative/knativeItem'; -import { Subscription } from '../knative/subscription'; import { KnativeSubscriptions } from '../knative/knativeSubscriptions'; -import { KnativeEvents } from '../knative/knativeEvents'; -import { Channel } from '../knative/channel'; -import { Sink } from '../knative/sink'; -import { Broker } from '../knative/broker'; import { Service } from '../knative/service'; +import { Sink } from '../knative/sink'; +import { Subscription } from '../knative/subscription'; import { ServingTreeItem } from '../servingTree/servingTreeItem'; export class SubscriptionDataProvider { @@ -36,11 +36,7 @@ export class SubscriptionDataProvider { let subscriptions: Subscription[] = []; // Get the raw data from the cli call. const result: CliExitData = await this.knExecutor.execute(KnAPI.listSubscriptions()); - subscriptions = this.kSubs.addSubscriptions( - loadItems(result).map((value) => { - return Subscription.JSONToSubscription(value); - }), - ); + subscriptions = this.kSubs.addSubscriptions(loadItems(result).map((value) => Subscription.JSONToSubscription(value))); // If there are no Subscriptions found then stop looking and we can post 'No Subscriptions Found` if (subscriptions.length === 0) { return subscriptions; diff --git a/src/eventingTree/triggerDataProvider.ts b/src/eventingTree/triggerDataProvider.ts index 81bdfc55..8270ac09 100644 --- a/src/eventingTree/triggerDataProvider.ts +++ b/src/eventingTree/triggerDataProvider.ts @@ -5,19 +5,19 @@ import { TreeItemCollapsibleState, Uri } from 'vscode'; import { EventingTreeItem } from './eventingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; -import { KnAPI } from '../cli/kn-api'; import { EventingContextType, ServingContextType } from '../cli/config'; +import { Execute, loadItems } from '../cli/execute'; +import { KnAPI } from '../cli/kn-api'; +import { Broker } from '../knative/broker'; +import { Channel } from '../knative/channel'; +import { KnativeEvents } from '../knative/knativeEvents'; import { compareNodes } from '../knative/knativeItem'; -import { Trigger } from '../knative/trigger'; import { KnativeTriggers } from '../knative/knativeTriggers'; -import { KnativeEvents } from '../knative/knativeEvents'; -import { ServingTreeItem } from '../servingTree/servingTreeItem'; -import { Sink } from '../knative/sink'; import { Service } from '../knative/service'; -import { Channel } from '../knative/channel'; -import { Broker } from '../knative/broker'; +import { Sink } from '../knative/sink'; +import { Trigger } from '../knative/trigger'; +import { ServingTreeItem } from '../servingTree/servingTreeItem'; export class TriggerDataProvider { public knExecutor = new Execute(); diff --git a/src/extension.ts b/src/extension.ts index 2a887c86..39406a92 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,11 +8,11 @@ import { KN_RESOURCE_SCHEME } from './cli/virtualfs'; import { openTreeItemInEditor } from './editor/knativeOpenTextDocument'; import { KnativeReadonlyProvider, KN_READONLY_SCHEME } from './editor/knativeReadonlyProvider'; import { EventingExplorer } from './eventingTree/eventingExplorer'; +import { EventingTreeItem } from './eventingTree/eventingTreeItem'; import { Revision } from './knative/revision'; import { Service } from './knative/service'; -import { ServingTreeItem } from './servingTree/servingTreeItem'; import { ServingExplorer } from './servingTree/servingExplorer'; -import { EventingTreeItem } from './eventingTree/eventingTreeItem'; +import { ServingTreeItem } from './servingTree/servingTreeItem'; let disposable: vscode.Disposable[]; @@ -33,20 +33,18 @@ export function activate(extensionContext: vscode.ExtensionContext): void { // Now provide the implementation of the command with registerCommand. // The commandId parameter must match the command field in package.json. disposable = [ - vscode.commands.registerCommand('knative.service.open-in-browser', (treeItem: ServingTreeItem) => { + vscode.commands.registerCommand('knative.service.open-in-browser', async (treeItem: ServingTreeItem) => { const item = treeItem.getKnativeItem(); if (item instanceof Service) { - vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(item.image)); + await vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(item.image)); } if (item instanceof Revision) { if (item.traffic) { // Find the first tagged traffic & open the URL. There can be more than one tagged traffics // however for our purposes opening the first one should be enough. - const taggedTraffic = item.traffic.find((val) => { - return val.tag; - }); + const taggedTraffic = item.traffic.find((val) => val.tag); if (taggedTraffic) { - vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(taggedTraffic.url.toString())); + await vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(taggedTraffic.url.toString())); } } } diff --git a/src/knative/apiServerSource.ts b/src/knative/apiServerSource.ts index 15a3013a..f5c254d6 100644 --- a/src/knative/apiServerSource.ts +++ b/src/knative/apiServerSource.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -52,7 +53,7 @@ export interface Resources { controller: boolean; controllerSelector: ControllerSelector; kind: string; - labelSelector: {}; + labelSelector: Record; } export interface ControllerSelector { apiVersion: string; diff --git a/src/knative/baseSource.ts b/src/knative/baseSource.ts index 1315971d..9f16f330 100644 --- a/src/knative/baseSource.ts +++ b/src/knative/baseSource.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -57,9 +58,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface Spec { mode?: string | null; @@ -75,7 +76,7 @@ export interface Resources { controller: boolean; controllerSelector: ControllerSelector; kind: string; - labelSelector: {}; + labelSelector: Record; } export interface ControllerSelector { apiVersion: string; diff --git a/src/knative/bindingSource.ts b/src/knative/bindingSource.ts index e082c800..fe23c215 100644 --- a/src/knative/bindingSource.ts +++ b/src/knative/bindingSource.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -51,7 +52,7 @@ export interface Resources { controller: boolean; controllerSelector: ControllerSelector; kind: string; - labelSelector: {}; + labelSelector: Record; } export interface ControllerSelector { apiVersion: string; diff --git a/src/knative/broker.ts b/src/knative/broker.ts index fdc76031..eaaa40ec 100644 --- a/src/knative/broker.ts +++ b/src/knative/broker.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -57,9 +58,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface Spec { config: Config; diff --git a/src/knative/channel.ts b/src/knative/channel.ts index 79e8eacb..dc36491d 100644 --- a/src/knative/channel.ts +++ b/src/knative/channel.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -56,9 +57,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface Spec { channelTemplate: ChannelTemplate; diff --git a/src/knative/kEvent.ts b/src/knative/kEvent.ts index 40c4ae86..b1cba565 100644 --- a/src/knative/kEvent.ts +++ b/src/knative/kEvent.ts @@ -6,9 +6,9 @@ import { Broker } from './broker'; import { Channel } from './channel'; import { KnativeItem } from './knativeItem'; +import { SourceTypes } from './knativeSources'; import { Subscription } from './subscription'; import { Trigger } from './trigger'; -import { SourceTypes } from './knativeSources'; export class KEvent extends KnativeItem { constructor(public name: string) { diff --git a/src/knative/knativeEvents.ts b/src/knative/knativeEvents.ts index 7414e8e0..a81317c4 100644 --- a/src/knative/knativeEvents.ts +++ b/src/knative/knativeEvents.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { KEvent } from './kEvent'; import { Broker } from './broker'; import { Channel } from './channel'; +import { KEvent } from './kEvent'; +import { SourceTypes } from './knativeSources'; import { Subscription } from './subscription'; import { Trigger } from './trigger'; -import { SourceTypes } from './knativeSources'; export type EventTypes = Broker | Channel | SourceTypes | Subscription | Trigger; type childEvent = { child: EventTypes; event: KEvent }; diff --git a/src/knative/knativeServices.ts b/src/knative/knativeServices.ts index 651bbe5c..61983f17 100644 --- a/src/knative/knativeServices.ts +++ b/src/knative/knativeServices.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { Service } from './service'; import { Revision } from './revision'; +import { Service } from './service'; // import { compareNodes } from '../kn/knativeTreeObject'; type revisionService = { revision: Revision; service: Service }; diff --git a/src/knative/knativeSubscriptions.ts b/src/knative/knativeSubscriptions.ts index 6e75eb2a..a58b3a31 100644 --- a/src/knative/knativeSubscriptions.ts +++ b/src/knative/knativeSubscriptions.ts @@ -3,14 +3,14 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { Subscription } from './subscription'; +import { Broker } from './broker'; import { Channel } from './channel'; +import { KnativeBrokers } from './knativeBrokers'; import { KnativeChannels } from './knativeChannels'; -import { Sink } from './sink'; import { KnativeServices } from './knativeServices'; -import { KnativeBrokers } from './knativeBrokers'; -import { Broker } from './broker'; import { Service } from './service'; +import { Sink } from './sink'; +import { Subscription } from './subscription'; import { convertStringToURI } from '../util/parse'; /** diff --git a/src/knative/knativeTriggers.ts b/src/knative/knativeTriggers.ts index 57fe75fe..f50d6ad5 100644 --- a/src/knative/knativeTriggers.ts +++ b/src/knative/knativeTriggers.ts @@ -3,14 +3,14 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { Trigger } from './trigger'; -import { KnativeChannels } from './knativeChannels'; -import { KnativeServices } from './knativeServices'; -import { KnativeBrokers } from './knativeBrokers'; import { Broker } from './broker'; import { Channel } from './channel'; +import { KnativeBrokers } from './knativeBrokers'; +import { KnativeChannels } from './knativeChannels'; +import { KnativeServices } from './knativeServices'; import { Service } from './service'; import { Sink } from './sink'; +import { Trigger } from './trigger'; import { convertStringToURI } from '../util/parse'; /** diff --git a/src/knative/pingSource.ts b/src/knative/pingSource.ts index c8ff9992..dc8cc5d6 100644 --- a/src/knative/pingSource.ts +++ b/src/knative/pingSource.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -58,7 +59,7 @@ export interface Resources { controller: boolean; controllerSelector: ControllerSelector; kind: string; - labelSelector: {}; + labelSelector: Record; } export interface ControllerSelector { apiVersion: string; diff --git a/src/knative/revision.ts b/src/knative/revision.ts index 1c888c9f..f9d437bd 100644 --- a/src/knative/revision.ts +++ b/src/knative/revision.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -80,9 +81,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface OwnerReferencesEntity { apiVersion: string; @@ -116,8 +117,8 @@ export interface TcpSocket { port: number; } export interface Resources { - limits: {}; - requests: {}; + limits: Record; + requests: Record; } export interface Status { conditions?: Conditions[] | null; diff --git a/src/knative/service.ts b/src/knative/service.ts index d9c7579c..d9178a14 100644 --- a/src/knative/service.ts +++ b/src/knative/service.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. @@ -172,9 +173,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface TemplateSpec { containerConcurrency: number; @@ -199,8 +200,8 @@ export interface TcpSocket { port: number; } export interface Resources { - limits: {}; - requests: {}; + limits: Record; + requests: Record; } export interface Traffic { tag: string; diff --git a/src/knative/subscription.ts b/src/knative/subscription.ts index 66876d67..fbfd896b 100644 --- a/src/knative/subscription.ts +++ b/src/knative/subscription.ts @@ -1,11 +1,12 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ import { Channel } from './channel'; -import { Sink } from './sink'; import { KnativeItem } from './knativeItem'; +import { Sink } from './sink'; export class Subscription extends KnativeItem { constructor( @@ -107,9 +108,9 @@ export interface ManagedFieldsEntity { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface OwnerReferencesEntity { apiVersion: string; diff --git a/src/knative/trigger.ts b/src/knative/trigger.ts index 36d1d2bf..76f23e36 100644 --- a/src/knative/trigger.ts +++ b/src/knative/trigger.ts @@ -1,10 +1,11 @@ +/* eslint-disable no-use-before-define */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { KnativeItem } from './knativeItem'; import { Broker } from './broker'; +import { KnativeItem } from './knativeItem'; import { Sink } from './sink'; export class Trigger extends KnativeItem { @@ -89,9 +90,9 @@ export interface ManagedFields { time: string; } export interface FieldsV1 { - 'f:metadata'?: {} | null; - 'f:spec'?: {} | null; - 'f:status'?: {} | null; + 'f:metadata'?: Record | null; + 'f:spec'?: Record | null; + 'f:status'?: Record | null; } export interface Spec { broker: string; diff --git a/src/servingTree/servingDataProvider.ts b/src/servingTree/servingDataProvider.ts index d1c3c921..856ee888 100644 --- a/src/servingTree/servingDataProvider.ts +++ b/src/servingTree/servingDataProvider.ts @@ -3,6 +3,9 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import * as path from 'path'; +import * as vscode from 'vscode'; +// import * as validator from 'validator'; import { Event, EventEmitter, @@ -14,24 +17,22 @@ import { TreeItemCollapsibleState, Uri, } from 'vscode'; -import * as vscode from 'vscode'; -// import * as validator from 'validator'; -import * as path from 'path'; import * as yaml from 'yaml'; import { ServingTreeItem } from './servingTreeItem'; -import { Execute, loadItems } from '../cli/execute'; import { CliExitData } from '../cli/cmdCli'; +import { ServingContextType } from '../cli/config'; +import { Execute, loadItems } from '../cli/execute'; import { KnAPI } from '../cli/kn-api'; import { KubectlAPI } from '../cli/kubectl-api'; -import { ServingContextType } from '../cli/config'; -import { compareNodes } from '../knative/knativeItem'; -import { Service, CreateService, UpdateService } from '../knative/service'; -import { Revision, Items, Traffic } from '../knative/revision'; -import { KnativeServices } from '../knative/knativeServices'; import { KnativeResourceVirtualFileSystemProvider, KN_RESOURCE_SCHEME } from '../cli/virtualfs'; import * as vfs from '../cli/virtualfs'; -import { KnOutputChannel, OutputChannel } from '../output/knOutputChannel'; import { EventingTreeItem } from '../eventingTree/eventingTreeItem'; +import { compareNodes } from '../knative/knativeItem'; +import { KnativeServices } from '../knative/knativeServices'; +import { Revision, Items, Traffic } from '../knative/revision'; +import * as svc from '../knative/service'; +import { Service, CreateService, UpdateService } from '../knative/service'; +import { KnOutputChannel, OutputChannel } from '../output/knOutputChannel'; export class ServingDataProvider implements TreeDataProvider { public knExecutor = new Execute(); @@ -167,7 +168,8 @@ export class ServingDataProvider implements TreeDataProvider { // get the revision name, check it against the list of traffic from the parent, then pass in the traffic if found - const revisionTraffic: Traffic[] = traffic.filter((val): boolean => { - return value.metadata.name === val.revisionName; - }); + const revisionTraffic: Traffic[] = traffic.filter((val): boolean => value.metadata.name === val.revisionName); return Revision.toRevision(value, revisionTraffic); }), ); @@ -416,7 +417,7 @@ export class ServingDataProvider implements TreeDataProvider 0) { // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with const fileName = error.slice(error.lastIndexOf('validation failed:')); - vscode.window.showErrorMessage( + await vscode.window.showErrorMessage( `The YAMl file failed validation with the following error.\n\n${fileName}`, { modal: true }, 'OK', @@ -609,7 +610,7 @@ export class ServingDataProvider implements TreeDataProvider []; +}; + +type contextDataType = { + none: contextTreeItemDataType; + revision: contextTreeItemDataType; + // eslint-disable-next-line camelcase + revision_tagged: contextTreeItemDataType; + service: contextTreeItemDataType; + // eslint-disable-next-line camelcase + service_modified: contextTreeItemDataType; +}; + +const CONTEXT_DATA: contextDataType = { none: { icon: '', tooltip: 'Not Found', description: '', - getChildren: (): undefined[] => [], + getChildren: () => [], }, revision: { icon: 'revision.svg', // icon: 'REV.svg', tooltip: 'Revision: {name}', description: '', - getChildren: (): undefined[] => [], + getChildren: () => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase revision_tagged: { icon: 'revision.svg', // icon: 'REV.svg', tooltip: 'Revision: {name}', description: '', - getChildren: (): undefined[] => [], + getChildren: () => [], }, service: { icon: 'service.svg', // icon: 'SVC.svg', tooltip: 'Service: {name}', description: '', - getChildren: (): undefined[] => [], + getChildren: () => [], }, - // eslint-disable-next-line @typescript-eslint/camelcase service_modified: { icon: 'service.svg', // icon: 'SVC.svg', tooltip: 'Service: {name} modified', description: 'modified', - getChildren: (): undefined[] => [], + getChildren: () => [], }, }; export class ServingTreeItem extends TreeItem { - private name: string; + private name: string = undefined; + + private desc: string = undefined; + + public command: Command = undefined; - private desc: string; + public tooltip: string = undefined; + + public iconPath: Uri = undefined; + + public description: string = undefined; constructor( private parent: ServingTreeItem | EventingTreeItem, @@ -95,55 +117,26 @@ export class ServingTreeItem extends TreeItem { } } } - } - - // private explorerPath: string; - - // get path(): string { - // if (!this.explorerPath) { - // let parent: ServingTreeItem; - // const segments: string[] = []; - // do { - // segments.splice(0, 0, this.getName()); - // parent = this.getParent(); - // } while (parent); - // this.explorerPath = path.join(...segments); - // } - // return this.explorerPath; - // } - - get iconPath(): Uri { - return Uri.file(path.join(__dirname, `../../../images/context`, CONTEXT_DATA[this.contextValue].icon)); - } - - get tooltip(): string { - return format(CONTEXT_DATA[this.contextValue].tooltip, this); - } - - // The description is the text after the label. It is grey and a smaller font. - get description(): string { - return this.desc || CONTEXT_DATA[this.contextValue].description; - } - - get command(): Command { - if (this.name === 'No Service Found') { - return; - } - let c: Command; if (this.contextValue === 'service_modified') { - c = { + this.command = { command: 'service.explorer.edit', title: 'Edit', arguments: [this], }; - } else { - c = { + } else if (this.name !== 'No Service Found') { + this.command = { command: 'service.explorer.openFile', title: 'Describe', arguments: [this], }; } - return c; + if (CONTEXT_DATA[this.contextValue]) { + this.tooltip = format((CONTEXT_DATA[this.contextValue] as contextTreeItemDataType).tooltip, this); + this.iconPath = Uri.file( + path.join(__dirname, `../../../images/context`, (CONTEXT_DATA[this.contextValue] as contextTreeItemDataType).icon), + ); + this.description = this.desc || (CONTEXT_DATA[this.contextValue] as contextTreeItemDataType).description; + } } getName(): string { @@ -151,7 +144,7 @@ export class ServingTreeItem extends TreeItem { } getChildren(): ProviderResult { - return CONTEXT_DATA[this.contextValue].getChildren(); + return (CONTEXT_DATA[this.contextValue] as contextTreeItemDataType).getChildren(); } getParent(): ServingTreeItem | EventingTreeItem { diff --git a/src/util/download.ts b/src/util/download.ts index 431a50f2..0bb9813f 100644 --- a/src/util/download.ts +++ b/src/util/download.ts @@ -4,7 +4,6 @@ *-----------------------------------------------------------------------------------------------*/ import * as fs from 'fs-extra'; - import request = require('request'); import progress = require('request-progress'); @@ -17,11 +16,14 @@ export class DownloadUtil { ): Promise { return new Promise((resolve, reject) => { let previous = 0; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call progress(request(fromUrl), { throttle: throttle || 250, delay: 0, lengthHeader: 'content-length', }) + // eslint-disable-next-line @typescript-eslint/no-empty-function + .on('response', () => {}) .on('progress', (state: { percent: number }) => { const current = Math.round(state.percent * 100); if (current !== previous && progressCallBack) { diff --git a/src/util/parse.ts b/src/util/parse.ts index c4ab6c07..34a36abf 100644 --- a/src/util/parse.ts +++ b/src/util/parse.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { Uri } from 'vscode'; import { readFile } from 'fs'; +import { Uri } from 'vscode'; /** * Promisify fs.readFile to parse JSON from a file. diff --git a/src/util/platform.ts b/src/util/platform.ts index fc01fbf8..65d9dfb4 100644 --- a/src/util/platform.ts +++ b/src/util/platform.ts @@ -5,10 +5,12 @@ export class Platform { // eslint-disable-next-line @typescript-eslint/no-explicit-any - static identify(map): any | undefined { + static identify(map: { [x: string]: () => any; win32?: () => string; default: any }): any | undefined { if (map[Platform.OS]) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return map[Platform.OS](); } + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call return map.default ? map.default() : undefined; } @@ -29,6 +31,7 @@ export class Platform { } static getUserHomePath(): string { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return Platform.identify({ win32: () => Platform.ENV.USERPROFILE, default: () => Platform.ENV.HOME, diff --git a/src/util/watch.ts b/src/util/watch.ts index d46d1fb7..6b4f34bd 100644 --- a/src/util/watch.ts +++ b/src/util/watch.ts @@ -3,12 +3,11 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import { EventEmitter } from 'events'; import { createReadStream, FSWatcher } from 'fs'; -import { ensureDirSync, watch } from 'fs-extra'; import { join } from 'path'; -import { EventEmitter } from 'events'; - import byline = require('byline'); +import { ensureDirSync, watch } from 'fs-extra'; export interface FileContentChangeNotifier { readonly watcher: FSWatcher; @@ -28,12 +27,15 @@ export class WatchUtil { } timer = setTimeout(() => { timer = undefined; - WatchUtil.grep(join(location, filename), /current-context:.*/).then((newContext: string) => { - if (context !== newContext) { - emitter.emit('file-changed'); - context = newContext; - } - }); + WatchUtil.grep(join(location, filename), /current-context:.*/) + .then((newContext: string) => { + if (context !== newContext) { + emitter.emit('file-changed'); + context = newContext; + } + }) + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + .catch((error) => `There was an error looking for the file. ${error}`); }, 500); } }); diff --git a/src/util/windowUtils.ts b/src/util/windowUtils.ts index b909f076..85217263 100644 --- a/src/util/windowUtils.ts +++ b/src/util/windowUtils.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import { window, Terminal, TerminalOptions } from 'vscode'; import * as path from 'path'; +import { window, Terminal, TerminalOptions } from 'vscode'; /** * Utility for VSCode windows. diff --git a/test/cli/cli-config.test.ts b/test/cli/cli-config.test.ts index 6658702f..97ea9e17 100644 --- a/test/cli/cli-config.test.ts +++ b/test/cli/cli-config.test.ts @@ -1,31 +1,32 @@ +/* eslint-disable no-unused-expressions */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import * as fs from 'fs'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as fs from 'fs'; import * as fsExtra from 'fs-extra'; +import { beforeEach } from 'mocha'; +import rewire = require('rewire'); +import * as shell from 'shelljs'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as shell from 'shelljs'; -import * as referee from '@sinonjs/referee'; -import { beforeEach } from 'mocha'; import { CmdCliConfig, Config } from '../../src/cli/cli-config'; -import { Platform } from '../../src/util/platform'; +import * as configData from '../../src/cli/cli-config.json'; import { KnAPI } from '../../src/cli/kn-api'; import { KubectlAPI } from '../../src/cli/kubectl-api'; -import * as configData from '../../src/cli/cli-config.json'; - -import rewire = require('rewire'); +import { Platform } from '../../src/util/platform'; const rewiredCLI = rewire('../../src/cli/cli-config'); // import configData = require('../../src/cli/cli-config.json'); -const { assert } = referee; -// const { expect } = chai; chai.use(sinonChai); suite('Command CLI Config', () => { const sandbox = sinon.createSandbox(); - let revertCLI: Function; - let revertFS: Function; + let revertCLI: () => void; + let revertFS: () => void; const shellMock = { // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -85,19 +86,19 @@ suite('Command CLI Config', () => { suite('load metadata', () => { test('should load metadata for Windows', () => { const requirements: Config = CmdCliConfig.loadMetadata(configData, 'win32'); - assert.equals(requirements.kn.dlFileName, 'kn-windows-amd64.exe'); + expect(requirements.kn.dlFileName, 'kn-windows-amd64.exe'); }); test('should load metadata for Mac', () => { const requirements: Config = CmdCliConfig.loadMetadata(configData, 'darwin'); - assert.equals(requirements.kn.dlFileName, 'kn-darwin-amd64'); + expect(requirements.kn.dlFileName, 'kn-darwin-amd64'); }); test('should load metadata for Linux', () => { const requirements: Config = CmdCliConfig.loadMetadata(configData, 'linux'); - assert.equals(requirements.kn.dlFileName, 'kn-linux-amd64'); + expect(requirements.kn.dlFileName, 'kn-linux-amd64'); }); test('should return undefined for a non-supported OS name like testOS', () => { const requirements: Config = CmdCliConfig.loadMetadata(configData, 'testOS'); - assert.isUndefined(requirements.kn); + expect(requirements.kn).to.be.undefined; }); test('should not load metadata if the platform object is missing', () => { const testData = { @@ -115,8 +116,8 @@ suite('Command CLI Config', () => { }, }; const requirements: Config = CmdCliConfig.loadMetadata(testData, 'linux'); - assert.isUndefined(requirements.kn.platform); - assert.equals(requirements.kn.dlFileName, 'kn'); + expect(requirements.kn.platform).to.be.undefined; + expect(requirements.kn.dlFileName, 'kn'); }); }); @@ -140,7 +141,7 @@ suite('Command CLI Config', () => { }; sandbox.stub(CmdCliConfig, 'loadMetadata').returns(testData); CmdCliConfig.resetConfiguration(); - assert.equals(CmdCliConfig.tools.kn.dlFileName, 'kn-linux-amd64'); + expect(CmdCliConfig.tools.kn.dlFileName, 'kn-linux-amd64'); }); }); @@ -165,7 +166,7 @@ suite('Command CLI Config', () => { }; CmdCliConfig.tools = testData; const result: string = await CmdCliConfig.detectOrDownload('kn'); - assert.equals(result, '/home/test/.vs-kn/kn'); + expect(result, '/home/test/.vs-kn/kn'); }); test('should return the location of the kn tool when using a linux OS and its been installed', async () => { const testData = { @@ -190,7 +191,7 @@ suite('Command CLI Config', () => { sandbox.stub(KnAPI, 'getKnVersion').resolves('0.20.0'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kn'); const expected = Platform.OS === 'win32' ? `D:\\home\\test\\.vs-kn\\kn` : `/home/test/.vs-kn/kn`; - assert.equals(result, expected); + expect(result, expected); }); test('should return the location of the kubectl tool when using a linux OS and its been installed', async () => { const testData = { @@ -215,7 +216,7 @@ suite('Command CLI Config', () => { sandbox.stub(KubectlAPI, 'getKubectlVersion').resolves('1.18.8'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kubectl'); const expected = Platform.OS === 'win32' ? `D:\\home\\test\\.vs-kubectl\\kubectl` : `/home/test/.vs-kubectl/kubectl`; - assert.equals(result, expected); + expect(result, expected); }); test('should download the kn tool when using a linux OS and it has NOT been installed and there was an error looking for it', async () => { const testData = { @@ -247,7 +248,7 @@ suite('Command CLI Config', () => { // Set a lower version to fail the check for finding the version sandbox.stub(KnAPI, 'getKnVersion').resolves('0.19.0'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kn'); - assert.isUndefined(result); + expect(result).to.be.undefined; }); test('should download the kn tool when using a linux OS and it has NOT been installed', async () => { const testData = { @@ -279,7 +280,7 @@ suite('Command CLI Config', () => { // Set a lower version to fail the check for finding the version sandbox.stub(KnAPI, 'getKnVersion').resolves('0.19.0'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kn'); - assert.isUndefined(result); + expect(result).to.be.undefined; }); test('should open the requirements page if Help is selected when downloading the kn tool when using a linux OS and it has NOT been installed', async () => { const testData = { @@ -311,7 +312,7 @@ suite('Command CLI Config', () => { // Set a lower version to fail the check for finding the version sandbox.stub(KnAPI, 'getKnVersion').resolves('0.19.0'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kn'); - assert.isUndefined(result); + expect(result).to.be.undefined; }); test('should do nothing if Cancel is selected when downloading the kn tool when using a linux OS and it has NOT been installed', async () => { const testData = { @@ -342,7 +343,7 @@ suite('Command CLI Config', () => { // Set a lower version to fail the check for finding the version sandbox.stub(KnAPI, 'getKnVersion').resolves('0.19.0'); const result: string = await rewiredCLI.CmdCliConfig.detectOrDownload('kn'); - assert.isUndefined(result); + expect(result).to.be.undefined; }); }); }); diff --git a/test/cli/cmdCli.test.ts b/test/cli/cmdCli.test.ts index 78417d7b..9f98712d 100644 --- a/test/cli/cmdCli.test.ts +++ b/test/cli/cmdCli.test.ts @@ -1,26 +1,24 @@ /* eslint-disable @typescript-eslint/no-empty-function */ +import * as childProcess from 'child_process'; +import { Readable } from 'stream'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; +import { beforeEach } from 'mocha'; +import rewire = require('rewire'); import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; -import { beforeEach } from 'mocha'; -import * as childProcess from 'child_process'; -import { Readable } from 'stream'; import { CmdCli, cliCommandToString, createCliCommand, CliCommand, CliExitData } from '../../src/cli/cmdCli'; -import rewire = require('rewire'); - const rewiredCLI = rewire('../../src/cli/cmdCli'); -const { assert } = referee; chai.use(sinonChai); suite('Create CLI Command', () => { test('should return the CliCommand', () => { const args = ['service', 'list', '-o', 'json']; const result: CliCommand = createCliCommand('kn', ...args); - assert.equals(result, { cliCommand: 'kn', cliArguments: args }); + expect(result).to.deep.equal({ cliCommand: 'kn', cliArguments: args }); }); }); suite('Convert CLI Command to a String', () => { @@ -28,12 +26,13 @@ suite('Convert CLI Command to a String', () => { const args = ['service', 'list', '-o', 'json']; const command = { cliCommand: 'kn', cliArguments: args }; const result: string = cliCommandToString(command); - assert.equals(result, 'kn service list -o json'); + expect(result).to.equal('kn service list -o json'); }); }); suite('Command CLI', () => { const sandbox = sinon.createSandbox(); const cmdCli = CmdCli.getInstance(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const rewiredCmdCli = rewiredCLI.CmdCli.getInstance(); beforeEach(() => { sandbox.stub(vscode.window, 'showErrorMessage').resolves(); @@ -45,10 +44,13 @@ suite('Command CLI', () => { test('should create a singleton of the CmdCli', () => { const cmdCliInstance = CmdCli.getInstance(); - assert.equals(cmdCliInstance, cmdCli); + expect(cmdCliInstance).to.deep.equal(cmdCli); }); test('should show the output channel when showOutputChannel is called', () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const spy = sandbox.spy(rewiredCmdCli.knOutputChannel, 'show'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + // eslint-disable-next-line rewiredCmdCli.showOutputChannel(); sinon.assert.calledOnce(spy); }); @@ -71,6 +73,10 @@ suite('Command CLI', () => { killed: false, pid: 1234, connected: false, + exitCode: null, + signalCode: null, + spawnargs: null, + spawnfile: null, kill(): boolean { return false; }, @@ -113,9 +119,11 @@ suite('Command CLI', () => { getMaxListeners(): number { return 123; }, + // eslint-disable-next-line @typescript-eslint/ban-types listeners(): Function[] { return null; }, + // eslint-disable-next-line @typescript-eslint/ban-types rawListeners(): Function[] { return null; }, @@ -133,12 +141,13 @@ suite('Command CLI', () => { .then((value) => { result = value; }) - .catch((err) => { + .catch((err: NodeJS.ErrnoException) => { // eslint-disable-next-line no-console - console.log(`cmdCli test execute error - ${err}`); + console.log(`cmdCli test execute error - ${err.message}`); }); // const result = await cmdCli.execute(createCliCommand('kn', 'version')); - assert.isUndefined(result); + // eslint-disable-next-line no-unused-expressions + expect(result).to.be.undefined; sinon.assert.calledOnce(stubSpawn); }); }); diff --git a/test/cli/execute.test.ts b/test/cli/execute.test.ts index 462a6421..ccd33d19 100644 --- a/test/cli/execute.test.ts +++ b/test/cli/execute.test.ts @@ -1,16 +1,14 @@ -/* eslint-disable @typescript-eslint/no-empty-function */ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; +import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; -import { beforeEach } from 'mocha'; +import { CmdCliConfig } from '../../src/cli/cli-config'; import * as cmdCli from '../../src/cli/cmdCli'; import { Execute, loadItems } from '../../src/cli/execute'; -import { CmdCliConfig } from '../../src/cli/cli-config'; import { WindowUtil } from '../../src/util/windowUtils'; -const { assert } = referee; chai.use(sinonChai); suite('Create CLI Command', () => { @@ -99,10 +97,10 @@ suite('Create CLI Command', () => { suite('Load Items', () => { test('should return JSON from results', () => { const result = loadItems({ error: undefined, stdout: '{"items": {"test": "data"}}' }); - assert.equals(result, { test: 'data' }); + expect(result).to.deep.equal({ test: 'data' }); }); test('should return empty JSON from results with "items"', () => { const result = loadItems({ error: undefined, stdout: '{"test": "data"}' }); - assert.equals(result, []); + expect(result).to.deep.equal([]); }); }); diff --git a/test/cli/kn-api.test.ts b/test/cli/kn-api.test.ts index e1ecb714..6ce97407 100644 --- a/test/cli/kn-api.test.ts +++ b/test/cli/kn-api.test.ts @@ -1,28 +1,27 @@ +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; +import rewire = require('rewire'); import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; -import { KnAPI } from '../../src/cli/kn-api'; +import * as sinonChai from 'sinon-chai'; import { CliCommand, CmdCli } from '../../src/cli/cmdCli'; +import { KnAPI } from '../../src/cli/kn-api'; -import rewire = require('rewire'); - -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('KN CLI Command', () => { test('should create a proper command string', () => { const api = rewire('../../src/cli/kn-api'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const knCliCommand = api.__get__('knCliCommand'); const knArguments: string[] = ['service', 'list']; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call const commandApi: CliCommand = knCliCommand(knArguments); const command: CliCommand = { cliArguments: ['service', 'list'], cliCommand: 'kn', }; - assert.equals(command, commandApi); + expect(commandApi).to.deep.equal(command); }); }); @@ -55,7 +54,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createService({ name: 'mySvc', image: 'dev.local/ns/image:latest' }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with image using --force flag', () => { const command: CliCommand = { @@ -67,7 +66,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', force: true, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with a port', () => { const command: CliCommand = { @@ -79,7 +78,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', port: 80, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with multiple environment variables', () => { const command: CliCommand = { @@ -101,7 +100,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', env: envMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with multiple environment variables using --force flag', () => { const command: CliCommand = { @@ -125,7 +124,7 @@ suite('KN API commands that will', () => { force: true, env: envMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with name, image, and namespace', () => { const command: CliCommand = { @@ -137,7 +136,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', namespace: 'myNS', }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with annotations', () => { const command: CliCommand = { @@ -159,7 +158,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', annotation: annotationMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with labels', () => { const command: CliCommand = { @@ -181,7 +180,7 @@ suite('KN API commands that will', () => { image: 'dev.local/ns/image:latest', label: labelMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create a service with all the options applied', () => { const command: CliCommand = { @@ -221,7 +220,7 @@ suite('KN API commands that will', () => { annotation: annotationMap, label: labelMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); suite('Update a Service', () => { @@ -271,7 +270,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateService({ name: 'mySvc', image: 'dev.local/ns/image:latest' }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with a port', () => { const command: CliCommand = { @@ -282,7 +281,7 @@ suite('KN API commands that will', () => { name: 'mySvc', port: 80, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with name and namespace', () => { const command: CliCommand = { @@ -293,7 +292,7 @@ suite('KN API commands that will', () => { name: 'mySvc', namespace: 'myNS', }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with multiple environment variables', () => { const command: CliCommand = { @@ -304,7 +303,7 @@ suite('KN API commands that will', () => { name: 'mySvc', env: envMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with annotations', () => { const command: CliCommand = { @@ -323,7 +322,7 @@ suite('KN API commands that will', () => { name: 'mySvc', annotation: annotationMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with labels', () => { const command: CliCommand = { @@ -334,7 +333,7 @@ suite('KN API commands that will', () => { name: 'mySvc', label: labelMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with limits', () => { const command: CliCommand = { @@ -345,7 +344,7 @@ suite('KN API commands that will', () => { name: 'mySvc', limit: limitMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with requests', () => { const command: CliCommand = { @@ -356,7 +355,7 @@ suite('KN API commands that will', () => { name: 'mySvc', request: requestMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with tags', () => { const command: CliCommand = { @@ -367,7 +366,7 @@ suite('KN API commands that will', () => { name: 'mySvc', tag: tagMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with traffic', () => { const command: CliCommand = { @@ -378,7 +377,7 @@ suite('KN API commands that will', () => { name: 'mySvc', traffic: trafficMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with untag', () => { const command: CliCommand = { @@ -389,7 +388,7 @@ suite('KN API commands that will', () => { name: 'mySvc', untag: untagMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update a service with all the options applied', () => { const command: CliCommand = { @@ -452,7 +451,7 @@ suite('KN API commands that will', () => { traffic: trafficMap, untag: untagMap, }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); suite('List Services', () => { @@ -462,7 +461,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listServices(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -472,7 +471,7 @@ suite('KN API commands that will', () => { cliArguments: ['revision', 'list', '-o', 'json'], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.listRevisions().cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.listRevisions().cliArguments); }); test('should return command for listing revisions for a service', () => { const sName = 'myService'; @@ -480,7 +479,7 @@ suite('KN API commands that will', () => { cliArguments: ['revision', 'list', '-o', 'json', '-s', sName], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.listRevisionsForService(sName).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.listRevisionsForService(sName).cliArguments); }); }); @@ -493,7 +492,7 @@ suite('KN API commands that will', () => { cliArguments: [feature, 'describe', name, '-o', outputFormat], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.describeFeature(feature, name, outputFormat).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.describeFeature(feature, name, outputFormat).cliArguments); }); test('should return command for describing the service foo in YAML', () => { const feature = 'service'; @@ -503,7 +502,7 @@ suite('KN API commands that will', () => { cliArguments: [feature, 'describe', name, '-o', outputFormat], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.describeFeature(feature, name, outputFormat).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.describeFeature(feature, name, outputFormat).cliArguments); }); test('should return command for describing the service foo when no output is set', () => { const feature = 'service'; @@ -512,7 +511,7 @@ suite('KN API commands that will', () => { cliArguments: [feature, 'describe', name], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.describeFeature(feature, name).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.describeFeature(feature, name).cliArguments); }); }); @@ -524,7 +523,7 @@ suite('KN API commands that will', () => { cliArguments: [feature, 'delete', name], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.deleteFeature(feature, name).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.deleteFeature(feature, name).cliArguments); }); }); @@ -534,7 +533,7 @@ suite('KN API commands that will', () => { cliArguments: ['route', 'list', '-o', 'json'], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.listRoutes().cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.listRoutes().cliArguments); }); test('should return command for listing routes for a service', () => { const sName = 'myService'; @@ -542,7 +541,7 @@ suite('KN API commands that will', () => { cliArguments: ['route', 'list', sName, '-o', 'json'], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.listRoutesForService(sName).cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.listRoutesForService(sName).cliArguments); }); }); @@ -552,7 +551,7 @@ suite('KN API commands that will', () => { cliArguments: ['version'], cliCommand: 'kn', }; - assert.equals(command.cliArguments, KnAPI.printKnVersion().cliArguments); + expect(command.cliArguments).to.deep.equal(KnAPI.printKnVersion().cliArguments); }); }); @@ -560,29 +559,29 @@ suite('KN API commands that will', () => { test('should return the version number for a stable release', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: 'Version: v0.14.0' }); const version = await KnAPI.getKnVersion('path/to/kubectl'); - expect(version).equals('0.14.0'); + expect(version).to.equal('0.14.0'); }); test('should return the version number for a nightly release', async () => { sandbox .stub(CmdCli.getInstance(), 'execute') .resolves({ error: undefined, stdout: 'Version: v20200309-local-34433f6' }); const version = await KnAPI.getKnVersion('path/to/kubectl'); - expect(version).equals('20200309'); + expect(version).to.equal('20200309'); }); test('should return Undefined when the version is not the correct text', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: 'not the version text' }); const version = await KnAPI.getKnVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); test('should return Undefined when the version is not returned', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: undefined }); const version = await KnAPI.getKnVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); test('should return Undefined for errors', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').throws({ error: 'Error generated by a test', stdout: undefined }); const version = await KnAPI.getKnVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); }); @@ -593,7 +592,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listSources(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -604,7 +603,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listSourceTypes(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -617,7 +616,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createSource('ping', 'mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create an event source with source type and name with options', () => { @@ -626,7 +625,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createSource('ping', 'mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -639,7 +638,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateSource('ping', 'mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update an event source with source type and name with options', () => { @@ -648,7 +647,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateSource('ping', 'mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -659,7 +658,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.deleteSource('ping', 'mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -670,7 +669,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.describeSource('ping', 'mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -681,7 +680,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listSubscriptions(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -694,7 +693,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createSubscription('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create an event subscription with subscription type and name with options', () => { @@ -703,7 +702,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createSubscription('mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -716,7 +715,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateSubscription('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update an event subscription with subscription type and name with options', () => { @@ -725,7 +724,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateSubscription('mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -736,7 +735,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.deleteSubscription('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -747,7 +746,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listTriggers(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -760,7 +759,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createTrigger('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should create an event trigger with name and options', () => { @@ -769,7 +768,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createTrigger('mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -782,7 +781,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateTrigger('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); test('should update an event trigger with name and options', () => { @@ -791,7 +790,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.updateTrigger('mySvc', sink); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -802,7 +801,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.deleteTrigger('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -813,7 +812,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listBrokers(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -824,7 +823,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createBroker('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -835,7 +834,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.deleteBroker('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -846,7 +845,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listChannels(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -857,7 +856,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.listChannelTypes(); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -868,7 +867,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.createChannel('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -879,7 +878,7 @@ suite('KN API commands that will', () => { cliCommand: 'kn', }; const commandAPI = KnAPI.deleteChannel('mySvc'); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); }); diff --git a/test/cli/kubectl-api.test.ts b/test/cli/kubectl-api.test.ts index 308d4321..f4c65638 100644 --- a/test/cli/kubectl-api.test.ts +++ b/test/cli/kubectl-api.test.ts @@ -1,28 +1,28 @@ +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; +import rewire = require('rewire'); import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; -import { KubectlAPI } from '../../src/cli/kubectl-api'; +import * as sinonChai from 'sinon-chai'; import { CliCommand, CmdCli } from '../../src/cli/cmdCli'; +import { KubectlAPI } from '../../src/cli/kubectl-api'; -import rewire = require('rewire'); - -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Kubectl CLI Command', () => { test('should create a proper command string', () => { const api = rewire('../../src/cli/kubectl-api'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const kubectlCliCommand = api.__get__('kubectlCliCommand'); const kubectlArguments: string[] = ['version', '--short', '--client']; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + // eslint-disable-next-line const commandApi: CliCommand = kubectlCliCommand(kubectlArguments); const command: CliCommand = { cliArguments: ['version', '--short', '--client'], cliCommand: 'kubectl', }; - assert.equals(command, commandApi); + expect(commandApi).to.deep.equal(command); }); }); @@ -34,7 +34,7 @@ suite('Kubectl API commands that will', () => { cliCommand: 'kubectl', }; const commandAPI = KubectlAPI.applyYAML('./path.yaml', { override: false }); - assert.equals(command.cliArguments, commandAPI.cliArguments); + expect(commandAPI.cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -44,7 +44,7 @@ suite('Kubectl API commands that will', () => { cliArguments: ['version', '--short', '--client'], cliCommand: 'kubectl', }; - assert.equals(command.cliArguments, KubectlAPI.printVersion().cliArguments); + expect(KubectlAPI.printVersion().cliArguments).to.deep.equal(command.cliArguments); }); }); @@ -58,22 +58,22 @@ suite('Kubectl API commands that will', () => { test('should return the version number', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: 'Client Version: v1.18.3' }); const version = await KubectlAPI.getKubectlVersion('path/to/kubectl'); - expect(version).equals('1.18.3'); + expect(version).to.equal('1.18.3'); }); test('should return Undefined when the version is not the correct text', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: 'not the version text' }); const version = await KubectlAPI.getKubectlVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); test('should return Undefined when the version is not returned', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').resolves({ error: undefined, stdout: undefined }); const version = await KubectlAPI.getKubectlVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); test('should return Undefined for errors', async () => { sandbox.stub(CmdCli.getInstance(), 'execute').throws({ error: 'Error generated by a test', stdout: undefined }); const version = await KubectlAPI.getKubectlVersion('path/to/kubectl'); - expect(version).equals(undefined); + expect(version).to.equal(undefined); }); }); }); diff --git a/test/cli/virtualfs.test.ts b/test/cli/virtualfs.test.ts index e5d313eb..7c83e419 100644 --- a/test/cli/virtualfs.test.ts +++ b/test/cli/virtualfs.test.ts @@ -1,25 +1,26 @@ -import { Disposable, FileStat, FileType, Uri, window, workspace, WorkspaceFolder } from 'vscode'; -import * as chai from 'chai'; +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ import * as fs from 'fs'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import * as pth from 'path'; +import { Disposable, FileStat, FileType, Uri, window, workspace, WorkspaceFolder } from 'vscode'; +import { expect } from 'chai'; +import * as chai from 'chai'; import { beforeEach } from 'mocha'; +import rewire = require('rewire'); +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { CliExitData } from '../../src/cli/cmdCli'; import * as knv from '../../src/cli/virtualfs'; -import rewire = require('rewire'); - const rewiredVFS = rewire('../../src/cli/virtualfs'); -const { assert } = referee; -// const { expect } = chai; chai.use(sinonChai); suite('VirtualFileSystem', () => { const sandbox = sinon.createSandbox(); - let revertFS: Function; + let revertFS: () => void; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const knvfs: knv.KnativeResourceVirtualFileSystemProvider = new rewiredVFS.KnativeResourceVirtualFileSystemProvider(); const _uriLocalFile = Uri.file('service-local.yaml'); @@ -79,7 +80,7 @@ suite('VirtualFileSystem', () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars mkdirSync: function mkdirSync(path: fs.PathLike, options?: number | string | fs.MakeDirectoryOptions | null): void { if (!path) { - const err = `test mock of mkdirSync can not parse "${path}"`; + const err = `test mock of mkdirSync can not parse "${path.toString()}"`; throw err; } }, @@ -152,16 +153,16 @@ suite('VirtualFileSystem', () => { suite('VFS URI conversion', () => { test('should return unique URI', () => { const builtURI: Uri = rewiredVFS.vfsUri('knmsx', 'service', 'example', 'yaml'); - assert.equals(builtURI.authority, _uriExternalFile.authority); - assert.equals(builtURI.fsPath, _uriExternalFile.fsPath); - assert.equals(builtURI.scheme, _uriExternalFile.scheme); + expect(builtURI.authority).to.equal(_uriExternalFile.authority); + expect(builtURI.fsPath).to.equal(_uriExternalFile.fsPath); + expect(builtURI.scheme).to.equal(_uriExternalFile.scheme); }); test('should return unique URI with optional Namespace', () => { const builtURI: Uri = rewiredVFS.vfsUri('knreadonly', 'service', 'example', 'yaml', 'testNamespace'); - assert.equals(builtURI.authority, _uriExternalFileWithNamespace.authority); - assert.equals(builtURI.fsPath, _uriExternalFileWithNamespace.fsPath); - assert.equals(builtURI.scheme, _uriExternalFileWithNamespace.scheme); - assert.equals(builtURI.query.includes('testNamespace'), _uriExternalFileWithNamespace.query.includes('testNamespace')); + expect(builtURI.authority).to.equal(_uriExternalFileWithNamespace.authority); + expect(builtURI.fsPath).to.equal(_uriExternalFileWithNamespace.fsPath); + expect(builtURI.scheme).to.equal(_uriExternalFileWithNamespace.scheme); + expect(builtURI.query.includes('testNamespace')).to.equal(_uriExternalFileWithNamespace.query.includes('testNamespace')); }); }); // TODO: figure out how to test an event that is fired. @@ -169,7 +170,7 @@ suite('VirtualFileSystem', () => { test('should return a Disposable object', () => { const watcher = knvfs.watch(_uriLocalFile, null); // eslint-disable-next-line @typescript-eslint/no-empty-function - assert.equals(watcher, new Disposable(() => {})); + expect(watcher).to.deep.equal(new Disposable(() => {})); }); }); @@ -183,7 +184,7 @@ suite('VirtualFileSystem', () => { test('should return the file stat information for a file passed in to it.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const fileStat: FileStat = await knvfs.stat(_uriLocalFile); - assert.equals(fileStat, fstat); + expect(fileStat).to.deep.equal(fstat); }); test('should throw an error if it can not find the workspace file.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(emptyWSFolders); @@ -193,7 +194,7 @@ suite('VirtualFileSystem', () => { } catch (err) { error = err; } - assert(error); + expect(error); }); test('should throw an error if the uri is not of type File.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(notFileWSFolders); @@ -203,13 +204,13 @@ suite('VirtualFileSystem', () => { } catch (err) { error = err; } - assert(error); + expect(error); }); test('should return the file stat information for a file if multiple files are passed in to it.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(multipleWSFolders); sandbox.stub(window, 'showWorkspaceFolderPick').resolves(multipleWSFolders[0]); const fileStat: FileStat = await knvfs.stat(_uriLocalFile); - assert.equals(fileStat, fstat); + expect(fileStat).to.deep.equal(fstat); }); }); @@ -221,38 +222,38 @@ suite('VirtualFileSystem', () => { test('should return a list of files from one folder.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const foundFiles: [string, FileType][] = await knvfs.readDirectory(null); - assert.equals(foundFiles, files); + expect(foundFiles).to.deep.equal(files); }); test('should return a list of files when no sub-folder is provided.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const foundPath = await rewiredVFS.getFilePathAsync(); - assert.equals(foundPath, _uriWorkspaceRoot.fsPath); + expect(foundPath).to.equal(_uriWorkspaceRoot.fsPath); }); test('should throw an error if it can not find the workspace folder.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(emptyWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readDirectory(_uriLocalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should throw an error if the uri is not of type File.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(notFileWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readDirectory(_uriLocalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should return a list of files if multiple folders are found.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(multipleWSFolders); sandbox.stub(window, 'showWorkspaceFolderPick').resolves(multipleWSFolders[0]); const foundFiles: [string, FileType][] = await knvfs.readDirectory(_uriLocalFile); - assert.equals(foundFiles, files); + expect(foundFiles).to.deep.equal(files); }); }); suite('Create Directory', () => { @@ -268,7 +269,7 @@ suite('VirtualFileSystem', () => { const spyExists = sandbox.spy(fsMock, 'existsSync'); const spyMkDir = sandbox.spy(fsMock, 'mkdirSync'); sandbox.stub(workspace, 'workspaceFolders').value(emptyWSFolders); - let error; + let error: NodeJS.ErrnoException; try { await knvfs.createDirectory(null); } catch (err) { @@ -276,11 +277,11 @@ suite('VirtualFileSystem', () => { } sinon.assert.calledOnce(spyExists); sinon.assert.calledOnce(spyMkDir); - assert(error); + expect(error); }); }); suite('Read File', () => { - let revertKnvfsMock: Function; + let revertKnvfsMock: () => void; const knvfsMock = { // eslint-disable-next-line @typescript-eslint/no-unused-vars createDirectory: function createDirectory(uri: Uri): void | Thenable { @@ -570,34 +571,34 @@ status: sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const testContent: Uint8Array | Thenable = Buffer.from(testLocalServiceContent, 'utf8'); const foundLocalContent: Uint8Array | Thenable = await knvfs.readFile(_uriLocalFile); - assert.equals(foundLocalContent, testContent); + expect(foundLocalContent).to.deep.equal(testContent); }); test('should throw an error if it can not find the workspace folder while attempting to read local yaml.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(emptyWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriLocalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should throw an error if the uri is not of type File while attempting to read local yaml.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(notFileWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriLocalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should return the content of a local yaml file if multiple folders are found.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(multipleWSFolders); sandbox.stub(window, 'showWorkspaceFolderPick').resolves(multipleWSFolders[0]); const testContent: Uint8Array | Thenable = Buffer.from(testLocalServiceContent, 'utf8'); const foundLocalContent: Uint8Array | Thenable = await knvfs.readFile(_uriLocalFile); - assert.equals(foundLocalContent, testContent); + expect(foundLocalContent).to.deep.equal(testContent); }); // External file @@ -605,13 +606,13 @@ status: sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const testContent: Uint8Array | Thenable = Buffer.from(externalYamlFileContent, 'utf8'); const foundExternalContent: Uint8Array | Thenable = await knvfs.readFile(_uriExternalFile); - assert.equals(foundExternalContent, testContent); + expect(foundExternalContent).to.deep.equal(testContent); }); test('should return the content of a external yaml file from a single workspace that is readonly.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); const testContent: Uint8Array | Thenable = Buffer.from(externalYamlFileContentFull, 'utf8'); const foundExternalContent: Uint8Array | Thenable = await knvfs.readFile(_uriExternalFileReadonly); - assert.equals(foundExternalContent, testContent); + expect(foundExternalContent).to.deep.equal(testContent); }); test('should return the content of a external yaml file from a single folder for a Revision.', async () => { sandbox.restore(); @@ -620,7 +621,7 @@ status: sandbox.stub(knvfs.knExecutor, 'execute').resolves(cedRevision); const testContent: Uint8Array | Thenable = Buffer.from(example75w7vYaml, 'utf8'); const foundExternalContent: Uint8Array | Thenable = await knvfs.readFile(_uriExternalFileForRevision); - assert.equals(foundExternalContent, testContent); + expect(foundExternalContent).to.deep.equal(testContent); }); test('should return the content of a external yaml file from a single folder for a Tagged Revision.', async () => { sandbox.restore(); @@ -629,57 +630,57 @@ status: sandbox.stub(knvfs.knExecutor, 'execute').resolves(cedRevision); const testContent: Uint8Array | Thenable = Buffer.from(example75w7vYaml, 'utf8'); const foundExternalContent: Uint8Array | Thenable = await knvfs.readFile(_uriExternalFileForTaggedRevision); - assert.equals(foundExternalContent, testContent); + expect(foundExternalContent).to.deep.equal(testContent); }); test('should return the content of a external yaml file even if it can not find the workspace folder.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(emptyWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriExternalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should return the content of a external yaml file even if the uri is not of type File while getting the workspace folder.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(notFileWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriExternalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should throw an error if fetching the yaml has an error.', async () => { sandbox.restore(); sandbox.stub(window, 'showErrorMessage').resolves(); sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); sandbox.stub(knvfs.knExecutor, 'execute').resolves(cedError); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriExternalFile); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should throw an error if the resource is not Knative.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.readFile(_uriExternalFileNotKnative); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should return the content of a external yaml file if multiple folders are found.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(multipleWSFolders); sandbox.stub(window, 'showWorkspaceFolderPick').resolves(multipleWSFolders[0]); const testContent: Uint8Array | Thenable = Buffer.from(externalYamlFileContent, 'utf8'); const foundExternalContent: Uint8Array | Thenable = await knvfs.readFile(_uriExternalFile); - assert.equals(foundExternalContent, testContent); + expect(foundExternalContent).to.deep.equal(testContent); }); }); suite('Write File', () => { @@ -732,13 +733,13 @@ status: }); test('should throw an error if it can not find the workspace folder while trying delete a yaml file to folder in a workspace.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.delete(_uriLocalErrorFile, { recursive: false }); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should not delete a yaml file to folder in a workspace if it cant find it.', async () => { const spyExists = sandbox.spy(fsMock, 'existsSync'); @@ -760,13 +761,13 @@ status: }); test('should throw an error if it can not find the workspace folder while trying to rename a yaml file to folder in a workspace.', async () => { sandbox.stub(workspace, 'workspaceFolders').value(oneWSFolders); - let error; + let error: NodeJS.ErrnoException | null = null; try { await knvfs.rename(_uriLocalErrorFile, _uriLocalErrorFile, { overwrite: false }); } catch (err) { error = err; } - assert(error); + expect(error); }); test('should not rename a yaml file in folder in a workspace if it cant find it.', async () => { const spyExists = sandbox.spy(fsMock, 'existsSync'); diff --git a/test/coverage.ts b/test/coverage.ts index 9344d160..1f26a16f 100644 --- a/test/coverage.ts +++ b/test/coverage.ts @@ -1,15 +1,12 @@ -/* eslint-disable consistent-this */ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable @typescript-eslint/no-explicit-any */ /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import glob = require('glob'); -import paths = require('path'); import fs = require('fs'); +import paths = require('path'); +import glob = require('glob'); import istanbul = require('istanbul'); import remapIstanbul = require('remap-istanbul'); @@ -45,8 +42,9 @@ export class CoverageRunner { public setupCoverage(): void { // Set up Code Coverage, hooking require so that instrumented code is returned - // eslint-disable-next-line @typescript-eslint/no-this-alias + // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this const self = this; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access self.instrumenter = new istanbul.Instrumenter({ coverageVariable: self.coverageVar }); const sourceRoot = paths.join(self.testsRoot, self.options.relativeSourcePath); @@ -57,12 +55,12 @@ export class CoverageRunner { }); // Create a match function - taken from the run-with-cover.js in istanbul. - // eslint-disable-next-line @typescript-eslint/no-var-requires - // eslint-disable-next-line global-require + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, global-require const decache = require('decache'); const fileMap: any = {}; srcFiles.forEach((file) => { const fullPath = paths.join(sourceRoot, file); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access fileMap[fullPath] = true; // On Windows, extension is loaded pre-test hooks and this mean we lose @@ -71,17 +69,22 @@ export class CoverageRunner { // This doesn't impact tests, but is a concern if we had some integration // tests that relied on VSCode accessing our module since there could be // some shared global state that we lose. + // eslint-disable-next-line @typescript-eslint/no-unsafe-call decache(fullPath); }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return self.matchFn = (file: string): boolean => fileMap[file]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access self.matchFn.files = Object.keys(fileMap); // Hook up to the Require function so that when this is called, if any of our source files // are required, the instrumented version is pulled in instead. These instrumented versions // write to a global coverage variable with hit counts whenever they are accessed + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call self.transformer = self.instrumenter.instrumentSync.bind(self.instrumenter); const hookOpts = { verbose: false, extensions: ['.js'] }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call istanbul.hook.hookRequire(self.matchFn, self.transformer, hookOpts); // initialize the global variable to stop mocha from complaining about leaks @@ -97,32 +100,41 @@ export class CoverageRunner { * @memberOf CoverageRunner */ public reportCoverage(): void { - // eslint-disable-next-line @typescript-eslint/no-this-alias + // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this const self = this; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call istanbul.hook.unhookRequire(); if (typeof global[self.coverageVar] === 'undefined' || Object.keys(global[self.coverageVar]).length === 0) { + // eslint-disable-next-line no-console console.error('No coverage information was collected, exit without writing coverage information'); return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const cov = global[self.coverageVar]; // TODO consider putting this under a conditional flag // Files that are not touched by code ran by the test runner is manually instrumented, to // illustrate the missing coverage. + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call self.matchFn.files.forEach((file: any) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access if (cov[file]) { return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-call self.transformer(fs.readFileSync(file, 'utf-8'), file); // When instrumenting the code, istanbul will give each FunctionDeclaration a value of 1 in coverState.s, // presumably to compensate for function hoisting. We need to reset this, as the function was not hoisted, // as it was never loaded. + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access Object.keys(self.instrumenter.coverState.s).forEach((key) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access self.instrumenter.coverState.s[key] = 0; }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access cov[file] = self.instrumenter.coverState; }); @@ -137,20 +149,26 @@ export class CoverageRunner { fs.writeFileSync(coverageFile, JSON.stringify(cov), 'utf8'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const remappedCollector = remapIstanbul.remap(cov, { warn: (warning: any) => { // We expect some warnings as any JS file without a typescript mapping will cause this. // By default, we'll skip printing these to the console as it clutters it up if (self.options.verbose) { + // eslint-disable-next-line no-console console.warn(warning); } }, }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access const reporter = new istanbul.Reporter(undefined, reportingDir); const reportTypes = self.options.reports instanceof Array ? self.options.reports : ['lcov']; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call reporter.addAll(reportTypes); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call reporter.write(remappedCollector, true, () => { + // eslint-disable-next-line no-console console.log(`reports written to ${reportingDir}`); }); } diff --git a/test/editor/knativeOpenTextDocument.test.ts b/test/editor/knativeOpenTextDocument.test.ts index f8c12305..d7b98e31 100644 --- a/test/editor/knativeOpenTextDocument.test.ts +++ b/test/editor/knativeOpenTextDocument.test.ts @@ -1,14 +1,17 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +import { fail } from 'assert'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import * as yaml from 'yaml'; -import { fail } from 'assert'; import { ServingContextType } from '../../src/cli/config'; import * as virtualfs from '../../src/cli/virtualfs'; import { openTreeItemInEditor } from '../../src/editor/knativeOpenTextDocument'; -import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; +import * as service from '../../src/knative/service'; import { Service } from '../../src/knative/service'; +import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; chai.use(sinonChai); @@ -132,7 +135,7 @@ status: url: http://example-a-serverless-example.apps.devcluster.openshift.com `; const uriObject = ('uri' as unknown) as vscode.Uri; - const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered); + const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered) as service.Items; const showTextDocOptions = { preserveFocus: true, preview: true }; const textDocumentObject = ('textDoc' as unknown) as vscode.TextDocument; const testService: Service = new Service( @@ -180,7 +183,7 @@ status: sinon.assert.calledWith(stubOpenTextDoc, sinon.match(uriObject)); // verify inner promise call and passed arguments sinon.assert.calledOnce(spyShowTextDoc); - chai.expect(spyShowTextDoc.firstCall.args.length).to.eq(2); + expect(spyShowTextDoc.firstCall.args.length).to.eq(2); sinon.assert.calledWith(spyShowTextDoc, sinon.match(textDocumentObject), sinon.match(showTextDocOptions)); // verify that no show error was reached in the code sinon.assert.notCalled(stubShowError); @@ -200,8 +203,8 @@ status: await openTreeItemInEditor(testServiceTreeItem, 'yaml', false); fail('Expected Error was not thrown when there is no doc when opening a Service tree item in editor'); } catch (error) { - chai.expect(error).to.be.instanceOf(Error); - chai.expect(error.message).to.include('Error loading resource located at'); + expect(error).to.be.instanceOf(Error); + expect(error.message).to.include('Error loading resource located at'); } sinon.assert.notCalled(spyShowTextDoc); sinon.assert.notCalled(stubShowError); @@ -213,8 +216,8 @@ status: await openTreeItemInEditor(testServiceTreeItemModified, 'yaml', true); fail('Expected Error was not thrown when there is no doc when opening a Service tree item in editor'); } catch (error) { - chai.expect(error).to.be.instanceOf(Error); - chai.expect(error.message).to.include('Error loading resource located at'); + expect(error).to.be.instanceOf(Error); + expect(error.message).to.include('Error loading resource located at'); } sinon.assert.notCalled(spyShowTextDoc); }); @@ -226,7 +229,7 @@ status: sinon.assert.notCalled(spyShowTextDoc); sinon.assert.calledOnce(stubShowError); const showErrorArgs = stubShowError.firstCall.args; - chai.expect(showErrorArgs.length).to.eq(1); - chai.expect(showErrorArgs[0]).to.include('Error loading document: myError'); + expect(showErrorArgs).to.be.lengthOf(1); + expect(showErrorArgs[0]).to.include('Error loading document: myError'); }); }); diff --git a/test/editor/knativeReadonlyProvider.test.ts b/test/editor/knativeReadonlyProvider.test.ts index 6dd4e339..b21d820c 100644 --- a/test/editor/knativeReadonlyProvider.test.ts +++ b/test/editor/knativeReadonlyProvider.test.ts @@ -1,12 +1,11 @@ import { Uri } from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; +import * as sinonChai from 'sinon-chai'; import { KnativeReadonlyProvider } from '../../src/editor/knativeReadonlyProvider'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; -const { assert } = referee; chai.use(sinonChai); suite('Readonly Provider', () => { @@ -137,6 +136,6 @@ suite('Readonly Provider', () => { test('should display text', async () => { sandbox.stub(knrp.knvfs, 'loadResource').resolves(externalYamlFileContentFull); const fetchedData: string = await knrp.provideTextDocumentContent(_uriExternalFileReadonly); - assert(fetchedData, externalYamlFileContentFull); + expect(fetchedData).to.deep.equal(externalYamlFileContentFull); }); }); diff --git a/test/editor/knativeSchemaRegister.test.ts b/test/editor/knativeSchemaRegister.test.ts index 4f8b2014..a067affe 100644 --- a/test/editor/knativeSchemaRegister.test.ts +++ b/test/editor/knativeSchemaRegister.test.ts @@ -1,15 +1,12 @@ -import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as serviceSchema from '../../schemas/knservice.json'; - +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +import { expect } from 'chai'; import rewire = require('rewire'); -import sinon = require('sinon'); +import * as serviceSchema from '../../schemas/knservice.json'; const rewiredSchemaRegister = rewire('../../src/editor/knativeSchemaRegister'); const schemaJSON = JSON.stringify(serviceSchema); -chai.use(sinonChai); - suite('Register Schema', () => { const uriMock = rewiredSchemaRegister.__get__('onRequestSchemaURI'); const contentMock = rewiredSchemaRegister.__get__('onRequestSchemaContent'); @@ -20,18 +17,18 @@ suite('Register Schema', () => { test('should return the schema URI when requested', () => { const returnedSchema: string = uriMock(knmsxUriString); - sinon.assert.match(returnedSchema, `knmsx://schema/knative`); + expect(returnedSchema, `knmsx://schema/knative`); }); test('should return undefined when the schema is knreadonly instead of returning the URI', () => { const returnedSchema: string = uriMock(knreadonlyUriString); - sinon.assert.match(returnedSchema, undefined); + expect(returnedSchema, undefined); }); test('should return the schema content', () => { const returnedSchema: string = contentMock(knmsxUriString); - sinon.assert.match(returnedSchema, schemaJSON); + expect(returnedSchema, schemaJSON); }); test('should return undefined when the schema ia knreadonly instead of returning the schema content', () => { const returnedSchema: string = contentMock(knreadonlyUriString); - sinon.assert.match(returnedSchema, undefined); + expect(returnedSchema, undefined); }); }); diff --git a/test/eventingTree/brokerDataProvider.test.ts b/test/eventingTree/brokerDataProvider.test.ts index 485a7c6f..367e6ba2 100644 --- a/test/eventingTree/brokerDataProvider.test.ts +++ b/test/eventingTree/brokerDataProvider.test.ts @@ -1,19 +1,17 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as brokerIncompleteData from './brokerIncomplete.json'; import { EventingContextType } from '../../src/cli/config'; -import { Broker } from '../../src/knative/broker'; +import { BrokerDataProvider } from '../../src/eventingTree/brokerDataProvider'; import { EventingDataProvider } from '../../src/eventingTree/eventingDataProvider'; import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; -import { BrokerDataProvider } from '../../src/eventingTree/brokerDataProvider'; +import { Broker } from '../../src/knative/broker'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('BrokerDataProvider', () => { @@ -54,19 +52,19 @@ suite('BrokerDataProvider', () => { sandbox.stub(brokerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: `No brokers found.` }); const result = await brokerDataProvider.getBrokers(eventingFolderNodes[0]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Broker Found'); - expect(result[0].getName()).equals('No Broker Found'); + expect(result[0].description).to.equal(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Broker Found'); + expect(result[0].getName()).to.equal('No Broker Found'); }); test('should return broker nodes', async () => { sandbox.restore(); sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(brokerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(brokerData) }); const result = await brokerDataProvider.getBrokers(eventingFolderNodes[0]); - assert.equals(result[0], testBrokerTreeItems[0]); + expect(result[0]).to.deep.equal(testBrokerTreeItems[0]); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('example-broker0'); + expect(result[0].label.label).to.equal('example-broker0'); }); test('should refetch broker info when it is incomplete, then return broker nodes', async () => { sandbox.restore(); @@ -75,9 +73,9 @@ suite('BrokerDataProvider', () => { exeStub.onFirstCall().resolves({ error: undefined, stdout: JSON.stringify(brokerIncompleteData) }); exeStub.onSecondCall().resolves({ error: undefined, stdout: JSON.stringify(brokerData) }); const result = await brokerDataProvider.getBrokers(eventingFolderNodes[0]); - assert.equals(result[0], testBrokerTreeItems[0]); + expect(result[0]).to.deep.equal(testBrokerTreeItems[0]); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('example-broker0'); + expect(result[0].label.label).to.equal('example-broker0'); }); }); }); diff --git a/test/eventingTree/channelDataProvider.test.ts b/test/eventingTree/channelDataProvider.test.ts index 00ea6ddf..77c01f2a 100644 --- a/test/eventingTree/channelDataProvider.test.ts +++ b/test/eventingTree/channelDataProvider.test.ts @@ -1,20 +1,18 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as channelData from './channel.json'; import * as channelEmptySpecData from './channelEmptySpec.json'; import * as channelIncompleteData from './channelIncomplete.json'; import { EventingContextType } from '../../src/cli/config'; +import { ChannelDataProvider } from '../../src/eventingTree/channelDataProvider'; import { EventingDataProvider } from '../../src/eventingTree/eventingDataProvider'; import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; -import { ChannelDataProvider } from '../../src/eventingTree/channelDataProvider'; import { Channel } from '../../src/knative/channel'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('ChannelDataProvider', () => { @@ -81,19 +79,19 @@ suite('ChannelDataProvider', () => { sandbox.stub(channelDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: `No channels found.` }); const result = await channelDataProvider.getChannels(eventingFolderNodes[1]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Channel Found'); - expect(result[0].getName()).equals('No Channel Found'); + expect(result[0].description).to.equal(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Channel Found'); + expect(result[0].getName()).to.equal('No Channel Found'); }); test('should return channel nodes', async () => { sandbox.restore(); sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(channelDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(channelData) }); const result = await channelDataProvider.getChannels(eventingFolderNodes[1]); - assert.equals(result[0], testChannelTreeItems[0]); + expect(result[0]).to.deep.equal(testChannelTreeItems[0]); expect(result).to.have.lengthOf(4); - expect(result[0].label.label).equals('example-channel0'); + expect(result[0].label.label).to.equal('example-channel0'); }); test('should return channel nodes when the spec is empty', async () => { sandbox.restore(); @@ -102,9 +100,9 @@ suite('ChannelDataProvider', () => { .stub(channelDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(channelEmptySpecData) }); const result = await channelDataProvider.getChannels(eventingFolderNodes[1]); - assert.equals(result[0], testChannel0EmptySpecTreeItem); + expect(result[0]).to.deep.equal(testChannel0EmptySpecTreeItem); expect(result).to.have.lengthOf(4); - expect(result[0].label.label).equals('example-channel0'); + expect(result[0].label.label).to.equal('example-channel0'); }); test('should refetch channel info when it is incomplete, then return channel nodes', async () => { sandbox.restore(); @@ -113,9 +111,9 @@ suite('ChannelDataProvider', () => { exeStub.onFirstCall().resolves({ error: undefined, stdout: JSON.stringify(channelIncompleteData) }); exeStub.onSecondCall().resolves({ error: undefined, stdout: JSON.stringify(channelData) }); const result = await channelDataProvider.getChannels(eventingFolderNodes[1]); - assert.equals(result[0], testChannelTreeItems[0]); + expect(result[0]).to.deep.equal(testChannelTreeItems[0]); expect(result).to.have.lengthOf(4); - expect(result[0].label.label).equals('example-channel0'); + expect(result[0].label.label).to.equal('example-channel0'); }); }); }); diff --git a/test/eventingTree/eventingDataProvider.test.ts b/test/eventingTree/eventingDataProvider.test.ts index 161d2329..49c4dd72 100644 --- a/test/eventingTree/eventingDataProvider.test.ts +++ b/test/eventingTree/eventingDataProvider.test.ts @@ -1,12 +1,14 @@ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; +import rewire = require('rewire'); import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as channelData from './channel.json'; -import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; import * as sourceData from './source.json'; import * as subscriptionData from './subscription.json'; import * as triggerData from './trigger.json'; @@ -23,27 +25,26 @@ import { BindingSource } from '../../src/knative/bindingSource'; import { Broker } from '../../src/knative/broker'; import { Channel } from '../../src/knative/channel'; import { GenericSource } from '../../src/knative/genericSource'; +import { KnativeItem } from '../../src/knative/knativeItem'; import { KnativeServices } from '../../src/knative/knativeServices'; -import { KnativeSubscriptions } from '../../src/knative/knativeSubscriptions'; import { KnativeSources } from '../../src/knative/knativeSources'; +import { KnativeSubscriptions } from '../../src/knative/knativeSubscriptions'; import { KnativeTriggers } from '../../src/knative/knativeTriggers'; import { PingSource } from '../../src/knative/pingSource'; import { Service } from '../../src/knative/service'; -import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; -import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; -import { KnativeItem } from '../../src/knative/knativeItem'; import { Subscription } from '../../src/knative/subscription'; import { Trigger } from '../../src/knative/trigger'; +import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; +import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; +import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; -import rewire = require('rewire'); const rewiredEventingDataProvider = rewire('../../src/eventingTree/eventingDataProvider'); -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('EventingDataProvider', () => { const sandbox = sinon.createSandbox(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const edp = new rewiredEventingDataProvider.EventingDataProvider(); const eventingDataProvider: EventingDataProvider = new EventingDataProvider(); const brokerDataProvider: BrokerDataProvider = new BrokerDataProvider(); @@ -898,7 +899,7 @@ suite('EventingDataProvider', () => { suite('Getting Eventing folders', () => { test('should return the folder tree element of the eventing concepts', () => { eventingTreeItems = eventingDataProvider.getEventingFolders(); - assert.equals(eventingTreeItems[0].getName(), 'Brokers'); + expect(eventingTreeItems[0].getName(), 'Brokers'); }); }); @@ -915,7 +916,7 @@ suite('EventingDataProvider', () => { null, ); const item: vscode.TreeItem = await eventingDataProvider.getTreeItem(treeItem); - assert.equals(item, treeItem); + expect(item).to.deep.equal(treeItem); }); }); @@ -925,10 +926,10 @@ suite('EventingDataProvider', () => { sandbox.stub(vscode.window, 'showErrorMessage').resolves(); const result = await eventingDataProvider.getChildren(); expect(result).to.have.lengthOf(5); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Brokers'); - expect(result[0].getName()).equals('Brokers'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Brokers'); + expect(result[0].getName()).to.equal('Brokers'); + expect(result[0].tooltip).to.equal(''); }); test('should return a child of "No Broker Found" when there is no data returned for Brokers', async () => { sandbox.restore(); @@ -937,10 +938,10 @@ suite('EventingDataProvider', () => { sandbox.stub(b.knExecutor, 'execute').resolves({ error: undefined, stdout: `No brokers found.` }); const result = await eventingDataProvider.getChildren(eventingFolderNodes[0]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Broker Found'); - expect(result[0].getName()).equals('No Broker Found'); + expect(result[0].description).to.equal(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Broker Found'); + expect(result[0].getName()).to.equal('No Broker Found'); }); test('should return multiple Broker tree nodes', async () => { sandbox.restore(); @@ -948,10 +949,10 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.brokerDataProvider, `getBrokers`).resolves(testBrokerTreeItems); const result = await eventingDataProvider.getChildren(eventingFolderNodes[0]); expect(result).to.have.lengthOf(2); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example-broker0'); - expect(result[0].getName()).equals('example-broker0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example-broker0'); + expect(result[0].getName()).to.equal('example-broker0'); + expect(result[0].tooltip).to.equal(''); }); test('should return multiple Channel tree nodes', async () => { sandbox.restore(); @@ -959,10 +960,10 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.channelDataProvider, `getChannels`).resolves(testChannelTreeItems); const result = await eventingDataProvider.getChildren(eventingFolderNodes[1]); expect(result).to.have.lengthOf(4); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example-channel0'); - expect(result[0].getName()).equals('example-channel0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example-channel0'); + expect(result[0].getName()).to.equal('example-channel0'); + expect(result[0].tooltip).to.equal(''); }); test('should return multiple Source tree nodes', async () => { sandbox.restore(); @@ -970,10 +971,10 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.sourceDataProvider, `getSources`).resolves(testSourceTreeItems); const result = await eventingDataProvider.getChildren(eventingFolderNodes[2]); expect(result).to.have.lengthOf(13); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example-source-apiserver0'); - expect(result[0].getName()).equals('example-source-apiserver0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example-source-apiserver0'); + expect(result[0].getName()).to.equal('example-source-apiserver0'); + expect(result[0].tooltip).to.equal(''); }); test('should return children of an API Server Source', async () => { sandbox @@ -981,19 +982,19 @@ suite('EventingDataProvider', () => { .resolves([testBroker0ForSourceApiserver1TreeItem]); const result = await eventingDataProvider.getChildren(testSourceTreeItems[1]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Sink - example-broker0'); - expect(result[0].getName()).equals('Sink - example-broker0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Sink - example-broker0'); + expect(result[0].getName()).to.equal('Sink - example-broker0'); + expect(result[0].tooltip).to.equal(''); }); test('should return children of a Ping Source', async () => { sandbox.stub(eventingDataProvider.sourceDataProvider, `getSourceChildren`).resolves([testService0ForSourcePing0TreeItem]); const result = await eventingDataProvider.getChildren(testSourceTreeItems[4]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Sink - aaa'); - expect(result[0].getName()).equals('Sink - aaa'); - expect(result[0].tooltip).equals('Service: Sink - aaa'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Sink - aaa'); + expect(result[0].getName()).to.equal('Sink - aaa'); + expect(result[0].tooltip).to.equal('Service: Sink - aaa'); }); test('should return children of a Binding Source', async () => { sandbox @@ -1001,10 +1002,10 @@ suite('EventingDataProvider', () => { .resolves([testService0ForSourceBinding0TreeItem]); const result = await eventingDataProvider.getChildren(testSourceTreeItems[8]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Sink - aaa'); - expect(result[0].getName()).equals('Sink - aaa'); - expect(result[0].tooltip).equals('Service: Sink - aaa'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Sink - aaa'); + expect(result[0].getName()).to.equal('Sink - aaa'); + expect(result[0].tooltip).to.equal('Service: Sink - aaa'); }); test('should return multiple Subscription tree nodes', async () => { sandbox.restore(); @@ -1012,10 +1013,10 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.subscriptionDataProvider, `getSubscriptions`).resolves(testSubscriptionTreeItems); const result = await eventingDataProvider.getChildren(eventingFolderNodes[3]); expect(result).to.have.lengthOf(5); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example-subscription0'); - expect(result[0].getName()).equals('example-subscription0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example-subscription0'); + expect(result[0].getName()).to.equal('example-subscription0'); + expect(result[0].tooltip).to.equal(''); }); test('should return children of a Subscription', async () => { sandbox @@ -1023,10 +1024,10 @@ suite('EventingDataProvider', () => { .resolves([testChannel0ForSubscription0TreeItem, testService0ForSubscription0TreeItem]); const result = await eventingDataProvider.getChildren(testSubscriptionTreeItems[0]); expect(result).to.have.lengthOf(2); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Channel - example-channel0'); - expect(result[0].getName()).equals('Channel - example-channel0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Channel - example-channel0'); + expect(result[0].getName()).to.equal('Channel - example-channel0'); + expect(result[0].tooltip).to.equal(''); }); test('should return multiple Trigger tree nodes', async () => { sandbox.restore(); @@ -1034,10 +1035,10 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.triggerDataProvider, `getTriggers`).resolves(testTriggerTreeItems); const result = await eventingDataProvider.getChildren(eventingFolderNodes[4]); expect(result).to.have.lengthOf(5); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example-trigger0'); - expect(result[0].getName()).equals('example-trigger0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example-trigger0'); + expect(result[0].getName()).to.equal('example-trigger0'); + expect(result[0].tooltip).to.equal(''); }); test('should return children of a Trigger', async () => { sandbox @@ -1045,10 +1046,10 @@ suite('EventingDataProvider', () => { .resolves([testBroker0ForTrigger0TreeItem, testService0ForTrigger0TreeItem]); const result = await eventingDataProvider.getChildren(testTriggerTreeItems[0]); expect(result).to.have.lengthOf(2); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Broker - example-broker0'); - expect(result[0].getName()).equals('Broker - example-broker0'); - expect(result[0].tooltip).equals(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Broker - example-broker0'); + expect(result[0].getName()).to.equal('Broker - example-broker0'); + expect(result[0].tooltip).to.equal(''); }); // test('should throw an error when the promise is rejected trying to get eventing children', async () => { // sandbox.restore(); @@ -1061,14 +1062,14 @@ suite('EventingDataProvider', () => { // chai // .expect(showErrorArgs[0]) // .to.include('Caught an error getting the Eventing data.\n Forced rejection of the Promise for a test'); - // assert.equals(result, null); + // expect(result, null); // }); }); suite('Getting a Parent Item', () => { test('should return null for a top level folder', () => { const item: EventingTreeItem | ServingTreeItem = eventingDataProvider.getParent(eventingFolderNodes[0]); - assert.equals(item, null); + expect(item, null); }); test('should return the Broker folder for a Broker instance', async () => { // set parent folders @@ -1076,7 +1077,7 @@ suite('EventingDataProvider', () => { sandbox.stub(eventingDataProvider.brokerDataProvider, `getBrokers`).resolves(testBrokerTreeItems); const result = await eventingDataProvider.getChildren(eventingTreeItems[0]); const item: EventingTreeItem | ServingTreeItem = eventingDataProvider.getParent(result[0]); - assert.equals(item.getName(), 'Brokers'); + expect(item.getName(), 'Brokers'); }); }); }); diff --git a/test/eventingTree/eventingExplorer.test.ts b/test/eventingTree/eventingExplorer.test.ts index d46fa427..ec2923d6 100644 --- a/test/eventingTree/eventingExplorer.test.ts +++ b/test/eventingTree/eventingExplorer.test.ts @@ -1,14 +1,13 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import { EventingContextType } from '../../src/cli/config'; import { EventingExplorer } from '../../src/eventingTree/eventingExplorer'; import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; -const { assert } = referee; chai.use(sinonChai); let eventingExplorer: EventingExplorer; @@ -77,7 +76,7 @@ suite('EventingExplorer', () => { // giving the extension test enough time to dispose of it. Otherwise we would have 2 registered // commands for each one in EventingExplorer. eventingExplorer = new EventingExplorer(); - assert.equals(eventingExplorer.registeredCommands.length, 1); + expect(eventingExplorer.registeredCommands).to.be.lengthOf(1); }); test('should connect the output command to refreshing the tree', async () => { diff --git a/test/eventingTree/eventingTreeItem.test.ts b/test/eventingTree/eventingTreeItem.test.ts index 960dcced..a9f77cb1 100644 --- a/test/eventingTree/eventingTreeItem.test.ts +++ b/test/eventingTree/eventingTreeItem.test.ts @@ -1,10 +1,10 @@ +import * as path from 'path'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; -import * as path from 'path'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as channelData from './channel.json'; import * as sourceData from './source.json'; @@ -12,16 +12,15 @@ import * as subscriptionData from './subscription.json'; import * as triggerData from './trigger.json'; import { EventingContextType } from '../../src/cli/config'; import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; -import { Broker } from '../../src/knative/broker'; -import { GenericSource } from '../../src/knative/genericSource'; import { APIServerSource } from '../../src/knative/apiServerSource'; -import { PingSource } from '../../src/knative/pingSource'; import { BindingSource } from '../../src/knative/bindingSource'; +import { Broker } from '../../src/knative/broker'; import { Channel } from '../../src/knative/channel'; +import { GenericSource } from '../../src/knative/genericSource'; +import { PingSource } from '../../src/knative/pingSource'; import { Subscription } from '../../src/knative/subscription'; import { Trigger } from '../../src/knative/trigger'; -const { assert } = referee; chai.use(sinonChai); suite('EventingTreeItem', () => { @@ -250,17 +249,17 @@ suite('EventingTreeItem', () => { const expected = vscode.Uri.file( `${localDir.substring(0, localDir.search(/out.test/))}images${path.sep}context${path.sep}broker.svg`, ); - assert.equals(revPath, expected); + expect(revPath).to.deep.equal(expected); }); test('should get the tooltip', () => { const tested = testBroker0TreeItem.tooltip; - assert.equals(tested, ``); + expect(tested).to.equal(``); }); test('should get the description and it should be blank', () => { const tested = testBroker0TreeItem.description; - assert.equals(tested, ''); + expect(tested).to.equal(''); }); test('should get the command for selected tree item and return undefined if No Broker Found', () => { @@ -274,12 +273,13 @@ suite('EventingTreeItem', () => { null, ); const tested = noBrokerFoundTreeItem.command; - assert.isUndefined(tested); + // eslint-disable-next-line no-unused-expressions + expect(tested).to.be.undefined; }); test('should get the command for selected tree item and return Describe if NOT modified', () => { const tested = testBroker0TreeItem.command; - assert.equals(tested.command, 'eventing.explorer.openFile'); + expect(tested.command).to.equal('eventing.explorer.openFile'); }); test('should get the children of Not Found', () => { @@ -293,75 +293,75 @@ suite('EventingTreeItem', () => { null, ); const tested = noBrokerFoundTreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of the Broker Folder', () => { const tested = eventingFolderNodes[0].getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a Broker', () => { const tested = testBroker0TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of the Channel Folder', () => { const tested = eventingFolderNodes[1].getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a Channel', () => { const tested = testChannel0TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of the Source Folder', () => { const tested = eventingFolderNodes[2].getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a source_apiserver', () => { const tested = testSource0TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a source_ping', () => { const tested = testSource1TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a source_generic', () => { const tested = testSource2TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a source_binding', () => { const tested = testSource3TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of the Subscription Folder', () => { const tested = eventingFolderNodes[3].getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a Subscription', () => { const tested = testSubscription0TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of the Trigger Folder', () => { const tested = eventingFolderNodes[4].getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a Trigger', () => { const tested = testTrigger0TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a URI', () => { const tested = testURIForTrigger4TreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); }); diff --git a/test/eventingTree/sourceDataProvider.test.ts b/test/eventingTree/sourceDataProvider.test.ts index e83aab2c..3aeba0d6 100644 --- a/test/eventingTree/sourceDataProvider.test.ts +++ b/test/eventingTree/sourceDataProvider.test.ts @@ -1,12 +1,11 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as channelData from './channel.json'; -import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; import * as sourceData from './source.json'; import * as sourceEmptySpec from './sourceEmptySpec.json'; import * as sourceIncompleteData from './sourceIncomplete.json'; @@ -27,9 +26,8 @@ import { PingSource } from '../../src/knative/pingSource'; import { Service } from '../../src/knative/service'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; +import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('SourceDataProvider', () => { @@ -530,47 +528,47 @@ suite('SourceDataProvider', () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: `No sources found.` }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Source Found'); - expect(result[0].getName()).equals('No Source Found'); + expect(result[0].description).to.equal(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Source Found'); + expect(result[0].getName()).to.equal('No Source Found'); }); test('should refetch source info when it is incomplete, then return source nodes', async () => { const exeStub = sandbox.stub(sourceDataProvider.knExecutor, 'execute'); exeStub.onFirstCall().resolves({ error: undefined, stdout: JSON.stringify(sourceIncompleteData) }); exeStub.onSecondCall().resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[0], testSourceTreeItems[0]); + expect(result[0]).to.deep.equal(testSourceTreeItems[0]); expect(result).to.have.lengthOf(14); - expect(result[0].label.label).equals('example-source-apiserver0'); + expect(result[0].label.label).to.equal('example-source-apiserver0'); }); test('should return API source nodes', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[0], testSourceTreeItems[0]); + expect(result[0]).to.deep.equal(testSourceTreeItems[0]); expect(result).to.have.lengthOf(14); - expect(result[0].label.label).equals('example-source-apiserver0'); + expect(result[0].label.label).to.equal('example-source-apiserver0'); }); test('should return Ping source nodes', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[8], testSourceTreeItems[4]); + expect(result[8]).to.deep.equal(testSourceTreeItems[4]); expect(result).to.have.lengthOf(14); - expect(result[8].label.label).equals('example-source-ping0'); + expect(result[8].label.label).to.equal('example-source-ping0'); }); test('should return Generic source nodes', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[9], testSourceTreeItems[12]); + expect(result[9]).to.deep.equal(testSourceTreeItems[12]); expect(result).to.have.lengthOf(14); - expect(result[9].label.label).equals('example-source-ping1'); + expect(result[9].label.label).to.equal('example-source-ping1'); }); test('should return Sink Binding source nodes', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[4], testSourceTreeItems[8]); + expect(result[4]).to.deep.equal(testSourceTreeItems[8]); expect(result).to.have.lengthOf(14); - expect(result[4].label.label).equals('example-source-binding0'); + expect(result[4].label.label).to.equal('example-source-binding0'); }); // Test when the spec is empty @@ -579,45 +577,45 @@ suite('SourceDataProvider', () => { .stub(sourceDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(sourceEmptySpec) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[0], testSourceTreeItemEmptySpecs[0]); + expect(result[0]).to.deep.equal(testSourceTreeItemEmptySpecs[0]); expect(result).to.have.lengthOf(13); - expect(result[0].label.label).equals('example-source-apiserver0-emptySpec'); + expect(result[0].label.label).to.equal('example-source-apiserver0-emptySpec'); }); test('should return API source nodes when the spec is empty but there is an empty resources node', async () => { sandbox .stub(sourceDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(sourceEmptySpec) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[1], testSourceAPI1TreeItemEmptySpec); + expect(result[1]).to.deep.equal(testSourceAPI1TreeItemEmptySpec); expect(result).to.have.lengthOf(13); - expect(result[1].label.label).equals('example-source-apiserver1-emptySpec'); + expect(result[1].label.label).to.equal('example-source-apiserver1-emptySpec'); }); test('should return Ping source nodes when the spec is empty', async () => { sandbox .stub(sourceDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(sourceEmptySpec) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[8], testSourceTreeItemEmptySpecs[1]); + expect(result[8]).to.deep.equal(testSourceTreeItemEmptySpecs[1]); expect(result).to.have.lengthOf(13); - expect(result[8].label.label).equals('example-source-ping0-emptySpec'); + expect(result[8].label.label).to.equal('example-source-ping0-emptySpec'); }); test('should return Generic source nodes when the spec is empty', async () => { sandbox .stub(sourceDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(sourceEmptySpec) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[9], testSourceTreeItemEmptySpecs[2]); + expect(result[9]).to.deep.equal(testSourceTreeItemEmptySpecs[2]); expect(result).to.have.lengthOf(13); - expect(result[9].label.label).equals('example-source-ping1-emptySpec'); + expect(result[9].label.label).to.equal('example-source-ping1-emptySpec'); }); test('should return Sink Binding source nodes when the spec is empty', async () => { sandbox .stub(sourceDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(sourceEmptySpec) }); const result = await sourceDataProvider.getSources(eventingFolderNodes[2]); - assert.equals(result[4], testSourceTreeItemEmptySpecs[3]); + expect(result[4]).to.deep.equal(testSourceTreeItemEmptySpecs[3]); expect(result).to.have.lengthOf(13); - expect(result[4].label.label).equals('example-source-binding0-emptySpec'); + expect(result[4].label.label).to.equal('example-source-binding0-emptySpec'); }); }); suite('Get Missing Source Children', () => { @@ -626,9 +624,9 @@ suite('SourceDataProvider', () => { await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceMissingDataTreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Sink Not Found'); - expect(result[0].getName()).equals('Sink Not Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Sink Not Found'); + expect(result[0].getName()).to.equal('Sink Not Found'); }); }); suite('Get Api Server Source Children', () => { @@ -637,41 +635,41 @@ suite('SourceDataProvider', () => { await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceMissingDataTreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Sink Not Found'); - expect(result[0].getName()).equals('Sink Not Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Sink Not Found'); + expect(result[0].getName()).to.equal('Sink Not Found'); }); test('should return service child node for Api Server source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[0]); - assert.equals(result[0], testService0ForSourceApiserver0TreeItem); + expect(result[0]).to.deep.equal(testService0ForSourceApiserver0TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - aaa'); + expect(result[0].label.label).to.equal('Sink - aaa'); }); test('should return broker child node for Api Server source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[1]); - assert.equals(result[0], testBroker0ForSourceApiserver1TreeItem); + expect(result[0]).to.deep.equal(testBroker0ForSourceApiserver1TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-broker0'); + expect(result[0].label.label).to.equal('Sink - example-broker0'); }); test('should return channel child node for Api Server source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[2]); - assert.equals(result[0], testChannel0ForSourceApiserver2TreeItem); + expect(result[0]).to.deep.equal(testChannel0ForSourceApiserver2TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-channel0'); + expect(result[0].label.label).to.equal('Sink - example-channel0'); }); test('should return URI child node for Api Server source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[3]); - assert.equals(result[0], testURIForSourceApiserver3TreeItem); + expect(result[0]).to.deep.equal(testURIForSourceApiserver3TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Sink - https://event.receiver.uri/'); }); }); suite('Get Ping Source Children', () => { @@ -679,33 +677,33 @@ suite('SourceDataProvider', () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[4]); - assert.equals(result[0], testService0ForSourcePing0TreeItem); + expect(result[0]).to.deep.equal(testService0ForSourcePing0TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - aaa'); + expect(result[0].label.label).to.equal('Sink - aaa'); }); test('should return broker child node for Ping source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[5]); - assert.equals(result[0], testBroker0ForSourcePing1TreeItem); + expect(result[0]).to.deep.equal(testBroker0ForSourcePing1TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-broker0'); + expect(result[0].label.label).to.equal('Sink - example-broker0'); }); test('should return channel child node for Ping source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[6]); - assert.equals(result[0], testChannel0ForSourcePing2TreeItem); + expect(result[0]).to.deep.equal(testChannel0ForSourcePing2TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-channel0'); + expect(result[0].label.label).to.equal('Sink - example-channel0'); }); test('should return URI child node for Ping source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[7]); - assert.equals(result[0], testURIForSourcePing3TreeItem); + expect(result[0]).to.deep.equal(testURIForSourcePing3TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Sink - https://event.receiver.uri/'); }); }); suite('Get Binding Source Children', () => { @@ -713,33 +711,33 @@ suite('SourceDataProvider', () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[8]); - assert.equals(result[0], testService0ForSourceBinding0TreeItem); + expect(result[0]).to.deep.equal(testService0ForSourceBinding0TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - aaa'); + expect(result[0].label.label).to.equal('Sink - aaa'); }); test('should return broker child node for Binding source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[9]); - assert.equals(result[0], testBroker0ForSourceBinding1TreeItem); + expect(result[0]).to.deep.equal(testBroker0ForSourceBinding1TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-broker0'); + expect(result[0].label.label).to.equal('Sink - example-broker0'); }); test('should return channel child node for Binding source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[10]); - assert.equals(result[0], testChannel0ForSourceBinding2TreeItem); + expect(result[0]).to.deep.equal(testChannel0ForSourceBinding2TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - example-channel0'); + expect(result[0].label.label).to.equal('Sink - example-channel0'); }); test('should return URI child node for Binding source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[11]); - assert.equals(result[0], testURIForSourceBinding3TreeItem); + expect(result[0]).to.deep.equal(testURIForSourceBinding3TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Sink - https://event.receiver.uri/'); }); }); suite('Get Generic Source Children', () => { @@ -747,17 +745,17 @@ suite('SourceDataProvider', () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[12]); - assert.equals(result[0], testService0ForSourceGenericPing1TreeItem); + expect(result[0]).to.deep.equal(testService0ForSourceGenericPing1TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - aaa'); + expect(result[0].label.label).to.equal('Sink - aaa'); }); test('should return URI child node for Generic (ping) source', async () => { sandbox.stub(sourceDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(sourceData) }); await sourceDataProvider.getSources(eventingFolderNodes[2]); const result = sourceDataProvider.getSourceChildren(testSourceTreeItems[13]); - assert.equals(result[0], testURIForSourceGenericPing5TreeItem); + expect(result[0]).to.deep.equal(testURIForSourceGenericPing5TreeItem); expect(result).to.have.lengthOf(1); - expect(result[0].label.label).equals('Sink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Sink - https://event.receiver.uri/'); }); }); }); diff --git a/test/eventingTree/subscriptionDataProvider.test.ts b/test/eventingTree/subscriptionDataProvider.test.ts index 2f1f3644..14b40a6b 100644 --- a/test/eventingTree/subscriptionDataProvider.test.ts +++ b/test/eventingTree/subscriptionDataProvider.test.ts @@ -1,12 +1,11 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as channelData from './channel.json'; -import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; import * as subscriptionData from './subscription.json'; import * as subscriptionEmptySpecData from './subscriptionEmptySpec.json'; import * as subscriptionIncompleteData from './subscriptionIncomplete.json'; @@ -24,9 +23,8 @@ import { Service } from '../../src/knative/service'; import { Subscription } from '../../src/knative/subscription'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; +import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('SubscriptionDataProvider', () => { @@ -310,37 +308,37 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: `No subscriptions found.` }); const result = await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Subscription Found'); - expect(result[0].getName()).equals('No Subscription Found'); + expect(result[0].description).to.equal(''); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Subscription Found'); + expect(result[0].getName()).to.equal('No Subscription Found'); }); test('should return subscription nodes', async () => { sandbox .stub(subscriptionDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); const result = await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); - assert.equals(result[5], testSubscriptionTreeItems[0]); + expect(result[5]).to.deep.equal(testSubscriptionTreeItems[0]); expect(result).to.have.lengthOf(10); - expect(result[5].label.label).equals('example-subscription0'); + expect(result[5].label.label).to.equal('example-subscription0'); }); test('should return subscription nodes even when the spec is empty', async () => { sandbox .stub(subscriptionDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(subscriptionEmptySpecData) }); const result = await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); - assert.equals(result[5], testSubscription0EmptySpecTreeItem); + expect(result[5]).to.deep.equal(testSubscription0EmptySpecTreeItem); expect(result).to.have.lengthOf(10); - expect(result[5].label.label).equals('example-subscription0'); + expect(result[5].label.label).to.equal('example-subscription0'); }); test('should refetch subscription info when it is incomplete, then return subscription nodes', async () => { const exeStub = sandbox.stub(subscriptionDataProvider.knExecutor, 'execute'); exeStub.onFirstCall().resolves({ error: undefined, stdout: JSON.stringify(subscriptionIncompleteData) }); exeStub.onSecondCall().resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); const result = await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); - assert.equals(result[5], testSubscriptionTreeItems[0]); + expect(result[5]).to.deep.equal(testSubscriptionTreeItems[0]); expect(result).to.have.lengthOf(10); - expect(result[5].label.label).equals('example-subscription0'); + expect(result[5].label.label).to.equal('example-subscription0'); }); }); suite('Get subscription Children', () => { @@ -351,11 +349,11 @@ suite('SubscriptionDataProvider', () => { await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionMissingTreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Channel Not Found'); - expect(result[0].getName()).equals('Channel Not Found'); - expect(result[1].label.label).equals('Subscriber Not Found'); - expect(result[1].getName()).equals('Subscriber Not Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Channel Not Found'); + expect(result[0].getName()).to.equal('Channel Not Found'); + expect(result[1].label.label).to.equal('Subscriber Not Found'); + expect(result[1].getName()).to.equal('Subscriber Not Found'); }); test('should return service child nodes', async () => { sandbox @@ -363,11 +361,11 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionTreeItems[0]); - assert.equals(result[0], testChannel0ForSubscription0TreeItem); - assert.equals(result[1], testService0ForSubscription0TreeItem); + expect(result[0]).to.deep.equal(testChannel0ForSubscription0TreeItem); + expect(result[1]).to.deep.equal(testService0ForSubscription0TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Channel - example-channel0'); - expect(result[1].label.label).equals('Subscriber - aaa'); + expect(result[0].label.label).to.equal('Channel - example-channel0'); + expect(result[1].label.label).to.equal('Subscriber - aaa'); }); test('should return broker child nodes', async () => { sandbox @@ -375,11 +373,11 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionTreeItems[1]); - assert.equals(result[0], testChannel0ForSubscription1TreeItem); - assert.equals(result[1], testBroker0ForSubscription1TreeItem); + expect(result[0]).to.deep.equal(testChannel0ForSubscription1TreeItem); + expect(result[1]).to.deep.equal(testBroker0ForSubscription1TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Channel - example-channel0'); - expect(result[1].label.label).equals('Subscriber - example-broker0'); + expect(result[0].label.label).to.equal('Channel - example-channel0'); + expect(result[1].label.label).to.equal('Subscriber - example-broker0'); }); test('should return channel child nodes', async () => { sandbox @@ -387,11 +385,11 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionTreeItems[2]); - assert.equals(result[0], testChannel1ForSubscription2TreeItem); - assert.equals(result[1], testChannel0ForSubscription2TreeItem); + expect(result[0]).to.deep.equal(testChannel1ForSubscription2TreeItem); + expect(result[1]).to.deep.equal(testChannel0ForSubscription2TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Channel - example-channel1'); - expect(result[1].label.label).equals('Subscriber - example-channel0'); + expect(result[0].label.label).to.equal('Channel - example-channel1'); + expect(result[1].label.label).to.equal('Subscriber - example-channel0'); }); test('should return URI child nodes', async () => { sandbox @@ -399,13 +397,13 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionTreeItems[3]); - assert.equals(result[0], testChannel2ForSubscription3TreeItem); - assert.equals(result[1], testURIForSubscription3TreeItem); + expect(result[0]).to.deep.equal(testChannel2ForSubscription3TreeItem); + expect(result[1]).to.deep.equal(testURIForSubscription3TreeItem); expect(result).to.have.lengthOf(4); - expect(result[0].label.label).equals('Channel - example-channel2'); - expect(result[1].label.label).equals('Subscriber - https://event.receiver.uri/'); - expect(result[2].label.label).equals('Reply - https://event.receiver.uri/'); - expect(result[3].label.label).equals('DeadLetterSink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Channel - example-channel2'); + expect(result[1].label.label).to.equal('Subscriber - https://event.receiver.uri/'); + expect(result[2].label.label).to.equal('Reply - https://event.receiver.uri/'); + expect(result[3].label.label).to.equal('DeadLetterSink - https://event.receiver.uri/'); }); test('should return subscriber, reply, and dead letter reply child nodes', async () => { sandbox @@ -413,15 +411,15 @@ suite('SubscriptionDataProvider', () => { .resolves({ error: undefined, stdout: JSON.stringify(subscriptionData) }); await subscriptionDataProvider.getSubscriptions(eventingFolderNodes[3]); const result = subscriptionDataProvider.getSubscriptionChildren(testSubscriptionTreeItems[4]); - assert.equals(result[0], testChannel3ForSubscription4TreeItem); - assert.equals(result[1], testService0ForSubscription4TreeItem); - assert.equals(result[2], testBroker0ForSubscription4TreeItem); - assert.equals(result[3], testBroker1ForSubscription4TreeItem); + expect(result[0]).to.deep.equal(testChannel3ForSubscription4TreeItem); + expect(result[1]).to.deep.equal(testService0ForSubscription4TreeItem); + expect(result[2]).to.deep.equal(testBroker0ForSubscription4TreeItem); + expect(result[3]).to.deep.equal(testBroker1ForSubscription4TreeItem); expect(result).to.have.lengthOf(4); - expect(result[0].label.label).equals('Channel - example-channel3'); - expect(result[1].label.label).equals('Subscriber - aaa'); - expect(result[2].label.label).equals('Reply - example-broker0'); - expect(result[3].label.label).equals('DeadLetterSink - example-broker1'); + expect(result[0].label.label).to.equal('Channel - example-channel3'); + expect(result[1].label.label).to.equal('Subscriber - aaa'); + expect(result[2].label.label).to.equal('Reply - example-broker0'); + expect(result[3].label.label).to.equal('DeadLetterSink - example-broker1'); }); }); }); diff --git a/test/eventingTree/triggerDataProvider.test.ts b/test/eventingTree/triggerDataProvider.test.ts index 7c46873a..21ac7fe9 100644 --- a/test/eventingTree/triggerDataProvider.test.ts +++ b/test/eventingTree/triggerDataProvider.test.ts @@ -1,20 +1,19 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as brokerData from './broker.json'; import * as channelData from './channel.json'; -import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; import * as triggerData from './trigger.json'; import * as triggerEmptySpecData from './triggerEmptySpec.json'; import * as triggerIncompleteData from './triggerIncomplete.json'; import { EventingContextType, ServingContextType } from '../../src/cli/config'; import { BrokerDataProvider } from '../../src/eventingTree/brokerDataProvider'; import { ChannelDataProvider } from '../../src/eventingTree/channelDataProvider'; -import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; import { EventingDataProvider } from '../../src/eventingTree/eventingDataProvider'; +import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; import { TriggerDataProvider } from '../../src/eventingTree/triggerDataProvider'; import { Broker } from '../../src/knative/broker'; import { Channel } from '../../src/knative/channel'; @@ -24,9 +23,8 @@ import { Service } from '../../src/knative/service'; import { Trigger } from '../../src/knative/trigger'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; +import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('TriggerDataProvider', () => { @@ -268,25 +266,25 @@ suite('TriggerDataProvider', () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: `No triggers found.` }); const result = await triggerDataProvider.getTriggers(eventingFolderNodes[4]); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Trigger Found'); - expect(result[0].getName()).equals('No Trigger Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Trigger Found'); + expect(result[0].getName()).to.equal('No Trigger Found'); }); test('should return trigger nodes', async () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); const result = await triggerDataProvider.getTriggers(eventingFolderNodes[4]); - assert.equals(result[0], testTriggerTreeItems[0]); + expect(result[0]).to.deep.equal(testTriggerTreeItems[0]); expect(result).to.have.lengthOf(5); - expect(result[0].label.label).equals('example-trigger0'); + expect(result[0].label.label).to.equal('example-trigger0'); }); test('should return trigger nodes even when the spec is empty', async () => { sandbox .stub(triggerDataProvider.knExecutor, 'execute') .resolves({ error: undefined, stdout: JSON.stringify(triggerEmptySpecData) }); const result = await triggerDataProvider.getTriggers(eventingFolderNodes[4]); - assert.equals(result[0], testTrigger0EmptySpecTreeItem); + expect(result[0]).to.deep.equal(testTrigger0EmptySpecTreeItem); expect(result).to.have.lengthOf(5); - expect(result[0].label.label).equals('example-trigger0'); + expect(result[0].label.label).to.equal('example-trigger0'); // const foundTrigger = result[0].getKnativeItem() as Trigger; // assert.isNull(foundTrigger.broker); }); @@ -295,9 +293,9 @@ suite('TriggerDataProvider', () => { exeStub.onFirstCall().resolves({ error: undefined, stdout: JSON.stringify(triggerIncompleteData) }); exeStub.onSecondCall().resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); const result = await triggerDataProvider.getTriggers(eventingFolderNodes[4]); - assert.equals(result[0], testTriggerTreeItems[0]); + expect(result[0]).to.deep.equal(testTriggerTreeItems[0]); expect(result).to.have.lengthOf(5); - expect(result[0].label.label).equals('example-trigger0'); + expect(result[0].label.label).to.equal('example-trigger0'); }); }); suite('Get Trigger Children', () => { @@ -306,51 +304,51 @@ suite('TriggerDataProvider', () => { await triggerDataProvider.getTriggers(eventingFolderNodes[4]); const result = triggerDataProvider.getTriggerChildren(testTriggerMissingTreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('Broker Not Found'); - expect(result[0].getName()).equals('Broker Not Found'); - expect(result[1].label.label).equals('Sink Not Found'); - expect(result[1].getName()).equals('Sink Not Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('Broker Not Found'); + expect(result[0].getName()).to.equal('Broker Not Found'); + expect(result[1].label.label).to.equal('Sink Not Found'); + expect(result[1].getName()).to.equal('Sink Not Found'); }); test('should return service child nodes', async () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); await triggerDataProvider.getTriggers(eventingFolderNodes[4]); const result = triggerDataProvider.getTriggerChildren(testTriggerTreeItems[0]); - assert.equals(result[0], testBrokerTreeItems[0]); - assert.equals(result[1], testService0ForTrigger0TreeItem); + expect(result[0]).to.deep.equal(testBrokerTreeItems[0]); + expect(result[1]).to.deep.equal(testService0ForTrigger0TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Broker - example-broker0'); - expect(result[1].label.label).equals('Sink - aaa'); + expect(result[0].label.label).to.equal('Broker - example-broker0'); + expect(result[1].label.label).to.equal('Sink - aaa'); }); test('should return broker child nodes', async () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); await triggerDataProvider.getTriggers(eventingFolderNodes[4]); const result = triggerDataProvider.getTriggerChildren(testTriggerTreeItems[1]); - assert.equals(result[0], testBrokerTreeItems[1]); - assert.equals(result[1], testBrokerTreeItems[3]); + expect(result[0]).to.deep.equal(testBrokerTreeItems[1]); + expect(result[1]).to.deep.equal(testBrokerTreeItems[3]); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Broker - example-broker0'); - expect(result[1].label.label).equals('Sink - example-broker1'); + expect(result[0].label.label).to.equal('Broker - example-broker0'); + expect(result[1].label.label).to.equal('Sink - example-broker1'); }); test('should return channel child nodes', async () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); await triggerDataProvider.getTriggers(eventingFolderNodes[4]); const result = triggerDataProvider.getTriggerChildren(testTriggerTreeItems[2]); - assert.equals(result[0], testBrokerTreeItems[2]); - assert.equals(result[1], testChannel0ForTrigger2TreeItem); + expect(result[0]).to.deep.equal(testBrokerTreeItems[2]); + expect(result[1]).to.deep.equal(testChannel0ForTrigger2TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Broker - example-broker1'); - expect(result[1].label.label).equals('Sink - example-channel0'); + expect(result[0].label.label).to.equal('Broker - example-broker1'); + expect(result[1].label.label).to.equal('Sink - example-channel0'); }); test('should return URI child nodes', async () => { sandbox.stub(triggerDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: JSON.stringify(triggerData) }); await triggerDataProvider.getTriggers(eventingFolderNodes[4]); const result = triggerDataProvider.getTriggerChildren(testTriggerTreeItems[4]); - assert.equals(result[0], testBrokerTreeItems[4]); - assert.equals(result[1], testURIForTrigger4TreeItem); + expect(result[0]).to.deep.equal(testBrokerTreeItems[4]); + expect(result[1]).to.deep.equal(testURIForTrigger4TreeItem); expect(result).to.have.lengthOf(2); - expect(result[0].label.label).equals('Broker - example-broker1'); - expect(result[1].label.label).equals('Sink - https://event.receiver.uri/'); + expect(result[0].label.label).to.equal('Broker - example-broker1'); + expect(result[1].label.label).to.equal('Sink - https://event.receiver.uri/'); }); }); }); diff --git a/test/extension.test.ts b/test/extension.test.ts index b236d06a..5498532f 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -1,25 +1,27 @@ +/*----------------------------------------------------------------------------------------------- + * Copyright (c) Red Hat, Inc. All rights reserved. + * Licensed under the MIT License. See LICENSE file in the project root for license information. + *-----------------------------------------------------------------------------------------------*/ + +import { URL } from 'url'; import * as vscode from 'vscode'; -import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; +import { expect } from 'chai'; import { beforeEach } from 'mocha'; +import * as sinon from 'sinon'; import * as yaml from 'yaml'; -import { URL } from 'url'; import * as brokerData from './eventingTree/broker.json'; -import * as otd from '../src/editor/knativeOpenTextDocument'; import { EventingContextType, ServingContextType } from '../src/cli/config'; +import * as otd from '../src/editor/knativeOpenTextDocument'; import { EventingDataProvider } from '../src/eventingTree/eventingDataProvider'; import { EventingTreeItem } from '../src/eventingTree/eventingTreeItem'; import { deactivate } from '../src/extension'; import { Broker } from '../src/knative/broker'; +import * as revision from '../src/knative/revision'; import { Revision } from '../src/knative/revision'; +import * as service from '../src/knative/service'; import { Service } from '../src/knative/service'; import { ServingTreeItem } from '../src/servingTree/servingTreeItem'; -const { assert } = referee; -chai.use(sinonChai); - suite('Knative extension', () => { const sandbox = sinon.createSandbox(); @@ -158,7 +160,7 @@ status: url: http://current-example-a-serverless-example.apps.devcluster.openshift.com url: http://example-a-serverless-example.apps.devcluster.openshift.com `; - const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered); + const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered) as service.Items; const testService: Service = new Service( 'example', 'http://example-a-serverless-example.apps.devcluster.openshift.com', @@ -284,7 +286,7 @@ status: observedGeneration: 1 serviceName: example-75w7v `; - const example75w7vJson = yaml.parse(example75w7vYaml); + const example75w7vJson = yaml.parse(example75w7vYaml) as revision.Items; const example75w7vRevision: Revision = new Revision('example-75w7v', 'example', example75w7vJson, [ { tag: null, @@ -411,7 +413,7 @@ status: observedGeneration: 1 serviceName: example-g4hm8 `; - const exampleG4hm8Json = yaml.parse(exampleG4hm8Yaml); + const exampleG4hm8Json = yaml.parse(exampleG4hm8Yaml) as revision.Items; const exampleG4hm8Revision: Revision = new Revision('example-g4hm8', 'example', exampleG4hm8Json); const exampleG4hm8TreeItem: ServingTreeItem = new ServingTreeItem( testServiceTreeItem, @@ -523,7 +525,7 @@ status: observedGeneration: 1 serviceName: example-2fvz4 `; - const example2fvz4Json = yaml.parse(example2fvz4Yaml); + const example2fvz4Json = yaml.parse(example2fvz4Yaml) as revision.Items; const example2fvz4Revision: Revision = new Revision('example-2fvz4', 'example', example2fvz4Json, [ { tag: null, @@ -547,7 +549,8 @@ status: const image = vscode.Uri.parse('http://example-a-serverless-example.apps.devcluster.openshift.com'); const imageTagged = vscode.Uri.parse('http://current-example-a-serverless-example.apps.devcluster.openshift.com'); test('should be present', () => { - assert(vscode.extensions.getExtension('redhat.vscode-knative')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + expect(vscode.extensions.getExtension('redhat.vscode-knative')); }); test('should activate', async () => { diff --git a/test/index.ts b/test/index.ts index 611a87df..fe251845 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,38 +1,29 @@ -/* eslint-disable no-param-reassign */ -/* eslint-disable @typescript-eslint/interface-name-prefix */ -/* eslint-disable @typescript-eslint/no-use-before-define */ -/* eslint-disable @typescript-eslint/no-this-alias */ -/* eslint-disable consistent-this */ -/* eslint-disable global-require */ -/* eslint-disable no-shadow */ -/* eslint-disable no-console */ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - /*----------------------------------------------------------------------------------------------- * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ + import * as fs from 'fs'; -import * as glob from 'glob'; import * as paths from 'path'; +import * as glob from 'glob'; +import * as Mocha from 'mocha'; import { TestRunnerOptions, CoverageRunner } from './coverage'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-var-requires require('source-map-support').install(); -import Mocha = require('mocha'); - // Linux: prevent a weird NPE when mocha on Linux requires the window size from the TTY // Since we are not running in a tty environment, we just implement the method statically -// eslint-disable-next-line @typescript-eslint/no-var-requires +// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment const tty = require('tty'); +// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access if (!tty.getWindowSize) { - tty.getWindowSize = (): number[] => { - return [80, 75]; - }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + tty.getWindowSize = (): number[] => [80, 75]; } +// eslint-disable-next-line @typescript-eslint/no-explicit-any const config: any = { ui: 'tdd', timeout: 15000, @@ -41,6 +32,7 @@ const config: any = { }; if (process.env.BUILD_ID && process.env.BUILD_NUMBER) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access config.reporter = 'mocha-jenkins-reporter'; } @@ -65,11 +57,13 @@ export function run(): Promise { return new Promise((resolve, reject) => { const testsRoot = paths.resolve(__dirname); const coverageRunner = loadCoverageRunner(testsRoot); + // eslint-disable-next-line @typescript-eslint/no-explicit-any glob('**/**.test.js', { cwd: testsRoot }, (error, files): any => { if (error) { reject(error); } else { // always run extension.test.js first + // eslint-disable-next-line no-param-reassign files = files.sort((a, b) => { if (a === 'extension.test.js') { return -1; @@ -81,11 +75,7 @@ export function run(): Promise { return a.localeCompare(b); }); - files.forEach( - (f): Mocha => { - return mocha.addFile(paths.join(testsRoot, f)); - }, - ); + files.forEach((f): Mocha => mocha.addFile(paths.join(testsRoot, f))); try { let testFailures; @@ -98,11 +88,13 @@ export function run(): Promise { // eslint-disable-next-line no-unused-expressions coverageRunner && coverageRunner.reportCoverage(); } catch (err) { + // eslint-disable-next-line no-console console.error(err); } // delay reporting that test are finished, to let main process handle all output setTimeout(() => { if (testFailures > 0) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions reject(new Error(`${testFailures} tests failed.`)); } else { resolve(); @@ -110,6 +102,7 @@ export function run(): Promise { }, testFinishTimeout); }); } catch (err) { + // eslint-disable-next-line no-console console.error(err); reject(err); } diff --git a/test/knative/knativeBrokers.test.ts b/test/knative/knativeBrokers.test.ts index baa21925..b072ab68 100644 --- a/test/knative/knativeBrokers.test.ts +++ b/test/knative/knativeBrokers.test.ts @@ -1,15 +1,13 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as brokerData from '../eventingTree/broker.json'; -import { KnativeBrokers } from '../../src/knative/knativeBrokers'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { Broker } from '../../src/knative/broker'; +import { KnativeBrokers } from '../../src/knative/knativeBrokers'; +import * as brokerData from '../eventingTree/broker.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Brokers', () => { @@ -32,19 +30,19 @@ suite('Knative Brokers', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeBrokers = KnativeBrokers.Instance; - assert.equals(instance, knativeBrokers); + expect(instance).to.deep.equal(knativeBrokers); }); }); suite('Getting a Broker', () => { test('should return a list of brokers from the instance', () => { const returnedBroker: Broker = knativeBrokers.getBrokers()[0]; - assert.equals(testBroker0, returnedBroker); + expect(returnedBroker).to.deep.equal(testBroker0); }); }); suite('Finding a Broker', () => { test('should return a broker using the broker name', () => { const returnedBroker: Broker = knativeBrokers.findBroker('example-broker0'); - assert.equals(testBroker0, returnedBroker); + expect(returnedBroker).to.deep.equal(testBroker0); }); }); suite('Adding a Broker', () => { @@ -52,7 +50,7 @@ suite('Knative Brokers', () => { const remainingBrokers: Broker[] = knativeBrokers.removeBroker('example-broker1'); expect(remainingBrokers).to.have.lengthOf(1); const returnedBroker: Broker = knativeBrokers.addBroker(testBroker1); - assert.equals(testBroker1, returnedBroker); + expect(returnedBroker).to.deep.equal(testBroker1); }); }); suite('Adding multiple Brokers', () => { @@ -60,13 +58,13 @@ suite('Knative Brokers', () => { const remainingBrokers: Broker[] = knativeBrokers.removeBroker('example-broker1'); expect(remainingBrokers).to.have.lengthOf(1); const returnedBrokers: Broker[] = knativeBrokers.addBrokers(testBrokers); - assert.equals(testBrokers, returnedBrokers); + expect(returnedBrokers).to.deep.equal(testBrokers); }); }); suite('Updating a Broker', () => { test('should return a list of brokers, including the updated one', () => { const returnedBrokers: Broker[] = knativeBrokers.updateBroker(testBroker1); - assert.equals(testBrokers, returnedBrokers); + expect(returnedBrokers).to.deep.equal(testBrokers); }); }); }); diff --git a/test/knative/knativeChannels.test.ts b/test/knative/knativeChannels.test.ts index c1066076..34bfa98e 100644 --- a/test/knative/knativeChannels.test.ts +++ b/test/knative/knativeChannels.test.ts @@ -1,15 +1,13 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as channelData from '../eventingTree/channel.json'; -import { KnativeChannels } from '../../src/knative/knativeChannels'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { Channel } from '../../src/knative/channel'; +import { KnativeChannels } from '../../src/knative/knativeChannels'; +import * as channelData from '../eventingTree/channel.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Channels', () => { @@ -42,19 +40,19 @@ suite('Knative Channels', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeChannels = KnativeChannels.Instance; - assert.equals(instance, knativeChannels); + expect(instance).to.deep.equal(knativeChannels); }); }); suite('Getting a Channel', () => { test('should return a list of channels from the instance', () => { const returnedChannel: Channel = knativeChannels.getChannels()[0]; - assert.equals(testChannel0, returnedChannel); + expect(returnedChannel).to.deep.equal(testChannel0); }); }); suite('Finding a Channel', () => { test('should return a channel using the channel name', () => { const returnedChannel: Channel = knativeChannels.findChannel('example-channel0'); - assert.equals(testChannel0, returnedChannel); + expect(returnedChannel).to.deep.equal(testChannel0); }); }); suite('Adding a Channel', () => { @@ -62,7 +60,7 @@ suite('Knative Channels', () => { const remainingChannels: Channel[] = knativeChannels.removeChannel('example-channel1'); expect(remainingChannels).to.have.lengthOf(1); const returnedChannel: Channel = knativeChannels.addChannel(testChannel1); - assert.equals(testChannel1, returnedChannel); + expect(returnedChannel).to.deep.equal(testChannel1); }); }); suite('Adding multiple channels', () => { @@ -70,13 +68,13 @@ suite('Knative Channels', () => { const remainingChannels: Channel[] = knativeChannels.removeChannel('example-channel1'); expect(remainingChannels).to.have.lengthOf(1); const returnedChannels: Channel[] = knativeChannels.addChannels(testChannels); - assert.equals(testChannels, returnedChannels); + expect(returnedChannels).to.deep.equal(testChannels); }); }); suite('Updating a Channel', () => { test('should return a list of channels, including the updated one', () => { const returnedChannels: Channel[] = knativeChannels.updateChannel(testChannel1); - assert.equals(testChannels, returnedChannels); + expect(returnedChannels).to.deep.equal(testChannels); }); }); }); diff --git a/test/knative/knativeEvents.test.ts b/test/knative/knativeEvents.test.ts index a97bfe67..875d9e7c 100644 --- a/test/knative/knativeEvents.test.ts +++ b/test/knative/knativeEvents.test.ts @@ -1,20 +1,18 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as brokerData from '../eventingTree/broker.json'; -import * as triggerData from '../eventingTree/trigger.json'; -import { KnativeEvents } from '../../src/knative/knativeEvents'; -import { KEvent } from '../../src/knative/kEvent'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { EventingDataProvider } from '../../src/eventingTree/eventingDataProvider'; import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; import { Broker } from '../../src/knative/broker'; +import { KEvent } from '../../src/knative/kEvent'; +import { KnativeEvents } from '../../src/knative/knativeEvents'; import { Trigger } from '../../src/knative/trigger'; +import * as brokerData from '../eventingTree/broker.json'; +import * as triggerData from '../eventingTree/trigger.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Events', () => { @@ -65,39 +63,39 @@ suite('Knative Events', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeEvents = KnativeEvents.Instance; - assert.equals(instance, knativeEvents); + expect(instance).to.deep.equal(knativeEvents); }); }); suite('Getting an Event', () => { test('should return a list of events from the instance', () => { const returnedEvent: KEvent = knativeEvents.getEvents()[0]; - assert.equals(brokerEventFolder, returnedEvent); + expect(returnedEvent).to.deep.equal(brokerEventFolder); }); }); suite('Finding an Event', () => { test('should return an event using the event name', () => { const returnedEvent: KEvent = knativeEvents.findEvent('Brokers'); - assert.equals(brokerEventFolder, returnedEvent); + expect(returnedEvent).to.deep.equal(brokerEventFolder); }); }); suite('Finding a Child', () => { test('should return a child using the child name', () => { const returnedEvent = knativeEvents.findChild('example-trigger1'); - assert.equals(testTrigger1, returnedEvent); + expect(returnedEvent).to.deep.equal(testTrigger1); }); }); suite('Finding an Event and Child', () => { test('should return an object with both event and child using the child name', () => { const returnedEvent = knativeEvents.findChildAndEvent('example-trigger1'); - assert.equals({ child: testTrigger1, event: triggerEventFolder }, returnedEvent); + expect(returnedEvent).to.deep.equal({ child: testTrigger1, event: triggerEventFolder }); }); }); suite('Finding Event and Child indexes', () => { test('should return an object with both event and child using the child name', () => { - const returnedEvent = knativeEvents.findChildAndEventIndex('example-trigger1'); const childIndex = 1; const eventIndex = 4; - assert.equals({ childIndex, eventIndex }, returnedEvent); + const returnedEvent = knativeEvents.findChildAndEventIndex('example-trigger1'); + expect(returnedEvent).to.deep.equal({ childIndex, eventIndex }); }); }); suite('Adding an Event', () => { @@ -105,7 +103,7 @@ suite('Knative Events', () => { const remainingEvents: KEvent[] = knativeEvents.removeEvent('Brokers'); expect(remainingEvents).to.have.lengthOf(4); const returnedEvent: KEvent = knativeEvents.addEvent(brokerEventFolder); - assert.equals(brokerEventFolder, returnedEvent); + expect(returnedEvent).to.deep.equal(brokerEventFolder); }); }); suite('Adding multiple Events', () => { @@ -113,13 +111,13 @@ suite('Knative Events', () => { const remainingEvents: KEvent[] = knativeEvents.removeEvent('Brokers'); expect(remainingEvents).to.have.lengthOf(4); const returnedEvent: KEvent[] = knativeEvents.addEvents([brokerEventFolder]); - assert.equals([brokerEventFolder], returnedEvent); + expect(returnedEvent).to.deep.equal([brokerEventFolder]); }); }); suite('Updating an Event', () => { test('should return a list of events, including the updated one', () => { const returnedEvent: KEvent[] = knativeEvents.updateEvent(brokerEventFolder); - assert.equals(brokerEventFolder, returnedEvent[0]); + expect(returnedEvent[0]).to.deep.equal(brokerEventFolder); }); }); suite('Removing an Event child', () => { diff --git a/test/knative/knativeItem.test.ts b/test/knative/knativeItem.test.ts index c1bb8a1c..a807e61b 100644 --- a/test/knative/knativeItem.test.ts +++ b/test/knative/knativeItem.test.ts @@ -1,13 +1,11 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { compareNodes } from '../../src/knative/knativeItem'; -const { assert } = referee; -// const { expect } = chai; chai.use(sinonChai); suite('Knative Brokers', () => { @@ -33,19 +31,19 @@ suite('Knative Brokers', () => { suite('Compare Tree Items', () => { test('should return less than zero when comparing tree nodes with string labels that are in order', () => { const result = compareNodes(treeItemStringLabel1, treeItemStringLabel2); - assert.less(result, 0); + expect(result).to.be.lessThan(0); }); test('should return greater than zero when comparing tree nodes with string labels that are not in order', () => { const result = compareNodes(treeItemStringLabel2, treeItemStringLabel1); - assert.greater(result, 0); + expect(result).to.be.greaterThan(0); }); test('should return less than zero when comparing tree nodes with object labels that are in order', () => { const result = compareNodes(treeItemObjectLabel1, treeItemObjectLabel2); - assert.less(result, 0); + expect(result).to.be.lessThan(0); }); test('should return greater than zero when comparing tree nodes with object labels that are not in order', () => { const result = compareNodes(treeItemObjectLabel2, treeItemObjectLabel1); - assert.greater(result, 0); + expect(result).to.be.greaterThan(0); }); }); }); diff --git a/test/knative/knativeServices.test.ts b/test/knative/knativeServices.test.ts index 91cc56b0..9901b3a3 100644 --- a/test/knative/knativeServices.test.ts +++ b/test/knative/knativeServices.test.ts @@ -1,22 +1,20 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; +import { KnativeServices } from '../../src/knative/knativeServices'; +import { Revision } from '../../src/knative/revision'; +import { Service } from '../../src/knative/service'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; -import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; +import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; import * as aaaServiceRevisionData from '../servingTree/aaaServiceRevisionList.json'; import * as bbbServiceRevisionData from '../servingTree/bbbServiceRevisionList.json'; import * as cccServiceRevisionData from '../servingTree/cccServiceRevisionList.json'; +import * as multipleServiceData from '../servingTree/multipleServiceServicesList.json'; import * as exampleServiceRevisionData from '../servingTree/singleServiceRevisionList.json'; -import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; -import { KnativeServices } from '../../src/knative/knativeServices'; -import { Revision } from '../../src/knative/revision'; -import { Service } from '../../src/knative/service'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Services', () => { @@ -70,49 +68,49 @@ suite('Knative Services', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeServices = KnativeServices.Instance; - assert.equals(instance, ksvc); + expect(instance).to.deep.equal(ksvc); }); }); suite('Getting a Service', () => { test('should return a list of services from the instance', () => { const returnedService: Service = ksvc.getServices()[3]; - assert.equals(service, returnedService); + expect(returnedService).to.deep.equal(service); }); }); suite('Finding a Service', () => { test('should return a service using the service name', () => { const returnedService: Service = ksvc.findService('example'); - assert.equals(service, returnedService); + expect(returnedService).to.deep.equal(service); }); }); suite('Finding a Revision', () => { test('should return a revision using the revision name', () => { const returnedRevision: Revision = ksvc.findRevision('example-75w7v'); - assert.equals(revision, returnedRevision); + expect(returnedRevision).to.deep.equal(revision); }); }); suite('Finding a Service and Revision', () => { test('should return an object with both service and revision using the revision name', () => { const returnedServiceRevision = ksvc.findRevisionAndService('example-75w7v'); - assert.equals({ revision, service }, returnedServiceRevision); + expect(returnedServiceRevision).to.deep.equal({ revision, service }); }); }); suite('Check Traffic', () => { test('should a revision with 2 traffics one tagged', () => { const returnedRevision = ksvc.findRevision('example-75w7v'); - assert.equals(revision, returnedRevision); - chai.assert.exists(revision.traffic); - chai.assert.equal(revision.traffic.length, 2); - chai.assert.equal(revision.traffic[0].percent, 100); - chai.assert.equal(revision.traffic[1].tag, 'current'); + expect(revision).to.deep.equal(returnedRevision); + expect(revision.traffic); + expect(revision.traffic).to.have.lengthOf(2); + expect(revision.traffic[0].percent).to.equal(100); + expect(revision.traffic[1].tag).to.equal('current'); }); }); suite('Finding Service and Revision indexes', () => { test('should return an object with both service and revision using the revision name', () => { - const returnedServiceRevision = ksvc.findRevisionAndServiceIndex('example-75w7v'); const revisionIndex = 0; const serviceIndex = 3; - assert.equals({ revisionIndex, serviceIndex }, returnedServiceRevision); + const returnedServiceRevision = ksvc.findRevisionAndServiceIndex('example-75w7v'); + expect(returnedServiceRevision).to.deep.equal({ revisionIndex, serviceIndex }); }); }); suite('Adding a Service', () => { @@ -120,7 +118,7 @@ suite('Knative Services', () => { const remainingServices: Service[] = ksvc.removeService('example'); expect(remainingServices).to.have.lengthOf(3); const returnedService: Service = ksvc.addService(service); - assert.equals(service, returnedService); + expect(returnedService).to.deep.equal(service); }); }); suite('Adding multiple Services', () => { @@ -128,13 +126,13 @@ suite('Knative Services', () => { const remainingServices: Service[] = ksvc.removeService('example'); expect(remainingServices).to.have.lengthOf(3); const returnedService: Service[] = ksvc.addServices([service]); - assert.equals([service], returnedService); + expect(returnedService).to.deep.equal([service]); }); }); suite('Updating a Service', () => { test('should return a list of services, including the updated one', () => { const returnedService: Service[] = ksvc.updateService(service); - assert.equals(service, returnedService[3]); + expect(returnedService[3]).to.deep.equal(service); }); }); @@ -143,7 +141,7 @@ suite('Knative Services', () => { ksvc.removeRevision('example-2fvz4'); ksvc.removeRevision('example-g4hm8'); ksvc.removeRevision('example-75w7v'); - assert.equals(service.revisions, []); + expect(service.revisions).to.deep.equal([]); }); }); }); diff --git a/test/knative/knativeSources.test.ts b/test/knative/knativeSources.test.ts index 0ac087dd..428777a4 100644 --- a/test/knative/knativeSources.test.ts +++ b/test/knative/knativeSources.test.ts @@ -1,12 +1,9 @@ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as brokerData from '../eventingTree/broker.json'; -import * as channelData from '../eventingTree/channel.json'; -import * as sourceData from '../eventingTree/source.json'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { APIServerSource } from '../../src/knative/apiServerSource'; import { BindingSource } from '../../src/knative/bindingSource'; import { Broker } from '../../src/knative/broker'; @@ -18,9 +15,10 @@ import { KnativeSources, SourceTypes } from '../../src/knative/knativeSources'; import { PingSource } from '../../src/knative/pingSource'; import { Service } from '../../src/knative/service'; import { Sink } from '../../src/knative/sink'; +import * as brokerData from '../eventingTree/broker.json'; +import * as channelData from '../eventingTree/channel.json'; +import * as sourceData from '../eventingTree/source.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Sources', () => { @@ -212,19 +210,19 @@ suite('Knative Sources', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeSources = KnativeSources.Instance; - assert.equals(instance, knativeSources); + expect(instance).to.deep.equal(knativeSources); }); }); suite('Getting a Source', () => { test('should return a list of sources from the instance', () => { const returnedSource: SourceTypes = knativeSources.getSources()[0]; - assert.equals(testSourceApiserver0, returnedSource); + expect(returnedSource).to.deep.equal(testSourceApiserver0); }); }); suite('Finding a Source', () => { test('should return a source using the source name', () => { const returnedSource: SourceTypes = knativeSources.findSource('example-source-apiserver0'); - assert.equals(testSourceApiserver0, returnedSource); + expect(returnedSource).to.deep.equal(testSourceApiserver0); }); }); suite('Adding a Source', () => { @@ -232,7 +230,7 @@ suite('Knative Sources', () => { const remainingSources: SourceTypes[] = knativeSources.removeSource('example-source-apiserver1'); expect(remainingSources).to.have.lengthOf(14); const returnedSource: SourceTypes = knativeSources.addSource(testSourceApiserver1); - assert.equals(testSourceApiserver1, returnedSource); + expect(returnedSource).to.deep.equal(testSourceApiserver1); }); }); suite('Adding multiple Sources', () => { @@ -240,27 +238,30 @@ suite('Knative Sources', () => { const remainingSources: SourceTypes[] = knativeSources.removeSource('example-source-apiserver1'); expect(remainingSources).to.have.lengthOf(14); const returnedSources: SourceTypes[] = knativeSources.addSources(testSources); - assert.equals(testSources, returnedSources); + expect(returnedSources).to.deep.equal(testSources); }); }); suite('Adding a Sink', () => { test('should add a Sink to the parent source and return the Sink added', () => { const returnedSink: Service = knativeSources.addSink(testSourceApiserver0) as Service; - assert.equals(returnedSink.name, 'aaa'); + expect(returnedSink.name).to.equal('aaa'); + expect(returnedSink).to.have.own.property('name').to.equal('aaa'); }); test('should return null when adding a Sink to the parent source that does not have a Sink listed', () => { const returnedSink: Sink = knativeSources.addSink(testSourceGenericEmpty); - assert.isNull(returnedSink); + // eslint-disable-next-line no-unused-expressions + expect(returnedSink).to.be.null; }); test('should return undefined when adding a Sink to the parent source that has an unused Sink name', () => { const returnedSink: Sink = knativeSources.addSink(testSourceGenericMissing); - assert.isUndefined(returnedSink); + // eslint-disable-next-line no-unused-expressions + expect(returnedSink).to.be.undefined; }); }); suite('Updating a Source', () => { test('should return a list of sources, including the updated one', () => { const returnedSources: SourceTypes[] = knativeSources.updateSource(testSourceApiserver1); - assert.equals(testSources, returnedSources); + expect(returnedSources).to.deep.equal(testSources); }); }); }); diff --git a/test/knative/knativeSubscriptions.test.ts b/test/knative/knativeSubscriptions.test.ts index b37f75dd..40b88112 100644 --- a/test/knative/knativeSubscriptions.test.ts +++ b/test/knative/knativeSubscriptions.test.ts @@ -1,13 +1,10 @@ +/* eslint-disable no-unused-expressions */ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as brokerData from '../eventingTree/broker.json'; -import * as channelData from '../eventingTree/channel.json'; -import * as sourceData from '../eventingTree/source.json'; -import * as subscriptionData from '../eventingTree/subscription.json'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { APIServerSource } from '../../src/knative/apiServerSource'; import { BindingSource } from '../../src/knative/bindingSource'; import { Broker } from '../../src/knative/broker'; @@ -21,9 +18,11 @@ import { PingSource } from '../../src/knative/pingSource'; import { Service } from '../../src/knative/service'; import { Sink } from '../../src/knative/sink'; import { Subscription } from '../../src/knative/subscription'; +import * as brokerData from '../eventingTree/broker.json'; +import * as channelData from '../eventingTree/channel.json'; +import * as sourceData from '../eventingTree/source.json'; +import * as subscriptionData from '../eventingTree/subscription.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Subscriptions', () => { @@ -272,19 +271,19 @@ suite('Knative Subscriptions', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeSubscriptions = KnativeSubscriptions.Instance; - assert.equals(instance, knativeSubscriptions); + expect(instance).to.deep.equal(knativeSubscriptions); }); }); suite('Getting a Subscription', () => { test('should return a list of subscriptions from the instance', () => { const returnedSubscription: Subscription = knativeSubscriptions.getSubscriptions()[0]; - assert.equals(testSubscription0, returnedSubscription); + expect(returnedSubscription).to.deep.equal(testSubscription0); }); }); suite('Finding a Subscription', () => { test('should return a subscription using the subscription name', () => { const returnedSubscription: Subscription = knativeSubscriptions.findSubscription('example-subscription0'); - assert.equals(testSubscription0, returnedSubscription); + expect(returnedSubscription).to.deep.equal(testSubscription0); }); }); suite('Adding a Subscription', () => { @@ -292,7 +291,7 @@ suite('Knative Subscriptions', () => { const remainingSubscriptions: Subscription[] = knativeSubscriptions.removeSubscription('example-subscription1'); expect(remainingSubscriptions).to.have.lengthOf(6); const returnedSubscription: Subscription = knativeSubscriptions.addSubscription(testSubscription1); - assert.equals(testSubscription1, returnedSubscription); + expect(returnedSubscription).to.deep.equal(testSubscription1); }); }); suite('Adding multiple Subscriptions', () => { @@ -300,71 +299,71 @@ suite('Knative Subscriptions', () => { const remainingSubscriptions: Subscription[] = knativeSubscriptions.removeSubscription('example-subscription1'); expect(remainingSubscriptions).to.have.lengthOf(6); const returnedSubscriptions: Subscription[] = knativeSubscriptions.addSubscriptions(testSubscriptions); - assert.equals(testSubscriptions, returnedSubscriptions); + expect(returnedSubscriptions).to.deep.equal(testSubscriptions); }); }); suite('Adding a Channel', () => { test('should add a Channel to the parent subscription and return the Channel added', () => { const returnedChannel: Channel = knativeSubscriptions.addChannel(testSubscription4); - assert.equals(returnedChannel.name, 'example-channel3'); + expect(returnedChannel.name).to.equal('example-channel3'); }); test('should return null when adding a Channel to the parent subscription that does not have a channel listed', () => { const returnedChannel: Channel = knativeSubscriptions.addChannel(testSubscription0Empty); - assert.isNull(returnedChannel); + expect(returnedChannel).to.be.null; }); test('should return undefined when adding a Channel to the parent subscription that has an unused channel name', () => { const returnedChannel: Channel = knativeSubscriptions.addChannel(testSubscription1Empty); - assert.isUndefined(returnedChannel); + expect(returnedChannel).to.be.undefined; }); }); suite('Adding a Sink', () => { test('should add a Sink to the parent subscription and return the Sink added', () => { const returnedSink: Service = knativeSubscriptions.addSink(testSubscription4) as Service; - assert.equals(returnedSink.name, 'aaa'); + expect(returnedSink.name).to.equal('aaa'); }); test('should return null when adding a Sink to the parent subscription that does not have a Sink listed', () => { const returnedSink: Sink = knativeSubscriptions.addSink(testSubscription0Empty); - assert.isNull(returnedSink); + expect(returnedSink).to.be.null; }); test('should return undefined when adding a Sink to the parent subscription that has an unused Sink name', () => { const returnedSink: Sink = knativeSubscriptions.addSink(testSubscription1Empty); - assert.isUndefined(returnedSink); + expect(returnedSink).to.be.undefined; }); }); suite('Adding a Sink Dead Letter', () => { test('should add a Sink to the parent subscription and return the Sink added', () => { const returnedSink: Broker = knativeSubscriptions.addSinkDeadLetter(testSubscription4) as Broker; - assert.equals(returnedSink.name, 'example-broker1'); + expect(returnedSink.name).to.equal('example-broker1'); }); test('should return null when adding a Sink to the parent subscription that does not have a Sink listed', () => { const returnedSink: Sink = knativeSubscriptions.addSinkDeadLetter(testSubscription0Empty); - assert.isNull(returnedSink); + expect(returnedSink).to.be.null; }); test('should return undefined when adding a Sink to the parent subscription that has an unused Sink name', () => { const returnedSink: Sink = knativeSubscriptions.addSinkDeadLetter(testSubscription1Empty); - assert.isUndefined(returnedSink); + expect(returnedSink).to.be.undefined; }); }); suite('Adding a Sink Reply', () => { test('should add a Sink to the parent subscription and return the Sink added', () => { const returnedSink: Broker = knativeSubscriptions.addSinkReply(testSubscription4) as Broker; - assert.equals(returnedSink.name, 'example-broker0'); + expect(returnedSink.name).to.equal('example-broker0'); }); test('should return null when adding a Sink to the parent subscription that does not have a Sink listed', () => { const returnedSink: Sink = knativeSubscriptions.addSinkReply(testSubscription0Empty); - assert.isNull(returnedSink); + expect(returnedSink).to.be.null; }); test('should return undefined when adding a Sink to the parent subscription that has an unused Sink name', () => { const returnedSink: Sink = knativeSubscriptions.addSinkReply(testSubscription1Empty); - assert.isUndefined(returnedSink); + expect(returnedSink).to.be.undefined; }); }); suite('Updating a Subscription', () => { test('should return a list of subscriptions, including the updated one', () => { const returnedSubscriptions: Subscription[] = knativeSubscriptions.updateSubscription(testSubscription1); - assert.equals(testSubscriptions, returnedSubscriptions); + expect(returnedSubscriptions).to.deep.equal(testSubscriptions); }); }); }); diff --git a/test/knative/knativeTriggers.test.ts b/test/knative/knativeTriggers.test.ts index 462eb500..a8d39890 100644 --- a/test/knative/knativeTriggers.test.ts +++ b/test/knative/knativeTriggers.test.ts @@ -1,13 +1,10 @@ +/* eslint-disable no-unused-expressions */ import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; -import * as referee from '@sinonjs/referee'; import { beforeEach } from 'mocha'; -import * as triggerData from '../eventingTree/trigger.json'; -import * as brokerData from '../eventingTree/broker.json'; -import * as channelData from '../eventingTree/channel.json'; -import * as sourceData from '../eventingTree/source.json'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { APIServerSource } from '../../src/knative/apiServerSource'; import { BindingSource } from '../../src/knative/bindingSource'; import { Broker } from '../../src/knative/broker'; @@ -16,14 +13,16 @@ import { GenericSource } from '../../src/knative/genericSource'; import { KnativeBrokers } from '../../src/knative/knativeBrokers'; import { KnativeChannels } from '../../src/knative/knativeChannels'; import { KnativeSources } from '../../src/knative/knativeSources'; +import { KnativeTriggers } from '../../src/knative/knativeTriggers'; import { PingSource } from '../../src/knative/pingSource'; import { Service } from '../../src/knative/service'; import { Sink } from '../../src/knative/sink'; -import { KnativeTriggers } from '../../src/knative/knativeTriggers'; import { Trigger } from '../../src/knative/trigger'; +import * as brokerData from '../eventingTree/broker.json'; +import * as channelData from '../eventingTree/channel.json'; +import * as sourceData from '../eventingTree/source.json'; +import * as triggerData from '../eventingTree/trigger.json'; -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('Knative Triggers', () => { @@ -259,19 +258,19 @@ suite('Knative Triggers', () => { suite('Getting an instance', () => { test('should return an instance of the singleton', () => { const instance: KnativeTriggers = KnativeTriggers.Instance; - assert.equals(instance, knativeTriggers); + expect(instance).to.deep.equal(knativeTriggers); }); }); suite('Getting a Trigger', () => { test('should return a list of triggers from the instance', () => { const returnedTrigger: Trigger = knativeTriggers.getTriggers()[0]; - assert.equals(returnedTrigger, testTrigger0); + expect(returnedTrigger).to.deep.equal(testTrigger0); }); }); suite('Finding a Trigger', () => { test('should return a trigger using the trigger name', () => { const returnedTrigger: Trigger = knativeTriggers.findTrigger('example-trigger0'); - assert.equals(returnedTrigger, testTrigger0); + expect(returnedTrigger).to.deep.equal(testTrigger0); }); }); suite('Adding a Trigger', () => { @@ -279,7 +278,7 @@ suite('Knative Triggers', () => { const remainingTriggers: Trigger[] = knativeTriggers.removeTrigger('example-trigger1'); expect(remainingTriggers).to.have.lengthOf(4); const returnedTrigger: Trigger = knativeTriggers.addTrigger(testTrigger1); - assert.equals(returnedTrigger, testTrigger1); + expect(returnedTrigger).to.deep.equal(testTrigger1); }); }); suite('Adding multiple Triggers', () => { @@ -287,41 +286,41 @@ suite('Knative Triggers', () => { const remainingTriggers: Trigger[] = knativeTriggers.removeTrigger('example-trigger1'); expect(remainingTriggers).to.have.lengthOf(4); const returnedTriggers: Trigger[] = knativeTriggers.addTriggers(testTriggers); - assert.equals(returnedTriggers, testTriggers); + expect(returnedTriggers).to.deep.equal(testTriggers); }); }); suite('Adding a Broker', () => { test('should add a Broker to the parent trigger and return the Broker added', () => { const returnedBroker: Broker = knativeTriggers.addBroker(testTrigger0); - assert.equals(returnedBroker.name, 'example-broker0'); + expect(returnedBroker.name).to.equal('example-broker0'); }); test('should return null when adding a Broker to the parent trigger that does not have a broker listed', () => { const returnedBroker: Broker = knativeTriggers.addBroker(testTrigger0Empty); - assert.isNull(returnedBroker); + expect(returnedBroker).to.be.null; }); test('should return undefined when adding a Broker to the parent trigger that has an unused broker name', () => { const returnedBroker: Broker = knativeTriggers.addBroker(testTrigger0Missing); - assert.isUndefined(returnedBroker); + expect(returnedBroker).to.be.undefined; }); }); suite('Adding a Sink', () => { test('should add a Sink to the parent trigger and return the Sink added', () => { const returnedSink: Service = knativeTriggers.addSink(testTrigger0) as Service; - assert.equals(returnedSink.name, 'aaa'); + expect(returnedSink.name).to.equal('aaa'); }); test('should return null when adding a Sink to the parent trigger that does not have a Sink listed', () => { const returnedSink: Sink = knativeTriggers.addSink(testTrigger0Empty); - assert.isNull(returnedSink); + expect(returnedSink).to.be.null; }); test('should return undefined when adding a Sink to the parent trigger that has an unused Sink name', () => { const returnedSink: Sink = knativeTriggers.addSink(testTrigger0Missing); - assert.isUndefined(returnedSink); + expect(returnedSink).to.be.undefined; }); }); suite('Updating a Trigger', () => { test('should return a list of triggers, including the updated one', () => { const returnedTriggers: Trigger[] = knativeTriggers.updateTrigger(testTrigger1); - assert.equals(returnedTriggers, testTriggers); + expect(returnedTriggers).to.deep.equal(testTriggers); }); }); }); diff --git a/test/knative/revision.test.ts b/test/knative/revision.test.ts index e2295dd1..c700b076 100644 --- a/test/knative/revision.test.ts +++ b/test/knative/revision.test.ts @@ -1,5 +1,5 @@ -import { expect } from 'chai'; import { URL } from 'url'; +import { expect } from 'chai'; import * as revision from '../../src/knative/revision'; suite('Revision class', () => { @@ -72,6 +72,7 @@ suite('Revision class', () => { revision.Revision.toRevision(itemsObj2, trafficObj); } catch (err) { expect(err).to.be.instanceOf(TypeError); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access expect(err.message).to.include('Cannot read property'); } itemsObj2.metadata.ownerReferences = undefined; @@ -79,6 +80,7 @@ suite('Revision class', () => { revision.Revision.toRevision(itemsObj2, trafficObj); } catch (err) { expect(err).to.be.instanceOf(TypeError); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access expect(err.message).to.include('Cannot read property'); } }); diff --git a/test/output/knOutputChannel.test.ts b/test/output/knOutputChannel.test.ts index 6ad33c4c..b518130a 100644 --- a/test/output/knOutputChannel.test.ts +++ b/test/output/knOutputChannel.test.ts @@ -1,15 +1,11 @@ -// import * as vscode from 'vscode'; -import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; +import rewire = require('rewire'); import * as sinon from 'sinon'; -import rewire = require('rewire'); const rewiredKnOutputChannel = rewire('../../src/output/knOutputChannel'); -chai.use(sinonChai); - suite('Output Channel', () => { const sandbox = sinon.createSandbox(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call const op = new rewiredKnOutputChannel.KnOutputChannel(); teardown(() => { @@ -17,15 +13,19 @@ suite('Output Channel', () => { }); test('should print text', () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const channelSpy = sandbox.spy(op.channel, 'append'); const text = `hello\n`; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call op.print(text); sandbox.assert.calledOnce(channelSpy); }); test('should add a new line if none exists when it prints text', () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const channelSpy = sandbox.spy(op.channel, 'append'); const text = `hello`; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call op.print(text); sandbox.assert.calledTwice(channelSpy); }); diff --git a/test/servingTree/servingDataProvider.test.ts b/test/servingTree/servingDataProvider.test.ts index c0779fa5..737da45a 100644 --- a/test/servingTree/servingDataProvider.test.ts +++ b/test/servingTree/servingDataProvider.test.ts @@ -1,33 +1,36 @@ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +import * as path from 'path'; +import { URL } from 'url'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; -import * as path from 'path'; +import rewire = require('rewire'); import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as yaml from 'yaml'; -import { URL } from 'url'; -import * as singleServiceData from './singleServiceServiceList.json'; import * as singleServiceRevisionData from './singleServiceRevisionList.json'; +import * as singleServiceData from './singleServiceServiceList.json'; import { ServingContextType } from '../../src/cli/config'; import * as vfs from '../../src/cli/virtualfs'; +import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; import { KnativeItem } from '../../src/knative/knativeItem'; +import * as revision from '../../src/knative/revision'; import { Revision } from '../../src/knative/revision'; +import * as service from '../../src/knative/service'; import { Service, CreateService } from '../../src/knative/service'; -import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; import { ServingDataProvider } from '../../src/servingTree/servingDataProvider'; -import { EventingTreeItem } from '../../src/eventingTree/eventingTreeItem'; - -import rewire = require('rewire'); +import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; const rewiredServingDataProvider = rewire('../../src/servingTree/servingDataProvider'); -const { assert } = referee; -const { expect } = chai; chai.use(sinonChai); suite('ServingDataProvider', () => { const sandbox = sinon.createSandbox(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call const sdp = new rewiredServingDataProvider.ServingDataProvider(); const servingDataProvider: ServingDataProvider = new ServingDataProvider(); let serviceTreeItems: ServingTreeItem[]; @@ -200,7 +203,7 @@ status: url: http://current-example-a-serverless-example.apps.devcluster.openshift.com url: http://example-a-serverless-example.apps.devcluster.openshift.com `; - const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered); + const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered) as service.Items; const testService: Service = new Service( 'example', 'http://example-a-serverless-example.apps.devcluster.openshift.com', @@ -332,7 +335,7 @@ status: observedGeneration: 1 serviceName: example-75w7v `; - const example75w7vJson = yaml.parse(example75w7vYaml); + const example75w7vJson = yaml.parse(example75w7vYaml) as revision.Items; const example75w7vRevision: Revision = new Revision('example-75w7v', 'example', example75w7vJson, [ { tag: null, @@ -459,7 +462,7 @@ status: observedGeneration: 1 serviceName: example-g4hm8 `; - const exampleG4hm8Json = yaml.parse(exampleG4hm8Yaml); + const exampleG4hm8Json = yaml.parse(exampleG4hm8Yaml) as revision.Items; const exampleG4hm8Revision: Revision = new Revision('example-g4hm8', 'example', exampleG4hm8Json); const exampleG4hm8TreeItem: ServingTreeItem = new ServingTreeItem( testServiceTreeItem, @@ -571,7 +574,7 @@ status: observedGeneration: 1 serviceName: example-2fvz4 `; - const example2fvz4Json = yaml.parse(example2fvz4Yaml); + const example2fvz4Json = yaml.parse(example2fvz4Yaml) as revision.Items; const example2fvz4Revision: Revision = new Revision('example-2fvz4', 'example', example2fvz4Json, [ { tag: 'old', @@ -666,7 +669,7 @@ status: null, ); const item: vscode.TreeItem = await servingDataProvider.getTreeItem(treeItem); - assert.equals(item, treeItem); + expect(item).to.equal(treeItem); }); }); @@ -677,9 +680,9 @@ status: sandbox.stub(servingDataProvider.knExecutor, 'execute').resolves({ error: undefined, stdout: 'No services found.' }); const result = await servingDataProvider.getChildren(); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('No Service Found'); - expect(result[0].getName()).equals('No Service Found'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('No Service Found'); + expect(result[0].getName()).to.equal('No Service Found'); }); test('should return a single Service tree node when called from root with one Service', async () => { sandbox.restore(); @@ -689,10 +692,10 @@ status: .resolves({ error: undefined, stdout: JSON.stringify(singleServiceData) }); const result = await servingDataProvider.getChildren(); expect(result).to.have.lengthOf(1); - expect(result[0].description).equals(''); - expect(result[0].label.label).equals('example'); - expect(result[0].getName()).equals('example'); - expect(result[0].tooltip).equals('Service: example'); + expect(result[0].description).to.equal(''); + expect(result[0].label.label).to.equal('example'); + expect(result[0].getName()).to.equal('example'); + expect(result[0].tooltip).to.equal('Service: example'); }); test('should return multiple Revision tree nodes', async () => { sandbox.restore(); @@ -700,10 +703,10 @@ status: sandbox.stub(servingDataProvider, `getRevisions`).resolves(exampleRevisionTreeItems); const result = await servingDataProvider.getChildren(testServiceTreeItem); expect(result).to.have.lengthOf(3); - expect(result[0].description).equals('latest current '); - expect(result[0].label.label).equals('example-75w7v (100%)'); - expect(result[0].getName()).equals('example-75w7v'); - expect(result[0].tooltip).equals('Revision: example-75w7v'); + expect(result[0].description).to.equal('latest current '); + expect(result[0].label.label).to.equal('example-75w7v (100%)'); + expect(result[0].getName()).to.equal('example-75w7v'); + expect(result[0].tooltip).to.equal('Revision: example-75w7v'); }); test('should return multiple Revision tree nodes when the Service is modified', async () => { sandbox.restore(); @@ -711,10 +714,10 @@ status: sandbox.stub(servingDataProvider, `getRevisions`).resolves(exampleRevisionTreeItems); const result = await servingDataProvider.getChildren(testServiceTreeItemModified); expect(result).to.have.lengthOf(3); - expect(result[0].description).equals('latest current '); - expect(result[0].label.label).equals('example-75w7v (100%)'); - expect(result[0].getName()).equals('example-75w7v'); - expect(result[0].tooltip).equals('Revision: example-75w7v'); + expect(result[0].description).to.equal('latest current '); + expect(result[0].label.label).to.equal('example-75w7v (100%)'); + expect(result[0].getName()).to.equal('example-75w7v'); + expect(result[0].tooltip).to.equal('Revision: example-75w7v'); }); }); @@ -731,12 +734,12 @@ status: null, ); const item: ServingTreeItem | EventingTreeItem = servingDataProvider.getParent(parent); - assert.equals(item, null); + expect(item).to.equal(null); }); test('should return the Service of the Revision', async () => { const result = await servingDataProvider.getRevisions(serviceTreeItems[0]); const item: ServingTreeItem | EventingTreeItem = servingDataProvider.getParent(result[0]); - assert.equals(item, serviceTreeItems[0]); + expect(item).to.equal(serviceTreeItems[0]); }); }); @@ -767,7 +770,7 @@ status: stub.rejects('In a test, rejecting a promise to get Revisions'); const result = await sdp.getRevisions(testServiceTreeItem); sinon.assert.calledOnce(spy); - assert.equals(result, null); + expect(result).to.equal(null); // sinon.assert.threw(spy); // assert(spy.threw()); }); @@ -782,7 +785,7 @@ status: sandbox.stub(sdp, 'isNodeModifiedLocally').resolves(false); const result: ServingTreeItem = await sdp.getServices(); sinon.assert.calledOnce(spy); - assert.equals(result[0], testServiceTreeItem); + expect(result[0]).to.deep.equal(testServiceTreeItem); }); test('should return a list of Services, even if they are modified', async () => { @@ -793,7 +796,7 @@ status: sandbox.stub(sdp, 'isNodeModifiedLocally').resolves(true); const result: ServingTreeItem = await sdp.getServices(); sinon.assert.calledOnce(spy); - assert.equals(result[0], testServiceTreeItemModified); + expect(result[0]).to.deep.equal(testServiceTreeItemModified); }); test(`should rerun the List command if it does not get complete data, when is no Conditions, then return a list of Services`, async () => { @@ -808,7 +811,7 @@ status: stub.resolves({ error: undefined, stdout: JSON.stringify(singleServiceData) }); const result: ServingTreeItem = await sdp.getServices(); sinon.assert.calledTwice(spy); - assert.equals(result[0], testServiceTreeItem); + expect(result[0]).to.deep.equal(testServiceTreeItem); }); }); @@ -883,7 +886,7 @@ status: sandbox.restore(); sandbox.stub(vscode.window, 'showInputBox').resolves('some/url'); const result: string = await sdp.getUrl(); - assert.equals('some/url', result); + expect('some/url').to.equal(result); }); }); @@ -920,7 +923,7 @@ status: }, }; - let revertIB; + let revertIB: () => void; beforeEach(() => { sandbox.restore(); revertIB = rewiredServingDataProvider.__set__('vscode.window', windowMock); @@ -940,7 +943,7 @@ status: sandbox.stub(sdp.ksvc, 'findService').returns(undefined); showInformationMessageIndex = 0; const result: CreateService = await sdp.getName(`quay.io/test-group/knative-tutorial-greeter:quarkus`); - assert.equals(result, serviceExpected); + expect(result).to.deep.equal(serviceExpected); }); test('should ask for a new name if the default is used and overwrite the original', async () => { @@ -952,7 +955,7 @@ status: sandbox.stub(sdp.ksvc, 'findService').returns(true); showInformationMessageIndex = 0; const result: CreateService = await sdp.getName(`quay.io/test-group/knative-tutorial-greeter:quarkus`); - assert.equals(result, serviceExpected); + expect(result).to.deep.equal(serviceExpected); }); test('should ask for a new name if the default is used and change to a new name', async () => { @@ -964,7 +967,7 @@ status: sandbox.stub(sdp.ksvc, 'findService').returns(true); showInformationMessageIndex = 1; const result: CreateService = await sdp.getName(`quay.io/test-group/knative-tutorial-greeter:quarkus`); - assert.equals(result, serviceExpected); + expect(result).to.deep.equal(serviceExpected); }); test('should return null if there is no name', async () => { @@ -972,7 +975,7 @@ status: showInformationMessageIndex = 1; sandbox.stub(windowMock, 'showInputBox').resolves(null); const result: CreateService = await sdp.getName('not/a/valid/url'); - assert.equals(result, null); + expect(result).to.deep.equal(null); }); }); @@ -1005,7 +1008,8 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.calledOnce(stubDelete); - assert.isUndefined(result); + // eslint-disable-next-line no-unused-expressions + expect(result).to.be.undefined; }); test('should return undefined if there is a failure to create the the service', async () => { @@ -1036,7 +1040,8 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.calledOnce(stubDelete); - assert.isUndefined(result); + // eslint-disable-next-line no-unused-expressions + expect(result).to.be.undefined; }); test('should return null if the new file can not be found', async () => { @@ -1066,7 +1071,7 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.notCalled(stubDelete); - assert.equals(result, null); + expect(result).to.equal(null); }); test('should throw an error if there is no workspace open', async () => { const serviceToCreate: CreateService = { @@ -1083,7 +1088,7 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.notCalled(stubDelete); - assert.equals(result, null); + expect(result).to.equal(null); }); test('should return undefined if the file being created already exists', async () => { const serviceToCreate: CreateService = { @@ -1103,7 +1108,8 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.notCalled(stubDelete); - assert.isUndefined(result); + // eslint-disable-next-line no-unused-expressions + expect(result).to.be.undefined; }); test('should return null if no image string is provided', async () => { sandbox.restore(); @@ -1112,7 +1118,7 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.notCalled(stubDelete); - assert.equals(result, null); + expect(result).to.equal(null); }); test('should return null if no name string is provided', async () => { const serviceToCreate: CreateService = { @@ -1127,7 +1133,7 @@ status: const stubDelete = sandbox.stub(sdp.knvfs, 'delete').resolves(); const result: ServingTreeItem[] = await sdp.addService(); sinon.assert.notCalled(stubDelete); - assert.equals(result, null); + expect(result).to.equal(null); }); }); @@ -1142,7 +1148,8 @@ status: const stubUpdate = sandbox.stub(sdp.ksvc, 'updateService').returns(undefined); const result: ServingTreeItem[] = await sdp.addTag(exampleG4hm8TreeItem); sinon.assert.calledOnce(stubUpdate); - assert.isUndefined(result); + // eslint-disable-next-line no-unused-expressions + expect(result).to.be.undefined; }); test('should get a tag name and add it to the Revision', async () => { @@ -1155,7 +1162,7 @@ status: const stubUpdate = sandbox.stub(sdp.ksvc, 'updateService').returns(undefined); const result: ServingTreeItem[] = await sdp.addTag(exampleG4hm8TreeItem); sinon.assert.calledOnce(stubUpdate); - assert.equals(result, null); + expect(result).to.equal(null); }); }); @@ -1169,7 +1176,7 @@ status: sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').resolves(files); const result: ServingTreeItem[] = await sdp.getLocalYamlPathForNode(testServiceTreeItemModified); - assert.equals(result, expectedPath); + expect(result).to.equal(expectedPath); }); test('should return an empty string if file is not found', async () => { const files: [string, vscode.FileType][] = [[`/home/user/code/service-different.yaml`, 1]]; @@ -1177,14 +1184,14 @@ status: sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').resolves(files); const result: ServingTreeItem[] = await sdp.getLocalYamlPathForNode(testServiceTreeItemModified); - assert.equals(result, ''); + expect(result).to.equal(''); }); test('should return null if no files are found', async () => { sandbox.restore(); sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').rejects(); const result: ServingTreeItem[] = await sdp.getLocalYamlPathForNode(testServiceTreeItemModified); - assert.equals(result, null); + expect(result).to.equal(null); }); }); @@ -1197,7 +1204,7 @@ status: sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').resolves(files); const result: boolean = await sdp.isNodeModifiedLocally('example'); - assert.equals(result, true); + expect(result).to.equal(true); }); test('should return false if file is not found', async () => { const files: [string, vscode.FileType][] = [ @@ -1207,14 +1214,14 @@ status: sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').resolves(files); const result: boolean = await sdp.isNodeModifiedLocally('example'); - assert.equals(result, false); + expect(result).to.equal(false); }); test('should return null if no files are found', async () => { sandbox.restore(); sandbox.stub(vscode.window, 'showErrorMessage').resolves(); sandbox.stub(sdp.knvfs, 'readDirectoryAsync').rejects(); const result: boolean = await sdp.isNodeModifiedLocally('example'); - assert.equals(result, null); + expect(result).to.equal(null); }); }); @@ -1249,8 +1256,8 @@ status: // }, // }; - // let revertIB; - let revertIB2; + // let revertIB: () => void; + let revertIB2: () => void; beforeEach(() => { sandbox.restore(); // revertIB = rewiredServingDataProvider.__set__('vscode.workspace', workspaceMock); @@ -1423,7 +1430,7 @@ status: .stub(servingDataProvider.knExecutor, 'execute') .resolves({ error: 'Please log in to the cluster', stdout: undefined, stderr: 'Please log in to the cluster' }); const result: boolean = await servingDataProvider.requireLogin(); - assert.equals(result, true); + expect(result).to.equal(true); }); }); }); diff --git a/test/servingTree/servingExplorer.test.ts b/test/servingTree/servingExplorer.test.ts index 42498d62..6a35c4cb 100644 --- a/test/servingTree/servingExplorer.test.ts +++ b/test/servingTree/servingExplorer.test.ts @@ -1,18 +1,19 @@ +import { URL } from 'url'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as yaml from 'yaml'; -import { URL } from 'url'; import { ServingContextType } from '../../src/cli/config'; +import * as revision from '../../src/knative/revision'; import { Revision } from '../../src/knative/revision'; +import * as service from '../../src/knative/service'; import { Service } from '../../src/knative/service'; -import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; import { ServingExplorer } from '../../src/servingTree/servingExplorer'; +import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; -const { assert } = referee; chai.use(sinonChai); let servingExplorer: ServingExplorer; @@ -144,7 +145,7 @@ status: url: http://current-example-a-serverless-example.apps.devcluster.openshift.com url: http://example-a-serverless-example.apps.devcluster.openshift.com `; - const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered); + const jsonServiceContentUnfiltered = yaml.parse(yamlServiceContentUnfiltered) as service.Items; const testService: Service = new Service( 'example', 'http://example-a-serverless-example.apps.devcluster.openshift.com', @@ -276,7 +277,7 @@ status: observedGeneration: 1 serviceName: example-75w7v `; - const example75w7vJson = yaml.parse(example75w7vYaml); + const example75w7vJson = yaml.parse(example75w7vYaml) as revision.Items; const example75w7vRevision: Revision = new Revision('example-75w7v', 'example', example75w7vJson, [ { tag: null, @@ -310,7 +311,7 @@ status: // giving the extension test enough time to dispose of it. Otherwise we would have 2 registered // commands for each one in ServingExplorer. servingExplorer = new ServingExplorer(); - assert.equals(servingExplorer.registeredCommands.length, 8); + expect(servingExplorer.registeredCommands.length).to.equal(8); }); test('should connect the output command to showing the knative output channel', async () => { diff --git a/test/servingTree/servingTreeItem.test.ts b/test/servingTree/servingTreeItem.test.ts index 99b87f4b..41a20de9 100644 --- a/test/servingTree/servingTreeItem.test.ts +++ b/test/servingTree/servingTreeItem.test.ts @@ -1,19 +1,20 @@ +import * as path from 'path'; +import { URL } from 'url'; import * as vscode from 'vscode'; +import { expect } from 'chai'; import * as chai from 'chai'; import { beforeEach } from 'mocha'; -import * as path from 'path'; import * as sinon from 'sinon'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import * as yaml from 'yaml'; -import { URL } from 'url'; import { ServingContextType } from '../../src/cli/config'; +import { compareNodes } from '../../src/knative/knativeItem'; +import * as revision from '../../src/knative/revision'; import { Revision } from '../../src/knative/revision'; +import * as service from '../../src/knative/service'; import { Service } from '../../src/knative/service'; import { ServingTreeItem } from '../../src/servingTree/servingTreeItem'; -import { compareNodes } from '../../src/knative/knativeItem'; -const { assert } = referee; chai.use(sinonChai); suite('ServingTreeItem', () => { @@ -142,7 +143,7 @@ status: url: http://current-exampleA-a-serverless-exampleA.apps.devcluster.openshift.com url: http://exampleA-a-serverless-exampleA.apps.devcluster.openshift.com `; - const jsonServiceAContentUnfiltered = yaml.parse(yamlServiceAContentUnfiltered); + const jsonServiceAContentUnfiltered = yaml.parse(yamlServiceAContentUnfiltered) as service.Items; const testServiceA: Service = new Service( 'exampleA', 'http://exampleA-a-serverless-exampleA.apps.devcluster.openshift.com', @@ -274,7 +275,7 @@ status: observedGeneration: 1 serviceName: exampleA-75w7v `; - const exampleA75w7vJson = yaml.parse(exampleA75w7vYaml); + const exampleA75w7vJson = yaml.parse(exampleA75w7vYaml) as revision.Items; const exampleA75w7vRevision: Revision = new Revision('exampleA-75w7v', 'exampleA', exampleA75w7vJson, [ { tag: null, @@ -411,7 +412,7 @@ status: observedGeneration: 1 serviceName: exampleA-2fvz4 `; - const exampleA2fvz4Json = yaml.parse(exampleA2fvz4Yaml); + const exampleA2fvz4Json = yaml.parse(exampleA2fvz4Yaml) as revision.Items; const exampleA2fvz4Revision: Revision = new Revision('exampleA-2fvz4', 'exampleA', exampleA2fvz4Json); const exampleA2fvz4TreeItemNoTraffic: ServingTreeItem = new ServingTreeItem( testServiceATreeItem, @@ -540,7 +541,7 @@ status: url: http://current-exampleB-a-serverless-exampleB.apps.devcluster.openshift.com url: http://exampleB-a-serverless-exampleB.apps.devcluster.openshift.com `; - const jsonServiceBContentUnfiltered = yaml.parse(yamlServiceBContentUnfiltered); + const jsonServiceBContentUnfiltered = yaml.parse(yamlServiceBContentUnfiltered) as service.Items; const testServiceB: Service = new Service( 'exampleB', 'http://exampleB-a-serverless-exampleB.apps.devcluster.openshift.com', @@ -672,7 +673,7 @@ status: observedGeneration: 1 serviceName: exampleB-75w7v `; - const exampleB75w7vJson = yaml.parse(exampleB75w7vYaml); + const exampleB75w7vJson = yaml.parse(exampleB75w7vYaml) as revision.Items; const exampleB75w7vRevision: Revision = new Revision('exampleB-75w7v', 'exampleB', exampleB75w7vJson, [ { tag: null, @@ -703,22 +704,22 @@ status: test('should compare 2 nodes and return a positive number when they are NOT in alphabetical order', () => { const compareResult: number = compareNodes(testServiceBTreeItem, testServiceATreeItem); - assert.equals(compareResult, 1); + expect(compareResult).to.equal(1); }); test('should compare 2 nodes and return a negative number when they are NOT in alphabetical order', () => { const compareResult: number = compareNodes(testServiceATreeItem, testServiceBTreeItem); - assert.equals(compareResult, -1); + expect(compareResult).to.equal(-1); }); test('should compare 2 modified nodes and return a positive number when they are NOT in alphabetical order', () => { const compareResult: number = compareNodes(testServiceBTreeItemModified, testServiceATreeItemModified); - assert.equals(compareResult, 1); + expect(compareResult).to.equal(1); }); test('should compare 2 modified nodes and return a negative number when they are NOT in alphabetical order', () => { const compareResult: number = compareNodes(testServiceATreeItemModified, testServiceBTreeItemModified); - assert.equals(compareResult, -1); + expect(compareResult).to.equal(-1); }); test('should compare 2 nodes and return a positive number when the first has no context', () => { @@ -733,7 +734,7 @@ status: ); const compareResult: number = compareNodes(testServiceBTreeItem, NoServiceContextTreeItem); - assert.equals(compareResult, 1); + expect(compareResult).to.equal(1); }); test('should compare 2 nodes and return a negative number when the second has no context', () => { @@ -748,42 +749,42 @@ status: ); const compareResult: number = compareNodes(NoServiceContextTreeItem, testServiceBTreeItem); - assert.equals(compareResult, -1); + expect(compareResult).to.equal(-1); }); test('should create a tree item and set the traffic labels correctly', () => { const revLabel = exampleA75w7vTreeItemModified.label.label; - assert.equals(revLabel, `exampleA-75w7v (100%)`); + expect(revLabel).to.equal(`exampleA-75w7v (100%)`); }); test('should get the icon path', () => { - const revPath = exampleA75w7vTreeItemModified.iconPath; const localDir = __dirname; // use regex for search since the backslash for windows needs to be escaped in a regex string const expected = vscode.Uri.file( `${localDir.substring(0, localDir.search(/out.test/))}images${path.sep}context${path.sep}revision.svg`, ); - assert.equals(revPath, expected); + const revPath = exampleA75w7vTreeItemModified.iconPath; + expect(revPath).to.deep.equal(expected); }); test('should get the tooltip', () => { const tested = exampleB75w7vTreeItem.tooltip; - assert.equals(tested, `Revision: exampleB-75w7v`); + expect(tested).to.equal(`Revision: exampleB-75w7v`); }); test('should get the description, it should be the tags for a Revision', () => { const tested = exampleB75w7vTreeItem.description; - assert.equals(tested, 'latest current '); + expect(tested).to.equal('latest current '); }); test('should get the description and it should be blank when not modified', () => { const tested = testServiceATreeItem.description; - assert.equals(tested, ''); + expect(tested).to.equal(''); }); test('should get the description and it should modified when modified', () => { const tested = testServiceATreeItemModified.description; - assert.equals(tested, 'modified'); + expect(tested).to.equal('modified'); }); test('should get the command for selected tree item and return undefined if No Service Found', () => { @@ -797,17 +798,18 @@ status: null, ); const tested = noServiceFoundTreeItem.command; - assert.isUndefined(tested); + // eslint-disable-next-line no-unused-expressions + expect(tested).to.be.undefined; }); test('should get the command for selected tree item and return Edit if modified', () => { const tested = testServiceATreeItemModified.command; - assert.equals(tested.command, 'service.explorer.edit'); + expect(tested.command).to.equal('service.explorer.edit'); }); test('should get the command for selected tree item and return Describe if NOT modified', () => { const tested = testServiceATreeItem.command; - assert.equals(tested.command, 'service.explorer.openFile'); + expect(tested.command).to.equal('service.explorer.openFile'); }); test('should get the children of Not Found', () => { @@ -821,26 +823,26 @@ status: null, ); const tested = noServiceFoundTreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of Revision', () => { const tested = exampleA2fvz4TreeItemNoTraffic.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of Tagged Revision', () => { const tested = exampleA75w7vTreeItemModified.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of Service', () => { const tested = testServiceATreeItem.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); test('should get the children of a Modified Service', () => { const tested = testServiceATreeItemModified.getChildren(); - assert.equals(tested, []); + expect(tested).to.deep.equal([]); }); }); diff --git a/test/ui-test/common/testUtils.ts b/test/ui-test/common/testUtils.ts index 61b568fe..5d86933f 100644 --- a/test/ui-test/common/testUtils.ts +++ b/test/ui-test/common/testUtils.ts @@ -5,7 +5,7 @@ import { Notification, VSBrowser, NotificationType, Workbench, SideBarView } fro */ export async function getNotifications(...types: NotificationType[]): Promise { const center = await new Workbench().openNotificationsCenter(); - const notifications = []; + const notifications: Notification[] = []; types.map(async (type) => { notifications.push(...(await center.getNotifications(type))); }); @@ -50,10 +50,11 @@ export async function notificationExists(text: string): Promise { } export async function safeNotificationExists(text: string): Promise { - let result; + let result: boolean; try { result = await notificationExists(text); } catch (err) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access if (err.name === 'StaleElementReferenceError') { result = await notificationExists(text); } else { @@ -63,14 +64,18 @@ export async function safeNotificationExists(text: string): Promise { return result; } +// eslint-disable-next-line @typescript-eslint/ban-types export async function waitForEvent(func: Function, timeout: number): Promise { const obj = await VSBrowser.instance.driver.wait(func, timeout); return obj; } +// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const asyncFilter = async (arr, predicate): Promise => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const results = await Promise.all(arr.map(predicate)); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call return arr.filter((_v, index) => results[index]); }; diff --git a/test/ui-test/extensionUITest.ts b/test/ui-test/extensionUITest.ts index 6aef5287..7f917ceb 100644 --- a/test/ui-test/extensionUITest.ts +++ b/test/ui-test/extensionUITest.ts @@ -1,5 +1,4 @@ import { expect } from 'chai'; -import { DialogHandler } from 'vscode-extension-tester-native'; import { ActivityBar, ExtensionsViewSection, @@ -9,6 +8,7 @@ import { WebDriver, VSBrowser, } from 'vscode-extension-tester'; +import { DialogHandler } from 'vscode-extension-tester-native'; import { KNativeConstants } from './common/constants'; import { cleanUpNotifications } from './common/testUtils'; /** @@ -27,9 +27,7 @@ export function extensionsUITest(): void { const view = new ActivityBar().getViewControl('Extensions'); const sideBar = await view.openView(); const section = (await sideBar.getContent().getSection('Installed')) as ExtensionsViewSection; - const item = await driver.wait(async () => { - return section.findItem(`@installed ${KNativeConstants.KNATIVE_EXTENSION_NAME}`); - }, 3000); + const item = await driver.wait(async () => section.findItem(`@installed ${KNativeConstants.KNATIVE_EXTENSION_NAME}`), 3000); expect(item).to.be.an.instanceOf(ExtensionsViewItem); expect(await item.getTitle()).to.equal(KNativeConstants.KNATIVE_EXTENSION_NAME); }); @@ -39,9 +37,7 @@ export function extensionsUITest(): void { const view = new ActivityBar().getViewControl('Extensions'); const sideBar = await view.openView(); const section = (await sideBar.getContent().getSection('Installed')) as ExtensionsViewSection; - const item = await driver.wait(async () => { - return section.findItem(`@installed ${KNativeConstants.YAML_EXTENSION_NAME}`); - }, 3000); + const item = await driver.wait(async () => section.findItem(`@installed ${KNativeConstants.YAML_EXTENSION_NAME}`), 3000); expect(item).to.be.an.instanceOf(ExtensionsViewItem); expect(await item.getTitle()).to.equal(KNativeConstants.YAML_EXTENSION_NAME); }); @@ -97,10 +93,8 @@ export function extensionsUITest(): void { KNativeConstants.ACTION_ITEM_ADD_SERVICE, KNativeConstants.ACTION_ITEM_REFRESH, KNativeConstants.ACTION_ITEM_REPORT_ISSUE, - // eslint-disable-next-line max-nested-callbacks - ].some((expectedTitle) => { - return title.includes(expectedTitle); - }), + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, max-nested-callbacks + ].some((expectedTitle) => title.includes(expectedTitle)), ); }); }); diff --git a/test/ui-test/initializationUITest.ts b/test/ui-test/initializationUITest.ts index d386ff81..c25d9d1b 100644 --- a/test/ui-test/initializationUITest.ts +++ b/test/ui-test/initializationUITest.ts @@ -29,6 +29,7 @@ export function knativeInitializationUITest(): void { } catch (error) { assert.fail(`Error notification appeared during cluster loading`); } + // eslint-disable-next-line @typescript-eslint/no-floating-promises driver.wait(async () => !(await sideBar.getContent().hasProgress()), 3000); expect(await sideBar.getContent().getText()).to.equal(KNativeConstants.NO_SERVICE_FOUND); const sections = await sideBar.getContent().getSections(); diff --git a/test/util/download.test.ts b/test/util/download.test.ts index ddc22f02..3a807dc3 100644 --- a/test/util/download.test.ts +++ b/test/util/download.test.ts @@ -2,17 +2,16 @@ * Copyright (c) Red Hat, Inc. All rights reserved. * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; + import { EventEmitter } from 'events'; import * as os from 'os'; import * as path from 'path'; +import { expect } from 'chai'; +import * as chai from 'chai'; +import * as pq from 'proxyquire'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; -import pq = require('proxyquire'); - -const { expect } = chai; chai.use(sinonChai); suite('Download Util', () => { @@ -26,8 +25,10 @@ suite('Download Util', () => { streamEmitter = new EventEmitter(); // eslint-disable-next-line dot-notation requestEmitter['pipe'] = (): EventEmitter => streamEmitter; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call progressMock = pq('../../src/util/download', { 'request-progress': () => requestEmitter, + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return request: (_: any) => _, }).DownloadUtil; }); @@ -38,11 +39,13 @@ suite('Download Util', () => { test('reports download progress', () => { const callback = sandbox.stub(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const result = progressMock.downloadFile('url', path.join(os.tmpdir(), 'toFile'), callback); requestEmitter.emit('progress', { percent: 0.33 }); requestEmitter.emit('progress', { percent: 0.66 }); requestEmitter.emit('end'); streamEmitter.emit('close'); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call return result.then(() => { expect(callback).calledWith(33, 33); expect(callback).calledWith(66, 33); @@ -51,26 +54,26 @@ suite('Download Util', () => { }); test('fails when download fails', () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const result = progressMock.downloadFile('url', path.join(os.tmpdir(), 'toFile')); requestEmitter.emit('error', new Error('failure')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call return result - .then(() => { - return Promise.reject(Error('No failure reported')); - }) + .then(() => Promise.reject(Error('No failure reported'))) .catch((err: Error) => { - expect(err.message).equals('failure'); + expect(err.message).to.equal('failure'); }); }); test('fails when stream fails', () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call const result = progressMock.downloadFile('url', path.join(os.tmpdir(), 'toFile')); streamEmitter.emit('error', new Error('failure')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call return result - .then(() => { - return Promise.reject(Error('No failure reported')); - }) + .then(() => Promise.reject(Error('No failure reported'))) .catch((err: Error) => { - expect(err.message).equals('failure'); + expect(err.message).to.equal('failure'); }); }); }); diff --git a/test/util/filters.test.ts b/test/util/filters.test.ts index 065e4ee0..a1d9832b 100644 --- a/test/util/filters.test.ts +++ b/test/util/filters.test.ts @@ -1,8 +1,12 @@ +/*----------------------------------------------------------------------------------------------- + * Copyright (c) Red Hat, Inc. All rights reserved. + * Licensed under the MIT License. See LICENSE file in the project root for license information. + *-----------------------------------------------------------------------------------------------*/ + import { expect } from 'chai'; +import * as sinon from 'sinon'; import { Filters } from '../../src/util/filters'; -import sinon = require('sinon'); - suite('Filters utility class', () => { const sandbox = sinon.createSandbox(); diff --git a/test/util/format.test.ts b/test/util/format.test.ts index 44f5233d..7dea6973 100644 --- a/test/util/format.test.ts +++ b/test/util/format.test.ts @@ -1,9 +1,13 @@ +/*----------------------------------------------------------------------------------------------- + * Copyright (c) Red Hat, Inc. All rights reserved. + * Licensed under the MIT License. See LICENSE file in the project root for license information. + *-----------------------------------------------------------------------------------------------*/ + +import { expect } from 'chai'; import * as chai from 'chai'; import * as sinonChai from 'sinon-chai'; -import * as referee from '@sinonjs/referee'; import { prettifyJson } from '../../src/util/format'; -const { assert } = referee; chai.use(sinonChai); suite('Format', () => { @@ -18,10 +22,12 @@ suite('Format', () => { test('should convert unstructured JSON into nicely formatted JSON', () => { const convertedJson = prettifyJson(startingJSON); - assert.equals(convertedJson, expectedJSON); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + expect(convertedJson).to.equal(expectedJSON); }); test('should catch when a token is included', () => { const convertedTokenJson = prettifyJson(startingTokenJSON); - assert.equals(convertedTokenJson, expectedTokenJSON); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + expect(convertedTokenJson).to.equal(expectedTokenJSON); }); }); diff --git a/test/util/parse.test.ts b/test/util/parse.test.ts index bacb96d0..da1d3989 100644 --- a/test/util/parse.test.ts +++ b/test/util/parse.test.ts @@ -1,8 +1,12 @@ -import { assert, expect } from 'chai'; -import { loadJSON } from '../../src/util/parse'; +/*----------------------------------------------------------------------------------------------- + * Copyright (c) Red Hat, Inc. All rights reserved. + * Licensed under the MIT License. See LICENSE file in the project root for license information. + *-----------------------------------------------------------------------------------------------*/ -import fs = require('fs'); -import path = require('path'); +import * as fs from 'fs'; +import * as path from 'path'; +import { expect, assert } from 'chai'; +import { loadJSON } from '../../src/util/parse'; suite('Parse utility class', () => { const json = { diff --git a/test/util/platform.test.ts b/test/util/platform.test.ts index dd657cf0..cd33a5c0 100644 --- a/test/util/platform.test.ts +++ b/test/util/platform.test.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { Platform } from '../../src/util/platform'; -const { expect } = chai; chai.use(sinonChai); suite('Platform Utility', () => { @@ -19,7 +19,7 @@ suite('Platform Utility', () => { test('getOS returns the platform name', () => { const os = Platform.getOS(); - expect(os).equals(process.platform); + expect(os).to.equal(process.platform); }); test('OS delegates to getOS', () => { @@ -27,12 +27,12 @@ suite('Platform Utility', () => { const os = Platform.OS; expect(spy.calledOnce); - expect(os).equals(process.platform); + expect(os).to.equal(process.platform); }); test('getEnv returns the platform environment', () => { const env = Platform.getEnv(); - expect(env).equals(process.env); + expect(env).to.equal(process.env); }); test('ENV delegates to getENV', () => { @@ -40,15 +40,15 @@ suite('Platform Utility', () => { const env = Platform.ENV; expect(spy.calledOnce); - expect(env).equals(process.env); + expect(env).to.equal(process.env); }); test('getUserHomePath returns the path to user home', () => { const home = Platform.getUserHomePath(); if (process.platform === 'win32') { - expect(home).equals(process.env.USERPROFILE); + expect(home).to.equal(process.env.USERPROFILE); } else { - expect(home).equals(process.env.HOME); + expect(home).to.equal(process.env.HOME); } }); }); diff --git a/test/util/watch.test.ts b/test/util/watch.test.ts index 6d6f35b5..30930acd 100644 --- a/test/util/watch.test.ts +++ b/test/util/watch.test.ts @@ -3,16 +3,15 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ +import * as path from 'path'; +import { expect } from 'chai'; import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; import * as fs from 'fs-extra'; -import * as path from 'path'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; +import * as tmp from 'tmp'; import { WatchUtil } from '../../src/util/watch'; -import tmp = require('tmp'); - -const { expect } = chai; chai.use(sinonChai); suite('File Watch Utility', () => { @@ -61,8 +60,8 @@ suite('File Watch Utility', () => { }, 1000); return new Promise((res) => { notifier.emitter.on('file-changed', (file) => { - expect(file).equals(undefined); - res(); + expect(file).to.equal(undefined); + res(null); }); }); }); diff --git a/test/util/window.test.ts b/test/util/window.test.ts index 1c33035a..93e07302 100644 --- a/test/util/window.test.ts +++ b/test/util/window.test.ts @@ -3,14 +3,14 @@ * Licensed under the MIT License. See LICENSE file in the project root for license information. *-----------------------------------------------------------------------------------------------*/ -import * as chai from 'chai'; -import * as sinonChai from 'sinon-chai'; -import * as sinon from 'sinon'; import * as path from 'path'; import { window, TerminalOptions } from 'vscode'; +import { expect } from 'chai'; +import * as chai from 'chai'; +import * as sinon from 'sinon'; +import * as sinonChai from 'sinon-chai'; import { WindowUtil } from '../../src/util/windowUtils'; -const { expect } = chai; chai.use(sinonChai); suite('Window Utility', () => { From 54217678f65bd341255520ccb4ec6fc1521a1a23 Mon Sep 17 00:00:00 2001 From: joshuawilson Date: Tue, 23 Feb 2021 21:55:05 -0500 Subject: [PATCH 3/5] fix(deps): downgrade js-yaml due to conflist with vscode-extension-tester --- package-lock.json | 1774 ++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 877 insertions(+), 903 deletions(-) diff --git a/package-lock.json b/package-lock.json index eff70f65..121894fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,15 @@ "js-tokens": "^4.0.0" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -40,6 +49,42 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -61,27 +106,11 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true } } }, @@ -114,67 +143,10 @@ "ws": "^7.3.1" }, "dependencies": { - "@types/js-yaml": { - "version": "3.12.6", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.6.tgz", - "integrity": "sha512-cK4XqrLvP17X6c0C8n4iTbT59EixqyXL3Fk8/Rsk4dF3oX4dg70gYUXrXVUUHpnsGMPNlTQMqf+TVmNPX6FmSQ==" - }, "@types/node": { - "version": "10.17.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.53.tgz", - "integrity": "sha512-q1igVlMUU+10kzjxNlcLDH7gekuvFK1nevnp7MAyc6sqvK5siWSS37EuvKX9fM8d49SBcoP0iP9tqVHmdAjNhQ==" - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } + "version": "10.17.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.54.tgz", + "integrity": "sha512-c8Lm7+hXdSPmWH4B9z/P/xIXhFK3mCQin4yCYMd2p1qpMG5AfgyJuYZ+3q2dT7qLiMMMGMd5dnkFpdqJARlvtQ==" } } }, @@ -399,10 +371,9 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "@types/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-4vlpCM5KPCL5CfGmTbpjwVKbISRYhduEJvvUWsH5EB7QInhEj94XPZ3ts/9FPiLZFqYO0xoW4ZL8z2AabTGgJA==", - "dev": true + "version": "3.12.6", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.6.tgz", + "integrity": "sha512-cK4XqrLvP17X6c0C8n4iTbT59EixqyXL3Fk8/Rsk4dF3oX4dg70gYUXrXVUUHpnsGMPNlTQMqf+TVmNPX6FmSQ==" }, "@types/json-schema": { "version": "7.0.7", @@ -590,13 +561,13 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.1.tgz", - "integrity": "sha512-yW2epMYZSpNJXZy22Biu+fLdTG8Mn6b22kR3TqblVk50HGNV8Zya15WAXuQCr8tKw4Qf1BL4QtI6kv6PCkLoJw==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", + "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.15.1", - "@typescript-eslint/scope-manager": "4.15.1", + "@typescript-eslint/experimental-utils": "4.15.2", + "@typescript-eslint/scope-manager": "4.15.2", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -606,55 +577,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.1.tgz", - "integrity": "sha512-9LQRmOzBRI1iOdJorr4jEnQhadxK4c9R2aEAsm7WE/7dq8wkKD1suaV0S/JucTL8QlYUPU1y2yjqg+aGC0IQBQ==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", + "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.1.tgz", - "integrity": "sha512-V8eXYxNJ9QmXi5ETDguB7O9diAXlIyS+e3xzLoP/oVE4WCAjssxLIa0mqCLsCGXulYJUfT+GV70Jv1vHsdKwtA==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", + "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.15.1", - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/typescript-estree": "4.15.1", + "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/typescript-estree": "4.15.2", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.1.tgz", - "integrity": "sha512-ibQrTFcAm7yG4C1iwpIYK7vDnFg+fKaZVfvyOm3sNsGAerKfwPVFtYft5EbjzByDJ4dj1WD8/34REJfw/9wdVA==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", + "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1" + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2" } }, "@typescript-eslint/types": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.1.tgz", - "integrity": "sha512-iGsaUyWFyLz0mHfXhX4zO6P7O3sExQpBJ2dgXB0G5g/8PRVfBBsmQIc3r83ranEQTALLR3Vko/fnCIVqmH+mPw==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", + "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.1.tgz", - "integrity": "sha512-z8MN3CicTEumrWAEB2e2CcoZa3KP9+SMYLIA2aM49XW3cWIaiVSOAGq30ffR5XHxRirqE90fgLw3e6WmNx5uNw==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", + "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", - "@typescript-eslint/visitor-keys": "4.15.1", + "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/visitor-keys": "4.15.2", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -663,12 +634,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.1.tgz", - "integrity": "sha512-tYzaTP9plooRJY8eNlpAewTOqtWW/4ff/5wBjNVaJ0S0wC4Gpq/zDVRTJa5bq2v1pCNQ08xxMCndcvR+h7lMww==", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", + "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.1", + "@typescript-eslint/types": "4.15.2", "eslint-visitor-keys": "^2.0.0" } }, @@ -713,9 +684,9 @@ } }, "ajv": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -759,17 +730,16 @@ } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "ansi-wrap": { @@ -836,15 +806,15 @@ "dev": true }, "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", "is-string": "^1.0.5" } }, @@ -917,9 +887,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "azure-devops-node-api": { "version": "7.2.0", @@ -1005,8 +975,7 @@ "bluebird": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" }, "boolbase": { "version": "1.0.0", @@ -1098,9 +1067,9 @@ "dev": true }, "buffer-indexof-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz", - "integrity": "sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" }, "buffer-shims": { "version": "1.0.0", @@ -1205,47 +1174,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -1308,10 +1245,9 @@ } }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "clean-stack": { "version": "2.2.0", @@ -1354,6 +1290,26 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -1420,6 +1376,12 @@ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -1448,6 +1410,15 @@ "universalify": "^0.1.0" } }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -1466,6 +1437,55 @@ "graceful-fs": "^4.1.6" } }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "dev": true, + "requires": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1483,6 +1503,12 @@ "strip-ansi": "^3.0.0" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -1492,12 +1518,44 @@ "ansi-regex": "^2.0.0" } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, + "unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "dev": true, + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + } + }, "url-join": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", @@ -1520,6 +1578,12 @@ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "yargs": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", @@ -1569,19 +1633,17 @@ } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "combined-stream": { "version": "1.0.8", @@ -1592,11 +1654,10 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true }, "compare-versions": { "version": "3.6.0", @@ -1942,10 +2003,9 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "escodegen": { "version": "1.8.1", @@ -1971,6 +2031,45 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } } } }, @@ -2019,6 +2118,12 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2030,39 +2135,11 @@ "which": "^2.0.1" } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true }, "path-key": { "version": "3.1.1", @@ -2070,12 +2147,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2091,13 +2162,13 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "prelude-ls": "^1.2.1" + "ansi-regex": "^5.0.0" } }, "which": { @@ -2147,15 +2218,11 @@ "ms": "2.0.0" } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -2170,18 +2237,6 @@ "is-glob": "^4.0.1", "resolve": "^1.17.0", "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - } } }, "eslint-module-utils": { @@ -2202,6 +2257,12 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -2245,15 +2306,11 @@ "isarray": "^1.0.0" } }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -2442,9 +2499,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -2500,12 +2557,20 @@ "dev": true, "requires": { "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -2536,12 +2601,12 @@ } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "requires": { - "locate-path": "^2.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "flat": { @@ -2613,12 +2678,11 @@ } }, "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { - "minipass": "^2.6.0" + "minipass": "^3.0.0" } }, "fs.realpath": { @@ -2664,8 +2728,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -2733,13 +2796,6 @@ "emit-function": "0.0.2", "git-packed-ref-parse": "0.0.0", "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "git-packed-ref-parse": { @@ -2749,13 +2805,6 @@ "requires": { "line-stream": "0.0.0", "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "git-read-pkt-line": { @@ -2765,13 +2814,6 @@ "requires": { "bops": "0.0.3", "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "git-transport-protocol": { @@ -2784,13 +2826,6 @@ "git-read-pkt-line": "0.0.8", "git-write-pkt-line": "0.1.0", "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "git-write-pkt-line": { @@ -2800,13 +2835,6 @@ "requires": { "bops": "0.0.3", "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "github-from-package": { @@ -2829,9 +2857,9 @@ } }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "requires": { "is-glob": "^4.0.1" } @@ -2856,13 +2884,6 @@ "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - } } }, "got": { @@ -2894,15 +2915,16 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" }, "handlebars": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz", - "integrity": "sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { "source-map": { @@ -2919,11 +2941,11 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -2931,16 +2953,14 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-symbols": { "version": "1.0.1", @@ -3052,10 +3072,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" }, "ignore-walk": { "version": "3.0.3", @@ -3132,6 +3151,46 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + } } }, "interpret": { @@ -3175,7 +3234,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -3207,9 +3265,9 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { "version": "4.0.1", @@ -3237,9 +3295,9 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", "dev": true }, "is-plain-obj": { @@ -3373,39 +3431,13 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "resolve": { @@ -3440,18 +3472,12 @@ "dev": true }, "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { - "argparse": "^2.0.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - } + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -3582,13 +3608,13 @@ "dev": true }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "lie": { @@ -3606,13 +3632,6 @@ "integrity": "sha1-iIt8x5UcagXOTWlt0ea4JiNxu0U=", "requires": { "through": "~2.2.0" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" - } } }, "linkify-it": { @@ -3642,27 +3661,17 @@ } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "p-locate": "^5.0.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.get": { @@ -3695,51 +3704,6 @@ "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "requires": { "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } } }, "lowercase-keys": { @@ -3868,16 +3832,16 @@ "dev": true }, "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" }, "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "requires": { - "mime-db": "1.42.0" + "mime-db": "1.46.0" } }, "mimic-fn": { @@ -3905,30 +3869,20 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "yallist": "^4.0.0" } }, "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { - "minipass": "^2.9.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, "mixin-object": { @@ -3998,65 +3952,17 @@ "yargs-unparser": "2.0.0" }, "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "has-flag": { + "js-yaml": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "requires": { - "has-flag": "^4.0.0" + "argparse": "^2.0.1" } }, "which": { @@ -4117,10 +4023,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "mute-stream": { "version": "0.0.8", @@ -4161,9 +4066,9 @@ "dev": true }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nice-try": { @@ -4172,9 +4077,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nise": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.4.tgz", - "integrity": "sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", + "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0", @@ -4345,14 +4250,14 @@ } }, "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -4480,42 +4385,18 @@ "p-any": "^3.0.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, "os": { @@ -4575,21 +4456,19 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "requires": { - "p-try": "^1.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "requires": { - "p-limit": "^1.1.0" + "p-limit": "^3.0.2" } }, "p-some": { @@ -4740,7 +4619,52 @@ "dev": true, "requires": { "find-up": "^2.1.0" - } + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } }, "plugin-error": { "version": "1.0.1", @@ -4828,6 +4752,12 @@ } } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -4926,9 +4856,9 @@ } }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { @@ -4969,9 +4899,9 @@ } }, "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pump": { "version": "3.0.0", @@ -5069,12 +4999,57 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5194,10 +5169,11 @@ "dev": true }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -5250,6 +5226,15 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -5267,12 +5252,33 @@ "supports-color": "^5.3.0" } }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, "eslint": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", @@ -5370,20 +5376,26 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "mkdirp": { @@ -5395,6 +5407,26 @@ "minimist": "^1.2.5" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -5447,6 +5479,15 @@ "ansi-regex": "^4.1.0" } }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -5458,6 +5499,15 @@ "slice-ansi": "^2.1.0", "string-width": "^3.0.0" } + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } } } }, @@ -5497,9 +5547,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", @@ -5645,9 +5695,9 @@ } }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-concat": { "version": "1.0.1", @@ -5703,12 +5753,6 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5742,28 +5786,10 @@ "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true } } @@ -5875,23 +5901,12 @@ "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string.prototype.trimend": { @@ -5930,12 +5945,11 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -5952,8 +5966,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "stubs": { "version": "3.0.0", @@ -5962,12 +5975,11 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "table": { @@ -5994,46 +6006,59 @@ "uri-js": "^4.2.2" } }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true - } - } - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "minimist": "^1.2.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } } } }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "tar-fs": { "version": "1.16.3", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", @@ -6046,6 +6071,12 @@ "tar-stream": "^1.1.2" }, "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -6134,10 +6165,9 @@ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=" }, "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" }, "through2": { "version": "3.0.0", @@ -6153,7 +6183,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, "requires": { "rimraf": "^3.0.0" } @@ -6164,16 +6193,6 @@ "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", "requires": { "tmp": "^0.2.0" - }, - "dependencies": { - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - } } }, "tmpl": { @@ -6276,12 +6295,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "type-detect": { @@ -6314,9 +6333,9 @@ } }, "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", + "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", "dev": true }, "uc.micro": { @@ -6326,24 +6345,11 @@ "dev": true }, "uglify-js": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.7.tgz", - "integrity": "sha512-FeSU+hi7ULYy6mn8PKio/tXsdSXN35lm4KgV2asx00kzrLU9Pi3oAslcJT70Jdj7PHX29gGUPOT6+lXGBbemhA==", + "version": "3.12.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.8.tgz", + "integrity": "sha512-fvBeuXOsvqjecUtF/l1dwsrrf5y2BCUk9AOJGzGcm6tE7vegku5u/YvqjyDaAGr422PLoLnrxg3EnRvTqsdC1w==", "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } + "optional": true }, "underscore": { "version": "1.12.0", @@ -6377,55 +6383,26 @@ } }, "unzipper": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", - "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", - "dev": true, + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", "requires": { "big-integer": "^1.6.17", "binary": "~0.3.0", "bluebird": "~3.4.1", "buffer-indexof-polyfill": "~1.0.0", "duplexer2": "~0.1.4", - "fstream": "~1.0.10", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", "listenercount": "~1.0.1", - "readable-stream": "~2.1.5", + "readable-stream": "~2.3.6", "setimmediate": "~1.0.4" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", - "dev": true, - "requires": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } @@ -6454,9 +6431,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { "version": "2.2.0", @@ -6517,6 +6494,15 @@ "yazl": "^2.2.2" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -6528,10 +6514,31 @@ "supports-color": "^5.3.0" } }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "semver": { @@ -6540,6 +6547,15 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "tmp": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", @@ -6571,24 +6587,6 @@ "unzip-stream": "^0.3.0", "vsce": "^1.81.0", "vscode-extension-tester-locators": "^1.53.0" - }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } } }, "vscode-extension-tester-locators": { @@ -6653,30 +6651,6 @@ "https-proxy-agent": "^5.0.0", "rimraf": "^3.0.2", "unzipper": "^0.10.11" - }, - "dependencies": { - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - } } }, "vscode-uri": { @@ -6714,35 +6688,6 @@ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "window-size": { @@ -6778,27 +6723,26 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "color-name": "~1.1.4" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -6894,6 +6838,36 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "yargs-parser": { diff --git a/package.json b/package.json index bf33a95f..8d2ab93f 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "globby": "^11.0.2", "got": "^11.8.1", "hasha": "^5.2.2", - "js-yaml": "^4.0.0", + "js-yaml": "^3.14.1", "mkdirp": "^1.0.4", "mocha": "^8.3.0", "request": "^2.88.2", @@ -78,7 +78,7 @@ "@types/fs-extra": "^9.0.7", "@types/glob": "^7.1.3", "@types/got": "^9.6.11", - "@types/js-yaml": "^4.0.0", + "@types/js-yaml": "^3.12.6", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", @@ -91,7 +91,7 @@ "@types/string-format": "^2.0.0", "@types/tmp": "0.2.0", "@types/validator": "^13.1.3", - "@types/vscode": "^1.53.0", + "@types/vscode": "^1.52.0", "@typescript-eslint/eslint-plugin": "^4.15.1", "@typescript-eslint/parser": "^4.15.1", "chai": "^4.3.0", From 22541ab93e7072259f7464e9e569bb6304d36b08 Mon Sep 17 00:00:00 2001 From: joshuawilson Date: Wed, 24 Feb 2021 00:07:52 -0500 Subject: [PATCH 4/5] fix(cli): fix bug Notification pop up for downloading kn cli sometimes does not appear #125 --- src/extension.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 39406a92..cae5fe75 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -4,6 +4,7 @@ *-----------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; +import { CmdCliConfig } from './cli/cli-config'; import { KN_RESOURCE_SCHEME } from './cli/virtualfs'; import { openTreeItemInEditor } from './editor/knativeOpenTextDocument'; import { KnativeReadonlyProvider, KN_READONLY_SCHEME } from './editor/knativeReadonlyProvider'; @@ -22,7 +23,9 @@ let disposable: vscode.Disposable[]; * * @param extensionContext */ -export function activate(extensionContext: vscode.ExtensionContext): void { +export async function activate(extensionContext: vscode.ExtensionContext): Promise { + // Call the detect early here so that we avoid race conditions when the information is needed later. + await CmdCliConfig.detectOrDownload('kn'); const servingExplorer = new ServingExplorer(); // register a content provider for the knative readonly scheme const knReadonlyProvider = new KnativeReadonlyProvider(servingExplorer.treeDataProvider.knvfs); From 6f90755acef619a76bbb5d031da26992628aa256 Mon Sep 17 00:00:00 2001 From: joshuawilson Date: Wed, 24 Feb 2021 00:22:39 -0500 Subject: [PATCH 5/5] fix(tests): add a stub for the detectOrDownload in extension --- test/extension.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/extension.test.ts b/test/extension.test.ts index 5498532f..fe1f9254 100644 --- a/test/extension.test.ts +++ b/test/extension.test.ts @@ -10,6 +10,7 @@ import { beforeEach } from 'mocha'; import * as sinon from 'sinon'; import * as yaml from 'yaml'; import * as brokerData from './eventingTree/broker.json'; +import { CmdCliConfig } from '../src/cli/cli-config'; import { EventingContextType, ServingContextType } from '../src/cli/config'; import * as otd from '../src/editor/knativeOpenTextDocument'; import { EventingDataProvider } from '../src/eventingTree/eventingDataProvider'; @@ -27,6 +28,7 @@ suite('Knative extension', () => { beforeEach(() => { sandbox.stub(vscode.window, 'showErrorMessage').resolves(); + sandbox.stub(CmdCliConfig, 'detectOrDownload'); }); teardown(() => {