diff --git a/.eslintignore b/.eslintignore index c2658d7d..02340bb2 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,4 @@ -node_modules/ +node_modules +out +dist +scripts diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 497f60f1..00000000 --- a/.eslintrc +++ /dev/null @@ -1,62 +0,0 @@ -{ - "env": { - "node": true, - "es6": true - }, - "parser": "@typescript-eslint/parser", // Specifies the ESLint parser - "plugins": [ - "@typescript-eslint" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "mongodb-js/node", - "mongodb-js/react" - ], - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module", - "project": [ - "./tsconfig.json" - ] - }, - "globals": { - "acquireVsCodeApi": true - }, - "rules": { - "camelcase": 1, - "new-cap": 0, - "no-use-before-define": 0, - "space-before-function-paren": 0, - "no-async-promise-executor": 0, - "no-extra-semi": "off", - "@typescript-eslint/no-extra-semi": [ - "error" - ], - "semi": "off", - "@typescript-eslint/semi": [ - "error" - ], - "no-empty-function": "off", - "@typescript-eslint/no-empty-function": [ - "error", - { - "allow": [ - "arrowFunctions" - ] - } - ], - "comma-dangle": [ - "error", - "never" - ], - "no-misused-promises": "off", - "@typescript-eslint/no-misused-promises": "off", - "no-var-requires": "off", - "@typescript-eslint/no-var-requires": "off", - "chai-friendly/no-unused-expressions": "off", - "@typescript-eslint/unbound-method": "off" - } -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..178388ae --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,64 @@ +const typescriptEslintEslintPlugin = require('@typescript-eslint/eslint-plugin'); + +// Overrides do not work with extends. +const ruleOverridesForJs = Object.keys(typescriptEslintEslintPlugin.rules).reduce( + (overrides, rule) => ({ ...overrides, [`@typescript-eslint/${rule}`]: 0 }), {} +); + +module.exports = { + plugins: ['mocha', '@typescript-eslint'], + parser: '@typescript-eslint/parser', // Specifies the ESLint parser. + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + project: [ + './tsconfig.json' + ] + }, + extends: [ + 'eslint-config-mongodb-js/react', + 'plugin:@typescript-eslint/eslint-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking' + ], + rules: { + 'chai-friendly/no-unused-expressions': 0, + 'object-curly-spacing': [2, 'always'], + 'no-empty-function': 0, + 'valid-jsdoc': 0, + 'react/sort-comp': 0, // Does not seem work as expected with typescript. + '@typescript-eslint/no-empty-function': 0, + '@typescript-eslint/no-use-before-define': 0, + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-var-requires': 0, + '@typescript-eslint/no-unused-vars': 2, + '@typescript-eslint/explicit-module-boundary-types': 0, + '@typescript-eslint/ban-types': 0, + 'mocha/no-skipped-tests': 1, + 'mocha/no-exclusive-tests': 2, + 'semi': 0, + '@typescript-eslint/semi': [2, 'always'], + 'no-console': [1, { allow: ['warn', 'error', 'info'] }], + 'no-shadow': 0, + 'no-use-before-define': 0, + 'no-cond-assign': [2, 'except-parens'], + 'space-before-function-paren': 0, + '@typescript-eslint/no-floating-promises': 0, + + 'restrict-template-expressions': 0, + '@typescript-eslint/restrict-template-expressions': 0, + + // VV These rules we'd like to turn off one day so they error. + '@typescript-eslint/no-unsafe-assignment': 'warn', + '@typescript-eslint/no-unsafe-member-access': 'warn', + '@typescript-eslint/no-unsafe-call': 'warn', + '@typescript-eslint/no-unsafe-return': 'warn' + }, + overrides: [{ + files: ['**/*.js'], + rules: { + ...ruleOverridesForJs, + semi: [2, 'always'] + } + }] +}; diff --git a/package-lock.json b/package-lock.json index cf76a435..283a4cae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1670,6 +1670,12 @@ "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz", "integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, "@sinonjs/commons": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", @@ -2146,42 +2152,43 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz", - "integrity": "sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", + "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.12.0", - "@typescript-eslint/scope-manager": "4.12.0", + "@typescript-eslint/experimental-utils": "4.13.0", + "@typescript-eslint/scope-manager": "4.13.0", "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": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz", - "integrity": "sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", + "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.12.0", - "@typescript-eslint/types": "4.12.0", - "@typescript-eslint/typescript-estree": "4.12.0", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, "dependencies": { "@typescript-eslint/typescript-estree": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz", - "integrity": "sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", + "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.12.0", - "@typescript-eslint/visitor-keys": "4.12.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -2191,9 +2198,9 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -2213,25 +2220,25 @@ } }, "@typescript-eslint/parser": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.12.0.tgz", - "integrity": "sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", + "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.12.0", - "@typescript-eslint/types": "4.12.0", - "@typescript-eslint/typescript-estree": "4.12.0", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "debug": "^4.1.1" }, "dependencies": { "@typescript-eslint/typescript-estree": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz", - "integrity": "sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", + "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.12.0", - "@typescript-eslint/visitor-keys": "4.12.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -2241,9 +2248,9 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -2263,43 +2270,28 @@ } }, "@typescript-eslint/scope-manager": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz", - "integrity": "sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", + "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.12.0", - "@typescript-eslint/visitor-keys": "4.12.0" + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0" } }, "@typescript-eslint/types": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.12.0.tgz", - "integrity": "sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", + "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", "dev": true }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - } - }, "@typescript-eslint/visitor-keys": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz", - "integrity": "sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", + "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.12.0", + "@typescript-eslint/types": "4.13.0", "eslint-visitor-keys": "^2.0.0" }, "dependencies": { @@ -2549,25 +2541,6 @@ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - } - } - }, "acorn-numeric-separator": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/acorn-numeric-separator/-/acorn-numeric-separator-0.3.2.tgz", @@ -2858,6 +2831,23 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "dev": true, + "requires": { + "file-type": "^4.2.0" + }, + "dependencies": { + "file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "dev": true + } + } + }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", @@ -2952,6 +2942,12 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz", "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==" }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, "array-events": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/array-events/-/array-events-0.2.0.tgz", @@ -3136,12 +3132,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-module-types": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.7.1.tgz", - "integrity": "sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw==", - "dev": true - }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -3833,6 +3823,12 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -3920,6 +3916,35 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "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": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, "call-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", @@ -4260,6 +4285,23 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "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==", + "dev": true + } + } + }, "clui": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/clui/-/clui-0.3.6.tgz", @@ -4758,6 +4800,12 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -4865,6 +4913,12 @@ "safe-buffer": "^5.1.1" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4948,6 +5002,14 @@ "decompress-tar": "^4.1.1", "file-type": "^5.2.0", "is-stream": "^1.1.0" + }, + "dependencies": { + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + } } }, "decompress-unzip": { @@ -5081,12 +5143,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -5108,23 +5164,181 @@ "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" }, - "dependency-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dependency-check/-/dependency-check-4.1.0.tgz", - "integrity": "sha512-nlw+PvhVQwg0gSNNlVUiuRv0765gah9pZEXdQlIFzeSnD85Eex0uM0bkrAWrHdeTzuMGZnR9daxkup/AqqgqzA==", + "depcheck": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.3.1.tgz", + "integrity": "sha512-lLMfqX2J+ZF3xUEqHpgCNk+dA8erAfW6XURGNAIyUS4KL2i3lezXGYDevYk3G0rWCwy/3CpxE8ek10NrURFOtQ==", "dev": true, "requires": { - "debug": "^4.0.0", - "detective": "^5.0.2", - "globby": "^10.0.1", - "is-relative": "^1.0.0", - "micromatch": "^4.0.2", - "minimist": "^1.2.0", - "pkg-up": "^3.1.0", - "read-package-json": "^2.0.10", - "resolve": "^1.1.7" + "@babel/parser": "^7.12.5", + "@babel/traverse": "^7.12.5", + "builtin-modules": "^3.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "deps-regex": "^0.1.4", + "ignore": "^5.1.8", + "js-yaml": "^3.14.0", + "json5": "^2.1.3", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "multimatch": "^5.0.0", + "please-upgrade-node": "^3.2.0", + "query-ast": "^1.0.3", + "readdirp": "^3.5.0", + "require-package-name": "^2.0.1", + "resolve": "^1.18.1", + "sass": "^1.29.0", + "scss-parser": "^1.0.4", + "semver": "^7.3.2", + "vue-template-compiler": "^2.6.12", + "yargs": "^16.1.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==", + "dev": true + }, + "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" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.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==", + "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 + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "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" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } } }, + "deps-regex": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", + "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=", + "dev": true + }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -5152,156 +5366,43 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", - "dev": true, - "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, - "detective-amd": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-3.0.1.tgz", - "integrity": "sha512-vJgluSKkPyo+/McW9hzwmZwY1VPA3BS0VS1agdpPAWAhr65HwC1ox4Ig82rVfGYDYCa4GcKQON5JWBk++2Kf1Q==", - "dev": true, - "requires": { - "ast-module-types": "^2.7.0", - "escodegen": "^1.8.0", - "get-amd-module-type": "^3.0.0", - "node-source-walk": "^4.0.0" - } + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true }, - "detective-cjs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-3.1.1.tgz", - "integrity": "sha512-JQtNTBgFY6h8uT6pgph5QpV3IyxDv+z3qPk/FZRDT9TlFfm5dnRtpH39WtQEr1khqsUxVqXzKjZHpdoQvQbllg==", + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "ast-module-types": "^2.4.0", - "node-source-walk": "^4.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, - "detective-es6": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-2.2.0.tgz", - "integrity": "sha512-fSpNY0SLER7/sVgQZ1NxJPwmc9uCTzNgdkQDhAaj8NPYwr7Qji9QBcmbNvtMCnuuOGMuKn3O7jv0An+/WRWJZQ==", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "node-source-walk": "^4.0.0" - } - }, - "detective-less": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detective-less/-/detective-less-1.0.2.tgz", - "integrity": "sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "gonzales-pe": "^4.2.3", - "node-source-walk": "^4.0.0" - } - }, - "detective-postcss": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-3.0.1.tgz", - "integrity": "sha512-tfTS2GdpUal5NY0aCqI4dpEy8Xfr88AehYKB0iBIZvo8y2g3UsrcDnrp9PR2FbzoW7xD5Rip3NJW7eCSvtqdUw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "is-url": "^1.2.4", - "postcss": "^7.0.2", - "postcss-values-parser": "^1.5.0" - } - }, - "detective-sass": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-3.0.1.tgz", - "integrity": "sha512-oSbrBozRjJ+QFF4WJFbjPQKeakoaY1GiR380NPqwdbWYd5wfl5cLWv0l6LsJVqrgWfFN1bjFqSeo32Nxza8Lbw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "gonzales-pe": "^4.2.3", - "node-source-walk": "^4.0.0" - } - }, - "detective-scss": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-2.0.1.tgz", - "integrity": "sha512-VveyXW4WQE04s05KlJ8K0bG34jtHQVgTc9InspqoQxvnelj/rdgSAy7i2DXAazyQNFKlWSWbS+Ro2DWKFOKTPQ==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "gonzales-pe": "^4.2.3", - "node-source-walk": "^4.0.0" - } - }, - "detective-stylus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.0.tgz", - "integrity": "sha1-UK7n24uruZA4HwEMY/q7pbWOVM0=", - "dev": true - }, - "detective-typescript": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-5.8.0.tgz", - "integrity": "sha512-SrsUCfCaDTF64QVMHMidRal+kmkbIc5zP8cxxZPsomWx9vuEUjBlSJNhf7/ypE5cLdJJDI4qzKDmyzqQ+iz/xg==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "^2.29.0", - "ast-module-types": "^2.6.0", - "node-source-walk": "^4.2.0", - "typescript": "^3.8.3" - }, - "dependencies": { - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", - "dev": true - } - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" + "path-type": "^4.0.0" } }, "discontinuous-range": { @@ -5453,43 +5554,44 @@ } }, "download": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", - "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", + "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==", "dev": true, "requires": { - "caw": "^2.0.0", + "archive-type": "^4.0.0", "content-disposition": "^0.5.2", - "decompress": "^4.0.0", + "decompress": "^4.2.1", "ext-name": "^5.0.0", - "file-type": "5.2.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^7.0.0", - "make-dir": "^1.0.0", - "p-event": "^1.0.0", - "pify": "^3.0.0" + "file-type": "^11.1.0", + "filenamify": "^3.0.0", + "get-stream": "^4.1.0", + "got": "^8.3.1", + "make-dir": "^2.1.0", + "p-event": "^2.1.0", + "pify": "^4.0.1" }, "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -5705,14 +5807,6 @@ } } }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - } - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6492,6 +6586,16 @@ "integrity": "sha512-hkpLN7VVoGGsofZjUhcQ+sufC3FgqMJwD0DvAcRfxY1tVRyQyVsqpaKnToPHJQOrRo0FQ0fSEDwW2gr4rsNdGA==", "dev": true }, + "eslint-plugin-mocha": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz", + "integrity": "sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ==", + "dev": true, + "requires": { + "eslint-utils": "^2.1.0", + "ramda": "^0.27.1" + } + }, "eslint-plugin-react": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz", @@ -7168,9 +7272,9 @@ } }, "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==", "dev": true }, "file-uri-to-path": { @@ -7187,9 +7291,9 @@ "dev": true }, "filenamify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", - "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz", + "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==", "dev": true, "requires": { "filename-reserved-regex": "^2.0.0", @@ -7453,12 +7557,6 @@ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "dev": true - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -7611,17 +7709,6 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "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==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -7706,16 +7793,6 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, - "get-amd-module-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-3.0.0.tgz", - "integrity": "sha512-99Q7COuACPfVt18zH9N4VAMyb81S6TUgJm2NgV6ERtkh9VIkAaByZkW530wl3lLN5KTtSrK9jVLxYsoP5hQKsw==", - "dev": true, - "requires": { - "ast-module-types": "^2.3.2", - "node-source-walk": "^4.0.0" - } - }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -7901,58 +7978,28 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "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==", - "dev": true - } - } - }, - "gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", "dev": true, "requires": { - "decompress-response": "^3.2.0", + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", "isurl": "^1.0.0-alpha5", "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^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" }, "dependencies": { @@ -7976,6 +8023,12 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, @@ -8296,6 +8349,12 @@ } } }, + "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==", + "dev": true + }, "http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", @@ -8366,14 +8425,6 @@ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -8647,6 +8698,25 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -8951,15 +9021,6 @@ "has-symbols": "^1.0.1" } }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -8997,21 +9058,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -12013,6 +12059,12 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -12115,6 +12167,15 @@ "prebuild-install": "5.3.3" } }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12885,12 +12946,6 @@ "lodash.restparam": "^3.0.0" } }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "lodash.uniqueid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-3.2.0.tgz", @@ -13847,16 +13902,6 @@ } } }, - "module-definition": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-3.3.1.tgz", - "integrity": "sha512-kLidGPwQ2yq484nSD+D3JoJp4Etc0Ox9P0L34Pu/cU4X4HcG7k7p62XI5BBuvURWMRX3RPyuhOcBHbKus+UH4A==", - "dev": true, - "requires": { - "ast-module-types": "^2.7.1", - "node-source-walk": "^4.0.0" - } - }, "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", @@ -14442,512 +14487,57 @@ "debug": "^4.1.1" } }, - "mongodb-js-precommit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mongodb-js-precommit/-/mongodb-js-precommit-2.2.1.tgz", - "integrity": "sha512-Ffy610NiDPFi63GPPw68+I52XA8uP0RFb5gV6W0TLzuKMuVqtkVjYBvqUsSWCtGA58Z8joEJ+I1ceT2IXDHbaA==", + "mongodb-ns": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mongodb-ns/-/mongodb-ns-2.2.0.tgz", + "integrity": "sha512-sch/9jd74VjRCmB5U+Fj4WJnkmAtDQgxqJkBInO7zEknXE+lnDEuNBT5/Wp59HMrWUabssGGq08r6Y6F7pkvVA==" + }, + "mongodb-redact": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-0.2.2.tgz", + "integrity": "sha512-tmgDpSBymFtKggsLzpa0vDYaqh2wEXOswBZtJkXvbPKP0ThfPwoFYXtOukactU6WZsC4RYmpSPM4P6582FR/Xw==", + "requires": { + "lodash": "^4.17.15" + } + }, + "mongodb-runner": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.8.0.tgz", + "integrity": "sha512-wFTjkqVCkH9MK05t8kSDVP3oSmFq43AYwDBqVWndpggsO+Jr7sBqgf2VlNKlP5xzWF9rX2gqjESyc1Q3QxsXOw==", "dev": true, "requires": { - "async": "^3.1.1", - "chalk": "^3.0.0", + "async": "^3.1.0", + "clui": "^0.3.6", "debug": "^4.1.1", - "dependency-check": "^4.1.0", - "eslint": "^5.12.0", - "figures": "^3.1.0", - "glob": "^7.1.6", - "lodash.assign": "^4.2.0", + "fs-extra": "^8.1.0", + "is-mongodb-running": "^1.0.1", "lodash.defaults": "^4.2.0", - "lodash.uniq": "^4.5.0", "minimist": "^1.2.0", - "pre-commit": "github:mongodb-js/pre-commit", - "precinct": "^6.2.0" + "mkdirp": "^0.5.1", + "mongodb": "^3.4.0", + "mongodb-dbpath": "^0.0.1", + "mongodb-tools": "github:mongodb-js/mongodb-tools#0d1a90f49796c41f6d47c7c7999fe384014a16a0", + "mongodb-version-manager": "^1.4.3", + "untildify": "^4.0.0", + "which": "^2.0.1" }, "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "ansi-escapes": { + "async": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", "dev": true }, - "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" - } - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "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 - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.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", - "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" - } - }, - "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 - }, - "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" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.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==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^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==", - "dev": true - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "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 - }, - "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", - "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" - } - }, - "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 - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - }, - "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" - } - } - } - }, - "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 - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "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" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "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 - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "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=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "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=", - "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" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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==", "dev": true, "requires": { - "isexe": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } - } - } - }, - "mongodb-ns": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mongodb-ns/-/mongodb-ns-2.2.0.tgz", - "integrity": "sha512-sch/9jd74VjRCmB5U+Fj4WJnkmAtDQgxqJkBInO7zEknXE+lnDEuNBT5/Wp59HMrWUabssGGq08r6Y6F7pkvVA==" - }, - "mongodb-redact": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-0.2.2.tgz", - "integrity": "sha512-tmgDpSBymFtKggsLzpa0vDYaqh2wEXOswBZtJkXvbPKP0ThfPwoFYXtOukactU6WZsC4RYmpSPM4P6582FR/Xw==", - "requires": { - "lodash": "^4.17.15" - } - }, - "mongodb-runner": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/mongodb-runner/-/mongodb-runner-4.8.0.tgz", - "integrity": "sha512-wFTjkqVCkH9MK05t8kSDVP3oSmFq43AYwDBqVWndpggsO+Jr7sBqgf2VlNKlP5xzWF9rX2gqjESyc1Q3QxsXOw==", - "dev": true, - "requires": { - "async": "^3.1.0", - "clui": "^0.3.6", - "debug": "^4.1.1", - "fs-extra": "^8.1.0", - "is-mongodb-running": "^1.0.1", - "lodash.defaults": "^4.2.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "mongodb": "^3.4.0", - "mongodb-dbpath": "^0.0.1", - "mongodb-tools": "github:mongodb-js/mongodb-tools#0d1a90f49796c41f6d47c7c7999fe384014a16a0", - "mongodb-version-manager": "^1.4.3", - "untildify": "^4.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true }, "mkdirp": { "version": "0.5.5", @@ -15225,7 +14815,35 @@ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "^2.1.1" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "requires": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" } }, "figures": { @@ -15237,6 +14855,23 @@ "escape-string-regexp": "^1.0.5" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -15248,6 +14883,85 @@ "universalify": "^0.1.0" } }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "dev": true, + "requires": { + "p-timeout": "^1.1.1" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -15259,6 +14973,15 @@ "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } } } }, @@ -15312,6 +15035,27 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + } + } + }, "multipipe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz", @@ -15643,15 +15387,6 @@ "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", "dev": true }, - "node-source-walk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.2.0.tgz", - "integrity": "sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA==", - "dev": true, - "requires": { - "@babel/parser": "^7.0.0" - } - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", @@ -15687,6 +15422,28 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, + "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==", + "dev": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "dependencies": { + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -15705,12 +15462,6 @@ } } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -16228,6 +15979,12 @@ "lcid": "^1.0.0" } }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -16245,9 +16002,9 @@ } }, "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", "dev": true }, "p-each-series": { @@ -16257,12 +16014,12 @@ "dev": true }, "p-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", "dev": true, "requires": { - "p-timeout": "^1.1.1" + "p-timeout": "^2.0.1" } }, "p-finally": { @@ -16271,6 +16028,12 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "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=", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -16288,9 +16051,9 @@ } }, "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dev": true, "requires": { "p-finally": "^1.0.0" @@ -16689,49 +16452,13 @@ } } }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.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==", - "dev": true, - "requires": { - "p-limit": "^2.0.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 - } + "semver-compare": "^1.0.0" } }, "polished": { @@ -16910,50 +16637,37 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "postcss-values-parser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz", - "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, "pre-commit": { - "version": "github:mongodb-js/pre-commit#f4158768a7ef58b46808cc09a6f6a0994c0baa67", - "from": "github:mongodb-js/pre-commit", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha1-287g7p3nI15X95xW186UZBpp7sY=", "dev": true, "requires": { - "cross-spawn": "^6.0.5", - "which": "1.3.x" + "cross-spawn": "^5.0.1", + "spawn-sync": "^1.0.15", + "which": "1.2.x" }, "dependencies": { "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", + "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } }, "shebang-command": { "version": "1.2.0", @@ -16971,13 +16685,19 @@ "dev": true }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, @@ -17013,27 +16733,6 @@ } } }, - "precinct": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/precinct/-/precinct-6.3.1.tgz", - "integrity": "sha512-JAwyLCgTylWminoD7V0VJwMElWmwrVSR6r9HaPWCoswkB4iFzX7aNtO7VBfAVPy+NhmjKb8IF8UmlWJXzUkOIQ==", - "dev": true, - "requires": { - "commander": "^2.20.3", - "debug": "^4.1.1", - "detective-amd": "^3.0.0", - "detective-cjs": "^3.1.1", - "detective-es6": "^2.1.0", - "detective-less": "^1.0.2", - "detective-postcss": "^3.0.1", - "detective-sass": "^3.0.1", - "detective-scss": "^2.0.1", - "detective-stylus": "^1.0.0", - "detective-typescript": "^5.8.0", - "module-definition": "^3.3.0", - "node-source-walk": "^4.2.0" - } - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -17041,9 +16740,9 @@ "dev": true }, "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, "pretty-bytes": { @@ -17191,6 +16890,12 @@ "table-parser": "^0.1.3" } }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -17260,6 +16965,27 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" }, + "query-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.3.tgz", + "integrity": "sha512-k7z4jilpZCujhiJ+QeKSwYXHc9HxqiVKlVE7/em0zBfPpcqnXKUP8F7ld7XaAkO6oXeAD7yonqcNJWqOF2pSGA==", + "dev": true, + "requires": { + "invariant": "2.2.2", + "lodash": "^4.17.15" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -17297,6 +17023,12 @@ "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", "dev": true }, + "ramda": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", + "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", + "dev": true + }, "randexp": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", @@ -17402,18 +17134,6 @@ "mute-stream": "~0.0.4" } }, - "read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -17656,6 +17376,12 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, "require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", @@ -17742,6 +17468,15 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -17995,6 +17730,15 @@ "sparse-bitfield": "^3.0.3" } }, + "sass": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.0.tgz", + "integrity": "sha512-fhyqEbMIycQA4blrz/C0pYhv2o4x2y6FYYAH0CshBw3DXh5D5wyERgxw0ptdau1orc/GhNrhF7DFN2etyOCEng==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, "save": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/save/-/save-2.4.0.tgz", @@ -18045,6 +17789,27 @@ "ajv-keywords": "^3.5.2" } }, + "scss-parser": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.4.tgz", + "integrity": "sha512-oDZwDfY2JhnDrHNZPcdcPNVTpAXsJBY2/uhFfN0IzMy1xExAfJDcI1Yl/VXhfRsdQL3wLeg6/Oxt3cafBOuMzQ==", + "dev": true, + "requires": { + "invariant": "2.2.4", + "lodash": "^4.17.4" + }, + "dependencies": { + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + } + } + }, "seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -18062,6 +17827,12 @@ "lru-cache": "^6.0.0" } }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -18456,6 +18227,16 @@ "memory-pager": "^1.0.2" } }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -18789,6 +18570,12 @@ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, + "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=", + "dev": true + }, "string-length": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", @@ -19567,9 +19354,9 @@ } }, "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true }, "uc.micro": { @@ -19588,12 +19375,6 @@ "through": "^2.3.8" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -19740,12 +19521,12 @@ "dev": true }, "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "^2.0.0" } }, "url-to-options": { @@ -19970,6 +19751,16 @@ } } }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index aaf82e06..2aa8cbea 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "main": "./dist/extension.js", "scripts": { "clean": "rimraf ./out/* ./dist/* ", - "lint": "eslint ./src/**/*.ts", + "lint": "eslint '**/*.{js,ts,tsx}'", "update-grammar": "ts-node ./scripts/update-grammar.ts", "update-snippets": "ts-node ./scripts/update-snippets.ts", "precompile": "npm run clean", @@ -53,7 +53,8 @@ "test-webview": "jest", "posttest": "mongodb-runner stop --port=27018", "vscode:prepublish": "npm run clean && npm run compile:keyfile && npm run compile:resources && webpack --mode production", - "check": "mongodb-js-precommit './src/**/*{.ts}'", + "check": "npm run lint && npm run check-dependencies", + "check-dependencies": "depcheck --ignores='vscode,keytar,@types/jest,mocha-junit-reporter,mocha-multi,pre-commit,webpack-cli,vscode-languageserver-textdocument'", "package": "npm list --production --parseable --depth=99999 --loglevel=info || true && vsce package", "local-install": "npm run package && code --install-extension ./mongodb-vscode-*.vsix" }, @@ -846,7 +847,6 @@ "classnames": "^2.2.6", "debug": "^4.1.1", "dotenv": "^8.2.0", - "encoding": "^0.1.12", "micromatch": "^4.0.2", "mongodb": "^3.6.3", "mongodb-cloud-info": "^1.1.2", @@ -893,11 +893,13 @@ "chai-json-schema": "^1.5.1", "cross-env": "^7.0.2", "css-loader": "^3.4.2", + "depcheck": "^1.3.1", + "download": "^8.0.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", "eslint": "^6.8.0", "eslint-config-mongodb-js": "^5.0.3", - "eslint-plugin-react": "^7.19.0", + "eslint-plugin-mocha": "^8.0.0", "glob": "^7.1.6", "jest": "^26.5.2", "jest-junit": "^12.0.0", @@ -910,31 +912,26 @@ "mocha-junit-reporter": "^1.23.3", "mocha-multi": "^1.1.3", "mongodb-ace-autocompleter": "^0.4.13", - "mongodb-js-precommit": "^2.2.1", "mongodb-runner": "^4.8.0", "node-loader": "^0.6.0", "npm-run-all": "^4.1.5", "ora": "^4.0.3", "postcss-loader": "^3.0.0", - "react-test-renderer": "^16.13.1", + "pre-commit": "^1.2.2", "sinon": "^9.0.0", "sinon-chai": "^3.5.0", "style-loader": "^1.1.3", "ts-jest": "^26.4.1", "ts-loader": "^6.2.2", "ts-node": "^8.6.2", - "typescript": "^4.0.3", + "typescript": "^4.1.3", "vsce": "^1.81.1", "vscode-test": "^1.3.0", "webpack": "^4.42.0", "webpack-cli": "^3.3.11", "xvfb-maybe": "^0.2.1" }, - "dependency-check": { - "ignore": [ - "vscode", - "keytar", - "electron" - ] - } + "precommit": [ + "check" + ] } diff --git a/src/connectionController.ts b/src/connectionController.ts index 97bbc3b2..8149700d 100644 --- a/src/connectionController.ts +++ b/src/connectionController.ts @@ -580,13 +580,13 @@ export default class ConnectionController { const connectionNameToRemove: | string | undefined = await vscode.window.showQuickPick( - connectionIds.map( - (id, index) => `${index + 1}: ${this._connections[id].name}` - ), - { - placeHolder: 'Choose a connection to remove...' - } - ); + connectionIds.map( + (id, index) => `${index + 1}: ${this._connections[id].name}` + ), + { + placeHolder: 'Choose a connection to remove...' + } + ); if (!connectionNameToRemove) { return Promise.resolve(false); @@ -620,9 +620,7 @@ export default class ConnectionController { } }); } catch (e) { - return Promise.reject( - new Error(`An error occured parsing the connection name: ${e}`) - ); + throw new Error(`An error occured parsing the connection name: ${e}`); } if (!inputtedConnectionName) { @@ -634,27 +632,25 @@ export default class ConnectionController { this.eventEmitter.emit(DataServiceEventTypes.CONNECTIONS_DID_CHANGE); this.eventEmitter.emit(DataServiceEventTypes.ACTIVE_CONNECTION_CHANGED); - return new Promise((resolve, reject) => { - if ( - this._connections[connectionId].storageLocation === StorageScope.GLOBAL - ) { - return this._storageController - .saveConnectionToGlobalStore(this._connections[connectionId]) - .then(() => resolve(true), reject); - } + if ( + this._connections[connectionId].storageLocation === StorageScope.GLOBAL + ) { + await this._storageController + .saveConnectionToGlobalStore(this._connections[connectionId]); + return true; + } - if ( - this._connections[connectionId].storageLocation === - StorageScope.WORKSPACE - ) { - return this._storageController - .saveConnectionToWorkspaceStore(this._connections[connectionId]) - .then(() => resolve(true), reject); - } + if ( + this._connections[connectionId].storageLocation === + StorageScope.WORKSPACE + ) { + await this._storageController + .saveConnectionToWorkspaceStore(this._connections[connectionId]); + return true; + } - // No storing needed. - return resolve(true); - }); + // No storing needed. + return true; } public getSavedConnections(): SavedConnection[] { @@ -826,7 +822,9 @@ export default class ConnectionController { } }, ...Object.values(this._connections) - .sort((connectionA: any, connectionB: any) => + .sort((connectionA: { + name: string + }, connectionB: any) => (connectionA.name || '').localeCompare(connectionB.name || '') ) .map((item: any) => ({ @@ -839,29 +837,27 @@ export default class ConnectionController { ]; } - public changeActiveConnection(): Promise { - return new Promise(async (resolve) => { - const selectedQuickPickItem = await vscode.window.showQuickPick( - this.getŠ”onnectionQuickPicks(), - { - placeHolder: 'Select new connection...' - } - ); - - if (!selectedQuickPickItem) { - return resolve(true); + async changeActiveConnection(): Promise { + const selectedQuickPickItem = await vscode.window.showQuickPick( + this.getŠ”onnectionQuickPicks(), + { + placeHolder: 'Select new connection...' } + ); - if ( - selectedQuickPickItem.data.type === NewConnectionType.NEW_CONNECTION - ) { - return this.connectWithURI(); - } + if (!selectedQuickPickItem) { + return true; + } - // Get the saved connection by id and return as the current connection. - return this.connectWithConnectionId( - selectedQuickPickItem.data.connectionId - ); - }); + if ( + selectedQuickPickItem.data.type === NewConnectionType.NEW_CONNECTION + ) { + return this.connectWithURI(); + } + + // Get the saved connection by id and return as the current connection. + return this.connectWithConnectionId( + selectedQuickPickItem.data.connectionId + ); } } diff --git a/src/editors/activeConnectionCodeLensProvider.ts b/src/editors/activeConnectionCodeLensProvider.ts index b13c70df..cdd4edf8 100644 --- a/src/editors/activeConnectionCodeLensProvider.ts +++ b/src/editors/activeConnectionCodeLensProvider.ts @@ -3,7 +3,7 @@ import EXTENSION_COMMANDS from '../commands'; import ConnectionController from '../connectionController'; export default class ActiveConnectionCodeLensProvider - implements vscode.CodeLensProvider { +implements vscode.CodeLensProvider { _connectionController: ConnectionController; _onDidChangeCodeLenses: vscode.EventEmitter = new vscode.EventEmitter(); diff --git a/src/editors/collectionDocumentsOperationsStore.ts b/src/editors/collectionDocumentsOperationsStore.ts index c178f3c3..736db17e 100644 --- a/src/editors/collectionDocumentsOperationsStore.ts +++ b/src/editors/collectionDocumentsOperationsStore.ts @@ -20,7 +20,7 @@ export default class CollectionDocumentsOperationsStore { operations: { [key: string]: CollectionDocumentsOperation } = {}; createNewOperation(): string { - const operationId = uuidv4(); + const operationId = uuidv4() as string; const initialDocumentsLimit = vscode.workspace .getConfiguration('mdb') diff --git a/src/editors/collectionDocumentsProvider.ts b/src/editors/collectionDocumentsProvider.ts index aceb08a5..be00c096 100644 --- a/src/editors/collectionDocumentsProvider.ts +++ b/src/editors/collectionDocumentsProvider.ts @@ -12,7 +12,7 @@ export const CONNECTION_ID_URI_IDENTIFIER = 'connectionId'; export const VIEW_COLLECTION_SCHEME = 'VIEW_COLLECTION_SCHEME'; export default class CollectionViewProvider - implements vscode.TextDocumentContentProvider { +implements vscode.TextDocumentContentProvider { _connectionController: ConnectionController; _operationsStore: CollectionDocumentsOperationsStore; _statusView: StatusView; diff --git a/src/editors/editDocumentCodeLensProvider.ts b/src/editors/editDocumentCodeLensProvider.ts index 53952158..9aa2b566 100644 --- a/src/editors/editDocumentCodeLensProvider.ts +++ b/src/editors/editDocumentCodeLensProvider.ts @@ -5,7 +5,7 @@ import type { DocCodeLensesInfo } from '../utils/types'; import type { OutputItem } from '../utils/types'; export default class EditDocumentCodeLensProvider - implements vscode.CodeLensProvider { +implements vscode.CodeLensProvider { _onDidChangeCodeLenses: vscode.EventEmitter = new vscode.EventEmitter(); _codeLenses: vscode.CodeLens[] = []; _codeLensesInfo: DocCodeLensesInfo; diff --git a/src/editors/editorsController.ts b/src/editors/editorsController.ts index 75470ba9..0f03eb13 100644 --- a/src/editors/editorsController.ts +++ b/src/editors/editorsController.ts @@ -135,7 +135,7 @@ export default class EditorsController { return false; } - this._saveDocumnentToMemoryFileSystem(fileName, document); + this._saveDocumentToMemoryFileSystem(fileName, document); const activeConnectionId = this._connectionController.getActiveConnectionId(); const namespaceUriQuery = `${NAMESPACE_URI_IDENTIFIER}=${data.namespace}`; @@ -146,13 +146,9 @@ export default class EditorsController { query: `?${namespaceUriQuery}&${connectionIdUriQuery}&${documentIdUriQuery}` }); - return new Promise(async (resolve, reject) => { - vscode.workspace.openTextDocument(uri).then((doc) => { - vscode.window - .showTextDocument(doc, { preview: false }) - .then(() => resolve(true), reject); - }, reject); - }); + const doc = await vscode.workspace.openTextDocument(uri); + await vscode.window.showTextDocument(doc, { preview: false }); + return true; } catch (error) { vscode.window.showErrorMessage(error.message); @@ -298,7 +294,7 @@ export default class EditorsController { return Promise.resolve(true); } - _saveDocumnentToMemoryFileSystem( + _saveDocumentToMemoryFileSystem( fileName: string, document: EJSON.SerializableTypes ): void { diff --git a/src/editors/memoryFileSystemProvider.ts b/src/editors/memoryFileSystemProvider.ts index fb115dd5..4e968f3e 100644 --- a/src/editors/memoryFileSystemProvider.ts +++ b/src/editors/memoryFileSystemProvider.ts @@ -1,3 +1,4 @@ +/* eslint-disable new-cap */ import * as path from 'path'; import * as vscode from 'vscode'; @@ -223,7 +224,7 @@ export class MemoryFileSystemProvider implements vscode.FileSystemProvider { readonly onDidChangeFile: vscode.Event = this ._emitter.event; - watch(_resource: vscode.Uri): vscode.Disposable { + watch(/* _resource: vscode.Uri */): vscode.Disposable { // Ignore, fires for all changes... return new vscode.Disposable(() => {}); } diff --git a/src/editors/mongoDBDocumentService.ts b/src/editors/mongoDBDocumentService.ts index 770e421d..9b4645b3 100644 --- a/src/editors/mongoDBDocumentService.ts +++ b/src/editors/mongoDBDocumentService.ts @@ -144,7 +144,9 @@ export default class MongoDBDocumentService { return null; } - return JSON.parse(EJSON.stringify(documents[0])); + return JSON.parse( + EJSON.stringify(documents[0]) + ) as EJSON.SerializableTypes; } catch (error) { this._statusView.hideMessage(); diff --git a/src/editors/partialExecutionCodeLensProvider.ts b/src/editors/partialExecutionCodeLensProvider.ts index b20b5a45..e09cf866 100644 --- a/src/editors/partialExecutionCodeLensProvider.ts +++ b/src/editors/partialExecutionCodeLensProvider.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import EXTENSION_COMMANDS from '../commands'; export default class PartialExecutionCodeLensProvider - implements vscode.CodeLensProvider { +implements vscode.CodeLensProvider { private _codeLenses: vscode.CodeLens[] = []; private _selection?: vscode.Range; private _onDidChangeCodeLenses: vscode.EventEmitter< diff --git a/src/editors/playgroundController.ts b/src/editors/playgroundController.ts index 2f85b6a5..d91c37b4 100644 --- a/src/editors/playgroundController.ts +++ b/src/editors/playgroundController.ts @@ -81,16 +81,17 @@ export default class PlaygroundController { this.connectionController.addEventListener( DataServiceEventTypes.ACTIVE_CONNECTION_CHANGED, - async () => { - await this.disconnectFromServiceProvider(); + () => { + this.disconnectFromServiceProvider(); } ); this.connectionController.addEventListener( DataServiceEventTypes.ACTIVE_CONNECTION_CHANGED, - async () => { - await this.connectToServiceProvider(); - this._activeConnectionCodeLensProvider?.refresh(); + () => { + this.connectToServiceProvider().then(() => { + this._activeConnectionCodeLensProvider?.refresh(); + }); } ); @@ -351,7 +352,7 @@ export default class PlaygroundController { } async reopenResultAsVirtualDocument() { - let viewColumn: vscode.ViewColumn = + const viewColumn: vscode.ViewColumn = this._playgroundResultViewColumn || vscode.ViewColumn.Beside; this._playgroundResultViewProvider.refresh(); @@ -363,7 +364,7 @@ export default class PlaygroundController { } async openResultAsVirtualDocument(): Promise { - let viewColumn: vscode.ViewColumn = + const viewColumn: vscode.ViewColumn = this._playgroundResultViewColumn || vscode.ViewColumn.Beside; await vscode.workspace.openTextDocument(PLAYGROUND_RESULT_URI).then( @@ -386,53 +387,51 @@ export default class PlaygroundController { } async evaluatePlayground(): Promise { - return new Promise(async (resolve) => { - const shouldConfirmRunAll = vscode.workspace - .getConfiguration('mdb') - .get('confirmRunAll'); - - if (!this._connectionString) { - vscode.window.showErrorMessage( - 'Please connect to a database before running a playground.' - ); + const shouldConfirmRunAll = vscode.workspace + .getConfiguration('mdb') + .get('confirmRunAll'); - return resolve(false); - } + if (!this._connectionString) { + vscode.window.showErrorMessage( + 'Please connect to a database before running a playground.' + ); - if (shouldConfirmRunAll === true) { - const name = this.connectionController.getActiveConnectionName(); - const confirmRunAll = await vscode.window.showInformationMessage( - `Are you sure you want to run this playground against ${name}? This confirmation can be disabled in the extension settings.`, - { modal: true }, - 'Yes' - ); + return false; + } - if (confirmRunAll !== 'Yes') { - return resolve(false); - } - } + if (shouldConfirmRunAll === true) { + const name = this.connectionController.getActiveConnectionName(); + const confirmRunAll = await vscode.window.showInformationMessage( + `Are you sure you want to run this playground against ${name}? This confirmation can be disabled in the extension settings.`, + { modal: true }, + 'Yes' + ); - const evaluateResponse: ExecuteAllResult = await this.evaluateWithCancelModal(); + if (confirmRunAll !== 'Yes') { + return false; + } + } - this._outputChannel.clear(); - if (evaluateResponse.outputLines) { - for (const line of evaluateResponse.outputLines) { - this._outputChannel.appendLine(line.content); - } + const evaluateResponse: ExecuteAllResult = await this.evaluateWithCancelModal(); - this._outputChannel.show(true); + this._outputChannel.clear(); + if (evaluateResponse.outputLines) { + for (const line of evaluateResponse.outputLines) { + this._outputChannel.appendLine(line.content); } - if (!evaluateResponse.outputLines && !evaluateResponse.result) { - return resolve(false); - } + this._outputChannel.show(true); + } - this.playgroundResult = evaluateResponse.result; + if (!evaluateResponse.outputLines && !evaluateResponse.result) { + return false; + } - await this.openPlaygroundResult(); + this.playgroundResult = evaluateResponse.result; - return resolve(true); - }); + await this.openPlaygroundResult(); + + return true; } runSelectedPlaygroundBlocks(): Promise { diff --git a/src/editors/playgroundResultProvider.ts b/src/editors/playgroundResultProvider.ts index c501dcc3..d4661cd8 100644 --- a/src/editors/playgroundResultProvider.ts +++ b/src/editors/playgroundResultProvider.ts @@ -9,7 +9,7 @@ export const PLAYGROUND_RESULT_URI = vscode.Uri.parse( ); export default class PlaygroundResultProvider - implements vscode.TextDocumentContentProvider { +implements vscode.TextDocumentContentProvider { _editDocumentCodeLensProvider: EditDocumentCodeLensProvider; _playgroundResult: OutputItem; @@ -41,7 +41,7 @@ export default class PlaygroundResultProvider } } - async refresh(): Promise { + refresh(): void { this.onDidChangeEmitter.fire(PLAYGROUND_RESULT_URI); } @@ -54,7 +54,7 @@ export default class PlaygroundResultProvider } if (type === 'string') { - return this._playgroundResult.content; + return this._playgroundResult.content as string; } this._editDocumentCodeLensProvider?.updateCodeLensesPosition( diff --git a/src/explorer/connectionTreeItem.ts b/src/explorer/connectionTreeItem.ts index 9f355fa6..31a36464 100644 --- a/src/explorer/connectionTreeItem.ts +++ b/src/explorer/connectionTreeItem.ts @@ -283,7 +283,8 @@ export default class ConnectionTreeItem extends vscode.TreeItem vscode.window.showErrorMessage( 'Unable to create database, not currently connected.' ); - return Promise.resolve(false); + Promise.resolve(false); + return; } dataService.createCollection( `${databaseName}.${collectionName}`, @@ -295,11 +296,13 @@ export default class ConnectionTreeItem extends vscode.TreeItem vscode.window.showErrorMessage( `Create collection failed: ${err.message}` ); - return resolve(false); + resolve(false); + return; } this.cacheIsUpToDate = false; - return resolve(true); + resolve(true); + return; } ); }); diff --git a/src/explorer/explorerTreeController.ts b/src/explorer/explorerTreeController.ts index b7b875c5..de34014e 100644 --- a/src/explorer/explorerTreeController.ts +++ b/src/explorer/explorerTreeController.ts @@ -13,9 +13,9 @@ import EXTENSION_COMMANDS from '../commands'; const log = createLogger('explorer controller'); export default class ExplorerTreeController - implements vscode.TreeDataProvider { - private _connectionController: ConnectionController; - private _connectionTreeItems: { [key: string]: ConnectionTreeItem }; +implements vscode.TreeDataProvider { + _connectionController: ConnectionController; + _connectionTreeItems: { [key: string]: ConnectionTreeItem }; contextValue = 'explorerTreeController'; constructor(connectionController: ConnectionController) { @@ -26,7 +26,7 @@ export default class ExplorerTreeController // Subscribe to changes in the connections. this._connectionController.addEventListener( DataServiceEventTypes.CONNECTIONS_DID_CHANGE, - this.refresh + () => { this.refresh(); } ); this._connectionTreeItems = {}; // No cache to start. @@ -35,7 +35,7 @@ export default class ExplorerTreeController removeListeners(): void { this._connectionController.removeEventListener( DataServiceEventTypes.CONNECTIONS_DID_CHANGE, - this.refresh + () => { this.refresh(); } ); } @@ -117,7 +117,7 @@ export default class ExplorerTreeController }); }; - private _onDidChangeTreeData: vscode.EventEmitter; + _onDidChangeTreeData: vscode.EventEmitter; readonly onDidChangeTreeData: vscode.Event; public refresh = (): Promise => { @@ -126,7 +126,7 @@ export default class ExplorerTreeController return Promise.resolve(true); }; - public onTreeItemUpdate(): void { + onTreeItemUpdate(): void { this._onDidChangeTreeData.fire(null); } diff --git a/src/explorer/helpTree.ts b/src/explorer/helpTree.ts index a4bb4ed5..858ab368 100644 --- a/src/explorer/helpTree.ts +++ b/src/explorer/helpTree.ts @@ -42,7 +42,7 @@ export class HelpLinkTreeItem extends vscode.TreeItem { } export default class HelpTree - implements vscode.TreeDataProvider { +implements vscode.TreeDataProvider { contextValue = 'helpTree'; getTreeItem(element: vscode.TreeItem): vscode.TreeItem { diff --git a/src/explorer/playgroundsTree.ts b/src/explorer/playgroundsTree.ts index 4d4f8410..fa26618e 100644 --- a/src/explorer/playgroundsTree.ts +++ b/src/explorer/playgroundsTree.ts @@ -14,13 +14,17 @@ export class FileStat implements vscode.FileStat { constructor(private fsStat: fs.Stats) {} get type(): vscode.FileType { - return this.fsStat.isFile() - ? vscode.FileType.File - : this.fsStat.isDirectory() - ? vscode.FileType.Directory - : this.fsStat.isSymbolicLink() - ? vscode.FileType.SymbolicLink - : vscode.FileType.Unknown; + if (this.fsStat.isFile()) { + return vscode.FileType.File; + } + if (this.fsStat.isDirectory()) { + return vscode.FileType.Directory; + } + if (this.fsStat.isSymbolicLink()) { + return vscode.FileType.SymbolicLink; + } + + return vscode.FileType.Unknown; } get isFile(): boolean | undefined { diff --git a/src/language/languageServerController.ts b/src/language/languageServerController.ts index d6291ad7..c33d46b2 100644 --- a/src/language/languageServerController.ts +++ b/src/language/languageServerController.ts @@ -105,7 +105,7 @@ export default class LanguageServerController { ); } - public startLanguageServer(): void { + startLanguageServer(): void { // Start the client. This will also launch the server const disposable = this.client.start(); @@ -125,7 +125,7 @@ export default class LanguageServerController { }); } - public deactivate(): void { + deactivate(): void { if (!this.client) { return undefined; } @@ -134,7 +134,7 @@ export default class LanguageServerController { this.client.stop(); } - public executeAll(codeToEvaluate: string): Promise { + executeAll(codeToEvaluate: string): Promise { return this.client.onReady().then(() => { // Instantiate a new CancellationTokenSource object // that generates a cancellation token for each run of a playground @@ -153,28 +153,26 @@ export default class LanguageServerController { }); } - public connectToServiceProvider(params: { + async connectToServiceProvider(params: { connectionString?: string; connectionOptions?: any; extensionPath: string; - }): Promise { - return this.client.onReady().then(async () => { - return this.client.sendRequest( - ServerCommands.CONNECT_TO_SERVICE_PROVIDER, - params - ); - }); + }): Promise { + await this.client.onReady(); + return this.client.sendRequest( + ServerCommands.CONNECT_TO_SERVICE_PROVIDER, + params + ); } - public disconnectFromServiceProvider(): Promise { - return this.client.onReady().then(async () => { - return this.client.sendRequest( - ServerCommands.DISCONNECT_TO_SERVICE_PROVIDER - ); - }); + async disconnectFromServiceProvider(): Promise { + await this.client.onReady(); + return this.client.sendRequest( + ServerCommands.DISCONNECT_TO_SERVICE_PROVIDER + ); } - public startStreamLanguageServerLogs(): Promise { + startStreamLanguageServerLogs(): Promise { const socketPort = workspace .getConfiguration('languageServerExample') .get('port', 7000); @@ -184,7 +182,7 @@ export default class LanguageServerController { return Promise.resolve(true); } - public cancelAll(): Promise { + cancelAll(): Promise { return new Promise((resolve) => { // Send a request for cancellation. As a result // the associated CancellationToken will be notified of the cancellation, diff --git a/src/language/mongoDBService.ts b/src/language/mongoDBService.ts index 024e7102..cf14fe26 100644 --- a/src/language/mongoDBService.ts +++ b/src/language/mongoDBService.ts @@ -26,16 +26,16 @@ export default class MongoDBService { this._cachedFields = {}; this._cachedDatabases = []; this._cachedCollections = []; - this._cachedShellSymbols = this.getShellCompletionItems(); + this._cachedShellSymbols = this._getShellCompletionItems(); this._visitor = new Visitor(); } // ------ CONNECTION ------ // - public get connectionString(): string | undefined { + get connectionString(): string | undefined { return this._connectionString; } - public get connectionOptions(): object | undefined { + get connectionOptions(): object | undefined { return this._connectionOptions; } @@ -80,7 +80,7 @@ export default class MongoDBService { } } - public async connectToServiceProvider(params: { + async connectToServiceProvider(params: { connectionString?: string; connectionOptions?: any; extensionPath: string; @@ -123,7 +123,7 @@ export default class MongoDBService { } } - public async disconnectFromServiceProvider(): Promise { + async disconnectFromServiceProvider(): Promise { this.clearCurrentSessionConnection(); this.clearCurrentSessionFields(); this.clearCurrentSessionDatabases(); @@ -133,7 +133,7 @@ export default class MongoDBService { } // ------ EXECUTION ------ // - public executeAll( + executeAll( executionParameters: PlaygroundRunParameters, token: CancellationToken ): Promise { @@ -169,7 +169,7 @@ export default class MongoDBService { worker.postMessage(ServerCommands.EXECUTE_ALL_FROM_PLAYGROUND); // Listen for results from the worker thread. - worker.on('message', async ([error, result]) => { + worker.on('message', ([error, result]) => { if (error) { this._connection.console.log( `MONGOSH execute all error: ${util.inspect(error)}` @@ -177,9 +177,9 @@ export default class MongoDBService { this._connection.sendNotification('showErrorMessage', error.message); } - await worker.terminate(); - - return resolve(result); + worker.terminate().then( + () => resolve(result) + ); }); // Listen for cancellation request from the language server client. @@ -213,7 +213,7 @@ export default class MongoDBService { } // ------ GET DATA FOR COMPLETION ------ // - public getDatabasesCompletionItems(): void { + getDatabasesCompletionItems(): void { const worker = new WorkerThreads( path.resolve(this._extensionPath, 'dist', languageServerWorkerFileName), { @@ -227,21 +227,21 @@ export default class MongoDBService { this._connection.console.log('MONGOSH get list databases...'); worker.postMessage(ServerCommands.GET_LIST_DATABASES); - worker.on('message', async ([error, result]) => { + worker.on('message', ([error, result]) => { if (error) { this._connection.console.log( `MONGOSH get list databases error: ${util.inspect(error)}` ); } - await worker.terminate(); - - this._connection.console.log(`MONGOSH found ${result.length} databases`); - this.updateCurrentSessionDatabases(result); + worker.terminate().then(() => { + this._connection.console.log(`MONGOSH found ${result.length} databases`); + this.updateCurrentSessionDatabases(result); + }); }); } - public getCollectionsCompletionItems(databaseName: string): Promise { + getCollectionsCompletionItems(databaseName: string): Promise { return new Promise((resolve) => { const worker = new WorkerThreads( path.resolve(this._extensionPath, 'dist', languageServerWorkerFileName), @@ -257,26 +257,26 @@ export default class MongoDBService { this._connection.console.log('MONGOSH get list collections...'); worker.postMessage(ServerCommands.GET_LIST_COLLECTIONS); - worker.on('message', async ([error, result]) => { + worker.on('message', ([error, result]) => { if (error) { this._connection.console.log( `MONGOSH get list collections error: ${util.inspect(error)}` ); } - await worker.terminate(); - - this._connection.console.log( - `MONGOSH found ${result.length} collections` - ); - this.updateCurrentSessionCollections(databaseName, result); + worker.terminate().then(() => { + this._connection.console.log( + `MONGOSH found ${result.length} collections` + ); + this.updateCurrentSessionCollections(databaseName, result); - return resolve(true); + resolve(true); + }); }); }); } - public getFieldsCompletionItems( + getFieldsCompletionItems( databaseName: string, collectionName: string ): Promise { @@ -297,23 +297,23 @@ export default class MongoDBService { this._connection.console.log(`SCHEMA for namespace: "${namespace}"`); worker.postMessage(ServerCommands.GET_FIELDS_FROM_SCHEMA); - worker.on('message', async ([error, fields]) => { + worker.on('message', ([error, fields]) => { if (error) { this._connection.console.log(`SCHEMA error: ${util.inspect(error)}`); } - await worker.terminate(); + worker.terminate().then(() => { + this._connection.console.log(`SCHEMA found ${fields.length} fields`); + this.updateCurrentSessionFields(namespace, fields); - this._connection.console.log(`SCHEMA found ${fields.length} fields`); - this.updateCurrentSessionFields(namespace, fields); - - return resolve(true); + resolve(true); + }); }); }); } // Get shell API symbols/methods completion from mongosh. - private getShellCompletionItems(): object { + _getShellCompletionItems(): object { const shellSymbols = {}; Object.keys(signatures).map((symbol) => { @@ -383,97 +383,76 @@ export default class MongoDBService { }); } - public provideCompletionItems( + // eslint-disable-next-line complexity + async provideCompletionItems( textFromEditor: string, position: { line: number; character: number } ): Promise<[]> { // eslint-disable-next-line complexity - return new Promise(async (resolve) => { - this._connection.console.log( - `LS text from editor: ${util.inspect(textFromEditor)}` - ); - this._connection.console.log( - `LS current symbol position: ${util.inspect(position)}` - ); - - const state = this._visitor.parseAST(textFromEditor, position); - - this._connection.console.log( - `VISITOR completion state: ${util.inspect(state)}` - ); - - if (state.databaseName && !this._cachedCollections[state.databaseName]) { - await this.getCollectionsCompletionItems(state.databaseName); - } + this._connection.console.log( + `LS text from editor: ${util.inspect(textFromEditor)}` + ); + this._connection.console.log( + `LS current symbol position: ${util.inspect(position)}` + ); - if (state.databaseName && state.collectionName) { - const namespace = `${state.databaseName}.${state.collectionName}`; + const state = this._visitor.parseAST(textFromEditor, position); - if (!this._cachedFields[namespace]) { - await this.getFieldsCompletionItems( - state.databaseName, - state.collectionName - ); - } + this._connection.console.log( + `VISITOR completion state: ${util.inspect(state)}` + ); - if (state.isObjectKey) { - this._connection.console.log('VISITOR found field names completion'); + if (state.databaseName && !this._cachedCollections[state.databaseName]) { + await this.getCollectionsCompletionItems(state.databaseName); + } - return resolve(this._cachedFields[namespace]); - } - } + if (state.databaseName && state.collectionName) { + const namespace = `${state.databaseName}.${state.collectionName}`; - if (state.isShellMethod) { - this._connection.console.log( - 'VISITOR found shell collection methods completion' + if (!this._cachedFields[namespace]) { + await this.getFieldsCompletionItems( + state.databaseName, + state.collectionName ); - - return resolve(this._cachedShellSymbols.Collection); } - if (state.isAggregationCursor) { - this._connection.console.log( - 'VISITOR found shell aggregation cursor methods completion' - ); + if (state.isObjectKey) { + this._connection.console.log('VISITOR found field names completion'); - return resolve(this._cachedShellSymbols.AggregationCursor); + return this._cachedFields[namespace]; } + } - if (state.isFindCursor) { - this._connection.console.log( - 'VISITOR found shell cursor methods completion' - ); + if (state.isShellMethod) { + this._connection.console.log( + 'VISITOR found shell collection methods completion' + ); - return resolve(this._cachedShellSymbols.Cursor); - } + return this._cachedShellSymbols.Collection; + } - if (state.isDbCallExpression) { - let dbCompletions: any = [...this._cachedShellSymbols.Database]; + if (state.isAggregationCursor) { + this._connection.console.log( + 'VISITOR found shell aggregation cursor methods completion' + ); - if (state.databaseName) { - this._connection.console.log( - 'VISITOR found shell db methods and collection names completion' - ); + return this._cachedShellSymbols.AggregationCursor; + } - const collectionCompletions = this.prepareCollectionsItems( - textFromEditor, - this._cachedCollections[state.databaseName], - position - ); + if (state.isFindCursor) { + this._connection.console.log( + 'VISITOR found shell cursor methods completion' + ); - dbCompletions = dbCompletions.concat(collectionCompletions); - } else { - this._connection.console.log( - 'VISITOR found shell db methods completion' - ); - } + return this._cachedShellSymbols.Cursor; + } - return resolve(dbCompletions); - } + if (state.isDbCallExpression) { + let dbCompletions: any = [...this._cachedShellSymbols.Database]; - if (state.isCollectionName && state.databaseName) { + if (state.databaseName) { this._connection.console.log( - 'VISITOR found collection names completion' + 'VISITOR found shell db methods and collection names completion' ); const collectionCompletions = this.prepareCollectionsItems( @@ -482,27 +461,47 @@ export default class MongoDBService { position ); - return resolve(collectionCompletions); + dbCompletions = dbCompletions.concat(collectionCompletions); + } else { + this._connection.console.log( + 'VISITOR found shell db methods completion' + ); } - if (state.isUseCallExpression) { - this._connection.console.log('VISITOR found database names completion'); + return dbCompletions; + } - return resolve(this._cachedDatabases); - } + if (state.isCollectionName && state.databaseName) { + this._connection.console.log( + 'VISITOR found collection names completion' + ); - this._connection.console.log('VISITOR no completions'); + const collectionCompletions = this.prepareCollectionsItems( + textFromEditor, + this._cachedCollections[state.databaseName], + position + ); - return resolve([]); - }); + return collectionCompletions; + } + + if (state.isUseCallExpression) { + this._connection.console.log('VISITOR found database names completion'); + + return this._cachedDatabases; + } + + this._connection.console.log('VISITOR no completions'); + + return []; } // ------ CURRENT SESSION ------ // - public clearCurrentSessionFields(): void { + clearCurrentSessionFields(): void { this._cachedFields = {}; } - public updateCurrentSessionFields( + updateCurrentSessionFields( namespace: string, fields: [{ label: string; kind: number }] ): [] { @@ -515,19 +514,19 @@ export default class MongoDBService { return this._cachedFields[namespace]; } - public clearCurrentSessionDatabases(): void { + clearCurrentSessionDatabases(): void { this._cachedDatabases = []; } - public updateCurrentSessionDatabases(databases: any): void { + updateCurrentSessionDatabases(databases: any): void { this._cachedDatabases = databases ? databases : []; } - public clearCurrentSessionCollections(): void { + clearCurrentSessionCollections(): void { this._cachedCollections = {}; } - public updateCurrentSessionCollections( + updateCurrentSessionCollections( database: string, collections: any ): [] { @@ -540,7 +539,7 @@ export default class MongoDBService { return []; } - public clearCurrentSessionConnection(): void { + clearCurrentSessionConnection(): void { this._connectionString = undefined; this._connectionOptions = undefined; } diff --git a/src/language/server.ts b/src/language/server.ts index e0d493e7..a6c4085e 100644 --- a/src/language/server.ts +++ b/src/language/server.ts @@ -108,7 +108,9 @@ connection.onDidChangeConfiguration((change) => { // Revalidate all open text documents. // eslint-disable-next-line @typescript-eslint/no-use-before-define - documents.all().forEach(validateTextDocument); + documents.all().forEach((document: TextDocument) => { + validateTextDocument(document); + }); }); const getDocumentSettings = (resource: string): Thenable => { @@ -211,7 +213,7 @@ documents.onDidChangeContent((change) => { } }); -connection.onRequest(new RequestType('textDocument/codeLens'), (event) => { +connection.onRequest(new RequestType('textDocument/codeLens'), (/* event*/) => { // connection.console.log( // `documents.onDidChangeContent: ${JSON.stringify(event)}` // ); @@ -220,7 +222,7 @@ connection.onRequest(new RequestType('textDocument/codeLens'), (event) => { // return parsed; }); -connection.onDidChangeWatchedFiles((_change) => { +connection.onDidChangeWatchedFiles((/* _change */) => { // Monitored files have change in VSCode. // connection.console.log( // `We received an file change event: ${JSON.stringify(_change)}` @@ -303,13 +305,13 @@ connection.onRequest('textDocument/formatting', (event) => { return text; }); -connection.onDidOpenTextDocument((params) => { +connection.onDidOpenTextDocument((/* params */) => { // A text document got opened in VSCode. // params.textDocument.uri uniquely identifies the document. For documents store on disk this is a file URI. // params.textDocument.text the initial full content of the document. // connection.console.log(`${params.textDocument.uri} opened.`); }); -connection.onDidChangeTextDocument((params) => { +connection.onDidChangeTextDocument((/* params */) => { // The content of a text document did change in VSCode. // params.textDocument.uri uniquely identifies the document. // params.contentChanges describe the content changes to the document. @@ -319,7 +321,7 @@ connection.onDidChangeTextDocument((params) => { // )}` // ); }); -connection.onDidCloseTextDocument((params) => { +connection.onDidCloseTextDocument((/* params */) => { // A text document got closed in VSCode. // params.textDocument.uri uniquely identifies the document. // connection.console.log(`${params.textDocument.uri} closed.`); diff --git a/src/language/visitor.ts b/src/language/visitor.ts index c06fbed6..fc9929b0 100644 --- a/src/language/visitor.ts +++ b/src/language/visitor.ts @@ -119,22 +119,22 @@ export class Visitor { return this._state; } - const self = this; - traverse(ast, { - enter(path) { + enter: (path) => { switch (path.node.type) { case 'CallExpression': - self.visitCallExpression(path.node); + this.visitCallExpression(path.node); break; case 'MemberExpression': - self.visitMemberExpression(path.node); + this.visitMemberExpression(path.node); break; case 'ExpressionStatement': - self.visitExpressionStatement(path.node); + this.visitExpressionStatement(path.node); break; case 'ObjectExpression': - self.visitObjectExpression(path.node); + this.visitObjectExpression(path.node); + break; + default: break; } } @@ -157,6 +157,7 @@ export class Visitor { }; } + // eslint-disable-next-line complexity private checkIsUseCall(node: any): boolean { if ( (node.callee.name === 'use' && @@ -196,7 +197,7 @@ export class Visitor { private checkIsObjectKey(node: any): boolean { if ( node.properties.find( - (item: any) => item.key.name && item.key.name.includes(PLACEHOLDER) + (item: any) => !!(item.key.name && item.key.name.includes(PLACEHOLDER)) ) ) { return true; @@ -205,6 +206,7 @@ export class Visitor { return false; } + // eslint-disable-next-line complexity private checkIsCollectionName(node: any): boolean { if ( (node.object && diff --git a/src/language/worker.ts b/src/language/worker.ts index d88f6a54..e958cecc 100644 --- a/src/language/worker.ts +++ b/src/language/worker.ts @@ -68,26 +68,20 @@ const executeAll = async ( } }; -const findAndParse = ( +const findAndParse = async ( serviceProvider: CliServiceProvider, databaseName: string, collectionName: string -): Promise => { - return new Promise(async (resolve, reject) => { - let documents: Array; - - try { - documents = await serviceProvider - .find(databaseName, collectionName, {}, { limit: 1 }) - .toArray(); - } catch (error) { - return reject(error); - } +) => { + const documents = await serviceProvider + .find(databaseName, collectionName, {}, { limit: 1 }) + .toArray(); - if (documents.length === 0) { - return resolve([]); - } + if (documents.length === 0) { + return []; + } + return new Promise((resolve, reject) => { parseSchema(documents, (error: Error | undefined, schema) => { if (error) { return reject(documents); @@ -147,9 +141,9 @@ const getListDatabases = async ( const result = await serviceProvider.listDatabases('admin'); const databases = result ? result.databases.map((item) => ({ - label: item.name, - kind: CompletionItemKind.Value - })) + label: item.name, + kind: CompletionItemKind.Value + })) : []; return [null, databases]; @@ -177,48 +171,52 @@ const getListCollections = async ( } }; +const handleMessageFromParentPort = async(message: string) => { + if (message === ServerCommands.EXECUTE_ALL_FROM_PLAYGROUND) { + parentPort?.postMessage( + await executeAll( + workerData.codeToEvaluate, + workerData.connectionString, + workerData.connectionOptions + ) + ); + } + + if (message === ServerCommands.GET_FIELDS_FROM_SCHEMA) { + parentPort?.postMessage( + await getFieldsFromSchema( + workerData.connectionString, + workerData.connectionOptions, + workerData.databaseName, + workerData.collectionName + ) + ); + } + + if (message === ServerCommands.GET_LIST_DATABASES) { + parentPort?.postMessage( + await getListDatabases( + workerData.connectionString, + workerData.connectionOptions + ) + ); + } + + if (message === ServerCommands.GET_LIST_COLLECTIONS) { + parentPort?.postMessage( + await getListCollections( + workerData.connectionString, + workerData.connectionOptions, + workerData.databaseName + ) + ); + } +}; + // parentPort allows communication with the parent thread. parentPort?.once( 'message', - async (message: string): Promise => { - if (message === ServerCommands.EXECUTE_ALL_FROM_PLAYGROUND) { - parentPort?.postMessage( - await executeAll( - workerData.codeToEvaluate, - workerData.connectionString, - workerData.connectionOptions - ) - ); - } - - if (message === ServerCommands.GET_FIELDS_FROM_SCHEMA) { - parentPort?.postMessage( - await getFieldsFromSchema( - workerData.connectionString, - workerData.connectionOptions, - workerData.databaseName, - workerData.collectionName - ) - ); - } - - if (message === ServerCommands.GET_LIST_DATABASES) { - parentPort?.postMessage( - await getListDatabases( - workerData.connectionString, - workerData.connectionOptions - ) - ); - } - - if (message === ServerCommands.GET_LIST_COLLECTIONS) { - parentPort?.postMessage( - await getListCollections( - workerData.connectionString, - workerData.connectionOptions, - workerData.databaseName - ) - ); - } + (message: string): void => { + handleMessageFromParentPort(message); } ); diff --git a/src/mdbExtensionController.ts b/src/mdbExtensionController.ts index 1c555194..236f77d2 100644 --- a/src/mdbExtensionController.ts +++ b/src/mdbExtensionController.ts @@ -491,7 +491,7 @@ export default class MDBExtensionController implements vscode.Disposable { } showOverviewPageIfRecentlyInstalled(): void { - const hasBeenShownViewAlready = this._storageController.get( + const hasBeenShownViewAlready = !!this._storageController.get( StorageVariables.GLOBAL_HAS_BEEN_SHOWN_INITIAL_VIEW ); // Show the overview page when it hasn't been show to the diff --git a/src/telemetry/telemetryController.ts b/src/telemetry/telemetryController.ts index 753e3497..f72fd878 100644 --- a/src/telemetry/telemetryController.ts +++ b/src/telemetry/telemetryController.ts @@ -34,7 +34,7 @@ type CloudInfo = { type LinkClickedTelemetryEventProperties = { screen: string; - link_id: string; + link_id: string; // eslint-disable-line camelcase }; type ExtensionCommandRunTelemetryEventProperties = { @@ -42,6 +42,7 @@ type ExtensionCommandRunTelemetryEventProperties = { }; type NewConnectionTelemetryEventProperties = { + /* eslint-disable camelcase */ is_atlas: boolean; is_localhost: boolean; is_data_lake: boolean; @@ -56,6 +57,7 @@ type NewConnectionTelemetryEventProperties = { is_used_connect_screen: boolean; is_used_command_palette: boolean; is_used_saved_connection: boolean; + /* eslint-enable camelcase */ }; type DocumentUpdatedTelemetryEventProperties = { @@ -247,10 +249,10 @@ export default class TelemetryController { } } - public async trackNewConnection( + trackNewConnection( dataService: DataServiceType, connectionType: ConnectionTypes - ): Promise { + ): void { dataService.instance({}, async (error: any, data: any) => { if (error) { log.error('TELEMETRY data service error', error); @@ -289,7 +291,7 @@ export default class TelemetryController { }); } - public async trackCommandRun(command: string): Promise { + trackCommandRun(command: string): void { this.track(TelemetryEventTypes.EXTENSION_COMMAND_RUN, { command }); } @@ -320,11 +322,11 @@ export default class TelemetryController { return 'other'; } - public async trackPlaygroundCodeExecuted( + trackPlaygroundCodeExecuted( result: ExecuteAllResult, partial: boolean, error: boolean - ): Promise { + ): void { this.track(TelemetryEventTypes.PLAYGROUND_CODE_EXECUTED, { type: result ? this.getPlaygroundResultType(result) : null, partial, @@ -332,25 +334,25 @@ export default class TelemetryController { }); } - public async trackLinkClicked(screen: string, linkId: string): Promise { + trackLinkClicked(screen: string, linkId: string): void { this.track(TelemetryEventTypes.EXTENSION_LINK_CLICKED, { screen, link_id: linkId }); } - public async trackPlaygroundLoaded(): Promise { + trackPlaygroundLoaded(): void { this.track(TelemetryEventTypes.PLAYGROUND_LOADED); } - public async trackPlaygroundSaved(): Promise { + trackPlaygroundSaved(): void { this.track(TelemetryEventTypes.PLAYGROUND_SAVED); } - public async trackDocumentUpdated( + trackDocumentUpdated( source: string, success: boolean - ): Promise { + ): void { this.track(TelemetryEventTypes.DOCUMENT_UPDATED, { source, success }); } } diff --git a/src/test/suite/editors/documentController.test.ts b/src/test/suite/editors/documentController.test.ts index ec10228b..c4eabc55 100644 --- a/src/test/suite/editors/documentController.test.ts +++ b/src/test/suite/editors/documentController.test.ts @@ -7,7 +7,6 @@ import { StorageController } from '../../../storage'; import { StatusView } from '../../../views'; import TelemetryController from '../../../telemetry/telemetryController'; import { afterEach } from 'mocha'; -import { MemoryFileSystemProvider } from '../../../editors/memoryFileSystemProvider'; import { EJSON } from 'bson'; const sinon = require('sinon'); @@ -64,6 +63,7 @@ suite('MongoDB Document Service Test Suite', () => { replacement: object, options: object, callback: (error: Error | null, result: object) => void + // eslint-disable-next-line @typescript-eslint/require-await ) => { document.price = 5000; @@ -94,7 +94,6 @@ suite('MongoDB Document Service Test Suite', () => { test('fetchDocument calls find and returns a single document when connected', async () => { const namespace = 'waffle.house'; - const connectionName = 'tasty_sandwhich'; const documentId = '93333a0d-83f6-4e6f-a575-af7ea6187a4a'; const documents = [{ _id: '123' }]; diff --git a/src/test/suite/editors/playgroundController.test.ts b/src/test/suite/editors/playgroundController.test.ts index 74985570..a1a323be 100644 --- a/src/test/suite/editors/playgroundController.test.ts +++ b/src/test/suite/editors/playgroundController.test.ts @@ -280,7 +280,7 @@ suite('Playground Controller Test Suite', function () { }); }); - test('do not show code lens if a part of a line is selected', async () => { + test('do not show code lens if a part of a line is selected', () => { const activeTestEditorWithSelectionMock = { document: { languageId: 'mongodb', @@ -309,7 +309,7 @@ suite('Playground Controller Test Suite', function () { expect(codeLens?.length).to.be.equal(0); }); - test('show code lens if whole line is selected', async () => { + test('show code lens if whole line is selected', () => { testPlaygroundController.showCodeLensForSelection( new vscode.Range(0, 0, 0, 14) ); @@ -363,7 +363,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage([ + const language = testPlaygroundController.getDocumentLanguage([ { test: 'value' } ]); @@ -374,7 +374,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage({ + const language = testPlaygroundController.getDocumentLanguage({ _id: { $oid: '5d973ae7443762aae72a160' } @@ -387,7 +387,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage( + const language = testPlaygroundController.getDocumentLanguage( 'I am a string' ); @@ -398,7 +398,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage(12); + const language = testPlaygroundController.getDocumentLanguage(12); expect(language).to.be.equal('plaintext'); }); @@ -407,7 +407,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage( + const language = testPlaygroundController.getDocumentLanguage( undefined ); @@ -418,7 +418,7 @@ suite('Playground Controller Test Suite', function () { await vscode.workspace .getConfiguration('mdb') .update('confirmRunAll', false); - const language = await testPlaygroundController.getDocumentLanguage( + const language = testPlaygroundController.getDocumentLanguage( undefined ); diff --git a/src/test/suite/explorer/playgroundsExplorer.test.ts b/src/test/suite/explorer/playgroundsExplorer.test.ts index 7c2366fd..b2772309 100644 --- a/src/test/suite/explorer/playgroundsExplorer.test.ts +++ b/src/test/suite/explorer/playgroundsExplorer.test.ts @@ -100,12 +100,6 @@ suite('Playgrounds Controller Test Suite', function () { }); test('should fetch new folders and files to exclude after refreshing', async () => { - const workspaceFolders = (vscode.workspace.workspaceFolders || []).filter( - (folder) => folder.uri.scheme === 'file' - ); - const rootPath = workspaceFolders[0]?.uri.path.replace('/out/test', ''); - const rootUri = vscode.Uri.parse(rootPath); - try { const treeController = new PlaygroundsTree(); diff --git a/src/test/suite/snippets/stageAutocompleter.test.ts b/src/test/suite/snippets/stageAutocompleter.test.ts index f8483e64..775ccaaa 100644 --- a/src/test/suite/snippets/stageAutocompleter.test.ts +++ b/src/test/suite/snippets/stageAutocompleter.test.ts @@ -1,4 +1,3 @@ -import * as vscode from 'vscode'; import * as chai from 'chai'; import chaiFs = require('chai-fs'); import chaiJsonSchema = require('chai-json-schema'); diff --git a/src/test/suite/stubs.ts b/src/test/suite/stubs.ts index 3c0c409d..64fb041c 100644 --- a/src/test/suite/stubs.ts +++ b/src/test/suite/stubs.ts @@ -50,7 +50,7 @@ class TestExtensionContext implements vscode.ExtensionContext { this._globalState[key] = value; }); }, - setKeysForSync: (keys: string[]): void => {} + setKeysForSync: (/* keys: string[] */): void => {} }; this.extensionPath = path.join(__dirname, '..', '..', '..'); this.storagePath = ''; @@ -157,16 +157,16 @@ const mockVSCodeTextDocument = { save: (): Promise => Promise.resolve(true), // lineAt: (line: number): vscode.TextLine => mockTextLine, - lineAt: (position: vscode.Position | number): vscode.TextLine => mockTextLine, - offsetAt: (position: vscode.Position): number => 0, - positionAt: (offset: number): vscode.Position => mockPosition, - getText: (range?: vscode.Range): string => '', + lineAt: (/* position: vscode.Position | number */): vscode.TextLine => mockTextLine, + offsetAt: (/* position: vscode.Position */): number => 0, + positionAt: (/* offset: number */): vscode.Position => mockPosition, + getText: (/* range?: vscode.Range */): string => '', - getWordRangeAtPosition: (position: vscode.Position, regex?: RegExp) => + getWordRangeAtPosition: (/* position: vscode.Position, regex?: RegExp */) => undefined, - validateRange: (range: vscode.Range): vscode.Range => mockRange, - - validatePosition: (position: vscode.Position): vscode.Position => mockPosition + validateRange: (/* range: vscode.Range */): vscode.Range => mockRange, + validatePosition: (/* position: vscode.Position */): vscode.Position => + mockPosition }; class MockLanguageServerController { @@ -192,18 +192,18 @@ class MockLanguageServerController { /* */ } - executeAll(codeToEvaluate: string): Promise { + executeAll(/* codeToEvaluate: string */): Promise { return Promise.resolve({ outputLines: [], result: { namespace: null, type: null, content: 'Result' } }); } - connectToServiceProvider(params: { + connectToServiceProvider(/* params: { connectionString?: string; connectionOptions?: any; extensionPath: string; - }): Promise { + } */): Promise { return Promise.resolve(true); } diff --git a/src/test/suite/telemetry/telemetryController.test.ts b/src/test/suite/telemetry/telemetryController.test.ts index 9d4a8fe5..da27be45 100644 --- a/src/test/suite/telemetry/telemetryController.test.ts +++ b/src/test/suite/telemetry/telemetryController.test.ts @@ -146,8 +146,8 @@ suite('Telemetry Controller Test Suite', () => { ); }); - test('track document saved form a tree-view event', async () => { - await testTelemetryController.trackDocumentUpdated('treeview', true); + test('track document saved form a tree-view event', () => { + testTelemetryController.trackDocumentUpdated('treeview', true); sinon.assert.calledWith( mockTrack, @@ -176,8 +176,8 @@ suite('Telemetry Controller Test Suite', () => { sinon.assert.called(mockTrackPlaygroundLoadedMethod); }); - test('track playground saved event', async () => { - await testTelemetryController.trackPlaygroundSaved(); + test('track playground saved event', () => { + testTelemetryController.trackPlaygroundSaved(); sinon.assert.calledWith(mockTrack); }); diff --git a/src/test/suite/views/webview-app/components/app.test.tsx b/src/test/suite/views/webview-app/components/app.test.tsx index 56caa213..eb8393f0 100644 --- a/src/test/suite/views/webview-app/components/app.test.tsx +++ b/src/test/suite/views/webview-app/components/app.test.tsx @@ -29,7 +29,6 @@ describe('App Component Test Suite', () => { describe('when the extension sends a connection status message', () => { let fakeVscodeWindowPostMessage; - let wrapper; let store; let fakeOnEventFunction; let fakeAddEventListener; @@ -56,7 +55,7 @@ describe('App Component Test Suite', () => { store = createStore(rootReducer, initialState); - wrapper = mount( + mount( diff --git a/src/test/suite/views/webview-app/components/connect-form/general-tab/host.test.tsx b/src/test/suite/views/webview-app/components/connect-form/general-tab/host.test.tsx index 8514a632..b1c575da 100644 --- a/src/test/suite/views/webview-app/components/connect-form/general-tab/host.test.tsx +++ b/src/test/suite/views/webview-app/components/connect-form/general-tab/host.test.tsx @@ -13,7 +13,7 @@ describe('Host Component Test Suite', () => { test('it shows a form group', () => { const wrapper = shallow( { test('it shows the three connection types (standalone, replicaset, srv)', () => { const wrapper = shallow( { beforeEach(() => { wrapper = shallow( { beforeEach(() => { wrapper = shallow( { beforeEach(() => { wrapper = shallow( => new reject(err); }); - server.listen(serverPort, async () => { - await vscode.commands.executeCommand( + server.listen(serverPort, () => { + vscode.commands.executeCommand( 'vscode.open', vscode.Uri.parse(`http://localhost:${serverPort}`) ); - resolve(server); }); }); diff --git a/src/views/webview-app/components/connect-form/general-tab/authentication/scram-sha-256.tsx b/src/views/webview-app/components/connect-form/general-tab/authentication/scram-sha-256.tsx index 802277b1..6cda9da8 100644 --- a/src/views/webview-app/components/connect-form/general-tab/authentication/scram-sha-256.tsx +++ b/src/views/webview-app/components/connect-form/general-tab/authentication/scram-sha-256.tsx @@ -1,5 +1,4 @@ import * as React from 'react'; -import classnames from 'classnames'; import { connect } from 'react-redux'; import { @@ -10,8 +9,6 @@ import { } from '../../../../store/actions'; import FormInput from '../../../form/form-input'; -const styles = require('../../../../connect.module.less'); - type DispatchProps = { onAuthSourceChanged: (newAuthSource: string) => void; onPasswordChanged: (newPassword: string) => void; diff --git a/src/views/webviewController.ts b/src/views/webviewController.ts index abe47b67..8637b06e 100644 --- a/src/views/webviewController.ts +++ b/src/views/webviewController.ts @@ -1,4 +1,6 @@ import * as vscode from 'vscode'; +import path from 'path'; + import ConnectionController, { ConnectionTypes } from '../connectionController'; @@ -13,7 +15,6 @@ import EXTENSION_COMMANDS from '../commands'; import ConnectionModel from './webview-app/connection-model/connection-model'; import { openLink } from '../utils/linkHelper'; -const path = require('path'); const log = createLogger('webviewController'); const openFileOptions = {