diff --git a/package-lock.json b/package-lock.json index 5c0c908fe96..060f0b6a42d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8104,84 +8104,10 @@ "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==", "license": "Apache-2.0" }, - "node_modules/@mongodb-js/oidc-mock-provider": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.9.3.tgz", - "integrity": "sha512-7PpRoCsY0cf5MmA8ugzo3lKqKSrO9HN1bQN8KciCw9HBFo7ub21Q5yCby2cgyxYeMQm0u9zw8La3/Mrg+ruGdg==", - "dev": true, - "dependencies": { - "yargs": "17.7.2" - }, - "bin": { - "oidc-mock-provider": "bin/oidc-mock-provider.js" - } - }, - "node_modules/@mongodb-js/oidc-mock-provider/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@mongodb-js/oidc-mock-provider/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@mongodb-js/oidc-mock-provider/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@mongodb-js/oidc-mock-provider/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@mongodb-js/oidc-mock-provider/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@mongodb-js/oidc-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.1.tgz", - "integrity": "sha512-u2t3dvUpQJeTmMvXyZu730yJzqJ3aKraQ7ELlNwpKpl1AGxL6Dd9Z2AEu9ycExZjXhyjBW/lbaWuEhdNZHEgeg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.5.tgz", + "integrity": "sha512-K76ADgrDpL+lg6L/QsEBIGbSjTEUljYDGDX75Tq4+zIkx3JQgeQhS5J3qZNzKwJa4nj+EwhihaADLRgsMpAtrA==", "license": "Apache-2.0", "dependencies": { "express": "^4.18.2", @@ -26848,9 +26774,10 @@ } }, "node_modules/jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==", + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } @@ -33506,6 +33433,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "license": "MIT", "engines": { "node": ">= 6" } @@ -33613,6 +33541,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", + "license": "MIT", "engines": { "node": "^10.13.0 || >=12.0.0" } @@ -33683,11 +33612,12 @@ } }, "node_modules/openid-client": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.5.tgz", - "integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz", + "integrity": "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==", + "license": "MIT", "dependencies": { - "jose": "^4.15.5", + "jose": "^4.15.9", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" @@ -43012,9 +42942,9 @@ "@mongodb-js/compass-user-data": "^0.3.12", "@mongodb-js/compass-utils": "^0.6.16", "@mongodb-js/connection-info": "^0.9.5", - "@mongodb-js/devtools-connect": "^3.3.1", + "@mongodb-js/devtools-connect": "^3.3.3", "@mongodb-js/devtools-proxy-support": "^0.4.1", - "@mongodb-js/oidc-plugin": "^1.1.1", + "@mongodb-js/oidc-plugin": "^1.1.5", "compass-preferences-model": "^2.31.1", "electron": "^32.2.5", "hadron-app-registry": "^9.2.8", @@ -43043,6 +42973,75 @@ "typescript": "^5.0.4" } }, + "packages/atlas-service/node_modules/@mongodb-js/devtools-connect": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.3.3.tgz", + "integrity": "sha512-VGqaagbvv06cs41KuJxs/UUa7Q10e1htgQxtbfqTRmFSxuToR+0+6IDVBcEEv4F8Oh3TdXGcms/S8cVjQiRgow==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/devtools-proxy-support": "^0.4.2", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "lodash.merge": "^4.6.2", + "mongodb-connection-string-url": "^3.0.0", + "socks": "^2.7.3" + }, + "optionalDependencies": { + "kerberos": "^2.1.0", + "mongodb-client-encryption": "^6.1.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1" + }, + "peerDependencies": { + "@mongodb-js/oidc-plugin": "^1.1.0", + "mongodb": "^6.9.0", + "mongodb-log-writer": "^1.4.2" + } + }, + "packages/atlas-service/node_modules/@mongodb-js/devtools-proxy-support": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.4.2.tgz", + "integrity": "sha512-CSsAsiAkVDkSV7/soKWlPskWYRQLlOJo7a1x+M/HdYgBulEacWpBHnKepwDsaJn/9GCIIcFCVO9nLS0tn1aGLQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.1" + } + }, + "packages/atlas-service/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/atlas-service/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "packages/atlas-service/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -43052,6 +43051,39 @@ "node": ">=0.3.1" } }, + "packages/atlas-service/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "packages/atlas-service/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "packages/atlas-service/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/atlas-service/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -43997,7 +44029,7 @@ "@mongodb-js/compass-test-server": "^0.1.23", "@mongodb-js/connection-info": "^0.9.5", "@mongodb-js/eslint-config-compass": "^1.1.8", - "@mongodb-js/oidc-mock-provider": "^0.9.3", + "@mongodb-js/oidc-mock-provider": "^0.10.2", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@types/chai-as-promised": "^7.1.4", @@ -44040,6 +44072,19 @@ "yargs": "^17.7.2" } }, + "packages/compass-e2e-tests/node_modules/@mongodb-js/oidc-mock-provider": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.10.2.tgz", + "integrity": "sha512-mH9tpgqYvF2ZRBbFKta+ziN48V+t/+NPLQoe7nZ8bYbWsGfXY79QKMIElaXlU8HnemnqUbOqBSYuizgs62OxfQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "yargs": "17.7.2" + }, + "bin": { + "oidc-mock-provider": "bin/oidc-mock-provider.js" + } + }, "packages/compass-e2e-tests/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -47168,7 +47213,7 @@ "dependencies": { "@mongodb-js/compass-logging": "^1.4.12", "@mongodb-js/compass-utils": "^0.6.16", - "@mongodb-js/devtools-connect": "^3.3.1", + "@mongodb-js/devtools-connect": "^3.3.3", "@mongodb-js/devtools-proxy-support": "^0.4.1", "bson": "^6.8.0", "lodash": "^4.17.21", @@ -47182,7 +47227,7 @@ "@mongodb-js/devtools-docker-test-envs": "^1.3.3", "@mongodb-js/eslint-config-compass": "^1.1.8", "@mongodb-js/mocha-config-compass": "^1.4.3", - "@mongodb-js/oidc-plugin": "^1.1.1", + "@mongodb-js/oidc-plugin": "^1.1.5", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@types/lodash": "^4.14.188", @@ -47204,6 +47249,30 @@ "mongodb-client-encryption": "^6.1.0" } }, + "packages/data-service/node_modules/@mongodb-js/devtools-connect": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.3.3.tgz", + "integrity": "sha512-VGqaagbvv06cs41KuJxs/UUa7Q10e1htgQxtbfqTRmFSxuToR+0+6IDVBcEEv4F8Oh3TdXGcms/S8cVjQiRgow==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/devtools-proxy-support": "^0.4.2", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "lodash.merge": "^4.6.2", + "mongodb-connection-string-url": "^3.0.0", + "socks": "^2.7.3" + }, + "optionalDependencies": { + "kerberos": "^2.1.0", + "mongodb-client-encryption": "^6.1.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1" + }, + "peerDependencies": { + "@mongodb-js/oidc-plugin": "^1.1.0", + "mongodb": "^6.9.0", + "mongodb-log-writer": "^1.4.2" + } + }, "packages/data-service/node_modules/@mongodb-js/devtools-docker-test-envs": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-docker-test-envs/-/devtools-docker-test-envs-1.3.3.tgz", @@ -47228,6 +47297,51 @@ "whatwg-url": "^11.0.0" } }, + "packages/data-service/node_modules/@mongodb-js/devtools-proxy-support": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.4.2.tgz", + "integrity": "sha512-CSsAsiAkVDkSV7/soKWlPskWYRQLlOJo7a1x+M/HdYgBulEacWpBHnKepwDsaJn/9GCIIcFCVO9nLS0tn1aGLQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.1" + } + }, + "packages/data-service/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/data-service/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "packages/data-service/node_modules/eslint-plugin-mocha": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", @@ -47266,7 +47380,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-2.2.0.tgz", "integrity": "sha512-yz6iP+34Qp8XjwfmJ56SD9coeSfLIoH0JBrLi6Iw76FdwsRJoNw3nCgfpzENkfGyb/dgRqzYn3IMXLj7A43Vlg==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -47278,13 +47392,46 @@ "node": ">=12.9.0" } }, + "packages/data-service/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "packages/data-service/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "packages/data-service/node_modules/node-addon-api": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true, + "devOptional": true, "license": "MIT" }, + "packages/data-service/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/data-service/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -54859,11 +55006,11 @@ "@mongodb-js/compass-user-data": "^0.3.12", "@mongodb-js/compass-utils": "^0.6.16", "@mongodb-js/connection-info": "^0.9.5", - "@mongodb-js/devtools-connect": "^3.3.1", + "@mongodb-js/devtools-connect": "^3.3.3", "@mongodb-js/devtools-proxy-support": "^0.4.1", "@mongodb-js/eslint-config-compass": "^1.1.8", "@mongodb-js/mocha-config-compass": "^1.4.3", - "@mongodb-js/oidc-plugin": "^1.1.1", + "@mongodb-js/oidc-plugin": "^1.1.5", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/testing-library-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", @@ -54888,12 +55035,79 @@ "typescript": "^5.0.4" }, "dependencies": { + "@mongodb-js/devtools-connect": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.3.3.tgz", + "integrity": "sha512-VGqaagbvv06cs41KuJxs/UUa7Q10e1htgQxtbfqTRmFSxuToR+0+6IDVBcEEv4F8Oh3TdXGcms/S8cVjQiRgow==", + "requires": { + "@mongodb-js/devtools-proxy-support": "^0.4.2", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "kerberos": "^2.1.0", + "lodash.merge": "^4.6.2", + "mongodb-client-encryption": "^6.1.0", + "mongodb-connection-string-url": "^3.0.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1", + "socks": "^2.7.3" + } + }, + "@mongodb-js/devtools-proxy-support": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.4.2.tgz", + "integrity": "sha512-CSsAsiAkVDkSV7/soKWlPskWYRQLlOJo7a1x+M/HdYgBulEacWpBHnKepwDsaJn/9GCIIcFCVO9nLS0tn1aGLQ==", + "requires": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.1" + } + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -58777,68 +58991,10 @@ "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" }, - "@mongodb-js/oidc-mock-provider": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.9.3.tgz", - "integrity": "sha512-7PpRoCsY0cf5MmA8ugzo3lKqKSrO9HN1bQN8KciCw9HBFo7ub21Q5yCby2cgyxYeMQm0u9zw8La3/Mrg+ruGdg==", - "dev": true, - "requires": { - "yargs": "17.7.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, "@mongodb-js/oidc-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.1.tgz", - "integrity": "sha512-u2t3dvUpQJeTmMvXyZu730yJzqJ3aKraQ7ELlNwpKpl1AGxL6Dd9Z2AEu9ycExZjXhyjBW/lbaWuEhdNZHEgeg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.5.tgz", + "integrity": "sha512-K76ADgrDpL+lg6L/QsEBIGbSjTEUljYDGDX75Tq4+zIkx3JQgeQhS5J3qZNzKwJa4nj+EwhihaADLRgsMpAtrA==", "requires": { "express": "^4.18.2", "open": "^9.1.0", @@ -66626,7 +66782,7 @@ "@mongodb-js/compass-test-server": "^0.1.23", "@mongodb-js/connection-info": "^0.9.5", "@mongodb-js/eslint-config-compass": "^1.1.8", - "@mongodb-js/oidc-mock-provider": "^0.9.3", + "@mongodb-js/oidc-mock-provider": "^0.10.2", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@types/chai-as-promised": "^7.1.4", @@ -66669,6 +66825,15 @@ "yargs": "^17.7.2" }, "dependencies": { + "@mongodb-js/oidc-mock-provider": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.10.2.tgz", + "integrity": "sha512-mH9tpgqYvF2ZRBbFKta+ziN48V+t/+NPLQoe7nZ8bYbWsGfXY79QKMIElaXlU8HnemnqUbOqBSYuizgs62OxfQ==", + "dev": true, + "requires": { + "yargs": "17.7.2" + } + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -74984,9 +75149,9 @@ } }, "jose": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.5.tgz", - "integrity": "sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==" + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==" }, "js-tokens": { "version": "4.0.0", @@ -78601,12 +78766,12 @@ "@mongodb-js/compass-logging": "^1.4.12", "@mongodb-js/compass-test-server": "^0.1.23", "@mongodb-js/compass-utils": "^0.6.16", - "@mongodb-js/devtools-connect": "^3.3.1", + "@mongodb-js/devtools-connect": "^3.3.3", "@mongodb-js/devtools-docker-test-envs": "^1.3.3", "@mongodb-js/devtools-proxy-support": "^0.4.1", "@mongodb-js/eslint-config-compass": "^1.1.8", "@mongodb-js/mocha-config-compass": "^1.4.3", - "@mongodb-js/oidc-plugin": "^1.1.1", + "@mongodb-js/oidc-plugin": "^1.1.5", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@types/lodash": "^4.14.188", @@ -78632,6 +78797,22 @@ "typescript": "^5.0.4" }, "dependencies": { + "@mongodb-js/devtools-connect": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.3.3.tgz", + "integrity": "sha512-VGqaagbvv06cs41KuJxs/UUa7Q10e1htgQxtbfqTRmFSxuToR+0+6IDVBcEEv4F8Oh3TdXGcms/S8cVjQiRgow==", + "requires": { + "@mongodb-js/devtools-proxy-support": "^0.4.2", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "kerberos": "^2.1.0", + "lodash.merge": "^4.6.2", + "mongodb-client-encryption": "^6.1.0", + "mongodb-connection-string-url": "^3.0.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1", + "socks": "^2.7.3" + } + }, "@mongodb-js/devtools-docker-test-envs": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-docker-test-envs/-/devtools-docker-test-envs-1.3.3.tgz", @@ -78658,6 +78839,37 @@ } } }, + "@mongodb-js/devtools-proxy-support": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.4.2.tgz", + "integrity": "sha512-CSsAsiAkVDkSV7/soKWlPskWYRQLlOJo7a1x+M/HdYgBulEacWpBHnKepwDsaJn/9GCIIcFCVO9nLS0tn1aGLQ==", + "requires": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.1" + } + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, "eslint-plugin-mocha": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", @@ -78681,18 +78893,38 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-2.2.0.tgz", "integrity": "sha512-yz6iP+34Qp8XjwfmJ56SD9coeSfLIoH0JBrLi6Iw76FdwsRJoNw3nCgfpzENkfGyb/dgRqzYn3IMXLj7A43Vlg==", - "dev": true, + "devOptional": true, "requires": { "bindings": "^1.5.0", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.2" } }, + "lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, "node-addon-api": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true + "devOptional": true + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } }, "sinon": { "version": "9.2.4", @@ -80732,11 +80964,11 @@ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, "openid-client": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.5.tgz", - "integrity": "sha512-5P4qO9nGJzB5PI0LFlhj4Dzg3m4odt0qsJTfyEtZyOlkgpILwEioOhVVJOrS1iVH494S4Ee5OCjjg6Bf5WOj3w==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz", + "integrity": "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==", "requires": { - "jose": "^4.15.5", + "jose": "^4.15.9", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index b9b092cefe5..b3850c100c6 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -79,9 +79,9 @@ "@mongodb-js/compass-user-data": "^0.3.12", "@mongodb-js/compass-utils": "^0.6.16", "@mongodb-js/connection-info": "^0.9.5", - "@mongodb-js/devtools-connect": "^3.3.1", + "@mongodb-js/devtools-connect": "^3.3.3", "@mongodb-js/devtools-proxy-support": "^0.4.1", - "@mongodb-js/oidc-plugin": "^1.1.1", + "@mongodb-js/oidc-plugin": "^1.1.5", "hadron-app-registry": "^9.2.8", "compass-preferences-model": "^2.31.1", "electron": "^32.2.5", diff --git a/packages/atlas-service/src/main.spec.ts b/packages/atlas-service/src/main.spec.ts index 19e9a527fd2..cea8ee2a05a 100644 --- a/packages/atlas-service/src/main.spec.ts +++ b/packages/atlas-service/src/main.spec.ts @@ -331,7 +331,11 @@ describe('CompassAuthServiceMain', function () { } as any; await CompassAuthService.init(preferences, {} as any); CompassAuthService['config'] = defaultConfig; - expect(getListenerCount(logger)).to.eq(30); + + // We expect that the oidc plugin registers a number of listeners + // upon creation, which should get unregistered when we sign out. + expect(getListenerCount(logger)).to.be.greaterThan(0); + // We did all preparations, reset sinon history for easier assertions sandbox.resetHistory(); diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index 4939102473a..2ca3773a894 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -35,7 +35,7 @@ "@mongodb-js/compass-test-server": "^0.1.23", "@mongodb-js/connection-info": "^0.9.5", "@mongodb-js/eslint-config-compass": "^1.1.8", - "@mongodb-js/oidc-mock-provider": "^0.9.3", + "@mongodb-js/oidc-mock-provider": "^0.10.2", "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@types/chai-as-promised": "^7.1.4", diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx index 27bfda46557..3911aa751ba 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx @@ -5,6 +5,7 @@ import { screen, fireEvent, waitFor, + userEvent, } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; @@ -151,6 +152,28 @@ describe('Authentication OIDC Connection Form', function () { }); }); + for (let i = 1; i < 3; i++) { + it(`handles the 'Send a nonce in the Auth Code Request' checkbox clicked ${i} time(s)`, async function () { + for (let j = 0; j < i; j++) { + userEvent.click( + screen.getByText('Send a nonce in the Auth Code Request') + ); + } + + await expectToConnectWith({ + connectionString: + 'mongodb://localhost:27017/?authMechanism=MONGODB-OIDC&authSource=%24external', + // The default value is checked, which means we should NOT skip the nonce. + oidc: + i % 2 === 0 + ? {} + : { + skipNonceInAuthCodeRequest: true, + }, + }); + }); + } + it('handles the Consider Target Endpoint Trusted checkbox', async function () { fireEvent.click(screen.getByText('Consider Target Endpoint Trusted')); await expectToConnectWith({ diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx index e4a8698593a..d1382ebc028 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx @@ -162,6 +162,36 @@ function AuthenticationOIDC({ /> + + ) => { + // The value of the checkbox is inverse of the value of the oidc option. + return handleFieldChanged( + 'skipNonceInAuthCodeRequest', + checked ? undefined : true + ); + }} + data-testid="oidc-send-nonce-in-auth-code-request" + id="oidc-send-nonce-in-auth-code-request" + label={ + <> + + + Include a random nonce as part of the auth code request to + prevent replay attacks. This should only be disabled in + cases where the OIDC provider doesn't support it as the + nonce is an important security component. + + + } + checked={!connectionOptions.oidc?.skipNonceInAuthCodeRequest} + /> + + {showProxySettings && (