From bb4a7eaff56f20b1899774b92701cf62c38316ec Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Thu, 2 Feb 2023 22:27:12 -0500 Subject: [PATCH 1/7] update react dep to 17, remove old list workaround --- .github/workflows/test-and-build.yaml | 2 - package-lock.json | 481 +++++++----------- package.json | 6 +- scripts/no-npm-list-fail.js | 17 - .../suite/views/webview-app/jest-setup.js | 2 +- webpack.config.js | 1 + 6 files changed, 187 insertions(+), 322 deletions(-) delete mode 100644 scripts/no-npm-list-fail.js diff --git a/.github/workflows/test-and-build.yaml b/.github/workflows/test-and-build.yaml index 55a572232..8a2d4dd48 100644 --- a/.github/workflows/test-and-build.yaml +++ b/.github/workflows/test-and-build.yaml @@ -81,8 +81,6 @@ jobs: npx json -I -f package-lock.json -e "this.version='${RELEASE_VERSION}'" - name: Build .vsix - env: - NODE_OPTIONS: "--require ./scripts/no-npm-list-fail.js" run: npx vsce package --githubBranch main shell: bash diff --git a/package-lock.json b/package-lock.json index 7fd919272..310ab2601 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,8 +40,8 @@ "mongodb-query-parser": "^2.4.6", "mongodb-schema": "^9.0.0", "numeral": "^2.0.6", - "react": "^16.14.0", - "react-dom": "^16.14.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "react-redux": "^7.2.8", "redux": "^4.2.0", "ts-log": "^2.2.5", @@ -72,6 +72,7 @@ "@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", "@vscode/test-electron": "^2.1.5", + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", "autoprefixer": "^9.8.8", "buffer": "^6.0.3", "chai": "^4.3.6", @@ -86,7 +87,6 @@ "depcheck": "^1.4.3", "download": "^8.0.0", "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", "eslint": "^8.23.1", "eslint-config-mongodb-js": "^5.0.3", "eslint-plugin-mocha": "^10.1.0", @@ -4834,6 +4834,77 @@ } } }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.8.0.tgz", + "integrity": "sha512-zeUGfQRziXW7R7skzNuJyi01ZwuKCH8WiBNnTgUJwdS/CURrJwAhWsfW7nG7E30ak8Pu3ZwD9PlK9skBfAoOBw==", + "dev": true, + "dependencies": { + "@wojtekmaj/enzyme-adapter-utils": "^0.2.0", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.0", + "react-test-renderer": "^17.0.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/enzyme-adapter-react-17?sponsor=1" + }, + "peerDependencies": { + "enzyme": "^3.0.0", + "react": "^17.0.0-0", + "react-dom": "^17.0.0-0" + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17/node_modules/react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17/node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.2.0.tgz", + "integrity": "sha512-ZvZm9kZxZEKAbw+M1/Q3iDuqQndVoN8uLnxZ8bzxm7KgGTBejrGRoJAp8f1EN8eoO3iAjBNEQnTDW/H4Ekb0FQ==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + }, + "funding": { + "url": "https://github.com/wojtekmaj/enzyme-adapter-utils?sponsor=1" + }, + "peerDependencies": { + "react": "^17.0.0-0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -4913,23 +4984,6 @@ "node": ">= 6.0.0" } }, - "node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -5346,47 +5400,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" - } - }, - "node_modules/array.prototype.find/node_modules/es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array.prototype.find/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/array.prototype.flat": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", @@ -8672,56 +8685,6 @@ "string.prototype.trim": "^1.2.1" } }, - "node_modules/enzyme-adapter-react-16": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz", - "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==", - "dev": true, - "dependencies": { - "enzyme-adapter-utils": "^1.14.0", - "enzyme-shallow-equal": "^1.0.4", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.values": "^1.1.2", - "prop-types": "^15.7.2", - "react-is": "^16.13.1", - "react-test-renderer": "^16.0.0-0", - "semver": "^5.7.0" - } - }, - "node_modules/enzyme-adapter-react-16/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/enzyme-adapter-utils": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz", - "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "function.prototype.name": "^1.1.3", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.fromentries": "^2.0.3", - "prop-types": "^15.7.2", - "semver": "^5.7.1" - } - }, - "node_modules/enzyme-adapter-utils/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/enzyme-shallow-equal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", @@ -19908,17 +19871,6 @@ "react-is": "^16.13.1" } }, - "node_modules/prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", - "dev": true, - "dependencies": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" - } - }, "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -20094,27 +20046,37 @@ } }, "node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "object-assign": "^4.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, "node_modules/react-is": { @@ -20151,16 +20113,17 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, - "node_modules/react-test-renderer": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", - "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", "dev": true, "dependencies": { "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "react-is": "^16.8.6", - "scheduler": "^0.19.1" + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/read": { @@ -20289,12 +20252,6 @@ "@babel/runtime": "^7.9.2" } }, - "node_modules/reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", - "dev": true - }, "node_modules/regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -20982,15 +20939,6 @@ "node": ">=10" } }, - "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "node_modules/schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -28252,6 +28200,62 @@ "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true }, + "@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.8.0.tgz", + "integrity": "sha512-zeUGfQRziXW7R7skzNuJyi01ZwuKCH8WiBNnTgUJwdS/CURrJwAhWsfW7nG7E30ak8Pu3ZwD9PlK9skBfAoOBw==", + "dev": true, + "requires": { + "@wojtekmaj/enzyme-adapter-utils": "^0.2.0", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.0", + "react-test-renderer": "^17.0.0" + }, + "dependencies": { + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "react-test-renderer": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^17.0.2", + "react-shallow-renderer": "^16.13.1", + "scheduler": "^0.20.2" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "@wojtekmaj/enzyme-adapter-utils": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.2.0.tgz", + "integrity": "sha512-ZvZm9kZxZEKAbw+M1/Q3iDuqQndVoN8uLnxZ8bzxm7KgGTBejrGRoJAp8f1EN8eoO3iAjBNEQnTDW/H4Ekb0FQ==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -28313,23 +28317,6 @@ "debug": "4" } }, - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -28700,43 +28687,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } - } - }, "array.prototype.flat": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", @@ -31413,54 +31363,6 @@ } } }, - "enzyme-adapter-react-16": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz", - "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==", - "dev": true, - "requires": { - "enzyme-adapter-utils": "^1.14.0", - "enzyme-shallow-equal": "^1.0.4", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.values": "^1.1.2", - "prop-types": "^15.7.2", - "react-is": "^16.13.1", - "react-test-renderer": "^16.0.0-0", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "enzyme-adapter-utils": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz", - "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.16.0", - "function.prototype.name": "^1.1.3", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.fromentries": "^2.0.3", - "prop-types": "^15.7.2", - "semver": "^5.7.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "enzyme-shallow-equal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz", @@ -40490,17 +40392,6 @@ "react-is": "^16.13.1" } }, - "prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", - "dev": true, - "requires": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" - } - }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -40643,24 +40534,33 @@ } }, "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "object-assign": "^4.1.1" } }, "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "scheduler": "^0.20.2" + }, + "dependencies": { + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } } }, "react-is": { @@ -40688,16 +40588,14 @@ } } }, - "react-test-renderer": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", - "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", + "react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", "dev": true, "requires": { "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "react-is": "^16.8.6", - "scheduler": "^0.19.1" + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" } }, "read": { @@ -40807,12 +40705,6 @@ "@babel/runtime": "^7.9.2" } }, - "reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", - "dev": true - }, "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", @@ -41363,15 +41255,6 @@ "xmlchars": "^2.2.0" } }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", diff --git a/package.json b/package.json index c665bc9b0..1eccb369f 100644 --- a/package.json +++ b/package.json @@ -1005,8 +1005,8 @@ "mongodb-query-parser": "^2.4.6", "mongodb-schema": "^9.0.0", "numeral": "^2.0.6", - "react": "^16.14.0", - "react-dom": "^16.14.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", "react-redux": "^7.2.8", "redux": "^4.2.0", "ts-log": "^2.2.5", @@ -1037,6 +1037,7 @@ "@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", "@vscode/test-electron": "^2.1.5", + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", "autoprefixer": "^9.8.8", "buffer": "^6.0.3", "chai": "^4.3.6", @@ -1051,7 +1052,6 @@ "depcheck": "^1.4.3", "download": "^8.0.0", "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", "eslint": "^8.23.1", "eslint-config-mongodb-js": "^5.0.3", "eslint-plugin-mocha": "^10.1.0", diff --git a/scripts/no-npm-list-fail.js b/scripts/no-npm-list-fail.js deleted file mode 100644 index 02d68da32..000000000 --- a/scripts/no-npm-list-fail.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; -// Monkey-patch child_process so that the `npm list` command run by -// `vsce package` does not fail because of `mongodb` being a 4.x prerelease -// rather than a "proper" version number. -const child_process = require('child_process'); -const origExec = child_process.exec; -child_process.exec = (cmd, options, cb) => { - if ( - cmd === 'npm list --production --parseable --depth=99999 --loglevel=error' - ) { - origExec(cmd, options, (err, stdout, stderr) => { - cb(null, stdout, stderr); - }); - } else { - origExec(cmd, options, cb); - } -}; diff --git a/src/test/suite/views/webview-app/jest-setup.js b/src/test/suite/views/webview-app/jest-setup.js index d52a38389..6da3ddfce 100644 --- a/src/test/suite/views/webview-app/jest-setup.js +++ b/src/test/suite/views/webview-app/jest-setup.js @@ -2,7 +2,7 @@ // that vscode embeds in webviews and our jest tests need. const Enzyme = require('enzyme'); -const Adapter = require('enzyme-adapter-react-16'); +const Adapter = require('@wojtekmaj/enzyme-adapter-react-17'); Enzyme.configure({ adapter: new Adapter() }); // eslint-disable-next-line no-undef diff --git a/webpack.config.js b/webpack.config.js index 71219e512..143722db8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -43,6 +43,7 @@ const extensionConfig = { // own keytar dependency. Here we are telling it to use vscode's keytar. keytar: 'keytar', electron: 'electron', + '@electron/remote': '@electron/remote', snappy: 'snappy', 'snappy/package.json': 'snappy/package.json', 'bson-ext': 'bson-ext', From 277e975e9202c39eea5a1418e3fbc8c3ff526c2e Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Tue, 7 Feb 2023 17:45:57 -0500 Subject: [PATCH 2/7] add electron as dev dep to make npm list work with optional dependency, remove unused dep --- .depcheckrc | 2 +- package-lock.json | 1718 +++++++++++------ package.json | 8 +- src/editors/collectionDocumentsProvider.ts | 4 +- src/editors/mongoDBDocumentService.ts | 3 +- src/explorer/collectionTreeItem.ts | 14 +- src/explorer/documentListTreeItem.ts | 6 +- src/explorer/documentTreeItem.ts | 3 +- src/explorer/schemaTreeItem.ts | 10 +- .../editors/activeDBCodeLensProvider.test.ts | 9 +- .../collectionDocumentsProvider.test.ts | 54 +- .../editors/mongoDBDocumentService.test.ts | 9 +- .../editors/playgroundResultProvider.test.ts | 9 +- .../suite/explorer/collectionTreeItem.test.ts | 2 +- .../explorer/documentListTreeItem.test.ts | 4 +- .../suite/explorer/schemaTreeItem.test.ts | 30 +- src/test/suite/mdbExtensionController.test.ts | 51 +- src/test/suite/stubs.ts | 8 +- 18 files changed, 1231 insertions(+), 713 deletions(-) diff --git a/.depcheckrc b/.depcheckrc index 072cfc17c..0e97bb13c 100644 --- a/.depcheckrc +++ b/.depcheckrc @@ -1,11 +1,11 @@ ignores: - "@babel/core" - - "@leafygreen-ui/palette" - "@mongodb-js/prettier-config-compass" - "@types/jest" - "buffer" - "eslint-config-mongodb-js" - "keytar" + - "electron" - "mocha-junit-reporter" - "mocha-multi" - "mongodb-client-encryption" diff --git a/package-lock.json b/package-lock.json index 310ab2601..8b4c8fd09 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "@iconify-icons/codicon": "^1.2.16", "@iconify/react": "^1.1.4", "@leafygreen-ui/logo": "^6.1.3", - "@leafygreen-ui/palette": "^3.4.2", "@leafygreen-ui/toggle": "^7.0.5", "@mongodb-js/mongodb-constants": "^0.1.1", "@mongosh/browser-runtime-electron": "^1.6.2", @@ -35,14 +34,14 @@ "mongodb-build-info": "^1.5.0", "mongodb-cloud-info": "^1.1.3", "mongodb-connection-string-url": "^2.5.3", - "mongodb-data-service": "^22.1.1", + "mongodb-data-service": "^22.4.1", "mongodb-ns": "^2.4.0", "mongodb-query-parser": "^2.4.6", "mongodb-schema": "^9.0.0", "numeral": "^2.0.6", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-redux": "^7.2.8", + "react-redux": "^8.0.5", "redux": "^4.2.0", "ts-log": "^2.2.5", "uuid": "^8.3.2", @@ -86,6 +85,7 @@ "css-loader": "^3.6.0", "depcheck": "^1.4.3", "download": "^8.0.0", + "electron": "^23.0.0", "enzyme": "^3.11.0", "eslint": "^8.23.1", "eslint-config-mongodb-js": "^5.0.3", @@ -102,7 +102,7 @@ "mocha": "^8.4.0", "mocha-junit-reporter": "^2.0.2", "mocha-multi": "^1.1.6", - "mongodb-client-encryption": "^2.2.1", + "mongodb-client-encryption": "^2.4.0", "mongodb-runner": "^4.9.0", "node-loader": "^0.6.0", "npm-run-all": "^4.1.5", @@ -2069,10 +2069,174 @@ "node": ">=10.0.0" } }, + "node_modules/@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@electron/get/node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/get/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/get/node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/@electron/get/node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/@electron/get/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/@electron/get/node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/@electron/get/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/get/node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/get/node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@electron/get/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@electron/remote": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", - "integrity": "sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.9.tgz", + "integrity": "sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==", + "optional": true, "peerDependencies": { "electron": ">= 13.0.0" } @@ -3148,24 +3312,24 @@ } }, "node_modules/@mongodb-js/compass-logging": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/compass-logging/-/compass-logging-1.1.0.tgz", - "integrity": "sha512-Z3VLjv0sOeTqWT6VEuE5PBKm+I8j47vlRvFETFYqChV8GHeWiPtt9uVQOHGRd/6LpZ+zEuTUgYySoti/l29s7g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/compass-logging/-/compass-logging-1.1.2.tgz", + "integrity": "sha512-NYa90MYVSjWZ+wDcx2OmeIJptWJFmMMXHOkfIjZKm8Uw5muKElInyxEbXAoCR/QAL10lKc51C6rCV7TqTzr1SA==", "dependencies": { "debug": "^4.2.0", "is-electron-renderer": "^2.0.1", "mongodb-log-writer": "^1.1.4" }, "peerDependencies": { - "hadron-ipc": "^3.1.0" + "hadron-ipc": "^3.1.1" } }, "node_modules/@mongodb-js/compass-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/compass-utils/-/compass-utils-0.1.1.tgz", - "integrity": "sha512-kodwgUzdQl1nfI1eJ1lIJB00d2Y/NORYz3M/b2cV2uOlITfMw1GBcmp3jMB6nPSSXz0cdtF+VlWjj9H3W5hRuA==", - "dependencies": { - "@electron/remote": "^2.0.8" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/compass-utils/-/compass-utils-0.2.1.tgz", + "integrity": "sha512-bNKRZ/TfJ48ctRv8M4LMX3PatKhvih6sl23gpay9y+E5JhntPPTlUzlacRbpnWfGOUR8bEl5xwe+Sno5gTuQrw==", + "optionalDependencies": { + "@electron/remote": "^2.0.9" } }, "node_modules/@mongodb-js/devtools-connect": { @@ -3199,9 +3363,9 @@ } }, "node_modules/@mongodb-js/ssh-tunnel": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/ssh-tunnel/-/ssh-tunnel-2.0.1.tgz", - "integrity": "sha512-SJyZo3/Bt6QJjeKFkoPbHD4QVZqUO1GVipHCZWGJsO8lJY4DibpIq/3Lpu8KZt2X0lnxDVLhdD0HlKcohfsM+w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/ssh-tunnel/-/ssh-tunnel-2.0.2.tgz", + "integrity": "sha512-EfcYYpVi69qPknmS6hJSLvG2wv9kbMNKZWtgrF/ZBL1kclkgSd/A0Tf3kst1CMgASP4ZK0GvQkM2nwx1DmQnPQ==", "dependencies": { "debug": "^4.2.0", "socksv5": "0.0.6", @@ -3840,6 +4004,18 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -3916,6 +4092,18 @@ "@babel/types": "^7.3.0" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "node_modules/@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -4022,6 +4210,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -4147,6 +4341,15 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -4217,15 +4420,13 @@ "@types/react": "^17" } }, - "node_modules/@types/react-redux": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.20.tgz", - "integrity": "sha512-q42es4c8iIeTgcnB+yJgRTTzftv3eYYvCZOh1Ckn2eX/3o5TdsQYKUWpLoLuGlcY/p+VAhV9IOEZJcWk/vfkXw==", + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "@types/node": "*" } }, "node_modules/@types/scheduler": { @@ -4267,6 +4468,11 @@ "integrity": "sha512-NtJmi+XbYocrLb5Au4Q64srX4FlCPDvrSF/OnK3H0QJwrw40tIUoQPDoUHnZ5wpAB2KThtVyeS+kOEQyZabORg==", "dev": true }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@types/uuid": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", @@ -4299,6 +4505,16 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.38.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", @@ -5233,7 +5449,8 @@ "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true }, "node_modules/archive-type": { "version": "4.0.0", @@ -5260,6 +5477,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "devOptional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -5268,12 +5486,14 @@ "node_modules/are-we-there-yet/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "devOptional": true }, "node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "devOptional": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5288,6 +5508,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "devOptional": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -5911,6 +6132,13 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, "node_modules/boom": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", @@ -6149,6 +6377,15 @@ "node": ">=0.10.0" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, "node_modules/cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", @@ -7308,7 +7545,8 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true }, "node_modules/consolidate": { "version": "0.16.0", @@ -7672,14 +7910,17 @@ } }, "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decompress-tar": { @@ -7931,6 +8172,15 @@ "node": ">=0.8" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -8014,7 +8264,8 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "devOptional": true }, "node_modules/denque": { "version": "1.5.0", @@ -8249,14 +8500,11 @@ "dev": true }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-newline": { @@ -8268,6 +8516,13 @@ "node": ">=8" } }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -8587,11 +8842,35 @@ "node": ">=0.4.0" } }, + "node_modules/electron": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-23.0.0.tgz", + "integrity": "sha512-S6hVtTAjauMiiWP9sBVR5RpcUC464cNZ06I2EMUjeZBq+KooS6tLmNsfw0zLpAXDp1qosjlBP3v71NTZ3gd9iA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^16.11.26", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.73", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", "integrity": "sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==" }, + "node_modules/electron/node_modules/@types/node": { + "version": "16.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", + "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==", + "dev": true + }, "node_modules/emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -8643,6 +8922,15 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -8790,6 +9078,13 @@ "next-tick": "~1.0.0" } }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, "node_modules/es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", @@ -10383,6 +10678,41 @@ "node": ">=8" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -10837,6 +11167,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -11045,6 +11376,24 @@ "process": "^0.11.10" } }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -11053,6 +11402,22 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "optional": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -11177,9 +11542,9 @@ "optional": true }, "node_modules/hadron-ipc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hadron-ipc/-/hadron-ipc-3.1.0.tgz", - "integrity": "sha512-PTtZ5cXFpTTwlcPKkBhLR/tmkqvjJgEoGdV/IbLMIxNUpcOV0aiGP4YLxWVrIdwmmcgz8XzdMv2NvjahS4KqNg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hadron-ipc/-/hadron-ipc-3.1.1.tgz", + "integrity": "sha512-7mwPThMsHWSOoZkJnFW2tsGxyzL8DnJQA2sKH1C4Swj0uCWWl22wpnbCu/yWovK7juw58Bt1ezmRxP/+E2IFpA==", "dependencies": { "debug": "^4.2.0", "is-electron-renderer": "^2.0.1", @@ -11269,7 +11634,8 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "devOptional": true }, "node_modules/has-value": { "version": "1.0.0", @@ -11487,6 +11853,31 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/http2-wrapper/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -14947,60 +15338,6 @@ "node": ">=12.9.0" } }, - "node_modules/kerberos/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/kerberos/node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/kerberos/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/kerberos/node_modules/node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/kerberos/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - }, "node_modules/kerberos/node_modules/prebuild-install": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", @@ -15028,44 +15365,19 @@ "node": ">=10" } }, - "node_modules/kerberos/node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/key-tree-store": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/key-tree-store/-/key-tree-store-1.3.0.tgz", "integrity": "sha1-XqKa/CUppCWThDfWlVtxTOapeR8=" }, "node_modules/keytar": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz", - "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "hasInstallScript": true, "dependencies": { - "node-addon-api": "^3.0.0", - "prebuild-install": "^6.0.0" + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" } }, "node_modules/keyv": { @@ -15573,12 +15885,6 @@ "node-addon-api": "^4.3.0" } }, - "node_modules/macos-export-certificate-and-key/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - }, "node_modules/magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -15693,6 +15999,32 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -16002,11 +16334,14 @@ } }, "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/min-document": { @@ -16587,9 +16922,9 @@ } }, "node_modules/mongodb-client-encryption": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/mongodb-client-encryption/-/mongodb-client-encryption-2.3.0.tgz", - "integrity": "sha512-cXuRYBmCj43rLeqP8gHa+CrloFe7TUCd/f16VduFGQzAN9ef5buMGIfSr2CEGBul/EjTCLlioctSSDmHAmpTqA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mongodb-client-encryption/-/mongodb-client-encryption-2.5.0.tgz", + "integrity": "sha512-et7DSQDhkbioK/G3FYtjML34ylLHmapM2665k7MMWCxSiXBNGovp8wSV4dRvJzXzKMfGvc/A4bJ7EcPSjxLCwg==", "devOptional": true, "hasInstallScript": true, "dependencies": { @@ -16602,112 +16937,13 @@ "node": ">=12.9.0" }, "peerDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", "mongodb": ">=3.4.0" - } - }, - "node_modules/mongodb-client-encryption/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "devOptional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mongodb-client-encryption/node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mongodb-client-encryption/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mongodb-client-encryption/node_modules/node-abi": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", - "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", - "devOptional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb-client-encryption/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "devOptional": true - }, - "node_modules/mongodb-client-encryption/node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "devOptional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb-client-encryption/node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" } }, "node_modules/mongodb-cloud-info": { @@ -16935,26 +17171,26 @@ } }, "node_modules/mongodb-connection-model": { - "version": "22.1.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-model/-/mongodb-connection-model-22.1.1.tgz", - "integrity": "sha512-JLPxOaosOAdamcyftvcYAXjqMsHYBIyxG6hHYyKPbhMzwJpKUWNvlpc9wQE4k6iru6tjsVm94mynb/Hh5Ny+VA==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-model/-/mongodb-connection-model-22.2.1.tgz", + "integrity": "sha512-CGJ8zFNTfP2EOpoV36MHl767dkMDt4o+HIsxGWtUi7BSSieAJF0t4EE8fleInfJLQueD/Qaiq4zAGgwBjl+lgg==", "dependencies": { - "@mongodb-js/compass-utils": "^0.1.1", - "@mongodb-js/ssh-tunnel": "^2.0.1", + "@mongodb-js/compass-utils": "^0.2.1", + "@mongodb-js/ssh-tunnel": "^2.0.2", "ampersand-model": "^8.0.1", "ampersand-rest-collection": "^6.0.0", "debug": "^4.2.0", "lodash": "^4.17.15", - "mongodb-connection-string-url": "^2.5.3", + "mongodb-connection-string-url": "^2.6.0", "mongodb3": "npm:mongodb@^3.6.3", "os-dns-native": "^1.2.0", "raf": "^3.4.1", "resolve-mongodb-srv": "^1.1.2", "ssh2": "^0.8.7", - "storage-mixin": "^5.1.0" + "storage-mixin": "^5.1.1" }, "peerDependencies": { - "mongodb": "^4.10.0" + "mongodb": "^4.13.0" } }, "node_modules/mongodb-connection-string-url": { @@ -17021,29 +17257,29 @@ } }, "node_modules/mongodb-data-service": { - "version": "22.1.1", - "resolved": "https://registry.npmjs.org/mongodb-data-service/-/mongodb-data-service-22.1.1.tgz", - "integrity": "sha512-HKKJi50Tbqm2p86EOswD84D58BjR9DFoXsqNht4+fwbnoUYe95vdzxE76V5/JIHerEIAGNYrZSL3auLDZeEBOA==", + "version": "22.4.1", + "resolved": "https://registry.npmjs.org/mongodb-data-service/-/mongodb-data-service-22.4.1.tgz", + "integrity": "sha512-SBdUe/F9Dan3h5AZMmx0VGFHjU3wprKAMNjOIbzq3YqhFu/5d3gnp58NC8Lq/QjNR+Mvie+QjoGtTjuDcy6Bmg==", "dependencies": { - "@mongodb-js/compass-logging": "^1.1.0", - "@mongodb-js/compass-utils": "^0.1.1", + "@mongodb-js/compass-logging": "^1.1.2", + "@mongodb-js/compass-utils": "^0.2.1", "@mongodb-js/devtools-connect": "^1.4.3", - "@mongodb-js/ssh-tunnel": "^2.0.1", + "@mongodb-js/ssh-tunnel": "^2.0.2", "async": "^3.2.0", "debug": "^4.2.0", "lodash": "^4.17.20", - "mongodb-build-info": "^1.3.0", - "mongodb-connection-model": "^22.1.1", - "mongodb-connection-string-url": "^2.5.3", - "mongodb-index-model": "^4.0.2", + "mongodb-build-info": "^1.5.0", + "mongodb-connection-model": "^22.2.1", + "mongodb-connection-string-url": "^2.6.0", + "mongodb-index-model": "^4.1.1", "mongodb-ns": "^2.4.0", "uuid": "^8.3.2" }, "optionalDependencies": { - "mongodb-client-encryption": "^2.2.1" + "mongodb-client-encryption": "^2.4.0" }, "peerDependencies": { - "mongodb": "^4.10.0" + "mongodb": "^4.13.0" } }, "node_modules/mongodb-data-service/node_modules/async": { @@ -17150,9 +17386,9 @@ } }, "node_modules/mongodb-index-model": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/mongodb-index-model/-/mongodb-index-model-4.0.2.tgz", - "integrity": "sha512-4Anbr7DIeSs9JA2BQIYYWQUFTJsqXWTBsuwiT7OYz8GQw9DraCHXQ2yLlARgLP0Wble4+nYF2Gl+ZnI75ZDI3Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/mongodb-index-model/-/mongodb-index-model-4.1.1.tgz", + "integrity": "sha512-ALVHvkcE/XVnH6KfmOi1iqiOTdHc1HOugbrN+EmJn1tRl5v7qreEv9VrWPUHN8O52na2y5cbpNGhShqUdS0s1g==", "dependencies": { "ampersand-collection": "^2.0.1", "ampersand-model": "^8.0.1", @@ -18054,25 +18290,20 @@ } }, "node_modules/node-abi": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", - "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.32.0.tgz", + "integrity": "sha512-HkwdiLzE/LeuOMIQq/dJq70oNyRc88+wt5CH/RXYseE00LkA/c4PkS6Ti1vE4OHYUiKjkwuxjWq9pItgrz8UJw==", "dependencies": { - "semver": "^5.4.1" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" } }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/node-fetch": { "version": "2.6.1", @@ -18450,6 +18681,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -18872,11 +19104,6 @@ "node-addon-api": "^4.3.0" } }, - "node_modules/os-dns-native/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, "node_modules/os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -19769,21 +19996,20 @@ "dev": true }, "node_modules/prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dependencies": { - "detect-libc": "^1.0.3", + "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", + "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", - "simple-get": "^3.0.3", + "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, @@ -19791,7 +20017,7 @@ "prebuild-install": "bin.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/prelude-ls": { @@ -20085,33 +20311,47 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" + "@types/react": "^16.8 || ^17.0 || ^18.0", + "@types/react-dom": "^16.8 || ^17.0 || ^18.0", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0", + "react-native": ">=0.59", + "redux": "^4" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + }, "react-dom": { "optional": true }, "react-native": { "optional": true + }, + "redux": { + "optional": true } } }, "node_modules/react-redux/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/react-shallow-renderer": { "version": "16.15.0", @@ -20499,6 +20739,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -20628,6 +20874,31 @@ "rimraf": "bin.js" } }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, "node_modules/rst-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", @@ -21008,6 +21279,35 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -21128,11 +21428,25 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "decompress-response": "^4.2.0", + "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } @@ -21694,17 +22008,18 @@ } }, "node_modules/storage-mixin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/storage-mixin/-/storage-mixin-5.1.0.tgz", - "integrity": "sha512-FcHSdOMt2Wj9RzqoTlDSoigQBZoEQ8sPetHz5LT+fzS9bbtPGXevGGskEY6P+bzWu0BbAeL7VxtL4jPCTIH52w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/storage-mixin/-/storage-mixin-5.1.1.tgz", + "integrity": "sha512-gg55rrSpd2+2zoc894+kn8bw8tHdahXqsQKNcZqfR2YPVS+3GWoQVW3hekeFFvqVpqFBkKkELoi/7v5YG9j8mg==", "dependencies": { + "@mongodb-js/compass-logging": "^1.1.2", "ampersand-model": "^8.0.1", "ampersand-rest-collection": "^6.0.0", "ampersand-sync": "^5.1.0", "async": "^3.2.0", "debug": "^4.2.0", - "hadron-ipc": "^3.1.0", - "keytar": "^7.7.0", + "hadron-ipc": "^3.1.1", + "keytar": "^7.9.0", "localforage": "^1.7.3", "lodash": "^4.17.15", "rimraf": "^3.0.0", @@ -22054,6 +22369,18 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23112,6 +23439,14 @@ "node": ">=0.10.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -23655,6 +23990,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "devOptional": true, "dependencies": { "string-width": "^1.0.2 || 2" } @@ -23736,12 +24072,6 @@ "node-forge": "^1.2.1" } }, - "node_modules/win-export-certificate-and-key/node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - }, "node_modules/window-size": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", @@ -25894,10 +26224,132 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@electron/remote": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.8.tgz", - "integrity": "sha512-P10v3+iFCIvEPeYzTWWGwwHmqWnjoh8RYnbtZAb3RlQefy4guagzIwcWtfftABIfm6JJTNQf4WPSKWZOpLmHXw==" + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-2.0.9.tgz", + "integrity": "sha512-LR0W0ID6WAKHaSs0x5LX9aiG+5pFBNAJL6eQAJfGkCuZPUa6nZz+czZLdlTDETG45CgF/0raSvCtYOYUpr6c+A==", + "optional": true }, "@emotion/babel-plugin": { "version": "11.3.0", @@ -26802,9 +27254,9 @@ } }, "@mongodb-js/compass-logging": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/compass-logging/-/compass-logging-1.1.0.tgz", - "integrity": "sha512-Z3VLjv0sOeTqWT6VEuE5PBKm+I8j47vlRvFETFYqChV8GHeWiPtt9uVQOHGRd/6LpZ+zEuTUgYySoti/l29s7g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/compass-logging/-/compass-logging-1.1.2.tgz", + "integrity": "sha512-NYa90MYVSjWZ+wDcx2OmeIJptWJFmMMXHOkfIjZKm8Uw5muKElInyxEbXAoCR/QAL10lKc51C6rCV7TqTzr1SA==", "requires": { "debug": "^4.2.0", "is-electron-renderer": "^2.0.1", @@ -26812,11 +27264,11 @@ } }, "@mongodb-js/compass-utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/compass-utils/-/compass-utils-0.1.1.tgz", - "integrity": "sha512-kodwgUzdQl1nfI1eJ1lIJB00d2Y/NORYz3M/b2cV2uOlITfMw1GBcmp3jMB6nPSSXz0cdtF+VlWjj9H3W5hRuA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/compass-utils/-/compass-utils-0.2.1.tgz", + "integrity": "sha512-bNKRZ/TfJ48ctRv8M4LMX3PatKhvih6sl23gpay9y+E5JhntPPTlUzlacRbpnWfGOUR8bEl5xwe+Sno5gTuQrw==", "requires": { - "@electron/remote": "^2.0.8" + "@electron/remote": "^2.0.9" } }, "@mongodb-js/devtools-connect": { @@ -26841,9 +27293,9 @@ "dev": true }, "@mongodb-js/ssh-tunnel": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/ssh-tunnel/-/ssh-tunnel-2.0.1.tgz", - "integrity": "sha512-SJyZo3/Bt6QJjeKFkoPbHD4QVZqUO1GVipHCZWGJsO8lJY4DibpIq/3Lpu8KZt2X0lnxDVLhdD0HlKcohfsM+w==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/ssh-tunnel/-/ssh-tunnel-2.0.2.tgz", + "integrity": "sha512-EfcYYpVi69qPknmS6hJSLvG2wv9kbMNKZWtgrF/ZBL1kclkgSd/A0Tf3kst1CMgASP4ZK0GvQkM2nwx1DmQnPQ==", "requires": { "debug": "^4.2.0", "socksv5": "0.0.6", @@ -27349,6 +27801,15 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -27422,6 +27883,18 @@ "@babel/types": "^7.3.0" } }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -27528,6 +28001,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -27640,6 +28119,15 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -27710,15 +28198,13 @@ "@types/react": "^17" } }, - "@types/react-redux": { - "version": "7.1.20", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.20.tgz", - "integrity": "sha512-q42es4c8iIeTgcnB+yJgRTTzftv3eYYvCZOh1Ckn2eX/3o5TdsQYKUWpLoLuGlcY/p+VAhV9IOEZJcWk/vfkXw==", + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "@types/node": "*" } }, "@types/scheduler": { @@ -27760,6 +28246,11 @@ "integrity": "sha512-NtJmi+XbYocrLb5Au4Q64srX4FlCPDvrSF/OnK3H0QJwrw40tIUoQPDoUHnZ5wpAB2KThtVyeS+kOEQyZabORg==", "dev": true }, + "@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "@types/uuid": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", @@ -27792,6 +28283,16 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@typescript-eslint/eslint-plugin": { "version": "5.38.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", @@ -28546,7 +29047,8 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true }, "archive-type": { "version": "4.0.0", @@ -28569,6 +29071,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "devOptional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -28577,12 +29080,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "devOptional": true }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "devOptional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -28597,6 +29102,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "devOptional": true, "requires": { "safe-buffer": "~5.1.0" } @@ -29119,6 +29625,13 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, "boom": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", @@ -29301,6 +29814,12 @@ "unset-value": "^1.0.0" } }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, "cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", @@ -30218,7 +30737,8 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true }, "consolidate": { "version": "0.16.0", @@ -30529,11 +31049,11 @@ } }, "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "requires": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" } }, "decompress-tar": { @@ -30729,6 +31249,12 @@ } } }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -30795,7 +31321,8 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "devOptional": true }, "denque": { "version": "1.5.0", @@ -30978,9 +31505,9 @@ "dev": true }, "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" }, "detect-newline": { "version": "3.1.0", @@ -30988,6 +31515,13 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -31266,6 +31800,25 @@ } } }, + "electron": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-23.0.0.tgz", + "integrity": "sha512-S6hVtTAjauMiiWP9sBVR5RpcUC464cNZ06I2EMUjeZBq+KooS6tLmNsfw0zLpAXDp1qosjlBP3v71NTZ3gd9iA==", + "dev": true, + "requires": { + "@electron/get": "^2.0.0", + "@types/node": "^16.11.26", + "extract-zip": "^2.0.1" + }, + "dependencies": { + "@types/node": { + "version": "16.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz", + "integrity": "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==", + "dev": true + } + } + }, "electron-to-chromium": { "version": "1.4.73", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz", @@ -31313,6 +31866,12 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, "envinfo": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", @@ -31446,6 +32005,13 @@ "next-tick": "~1.0.0" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", @@ -32703,6 +33269,29 @@ "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==", "dev": true }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -33066,6 +33655,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -33237,11 +33827,36 @@ "process": "^0.11.10" } }, + "global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -33343,9 +33958,9 @@ "optional": true }, "hadron-ipc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hadron-ipc/-/hadron-ipc-3.1.0.tgz", - "integrity": "sha512-PTtZ5cXFpTTwlcPKkBhLR/tmkqvjJgEoGdV/IbLMIxNUpcOV0aiGP4YLxWVrIdwmmcgz8XzdMv2NvjahS4KqNg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hadron-ipc/-/hadron-ipc-3.1.1.tgz", + "integrity": "sha512-7mwPThMsHWSOoZkJnFW2tsGxyzL8DnJQA2sKH1C4Swj0uCWWl22wpnbCu/yWovK7juw58Bt1ezmRxP/+E2IFpA==", "requires": { "debug": "^4.2.0", "is-electron-renderer": "^2.0.1", @@ -33411,7 +34026,8 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "devOptional": true }, "has-value": { "version": "1.0.0", @@ -33600,6 +34216,24 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "dependencies": { + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + } + } + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -36488,42 +37122,6 @@ "prebuild-install": "7.0.1" }, "dependencies": { - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "optional": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "optional": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "optional": true - }, - "node-abi": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.8.0.tgz", - "integrity": "sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==", - "optional": true, - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - }, "prebuild-install": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.0.1.tgz", @@ -36544,17 +37142,6 @@ "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" } - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "optional": true, - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } } } }, @@ -36564,12 +37151,12 @@ "integrity": "sha1-XqKa/CUppCWThDfWlVtxTOapeR8=" }, "keytar": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.7.0.tgz", - "integrity": "sha512-YEY9HWqThQc5q5xbXbRwsZTh2PJ36OSYRjSv3NN2xf5s5dpLTjEZnC2YikR29OaVybf9nQ0dJ/80i40RS97t/A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "requires": { - "node-addon-api": "^3.0.0", - "prebuild-install": "^6.0.0" + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" } }, "keyv": { @@ -37008,14 +37595,6 @@ "requires": { "bindings": "^1.5.0", "node-addon-api": "^4.3.0" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - } } }, "magic-string": { @@ -37112,6 +37691,25 @@ } } }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "optional": true + } + } + }, "md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -37359,9 +37957,9 @@ "dev": true }, "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" }, "min-document": { "version": "2.19.0", @@ -37807,84 +38405,15 @@ } }, "mongodb-client-encryption": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/mongodb-client-encryption/-/mongodb-client-encryption-2.3.0.tgz", - "integrity": "sha512-cXuRYBmCj43rLeqP8gHa+CrloFe7TUCd/f16VduFGQzAN9ef5buMGIfSr2CEGBul/EjTCLlioctSSDmHAmpTqA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mongodb-client-encryption/-/mongodb-client-encryption-2.5.0.tgz", + "integrity": "sha512-et7DSQDhkbioK/G3FYtjML34ylLHmapM2665k7MMWCxSiXBNGovp8wSV4dRvJzXzKMfGvc/A4bJ7EcPSjxLCwg==", "devOptional": true, "requires": { "bindings": "^1.5.0", "node-addon-api": "^4.3.0", "prebuild-install": "^7.1.1", "socks": "^2.6.1" - }, - "dependencies": { - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "devOptional": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "devOptional": true - }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "devOptional": true - }, - "node-abi": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.24.0.tgz", - "integrity": "sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==", - "devOptional": true, - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "devOptional": true - }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "devOptional": true, - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "devOptional": true, - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } } }, "mongodb-cloud-info": { @@ -38072,23 +38601,23 @@ } }, "mongodb-connection-model": { - "version": "22.1.1", - "resolved": "https://registry.npmjs.org/mongodb-connection-model/-/mongodb-connection-model-22.1.1.tgz", - "integrity": "sha512-JLPxOaosOAdamcyftvcYAXjqMsHYBIyxG6hHYyKPbhMzwJpKUWNvlpc9wQE4k6iru6tjsVm94mynb/Hh5Ny+VA==", + "version": "22.2.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-model/-/mongodb-connection-model-22.2.1.tgz", + "integrity": "sha512-CGJ8zFNTfP2EOpoV36MHl767dkMDt4o+HIsxGWtUi7BSSieAJF0t4EE8fleInfJLQueD/Qaiq4zAGgwBjl+lgg==", "requires": { - "@mongodb-js/compass-utils": "^0.1.1", - "@mongodb-js/ssh-tunnel": "^2.0.1", + "@mongodb-js/compass-utils": "^0.2.1", + "@mongodb-js/ssh-tunnel": "^2.0.2", "ampersand-model": "^8.0.1", "ampersand-rest-collection": "^6.0.0", "debug": "^4.2.0", "lodash": "^4.17.15", - "mongodb-connection-string-url": "^2.5.3", + "mongodb-connection-string-url": "^2.6.0", "mongodb3": "npm:mongodb@^3.6.3", "os-dns-native": "^1.2.0", "raf": "^3.4.1", "resolve-mongodb-srv": "^1.1.2", "ssh2": "^0.8.7", - "storage-mixin": "^5.1.0" + "storage-mixin": "^5.1.1" } }, "mongodb-connection-string-url": { @@ -38145,22 +38674,22 @@ } }, "mongodb-data-service": { - "version": "22.1.1", - "resolved": "https://registry.npmjs.org/mongodb-data-service/-/mongodb-data-service-22.1.1.tgz", - "integrity": "sha512-HKKJi50Tbqm2p86EOswD84D58BjR9DFoXsqNht4+fwbnoUYe95vdzxE76V5/JIHerEIAGNYrZSL3auLDZeEBOA==", + "version": "22.4.1", + "resolved": "https://registry.npmjs.org/mongodb-data-service/-/mongodb-data-service-22.4.1.tgz", + "integrity": "sha512-SBdUe/F9Dan3h5AZMmx0VGFHjU3wprKAMNjOIbzq3YqhFu/5d3gnp58NC8Lq/QjNR+Mvie+QjoGtTjuDcy6Bmg==", "requires": { - "@mongodb-js/compass-logging": "^1.1.0", - "@mongodb-js/compass-utils": "^0.1.1", + "@mongodb-js/compass-logging": "^1.1.2", + "@mongodb-js/compass-utils": "^0.2.1", "@mongodb-js/devtools-connect": "^1.4.3", - "@mongodb-js/ssh-tunnel": "^2.0.1", + "@mongodb-js/ssh-tunnel": "^2.0.2", "async": "^3.2.0", "debug": "^4.2.0", "lodash": "^4.17.20", - "mongodb-build-info": "^1.3.0", - "mongodb-client-encryption": "^2.2.1", - "mongodb-connection-model": "^22.1.1", - "mongodb-connection-string-url": "^2.5.3", - "mongodb-index-model": "^4.0.2", + "mongodb-build-info": "^1.5.0", + "mongodb-client-encryption": "^2.4.0", + "mongodb-connection-model": "^22.2.1", + "mongodb-connection-string-url": "^2.6.0", + "mongodb-index-model": "^4.1.1", "mongodb-ns": "^2.4.0", "uuid": "^8.3.2" }, @@ -38260,9 +38789,9 @@ } }, "mongodb-index-model": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/mongodb-index-model/-/mongodb-index-model-4.0.2.tgz", - "integrity": "sha512-4Anbr7DIeSs9JA2BQIYYWQUFTJsqXWTBsuwiT7OYz8GQw9DraCHXQ2yLlARgLP0Wble4+nYF2Gl+ZnI75ZDI3Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/mongodb-index-model/-/mongodb-index-model-4.1.1.tgz", + "integrity": "sha512-ALVHvkcE/XVnH6KfmOi1iqiOTdHc1HOugbrN+EmJn1tRl5v7qreEv9VrWPUHN8O52na2y5cbpNGhShqUdS0s1g==", "requires": { "ampersand-collection": "^2.0.1", "ampersand-model": "^8.0.1", @@ -38983,24 +39512,17 @@ } }, "node-abi": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", - "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.32.0.tgz", + "integrity": "sha512-HkwdiLzE/LeuOMIQq/dJq70oNyRc88+wt5CH/RXYseE00LkA/c4PkS6Ti1vE4OHYUiKjkwuxjWq9pItgrz8UJw==", "requires": { - "semver": "^5.4.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "semver": "^7.3.5" } }, "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node-fetch": { "version": "2.6.1", @@ -39301,6 +39823,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -39620,13 +40143,6 @@ "debug": "^4.3.3", "ipv6-normalize": "^1.0.1", "node-addon-api": "^4.3.0" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - } } }, "os-locale": { @@ -40320,21 +40836,20 @@ } }, "prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "requires": { - "detect-libc": "^1.0.3", + "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", + "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", - "simple-get": "^3.0.3", + "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" } @@ -40569,22 +41084,22 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-redux": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.8.tgz", - "integrity": "sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", "requires": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", + "@babel/runtime": "^7.12.1", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/use-sync-external-store": "^0.0.3", "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "react-is": "^18.0.0", + "use-sync-external-store": "^1.0.0" }, "dependencies": { "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" } } }, @@ -40904,6 +41419,12 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -41003,6 +41524,30 @@ "glob": "^7.1.3" } }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + } + } + }, "rst-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", @@ -41310,6 +41855,25 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + } + } + }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -41417,11 +41981,11 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "requires": { - "decompress-response": "^4.2.0", + "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } @@ -41877,17 +42441,18 @@ "dev": true }, "storage-mixin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/storage-mixin/-/storage-mixin-5.1.0.tgz", - "integrity": "sha512-FcHSdOMt2Wj9RzqoTlDSoigQBZoEQ8sPetHz5LT+fzS9bbtPGXevGGskEY6P+bzWu0BbAeL7VxtL4jPCTIH52w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/storage-mixin/-/storage-mixin-5.1.1.tgz", + "integrity": "sha512-gg55rrSpd2+2zoc894+kn8bw8tHdahXqsQKNcZqfR2YPVS+3GWoQVW3hekeFFvqVpqFBkKkELoi/7v5YG9j8mg==", "requires": { + "@mongodb-js/compass-logging": "^1.1.2", "ampersand-model": "^8.0.1", "ampersand-rest-collection": "^6.0.0", "ampersand-sync": "^5.1.0", "async": "^3.2.0", "debug": "^4.2.0", - "hadron-ipc": "^3.1.0", - "keytar": "^7.7.0", + "hadron-ipc": "^3.1.1", + "keytar": "^7.9.0", "localforage": "^1.7.3", "lodash": "^4.17.15", "rimraf": "^3.0.0", @@ -42172,6 +42737,15 @@ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "requires": { + "debug": "^4.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -42992,6 +43566,11 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -43408,6 +43987,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "devOptional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -43470,14 +44050,6 @@ "bindings": "^1.5.0", "node-addon-api": "^4.3.0", "node-forge": "^1.2.1" - }, - "dependencies": { - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "optional": true - } } }, "window-size": { diff --git a/package.json b/package.json index 1eccb369f..7fe14d986 100644 --- a/package.json +++ b/package.json @@ -982,7 +982,6 @@ "@iconify-icons/codicon": "^1.2.16", "@iconify/react": "^1.1.4", "@leafygreen-ui/logo": "^6.1.3", - "@leafygreen-ui/palette": "^3.4.2", "@leafygreen-ui/toggle": "^7.0.5", "@mongodb-js/mongodb-constants": "^0.1.1", "@mongosh/browser-runtime-electron": "^1.6.2", @@ -1000,14 +999,14 @@ "mongodb-build-info": "^1.5.0", "mongodb-cloud-info": "^1.1.3", "mongodb-connection-string-url": "^2.5.3", - "mongodb-data-service": "^22.1.1", + "mongodb-data-service": "^22.4.1", "mongodb-ns": "^2.4.0", "mongodb-query-parser": "^2.4.6", "mongodb-schema": "^9.0.0", "numeral": "^2.0.6", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-redux": "^7.2.8", + "react-redux": "^8.0.5", "redux": "^4.2.0", "ts-log": "^2.2.5", "uuid": "^8.3.2", @@ -1051,6 +1050,7 @@ "css-loader": "^3.6.0", "depcheck": "^1.4.3", "download": "^8.0.0", + "electron": "^23.0.0", "enzyme": "^3.11.0", "eslint": "^8.23.1", "eslint-config-mongodb-js": "^5.0.3", @@ -1067,7 +1067,7 @@ "mocha": "^8.4.0", "mocha-junit-reporter": "^2.0.2", "mocha-multi": "^1.1.6", - "mongodb-client-encryption": "^2.2.1", + "mongodb-client-encryption": "^2.4.0", "mongodb-runner": "^4.9.0", "node-loader": "^0.6.0", "npm-run-all": "^4.1.5", diff --git a/src/editors/collectionDocumentsProvider.ts b/src/editors/collectionDocumentsProvider.ts index 59dce9a1d..dc095e172 100644 --- a/src/editors/collectionDocumentsProvider.ts +++ b/src/editors/collectionDocumentsProvider.ts @@ -1,5 +1,4 @@ import * as vscode from 'vscode'; -import * as util from 'util'; import { URLSearchParams } from 'url'; import CollectionDocumentsOperationsStore from './collectionDocumentsOperationsStore'; @@ -85,8 +84,7 @@ export default class CollectionViewProvider } try { - const find = util.promisify(dataservice.find.bind(dataservice)); - const documents = await find( + const documents = await dataservice.find( namespace, {}, // No filter. { limit: documentLimit } diff --git a/src/editors/mongoDBDocumentService.ts b/src/editors/mongoDBDocumentService.ts index ddcb41f14..3567ff9e3 100644 --- a/src/editors/mongoDBDocumentService.ts +++ b/src/editors/mongoDBDocumentService.ts @@ -133,8 +133,7 @@ export default class MongoDBDocumentService { this._statusView.showMessage('Fetching document...'); try { - const find = util.promisify(dataservice.find.bind(dataservice)); - const documents = await find( + const documents = await dataservice.find( namespace, { _id: documentId }, { limit: 1 } diff --git a/src/explorer/collectionTreeItem.ts b/src/explorer/collectionTreeItem.ts index 88646f181..e88fce3ae 100644 --- a/src/explorer/collectionTreeItem.ts +++ b/src/explorer/collectionTreeItem.ts @@ -1,6 +1,7 @@ import * as util from 'util'; import * as vscode from 'vscode'; import path from 'path'; +import type { DataService } from 'mongodb-data-service'; import DocumentListTreeItem, { CollectionTypes, @@ -72,7 +73,7 @@ export default class CollectionTreeItem databaseName: string; namespace: string; - private _dataService: any; + private _dataService: DataService; private _type: CollectionTypes; documentCount: number | null = null; @@ -320,16 +321,13 @@ export default class CollectionTreeItem try { // We fetch the document when we expand in order to show // the document count in the document list tree item `description`. - const estimatedCount = util.promisify( - this._dataService.estimatedCount.bind(this._dataService) - ); - - this.documentCount = await estimatedCount( + this.documentCount = await this._dataService.estimatedCount( this.namespace, - {} // No options. + {}, // No options. + undefined ); - return this.documentCount as number; + return this.documentCount; } catch (err) { this.documentCount = null; return 0; diff --git a/src/explorer/documentListTreeItem.ts b/src/explorer/documentListTreeItem.ts index 518bdfa1d..4c7d8e06a 100644 --- a/src/explorer/documentListTreeItem.ts +++ b/src/explorer/documentListTreeItem.ts @@ -1,4 +1,3 @@ -import * as util from 'util'; import * as vscode from 'vscode'; import numeral from 'numeral'; @@ -202,10 +201,7 @@ export default class DocumentListTreeItem let documents; try { - const find = util.promisify( - this._dataService.find.bind(this._dataService) - ); - documents = await find( + documents = await this._dataService.find( this.namespace, {}, // No filter. { limit: this._maxDocumentsToShow } diff --git a/src/explorer/documentTreeItem.ts b/src/explorer/documentTreeItem.ts index 161a9871d..c8bbf4233 100644 --- a/src/explorer/documentTreeItem.ts +++ b/src/explorer/documentTreeItem.ts @@ -59,8 +59,7 @@ export default class DocumentTreeItem } async getDocumentContents(): Promise { - const find = promisify(this.dataService.find.bind(this.dataService)); - const documents = await find( + const documents = await this.dataService.find( this.namespace, { _id: this.documentId }, { limit: 1 } diff --git a/src/explorer/schemaTreeItem.ts b/src/explorer/schemaTreeItem.ts index 6b4b06d7a..2538bd16a 100644 --- a/src/explorer/schemaTreeItem.ts +++ b/src/explorer/schemaTreeItem.ts @@ -9,6 +9,7 @@ import formatError from '../utils/formatError'; import { getImagesPath } from '../extensionConstants'; import TreeItemParent from './treeItemParentInterface'; import { MAX_DOCUMENTS_VISIBLE } from './documentListTreeItem'; +import { DataService } from 'mongodb-data-service'; const log = createLogger('tree view document list'); @@ -52,7 +53,7 @@ export default class SchemaTreeItem collectionName: string; databaseName: string; - private _dataService: any; + private _dataService: DataService; isExpanded: boolean; @@ -62,7 +63,7 @@ export default class SchemaTreeItem constructor( collectionName: string, databaseName: string, - dataService: any, + dataService: DataService, isExpanded: boolean, hasClickedShowMoreFields: boolean, hasMoreFieldsToShow: boolean, @@ -100,10 +101,7 @@ export default class SchemaTreeItem const namespace = `${this.databaseName}.${this.collectionName}`; let documents; try { - const find = util.promisify( - this._dataService.find.bind(this._dataService) - ); - documents = await find( + documents = await this._dataService.find( namespace, {}, // No filter. { limit: MAX_DOCUMENTS_VISIBLE } diff --git a/src/test/suite/editors/activeDBCodeLensProvider.test.ts b/src/test/suite/editors/activeDBCodeLensProvider.test.ts index 725149cb6..211285601 100644 --- a/src/test/suite/editors/activeDBCodeLensProvider.test.ts +++ b/src/test/suite/editors/activeDBCodeLensProvider.test.ts @@ -1,6 +1,5 @@ import * as vscode from 'vscode'; import { beforeEach, afterEach } from 'mocha'; -import { DataService } from 'mongodb-data-service'; import chai from 'chai'; import sinon from 'sinon'; @@ -63,9 +62,9 @@ suite('Active DB CodeLens Provider Test Suite', () => { const testCodeLensProvider = new ActiveDBCodeLensProvider( testConnectionController ); - const mockActiveDataService = { - find: (namespace, filter, options, callback): void => { - return callback(null, [{ field: 'Text message' }]); + const mockActiveDataService: any = { + find: () => { + return Promise.resolve([{ field: 'Text message' }]); }, instance: () => Promise.resolve({ @@ -74,7 +73,7 @@ suite('Active DB CodeLens Provider Test Suite', () => { genuineMongoDB: {}, host: {}, }), - } as DataService; + }; testConnectionController.setActiveDataService(mockActiveDataService); diff --git a/src/test/suite/editors/collectionDocumentsProvider.test.ts b/src/test/suite/editors/collectionDocumentsProvider.test.ts index ed845c685..dd1926e1b 100644 --- a/src/test/suite/editors/collectionDocumentsProvider.test.ts +++ b/src/test/suite/editors/collectionDocumentsProvider.test.ts @@ -1,7 +1,6 @@ import * as vscode from 'vscode'; import { afterEach } from 'mocha'; import assert from 'assert'; -import { DataService } from 'mongodb-data-service'; import sinon from 'sinon'; import { DocumentSource } from '../../../documentSource'; @@ -44,8 +43,8 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent parses uri and return documents in the form of a string from a find call', async () => { - const mockActiveDataService = { - find: (namespace, filter, options, callback): void => { + const mockActiveDataService: any = { + find: (namespace, filter, options) => { assert( namespace === 'my-favorite-fruit-is.pineapple', `Expected find namespace to be 'my-favorite-fruit-is.pineapple' found ${namespace}` @@ -56,9 +55,9 @@ suite('Collection Documents Provider Test Suite', () => { `Expected find limit to be 10, found ${options.limit}` ); - return callback(null, [{ field: 'Declaration of Independence' }]); + return Promise.resolve([{ field: 'Declaration of Independence' }]); }, - } as DataService; + }; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), @@ -105,11 +104,11 @@ suite('Collection Documents Provider Test Suite', () => { }, ]; - const mockActiveDataService = { - find: (namespace, filter, options, callback): void => { - return callback(null, mockDocuments); + const mockActiveDataService: any = { + find: () => { + return Promise.resolve(mockDocuments); }, - } as DataService; + }; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, @@ -145,11 +144,11 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent sets hasMoreDocumentsToShow to false when there arent more documents', async () => { - const mockActiveDataService = { - find: (namespace, filter, options, callback): void => { - return callback(null, [{ field: 'Apollo' }, { field: 'Gemini ' }]); + const mockActiveDataService: any = { + find: () => { + return Promise.resolve([{ field: 'Apollo' }, { field: 'Gemini ' }]); }, - } as DataService; + }; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, @@ -193,7 +192,7 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent shows a status bar item while it is running then hide it', async () => { - const mockActiveDataService = { find: {} } as DataService; + const mockActiveDataService: any = { find: {} }; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, @@ -227,17 +226,12 @@ suite('Collection Documents Provider Test Suite', () => { const mockHideMessage = sinon.fake(); sinon.replace(testStatusView, 'hideMessage', mockHideMessage); - mockActiveDataService.find = ( - namespace, - filter, - options, - callback - ): void => { + mockActiveDataService.find = () => { assert(mockShowMessage.called); assert(!mockHideMessage.called); assert(mockShowMessage.firstCall.args[0] === 'Fetching documents...'); - return callback(null, [{ field: 'aaaaaaaaaaaaaaaaa' }]); + return Promise.resolve([{ field: 'aaaaaaaaaaaaaaaaa' }]); }; await testCollectionViewProvider.provideTextDocumentContent(uri); @@ -269,13 +263,8 @@ suite('Collection Documents Provider Test Suite', () => { { _id: '5ea8745ee4811fafe8b65ecb', koko: 'nothing5' }, ]; const mockGetActiveDataService = sinon.fake.returns({ - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | null, result: object) => void - ) => { - return callback(null, documents); + find: () => { + return Promise.resolve(documents); }, }); sinon.replace( @@ -476,13 +465,8 @@ suite('Collection Documents Provider Test Suite', () => { { _id: '5ea8745ee4811fafe8b65ecb', location: 'alexanderplatz' }, ]; const mockGetActiveDataService = sinon.fake.returns({ - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | null, result: object) => void - ) => { - return callback(null, documents); + find: () => { + return Promise.resolve(documents); }, }); sinon.replace( diff --git a/src/test/suite/editors/mongoDBDocumentService.test.ts b/src/test/suite/editors/mongoDBDocumentService.test.ts index b7823a1a2..4d61a4df8 100644 --- a/src/test/suite/editors/mongoDBDocumentService.test.ts +++ b/src/test/suite/editors/mongoDBDocumentService.test.ts @@ -103,13 +103,8 @@ suite('MongoDB Document Service Test Suite', () => { const source = DocumentSource.DOCUMENT_SOURCE_PLAYGROUND; const mockGetActiveDataService = sinon.fake.returns({ - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | null, result: object) => void - ) => { - return callback(null, [{ _id: '123' }]); + find: () => { + return Promise.resolve([{ _id: '123' }]); }, }); sinon.replace( diff --git a/src/test/suite/editors/playgroundResultProvider.test.ts b/src/test/suite/editors/playgroundResultProvider.test.ts index 2ddc2615f..d04cb1c7a 100644 --- a/src/test/suite/editors/playgroundResultProvider.test.ts +++ b/src/test/suite/editors/playgroundResultProvider.test.ts @@ -381,13 +381,8 @@ suite('Playground Result Provider Test Suite', () => { { _id: '5ea8745ee4811fafe8b65ecb', koko: 'nothing5' }, ]; const mockGetActiveDataService: any = sinon.fake.returns({ - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | null, result: object) => void - ) => { - return callback(null, documents); + find: () => { + return Promise.resolve(documents); }, }); sinon.replace( diff --git a/src/test/suite/explorer/collectionTreeItem.test.ts b/src/test/suite/explorer/collectionTreeItem.test.ts index cbdf7573a..1fc1f9702 100644 --- a/src/test/suite/explorer/collectionTreeItem.test.ts +++ b/src/test/suite/explorer/collectionTreeItem.test.ts @@ -78,7 +78,7 @@ suite('CollectionTreeItem Test Suite', () => { type: CollectionTypes.collection, }, 'mock_db_name', - { estimatedCount: (ns, options, cb): void => cb(null, 5000) }, + { estimatedCount: () => Promise.resolve(5000) }, false, false, null diff --git a/src/test/suite/explorer/documentListTreeItem.test.ts b/src/test/suite/explorer/documentListTreeItem.test.ts index a1045948d..5cb8c7143 100644 --- a/src/test/suite/explorer/documentListTreeItem.test.ts +++ b/src/test/suite/explorer/documentListTreeItem.test.ts @@ -14,10 +14,10 @@ import DocumentListTreeItem, { import { DataServiceStub, mockDocuments } from '../stubs'; suite('DocumentListTreeItem Test Suite', () => { - let dataServiceMock: DataService; + let dataServiceMock: any; before(() => { - dataServiceMock = new DataServiceStub() as any as DataService; + dataServiceMock = new DataServiceStub(); }); test('its context value should be in the package json', () => { diff --git a/src/test/suite/explorer/schemaTreeItem.test.ts b/src/test/suite/explorer/schemaTreeItem.test.ts index 82ba2c0a7..b9f0b82dd 100644 --- a/src/test/suite/explorer/schemaTreeItem.test.ts +++ b/src/test/suite/explorer/schemaTreeItem.test.ts @@ -32,7 +32,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'cheesePizza', TEST_DB_NAME, - {}, + {} as any, false, false, false, @@ -56,7 +56,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - {}, + {} as any, false, false, false, @@ -90,10 +90,10 @@ suite('SchemaTreeItem Test Suite', function () { 'peanutButter', TEST_DB_NAME, { - find: (ns, filter, options, callback): void => { - callback(null, []); + find: () => { + return Promise.resolve([]); }, - }, + } as any, true, false, false, @@ -129,10 +129,10 @@ suite('SchemaTreeItem Test Suite', function () { 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, { - find: (ns, filter, options, callback): void => { - callback(null, [mockDocWithTwentyFields]); + find: () => { + return Promise.resolve([mockDocWithTwentyFields]); }, - }, + } as any, true, false, false, @@ -165,10 +165,10 @@ suite('SchemaTreeItem Test Suite', function () { 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, { - find: (ns, filter, options, callback): void => { - callback(null, [mockDocWithThirtyFields]); + find: () => { + return Promise.resolve([mockDocWithThirtyFields]); }, - }, + } as any, true, false, false, @@ -192,10 +192,10 @@ suite('SchemaTreeItem Test Suite', function () { 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, { - find: (ns, filter, options, callback): void => { - callback(null, 'invalid schema to parse'); + find: () => { + return Promise.resolve('invalid schema to parse'); }, - }, + } as any, true, false, false, @@ -356,7 +356,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - {}, + {} as any, false, false, false, diff --git a/src/test/suite/mdbExtensionController.test.ts b/src/test/suite/mdbExtensionController.test.ts index 170757a10..6473b4170 100644 --- a/src/test/suite/mdbExtensionController.test.ts +++ b/src/test/suite/mdbExtensionController.test.ts @@ -412,7 +412,7 @@ suite('MDBExtensionController Test Suite', function () { type: CollectionTypes.collection, }, 'airZebra', - { estimatedCount: (ns, opts, cb): void => cb(null, count) }, + { estimatedCount: () => Promise.resolve(count) }, false, false, null @@ -459,7 +459,7 @@ suite('MDBExtensionController Test Suite', function () { const mockTreeItem = new SchemaTreeItem( 'zebraWearwolf', 'giraffeVampire', - {}, + {} as any, false, false, false, @@ -1116,13 +1116,8 @@ suite('MDBExtensionController Test Suite', function () { ); const mockGetActiveDataService = sinon.fake.returns({ - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | undefined, documents: object[]) => void - ) => { - callback(undefined, [mockDocument]); + find: () => { + return Promise.resolve([mockDocument]); }, findOneAndReplace: ( namespace: string, @@ -1146,7 +1141,7 @@ suite('MDBExtensionController Test Suite', function () { mockDocument, 'waffle.house', 0, - {} as any as DataService, + {} as any, () => Promise.resolve() ); @@ -1202,7 +1197,7 @@ suite('MDBExtensionController Test Suite', function () { mockDocument, 'waffle.house', 0, - {} as any as DataService, + {} as any, () => Promise.resolve() ); @@ -1557,17 +1552,12 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; - const mockDataService: DataService = { - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | undefined, documents: object[]) => void - ) => { + const mockDataService: any = { + find: (namespace: string) => { namespaceUsed = namespace; - callback(undefined, [mockDocument]); + return Promise.resolve([mockDocument]); }, - } as any; + }; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1609,17 +1599,12 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; - const mockDataService: DataService = { - find: ( - namespace: string, - filter: object, - options: object, - callback: (error: Error | undefined, documents: object[]) => void - ) => { + const mockDataService: any = { + find: (namespace: string) => { namespaceUsed = namespace; - callback(undefined, [mockDocument]); + return Promise.resolve([mockDocument]); }, - } as any; + }; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1670,7 +1655,7 @@ suite('MDBExtensionController Test Suite', function () { let calledDelete = false; - const mockDataService: DataService = { + const mockDataService: any = { deleteOne: ( namespace: string, _id: any, @@ -1680,7 +1665,7 @@ suite('MDBExtensionController Test Suite', function () { calledDelete = true; callback(undefined, [mockDocument]); }, - } as any; + }; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1712,7 +1697,7 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; let _idUsed; - const mockDataService: DataService = { + const mockDataService: any = { deleteOne: ( namespace: string, query: any, @@ -1728,7 +1713,7 @@ suite('MDBExtensionController Test Suite', function () { deletedCount: 1, }); }, - } as any; + }; const documentTreeItem = new DocumentTreeItem( mockDocument, diff --git a/src/test/suite/stubs.ts b/src/test/suite/stubs.ts index 0caa68137..b04aa784c 100644 --- a/src/test/suite/stubs.ts +++ b/src/test/suite/stubs.ts @@ -151,12 +151,12 @@ class DataServiceStub { return Promise.resolve(mockDatabases[databaseName].collections); } - find(namespace: string, filter: any, options: any, callback: any): void { - callback(null, mockDocuments.slice(0, options.limit)); + find(namespace: string, filter: any, options: any) { + return Promise.resolve(mockDocuments.slice(0, options.limit)); } - estimatedCount(namespace: string, options: any, callback: any): void { - callback(null, mockDocuments.length); + estimatedCount() { + return Promise.resolve(mockDocuments.length); } } From c16ce5e43bf8aadcec3ae6178b8a839c66eb5c3c Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Tue, 14 Feb 2023 20:40:42 -0500 Subject: [PATCH 3/7] re-add npm list monkey-patch --- .github/workflows/test-and-build.yaml | 2 ++ package.json | 2 +- scripts/no-npm-list-fail.js | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 scripts/no-npm-list-fail.js diff --git a/.github/workflows/test-and-build.yaml b/.github/workflows/test-and-build.yaml index 8a2d4dd48..55a572232 100644 --- a/.github/workflows/test-and-build.yaml +++ b/.github/workflows/test-and-build.yaml @@ -81,6 +81,8 @@ jobs: npx json -I -f package-lock.json -e "this.version='${RELEASE_VERSION}'" - name: Build .vsix + env: + NODE_OPTIONS: "--require ./scripts/no-npm-list-fail.js" run: npx vsce package --githubBranch main shell: bash diff --git a/package.json b/package.json index 7fe14d986..93ab2f99d 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "vscode:prepublish": "npm run clean && npm run compile:keyfile && npm run compile:resources && webpack --mode production", "check": "npm run lint && npm run check-dependencies", "check-dependencies": "depcheck", - "package": "npm list --production --parseable --depth=99999 --loglevel=info || true && vsce package --githubBranch main", + "package": "npm list --production --parseable --depth=99999 --loglevel=info || true && cross-env NODE_OPTIONS=\"--require ./scripts/no-npm-list-fail.js\" vsce package --githubBranch main", "local-install": "npm run package && code --install-extension ./mongodb-vscode-*.vsix", "check-vsix-size": "ts-node ./scripts/check-vsix-size.ts", "release-draft": "node ./scripts/release-draft.js", diff --git a/scripts/no-npm-list-fail.js b/scripts/no-npm-list-fail.js new file mode 100644 index 000000000..b9a480f50 --- /dev/null +++ b/scripts/no-npm-list-fail.js @@ -0,0 +1,16 @@ +'use strict'; +// Monkey-patch child_process so that the `npm list` command run by +// `vsce package` does not fail. +const child_process = require('child_process'); +const origExec = child_process.exec; +child_process.exec = (cmd, options, cb) => { + if ( + cmd === 'npm list --production --parseable --depth=99999 --loglevel=error' + ) { + origExec(cmd, options, (err, stdout, stderr) => { + cb(null, stdout, stderr); + }); + } else { + origExec(cmd, options, cb); + } +}; From 81d1274daf05a175c65e1b7589f642f931139ea9 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Feb 2023 15:08:41 -0500 Subject: [PATCH 4/7] cast to dataservice --- src/test/suite/explorer/documentTreeItem.test.ts | 2 +- src/test/suite/explorer/schemaTreeItem.test.ts | 7 ++++--- src/test/suite/mdbExtensionController.test.ts | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/test/suite/explorer/documentTreeItem.test.ts b/src/test/suite/explorer/documentTreeItem.test.ts index 561adefca..640828450 100644 --- a/src/test/suite/explorer/documentTreeItem.test.ts +++ b/src/test/suite/explorer/documentTreeItem.test.ts @@ -16,7 +16,7 @@ suite('DocumentTreeItem Test Suite', () => { mockDocument, 'namespace', 1, - {} as any, + {} as DataService, () => Promise.resolve() ); diff --git a/src/test/suite/explorer/schemaTreeItem.test.ts b/src/test/suite/explorer/schemaTreeItem.test.ts index b9f0b82dd..1427b490d 100644 --- a/src/test/suite/explorer/schemaTreeItem.test.ts +++ b/src/test/suite/explorer/schemaTreeItem.test.ts @@ -3,6 +3,7 @@ import * as sinon from 'sinon'; import { after, afterEach, before } from 'mocha'; import assert from 'assert'; import { inspect } from 'util'; +import type { DataService } from 'mongodb-data-service'; import { ext } from '../../../extensionConstants'; import { fieldIsExpandable } from '../../../explorer/fieldTreeItem'; @@ -32,7 +33,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'cheesePizza', TEST_DB_NAME, - {} as any, + {} as DataService, false, false, false, @@ -56,7 +57,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - {} as any, + {} as DataService, false, false, false, @@ -356,7 +357,7 @@ suite('SchemaTreeItem Test Suite', function () { const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - {} as any, + {} as DataService, false, false, false, diff --git a/src/test/suite/mdbExtensionController.test.ts b/src/test/suite/mdbExtensionController.test.ts index 6473b4170..bd6d4700e 100644 --- a/src/test/suite/mdbExtensionController.test.ts +++ b/src/test/suite/mdbExtensionController.test.ts @@ -459,7 +459,7 @@ suite('MDBExtensionController Test Suite', function () { const mockTreeItem = new SchemaTreeItem( 'zebraWearwolf', 'giraffeVampire', - {} as any, + {} as DataService, false, false, false, @@ -1141,7 +1141,7 @@ suite('MDBExtensionController Test Suite', function () { mockDocument, 'waffle.house', 0, - {} as any, + {} as DataService, () => Promise.resolve() ); @@ -1197,7 +1197,7 @@ suite('MDBExtensionController Test Suite', function () { mockDocument, 'waffle.house', 0, - {} as any, + {} as DataService, () => Promise.resolve() ); From 066ce1aa729ef1b11f0df87220210ed930336f93 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 15 Feb 2023 16:07:29 -0500 Subject: [PATCH 5/7] remove node workaround for local install package as we have optional dependencies --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93ab2f99d..7fe14d986 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "vscode:prepublish": "npm run clean && npm run compile:keyfile && npm run compile:resources && webpack --mode production", "check": "npm run lint && npm run check-dependencies", "check-dependencies": "depcheck", - "package": "npm list --production --parseable --depth=99999 --loglevel=info || true && cross-env NODE_OPTIONS=\"--require ./scripts/no-npm-list-fail.js\" vsce package --githubBranch main", + "package": "npm list --production --parseable --depth=99999 --loglevel=info || true && vsce package --githubBranch main", "local-install": "npm run package && code --install-extension ./mongodb-vscode-*.vsix", "check-vsix-size": "ts-node ./scripts/check-vsix-size.ts", "release-draft": "node ./scripts/release-draft.js", From a69f1ca232ed3b4cca7ce1220445b903cced35cb Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Tue, 21 Feb 2023 21:03:15 -0500 Subject: [PATCH 6/7] reduce any usage, use data service type more, remove sinon any casts --- .../editors/activeDBCodeLensProvider.test.ts | 28 ++++++---- .../collectionDocumentsProvider.test.ts | 52 ++++++++---------- .../editors/playgroundResultProvider.test.ts | 55 +++++++++++-------- .../suite/explorer/connectionTreeItem.test.ts | 7 ++- .../explorer/documentListTreeItem.test.ts | 6 +- .../suite/explorer/schemaTreeItem.test.ts | 49 ++++++++++------- .../language/languageServerController.test.ts | 3 +- src/test/suite/mdbExtensionController.test.ts | 14 ++--- .../telemetry/connectionTelemetry.test.ts | 36 +++++++----- .../suite/telemetry/telemetryService.test.ts | 40 +++++++------- 10 files changed, 160 insertions(+), 130 deletions(-) diff --git a/src/test/suite/editors/activeDBCodeLensProvider.test.ts b/src/test/suite/editors/activeDBCodeLensProvider.test.ts index 211285601..47a8634ad 100644 --- a/src/test/suite/editors/activeDBCodeLensProvider.test.ts +++ b/src/test/suite/editors/activeDBCodeLensProvider.test.ts @@ -2,6 +2,7 @@ import * as vscode from 'vscode'; import { beforeEach, afterEach } from 'mocha'; import chai from 'chai'; import sinon from 'sinon'; +import { DataServiceImpl } from 'mongodb-data-service'; import ActiveDBCodeLensProvider from '../../../editors/activeConnectionCodeLensProvider'; import ConnectionController from '../../../connectionController'; @@ -9,6 +10,7 @@ import { StatusView } from '../../../views'; import { StorageController } from '../../../storage'; import { TestExtensionContext } from '../stubs'; import TelemetryService from '../../../telemetry/telemetryService'; +import { TEST_DATABASE_URI } from '../dbTestHelper'; const expect = chai.expect; @@ -62,18 +64,22 @@ suite('Active DB CodeLens Provider Test Suite', () => { const testCodeLensProvider = new ActiveDBCodeLensProvider( testConnectionController ); - const mockActiveDataService: any = { - find: () => { - return Promise.resolve([{ field: 'Text message' }]); + const mockActiveDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(mockActiveDataService, 'find'); + findStub.resolves([ + { + field: 'Text message', }, - instance: () => - Promise.resolve({ - dataLake: {}, - build: {}, - genuineMongoDB: {}, - host: {}, - }), - }; + ]); + const instanceStub = sinon.stub(mockActiveDataService, 'instance'); + instanceStub.resolves({ + dataLake: {}, + build: {}, + genuineMongoDB: {}, + host: {}, + } as unknown as Awaited>); testConnectionController.setActiveDataService(mockActiveDataService); diff --git a/src/test/suite/editors/collectionDocumentsProvider.test.ts b/src/test/suite/editors/collectionDocumentsProvider.test.ts index dd1926e1b..c229fcb81 100644 --- a/src/test/suite/editors/collectionDocumentsProvider.test.ts +++ b/src/test/suite/editors/collectionDocumentsProvider.test.ts @@ -1,6 +1,7 @@ import * as vscode from 'vscode'; import { afterEach } from 'mocha'; import assert from 'assert'; +import { DataServiceImpl } from 'mongodb-data-service'; import sinon from 'sinon'; import { DocumentSource } from '../../../documentSource'; @@ -43,28 +44,18 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent parses uri and return documents in the form of a string from a find call', async () => { - const mockActiveDataService: any = { - find: (namespace, filter, options) => { - assert( - namespace === 'my-favorite-fruit-is.pineapple', - `Expected find namespace to be 'my-favorite-fruit-is.pineapple' found ${namespace}` - ); - - assert( - options.limit === 10, - `Expected find limit to be 10, found ${options.limit}` - ); - - return Promise.resolve([{ field: 'Declaration of Independence' }]); - }, - }; + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves([{ field: 'Declaration of Independence' }]); const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, testTelemetryService ); - mockConnectionController.setActiveDataService(mockActiveDataService); + mockConnectionController.setActiveDataService(testDataService); const testQueryStore = new CollectionDocumentsOperationsStore(); const testCodeLensProvider = new EditDocumentCodeLensProvider( @@ -86,6 +77,11 @@ suite('Collection Documents Provider Test Suite', () => { const documents = await testCollectionViewProvider.provideTextDocumentContent(uri); + assert.strictEqual( + findStub.firstCall.args[0], + 'my-favorite-fruit-is.pineapple' + ); + assert.strictEqual(findStub.firstCall.args[2]?.limit, 10); assert( documents.includes('Declaration of Independence'), `Expected provideTextDocumentContent to return documents string, found ${documents}` @@ -104,17 +100,17 @@ suite('Collection Documents Provider Test Suite', () => { }, ]; - const mockActiveDataService: any = { - find: () => { - return Promise.resolve(mockDocuments); - }, - }; + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves(mockDocuments); const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, testTelemetryService ); - mockConnectionController.setActiveDataService(mockActiveDataService); + mockConnectionController.setActiveDataService(testDataService); const testQueryStore = new CollectionDocumentsOperationsStore(); const testCodeLensProvider = new EditDocumentCodeLensProvider( @@ -144,17 +140,17 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent sets hasMoreDocumentsToShow to false when there arent more documents', async () => { - const mockActiveDataService: any = { - find: () => { - return Promise.resolve([{ field: 'Apollo' }, { field: 'Gemini ' }]); - }, - }; + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves([{ field: 'Apollo' }, { field: 'Gemini ' }]); const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, testTelemetryService ); - mockConnectionController.setActiveDataService(mockActiveDataService); + mockConnectionController.setActiveDataService(testDataService); const testQueryStore = new CollectionDocumentsOperationsStore(); const testCodeLensProvider = new EditDocumentCodeLensProvider( diff --git a/src/test/suite/editors/playgroundResultProvider.test.ts b/src/test/suite/editors/playgroundResultProvider.test.ts index d04cb1c7a..5004fa548 100644 --- a/src/test/suite/editors/playgroundResultProvider.test.ts +++ b/src/test/suite/editors/playgroundResultProvider.test.ts @@ -2,6 +2,8 @@ import * as vscode from 'vscode'; import { afterEach } from 'mocha'; import chai from 'chai'; import sinon from 'sinon'; +import type { DataService } from 'mongodb-data-service'; +import type { Document } from 'mongodb'; import ConnectionController from '../../../connectionController'; import CollectionDocumentsOperationsStore from '../../../editors/collectionDocumentsOperationsStore'; @@ -33,7 +35,7 @@ suite('Playground Result Provider Test Suite', () => { const testEditDocumentCodeLensProvider = new EditDocumentCodeLensProvider( testConnectionController ); - const sandbox: any = sinon.createSandbox(); + const sandbox = sinon.createSandbox(); afterEach(() => { sandbox.restore(); @@ -233,7 +235,7 @@ suite('Playground Result Provider Test Suite', () => { language: 'json', }; - const mockRefresh: any = sinon.fake(); + const mockRefresh = sinon.fake(); sinon.replace( testPlaygroundResultViewProvider._editDocumentCodeLensProvider, 'updateCodeLensesForPlayground', @@ -244,10 +246,10 @@ suite('Playground Result Provider Test Suite', () => { const result = testPlaygroundResultViewProvider.provideTextDocumentContent(); - mockRefresh.firstArg; expect(result).to.be.equal(JSON.stringify(content, null, 2)); - expect(mockRefresh.firstArg).to.be.deep.equal(playgroundResult); + expect(mockRefresh.calledOnce).to.equal(true); + expect(mockRefresh.firstCall.firstArg).to.be.deep.equal(playgroundResult); }); test('provideTextDocumentContent returns Document formatted to string if content is string', () => { @@ -266,7 +268,7 @@ suite('Playground Result Provider Test Suite', () => { language: 'json', }; - const mockRefresh: any = sinon.fake(); + const mockRefresh = sinon.fake(); sinon.replace( testPlaygroundResultViewProvider._editDocumentCodeLensProvider, 'updateCodeLensesForPlayground', @@ -277,10 +279,10 @@ suite('Playground Result Provider Test Suite', () => { const result = testPlaygroundResultViewProvider.provideTextDocumentContent(); - mockRefresh.firstArg; expect(result).to.be.equal(JSON.stringify(content, null, 2)); - expect(mockRefresh.firstArg).to.be.deep.equal(playgroundResult); + expect(mockRefresh.calledOnce).to.equal(true); + expect(mockRefresh.firstCall.firstArg).to.be.deep.equal(playgroundResult); }); test('provideTextDocumentContent sets different code lenses for the playground and the collection', async () => { @@ -312,7 +314,7 @@ suite('Playground Result Provider Test Suite', () => { }; const connectionId = '1c8c2b06-fbfb-40b7-bd8a-bd1f8333a487'; - const mockActiveConnectionId: any = sinon.fake.returns(connectionId); + const mockActiveConnectionId = sinon.fake.returns(connectionId); sinon.replace( testConnectionController, 'getActiveConnectionId', @@ -323,9 +325,14 @@ suite('Playground Result Provider Test Suite', () => { 'PLAYGROUND_RESULT_SCHEME:/Playground Result' ); const activeTextEditorDocument = { uri: playgroundResultUri }; - sandbox.replaceGetter(vscode.window, 'activeTextEditor', () => ({ - document: activeTextEditorDocument, - })); + sandbox.replaceGetter( + vscode.window, + 'activeTextEditor', + () => + ({ + document: activeTextEditorDocument, + } as unknown as typeof vscode.window.activeTextEditor) + ); testPlaygroundResultViewProvider.setPlaygroundResult(playgroundResult); testPlaygroundResultViewProvider.provideTextDocumentContent(); @@ -377,28 +384,28 @@ suite('Playground Result Provider Test Suite', () => { testCollectionViewProvider._operationsStore = new CollectionDocumentsOperationsStore(); - const documents: any[] = [ + const documents: Document[] = [ { _id: '5ea8745ee4811fafe8b65ecb', koko: 'nothing5' }, ]; - const mockGetActiveDataService: any = sinon.fake.returns({ - find: () => { - return Promise.resolve(documents); - }, - }); - sinon.replace( - testCollectionViewProvider._connectionController, - 'getActiveDataService', - mockGetActiveDataService - ); + sinon + .stub( + testCollectionViewProvider._connectionController, + 'getActiveDataService' + ) + .returns({ + find: () => { + return Promise.resolve(documents); + }, + } as unknown as DataService); - const mockShowMessage: any = sinon.fake(); + const mockShowMessage = sinon.fake(); sinon.replace( testCollectionViewProvider._statusView, 'showMessage', mockShowMessage ); - const mockHideMessage: any = sinon.fake(); + const mockHideMessage = sinon.fake(); sinon.replace( testCollectionViewProvider._statusView, 'hideMessage', diff --git a/src/test/suite/explorer/connectionTreeItem.test.ts b/src/test/suite/explorer/connectionTreeItem.test.ts index 730a8a8df..0ffc3919a 100644 --- a/src/test/suite/explorer/connectionTreeItem.test.ts +++ b/src/test/suite/explorer/connectionTreeItem.test.ts @@ -2,6 +2,7 @@ import * as vscode from 'vscode'; import assert from 'assert'; import { beforeEach, afterEach } from 'mocha'; import sinon from 'sinon'; +import type { DataService } from 'mongodb-data-service'; import ConnectionTreeItem, { ConnectionItemContextValues, @@ -58,7 +59,7 @@ suite('ConnectionTreeItem Test Suite', () => { sinon.replace( mdbTestExtension.testExtensionController._connectionController, 'getActiveDataService', - () => new DataServiceStub() as any + () => new DataServiceStub() as unknown as DataService ); const databaseItems = await testConnectionTreeItem.getChildren(); @@ -78,7 +79,7 @@ suite('ConnectionTreeItem Test Suite', () => { new Promise(() => { throw Error('peaches'); }), - } as any) + } as unknown as DataService) ); try { @@ -115,7 +116,7 @@ suite('ConnectionTreeItem Test Suite', () => { sinon.replace( mdbTestExtension.testExtensionController._connectionController, 'getActiveDataService', - () => new DataServiceStub() as any + () => new DataServiceStub() as unknown as DataService ); const dbNames = await testConnectionTreeItem.listDatabases(); diff --git a/src/test/suite/explorer/documentListTreeItem.test.ts b/src/test/suite/explorer/documentListTreeItem.test.ts index 5cb8c7143..0454fb6c0 100644 --- a/src/test/suite/explorer/documentListTreeItem.test.ts +++ b/src/test/suite/explorer/documentListTreeItem.test.ts @@ -14,10 +14,10 @@ import DocumentListTreeItem, { import { DataServiceStub, mockDocuments } from '../stubs'; suite('DocumentListTreeItem Test Suite', () => { - let dataServiceMock: any; + let dataServiceMock: DataService; before(() => { - dataServiceMock = new DataServiceStub(); + dataServiceMock = new DataServiceStub() as unknown as DataService; }); test('its context value should be in the package json', () => { @@ -52,7 +52,7 @@ suite('DocumentListTreeItem Test Suite', () => { 'collectionName', 'databaseName', CollectionTypes.collection, - 'not_real_dataservice' as any as DataService, + {} as DataService, false, MAX_DOCUMENTS_VISIBLE, null, diff --git a/src/test/suite/explorer/schemaTreeItem.test.ts b/src/test/suite/explorer/schemaTreeItem.test.ts index 1427b490d..a97c1939a 100644 --- a/src/test/suite/explorer/schemaTreeItem.test.ts +++ b/src/test/suite/explorer/schemaTreeItem.test.ts @@ -3,7 +3,8 @@ import * as sinon from 'sinon'; import { after, afterEach, before } from 'mocha'; import assert from 'assert'; import { inspect } from 'util'; -import type { DataService } from 'mongodb-data-service'; +import { DataService, DataServiceImpl } from 'mongodb-data-service'; +import type { Document } from 'mongodb'; import { ext } from '../../../extensionConstants'; import { fieldIsExpandable } from '../../../explorer/fieldTreeItem'; @@ -87,14 +88,16 @@ suite('SchemaTreeItem Test Suite', function () { const expectedMessage = 'No documents were found when attempting to parse schema.'; + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves([]); + const testSchemaTreeItem = new SchemaTreeItem( 'peanutButter', TEST_DB_NAME, - { - find: () => { - return Promise.resolve([]); - }, - } as any, + testDataService, true, false, false, @@ -126,14 +129,15 @@ suite('SchemaTreeItem Test Suite', function () { for (let i = 0; i < 20; i++) { mockDocWithTwentyFields[`${i}`] = 'some value'; } + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves([mockDocWithTwentyFields]); const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - { - find: () => { - return Promise.resolve([mockDocWithTwentyFields]); - }, - } as any, + testDataService, true, false, false, @@ -162,14 +166,15 @@ suite('SchemaTreeItem Test Suite', function () { for (let i = 0; i < 30; i++) { mockDocWithThirtyFields[`${i}`] = 'some value'; } + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves([mockDocWithThirtyFields]); const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - { - find: () => { - return Promise.resolve([mockDocWithThirtyFields]); - }, - } as any, + testDataService, true, false, false, @@ -189,14 +194,16 @@ suite('SchemaTreeItem Test Suite', function () { }); test('When schema parsing fails it displays an error message', async () => { + const testDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + const findStub = sinon.stub(testDataService, 'find'); + findStub.resolves('invalid schema to parse' as unknown as Document[]); + const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, - { - find: () => { - return Promise.resolve('invalid schema to parse'); - }, - } as any, + testDataService, true, false, false, diff --git a/src/test/suite/language/languageServerController.test.ts b/src/test/suite/language/languageServerController.test.ts index facfb09b4..ae44ea2a4 100644 --- a/src/test/suite/language/languageServerController.test.ts +++ b/src/test/suite/language/languageServerController.test.ts @@ -3,6 +3,7 @@ import chai from 'chai'; import fs from 'fs'; import path from 'path'; import sinon from 'sinon'; +import type { DataService } from 'mongodb-data-service'; import ActiveDBCodeLensProvider from '../../../editors/activeConnectionCodeLensProvider'; import CodeActionProvider from '../../../editors/codeActionProvider'; @@ -88,7 +89,7 @@ suite('Language Server Controller Test Suite', () => { url: TEST_DATABASE_URI, options: {}, }), - } as any) + } as unknown as DataService) ); sinon.replace(testConnectionController, 'isCurrentlyConnected', () => true); diff --git a/src/test/suite/mdbExtensionController.test.ts b/src/test/suite/mdbExtensionController.test.ts index bd6d4700e..658506664 100644 --- a/src/test/suite/mdbExtensionController.test.ts +++ b/src/test/suite/mdbExtensionController.test.ts @@ -229,7 +229,7 @@ suite('MDBExtensionController Test Suite', function () { const mockCopyToClipboard = sinon.fake(); sinon.replaceGetter(vscode.env, 'clipboard', () => ({ writeText: mockCopyToClipboard, - readText: sinon.fake() as any, + readText: sinon.fake(), })); const mockStubUri = sinon.fake.returns('weStubThisUri'); @@ -259,7 +259,7 @@ suite('MDBExtensionController Test Suite', function () { const mockCopyToClipboard = sinon.fake(); sinon.replaceGetter(vscode.env, 'clipboard', () => ({ writeText: mockCopyToClipboard, - readText: sinon.fake() as any, + readText: sinon.fake(), })); await vscode.commands.executeCommand('mdb.copyDatabaseName', mockTreeItem); @@ -286,7 +286,7 @@ suite('MDBExtensionController Test Suite', function () { const mockCopyToClipboard = sinon.fake(); sinon.replaceGetter(vscode.env, 'clipboard', () => ({ writeText: mockCopyToClipboard, - readText: sinon.fake() as any, + readText: sinon.fake(), })); await vscode.commands.executeCommand( @@ -318,7 +318,7 @@ suite('MDBExtensionController Test Suite', function () { const mockCopyToClipboard = sinon.fake(); sinon.replaceGetter(vscode.env, 'clipboard', () => ({ writeText: mockCopyToClipboard, - readText: sinon.fake() as any, + readText: sinon.fake(), })); const commandResult = await vscode.commands.executeCommand( @@ -1283,7 +1283,7 @@ suite('MDBExtensionController Test Suite', function () { getText: () => JSON.stringify(mockDocument), save: () => {}, }, - } as any) + } as unknown as typeof vscode.window.activeTextEditor) ); const mockReplaceDocument = sinon.fake.resolves(null); @@ -1340,7 +1340,7 @@ suite('MDBExtensionController Test Suite', function () { getText: () => JSON.stringify(mockDocument), save: () => {}, }, - } as any) + } as unknown as typeof vscode.window.activeTextEditor) ); const mockReplaceDocument = sinon.fake.resolves(null); @@ -1570,7 +1570,7 @@ suite('MDBExtensionController Test Suite', function () { const mockCopyToClipboard = sinon.fake(); sinon.replaceGetter(vscode.env, 'clipboard', () => ({ writeText: mockCopyToClipboard, - readText: sinon.fake() as any, + readText: sinon.fake(), })); await vscode.commands.executeCommand( diff --git a/src/test/suite/telemetry/connectionTelemetry.test.ts b/src/test/suite/telemetry/connectionTelemetry.test.ts index af3bd5a63..b7a662892 100644 --- a/src/test/suite/telemetry/connectionTelemetry.test.ts +++ b/src/test/suite/telemetry/connectionTelemetry.test.ts @@ -1,5 +1,5 @@ -import { beforeEach, afterEach } from 'mocha'; -import { connect } from 'mongodb-data-service'; +import { before, after, beforeEach, afterEach } from 'mocha'; +import { connect, DataServiceImpl } from 'mongodb-data-service'; import { expect } from 'chai'; import sinon from 'sinon'; @@ -12,20 +12,30 @@ suite('ConnectionTelemetry Controller Test Suite', function () { this.timeout(8000); suite('with mock data service', () => { - const mockDataService: any = { - getConnectionString: () => ({ + let mockDataService: DataServiceImpl; + + before(() => { + mockDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + + sinon.stub(mockDataService, 'getConnectionString').returns({ hosts: ['localhost:27018'], searchParams: { get: () => null }, username: 'authMechanism', - }), - instance: () => - Promise.resolve({ - dataLake: {}, - build: {}, - genuineMongoDB: {}, - host: {}, - }), - }; + } as unknown as ReturnType); + + sinon.stub(mockDataService, 'instance').resolves({ + dataLake: {}, + build: {}, + genuineMongoDB: {}, + host: {}, + } as unknown as Awaited>); + }); + + after(() => { + sinon.restore(); + }); test('it returns is_used_connect_screen true when the connection type is form', async () => { const instanceTelemetry = await getConnectionTelemetryProperties( diff --git a/src/test/suite/telemetry/telemetryService.test.ts b/src/test/suite/telemetry/telemetryService.test.ts index a8ba99cf9..d81732af4 100644 --- a/src/test/suite/telemetry/telemetryService.test.ts +++ b/src/test/suite/telemetry/telemetryService.test.ts @@ -1,13 +1,13 @@ import * as vscode from 'vscode'; -import * as path from 'path'; +import path from 'path'; import { afterEach, beforeEach } from 'mocha'; import chai from 'chai'; -import { connect } from 'mongodb-data-service'; +import { connect, DataServiceImpl } from 'mongodb-data-service'; import { config } from 'dotenv'; import { resolve } from 'path'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; -import Sinon = require('sinon'); +import SegmentAnalytics from 'analytics-node'; import { ConnectionTypes } from '../../../connectionController'; import { DocumentSource } from '../../../documentSource'; @@ -31,21 +31,13 @@ config({ path: resolve(__dirname, '../../../../.env') }); suite('Telemetry Controller Test Suite', () => { const testTelemetryService = mdbTestExtension.testExtensionController._telemetryService; - const mockDataService: any = sinon.fake.returns({ - instance: () => - Promise.resolve({ - dataLake: {}, - build: {}, - genuineMongoDB: {}, - host: {}, - }), - }); + let mockDataService: DataServiceImpl; - let mockTrackNewConnection: Sinon.SinonSpy; - let mockTrackCommandRun: Sinon.SinonSpy; - let mockTrackPlaygroundCodeExecuted: Sinon.SinonSpy; - let mockTrackPlaygroundLoadedMethod: Sinon.SinonSpy; - let mockTrack: Sinon.SinonSpy; + let mockTrackNewConnection: sinon.SinonSpy; + let mockTrackCommandRun: sinon.SinonSpy; + let mockTrackPlaygroundCodeExecuted: sinon.SinonSpy; + let mockTrackPlaygroundLoadedMethod: sinon.SinonSpy; + let mockTrack: sinon.SinonSpy; beforeEach(() => { mockTrackNewConnection = sinon.fake.resolves(true); @@ -54,6 +46,16 @@ suite('Telemetry Controller Test Suite', () => { mockTrackPlaygroundLoadedMethod = sinon.fake(); mockTrack = sinon.fake(); + mockDataService = new DataServiceImpl({ + connectionString: TEST_DATABASE_URI, + }); + sinon.stub(mockDataService, 'instance').resolves({ + dataLake: {}, + build: {}, + genuineMongoDB: {}, + host: {}, + } as unknown as Awaited>); + sinon.replace( mdbTestExtension.testExtensionController._telemetryService, 'trackCommandRun', @@ -262,7 +264,7 @@ suite('Telemetry Controller Test Suite', () => { const fakeSegmentTrack = sinon.fake.yields(null); sinon.replace(testTelemetryService, '_segmentAnalytics', { track: fakeSegmentTrack, - } as any); + } as unknown as SegmentAnalytics); testTelemetryService.track(TelemetryEventTypes.EXTENSION_LINK_CLICKED); @@ -284,7 +286,7 @@ suite('Telemetry Controller Test Suite', () => { const fakeSegmentTrack = sinon.fake.yields(null); sinon.replace(testTelemetryService, '_segmentAnalytics', { track: fakeSegmentTrack, - } as any); + } as unknown as SegmentAnalytics); testTelemetryService.track(TelemetryEventTypes.PLAYGROUND_LOADED, { source: DocumentSource.DOCUMENT_SOURCE_PLAYGROUND, From b72724ea53f63e682a1094d2f3d213eeba2d4ed3 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Mon, 27 Feb 2023 11:59:15 -0500 Subject: [PATCH 7/7] avoid data service impl usage, more types --- .../editors/activeDBCodeLensProvider.test.ts | 18 +++++----- .../collectionDocumentsProvider.test.ts | 32 +++++++++-------- .../suite/explorer/schemaTreeItem.test.ts | 34 +++++++++---------- src/test/suite/mdbExtensionController.test.ts | 25 ++++++++------ .../telemetry/connectionTelemetry.test.ts | 27 +++++++++------ .../suite/telemetry/telemetryService.test.ts | 16 +++++---- 6 files changed, 85 insertions(+), 67 deletions(-) diff --git a/src/test/suite/editors/activeDBCodeLensProvider.test.ts b/src/test/suite/editors/activeDBCodeLensProvider.test.ts index 47a8634ad..463e1b242 100644 --- a/src/test/suite/editors/activeDBCodeLensProvider.test.ts +++ b/src/test/suite/editors/activeDBCodeLensProvider.test.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import { beforeEach, afterEach } from 'mocha'; import chai from 'chai'; import sinon from 'sinon'; -import { DataServiceImpl } from 'mongodb-data-service'; +import type { DataService } from 'mongodb-data-service'; import ActiveDBCodeLensProvider from '../../../editors/activeConnectionCodeLensProvider'; import ConnectionController from '../../../connectionController'; @@ -10,7 +10,6 @@ import { StatusView } from '../../../views'; import { StorageController } from '../../../storage'; import { TestExtensionContext } from '../stubs'; import TelemetryService from '../../../telemetry/telemetryService'; -import { TEST_DATABASE_URI } from '../dbTestHelper'; const expect = chai.expect; @@ -64,23 +63,24 @@ suite('Active DB CodeLens Provider Test Suite', () => { const testCodeLensProvider = new ActiveDBCodeLensProvider( testConnectionController ); - const mockActiveDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(mockActiveDataService, 'find'); + + const findStub = sinon.stub(); findStub.resolves([ { field: 'Text message', }, ]); - const instanceStub = sinon.stub(mockActiveDataService, 'instance'); + const instanceStub = sinon.stub(); instanceStub.resolves({ dataLake: {}, build: {}, genuineMongoDB: {}, host: {}, - } as unknown as Awaited>); - + } as unknown as Awaited>); + const mockActiveDataService = { + find: findStub, + instance: instanceStub, + } as Pick as unknown as DataService; testConnectionController.setActiveDataService(mockActiveDataService); beforeEach(() => { diff --git a/src/test/suite/editors/collectionDocumentsProvider.test.ts b/src/test/suite/editors/collectionDocumentsProvider.test.ts index c229fcb81..8df217d2f 100644 --- a/src/test/suite/editors/collectionDocumentsProvider.test.ts +++ b/src/test/suite/editors/collectionDocumentsProvider.test.ts @@ -1,7 +1,7 @@ import * as vscode from 'vscode'; import { afterEach } from 'mocha'; import assert from 'assert'; -import { DataServiceImpl } from 'mongodb-data-service'; +import type { DataService } from 'mongodb-data-service'; import sinon from 'sinon'; import { DocumentSource } from '../../../documentSource'; @@ -44,11 +44,11 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent parses uri and return documents in the form of a string from a find call', async () => { - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves([{ field: 'Declaration of Independence' }]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), @@ -100,11 +100,12 @@ suite('Collection Documents Provider Test Suite', () => { }, ]; - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves(mockDocuments); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; + const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, @@ -140,11 +141,11 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent sets hasMoreDocumentsToShow to false when there arent more documents', async () => { - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves([{ field: 'Apollo' }, { field: 'Gemini ' }]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, @@ -188,7 +189,10 @@ suite('Collection Documents Provider Test Suite', () => { }); test('provideTextDocumentContent shows a status bar item while it is running then hide it', async () => { - const mockActiveDataService: any = { find: {} }; + const mockActiveDataService = { find: () => Promise.resolve([]) } as Pick< + DataService, + 'find' + > as unknown as DataService; const mockConnectionController = new ConnectionController( new StatusView(mockExtensionContext), mockStorageController, diff --git a/src/test/suite/explorer/schemaTreeItem.test.ts b/src/test/suite/explorer/schemaTreeItem.test.ts index a97c1939a..0e1a5d762 100644 --- a/src/test/suite/explorer/schemaTreeItem.test.ts +++ b/src/test/suite/explorer/schemaTreeItem.test.ts @@ -3,7 +3,7 @@ import * as sinon from 'sinon'; import { after, afterEach, before } from 'mocha'; import assert from 'assert'; import { inspect } from 'util'; -import { DataService, DataServiceImpl } from 'mongodb-data-service'; +import type { DataService } from 'mongodb-data-service'; import type { Document } from 'mongodb'; import { ext } from '../../../extensionConstants'; @@ -88,11 +88,11 @@ suite('SchemaTreeItem Test Suite', function () { const expectedMessage = 'No documents were found when attempting to parse schema.'; - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves([]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const testSchemaTreeItem = new SchemaTreeItem( 'peanutButter', @@ -129,11 +129,11 @@ suite('SchemaTreeItem Test Suite', function () { for (let i = 0; i < 20; i++) { mockDocWithTwentyFields[`${i}`] = 'some value'; } - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves([mockDocWithTwentyFields]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, @@ -166,11 +166,11 @@ suite('SchemaTreeItem Test Suite', function () { for (let i = 0; i < 30; i++) { mockDocWithThirtyFields[`${i}`] = 'some value'; } - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves([mockDocWithThirtyFields]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', TEST_DB_NAME, @@ -194,11 +194,11 @@ suite('SchemaTreeItem Test Suite', function () { }); test('When schema parsing fails it displays an error message', async () => { - const testDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - const findStub = sinon.stub(testDataService, 'find'); + const findStub = sinon.stub(); findStub.resolves('invalid schema to parse' as unknown as Document[]); + const testDataService = { + find: findStub, + } as Pick as unknown as DataService; const testSchemaTreeItem = new SchemaTreeItem( 'favoritePiesIWantToEatRightNow', diff --git a/src/test/suite/mdbExtensionController.test.ts b/src/test/suite/mdbExtensionController.test.ts index 658506664..d7ac4a69f 100644 --- a/src/test/suite/mdbExtensionController.test.ts +++ b/src/test/suite/mdbExtensionController.test.ts @@ -1552,12 +1552,12 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; - const mockDataService: any = { + const mockDataService = { find: (namespace: string) => { namespaceUsed = namespace; return Promise.resolve([mockDocument]); }, - }; + } as Pick as unknown as DataService; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1599,12 +1599,12 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; - const mockDataService: any = { + const mockDataService = { find: (namespace: string) => { namespaceUsed = namespace; return Promise.resolve([mockDocument]); }, - }; + } as Pick as unknown as DataService; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1655,17 +1655,22 @@ suite('MDBExtensionController Test Suite', function () { let calledDelete = false; - const mockDataService: any = { + const mockDataService = { deleteOne: ( namespace: string, _id: any, options: object, - callback: (error: Error | undefined, documents: object[]) => void + callback: ( + error: Error | undefined, + result: { deletedCount: number } + ) => void ) => { calledDelete = true; - callback(undefined, [mockDocument]); + callback(undefined, { + deletedCount: 1, + }); }, - }; + } as Pick as unknown as DataService; const documentTreeItem = new DocumentTreeItem( mockDocument, @@ -1697,7 +1702,7 @@ suite('MDBExtensionController Test Suite', function () { let namespaceUsed = ''; let _idUsed; - const mockDataService: any = { + const mockDataService = { deleteOne: ( namespace: string, query: any, @@ -1713,7 +1718,7 @@ suite('MDBExtensionController Test Suite', function () { deletedCount: 1, }); }, - }; + } as Pick as unknown as DataService; const documentTreeItem = new DocumentTreeItem( mockDocument, diff --git a/src/test/suite/telemetry/connectionTelemetry.test.ts b/src/test/suite/telemetry/connectionTelemetry.test.ts index b7a662892..36cf9131e 100644 --- a/src/test/suite/telemetry/connectionTelemetry.test.ts +++ b/src/test/suite/telemetry/connectionTelemetry.test.ts @@ -1,5 +1,6 @@ import { before, after, beforeEach, afterEach } from 'mocha'; -import { connect, DataServiceImpl } from 'mongodb-data-service'; +import { connect } from 'mongodb-data-service'; +import type { DataService } from 'mongodb-data-service'; import { expect } from 'chai'; import sinon from 'sinon'; @@ -12,25 +13,31 @@ suite('ConnectionTelemetry Controller Test Suite', function () { this.timeout(8000); suite('with mock data service', () => { - let mockDataService: DataServiceImpl; + let mockDataService: DataService; before(() => { - mockDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - - sinon.stub(mockDataService, 'getConnectionString').returns({ + const getConnectionStringStub = sinon.stub(); + getConnectionStringStub.returns({ hosts: ['localhost:27018'], searchParams: { get: () => null }, username: 'authMechanism', - } as unknown as ReturnType); + } as unknown as ReturnType); - sinon.stub(mockDataService, 'instance').resolves({ + const instanceStub = sinon.stub(); + instanceStub.resolves({ dataLake: {}, build: {}, genuineMongoDB: {}, host: {}, - } as unknown as Awaited>); + } as unknown as Awaited>); + + mockDataService = { + getConnectionString: getConnectionStringStub, + instance: instanceStub, + } as Pick< + DataService, + 'getConnectionString' | 'instance' + > as unknown as DataService; }); after(() => { diff --git a/src/test/suite/telemetry/telemetryService.test.ts b/src/test/suite/telemetry/telemetryService.test.ts index d81732af4..f3d1ea262 100644 --- a/src/test/suite/telemetry/telemetryService.test.ts +++ b/src/test/suite/telemetry/telemetryService.test.ts @@ -2,7 +2,8 @@ import * as vscode from 'vscode'; import path from 'path'; import { afterEach, beforeEach } from 'mocha'; import chai from 'chai'; -import { connect, DataServiceImpl } from 'mongodb-data-service'; +import { connect } from 'mongodb-data-service'; +import type { DataService } from 'mongodb-data-service'; import { config } from 'dotenv'; import { resolve } from 'path'; import sinon from 'sinon'; @@ -31,7 +32,7 @@ config({ path: resolve(__dirname, '../../../../.env') }); suite('Telemetry Controller Test Suite', () => { const testTelemetryService = mdbTestExtension.testExtensionController._telemetryService; - let mockDataService: DataServiceImpl; + let mockDataService: DataService; let mockTrackNewConnection: sinon.SinonSpy; let mockTrackCommandRun: sinon.SinonSpy; @@ -46,15 +47,16 @@ suite('Telemetry Controller Test Suite', () => { mockTrackPlaygroundLoadedMethod = sinon.fake(); mockTrack = sinon.fake(); - mockDataService = new DataServiceImpl({ - connectionString: TEST_DATABASE_URI, - }); - sinon.stub(mockDataService, 'instance').resolves({ + const instanceStub = sinon.stub(); + instanceStub.resolves({ dataLake: {}, build: {}, genuineMongoDB: {}, host: {}, - } as unknown as Awaited>); + } as unknown as Awaited>); + mockDataService = { + instance: instanceStub, + } as Pick as unknown as DataService; sinon.replace( mdbTestExtension.testExtensionController._telemetryService,