diff --git a/.evergreen.yml b/.evergreen.yml index 159d59360..ef0f7b077 100644 --- a/.evergreen.yml +++ b/.evergreen.yml @@ -163,6 +163,7 @@ functions: DISTRO_ID: ${distro_id} MONOGDB_DRIVER_VERSION_OVERRIDE: ${mongodb_driver_version_override} PUPPETEER_SKIP_DOWNLOAD: ${puppeteer_skip_download|true} + MONGOSH_INSTALL_WORKSPACE: ${mongosh_install_workspace|} script: | set -e set -x @@ -6206,6 +6207,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/arg-parser" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6225,6 +6227,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/async-rewriter2" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6244,6 +6247,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/autocomplete" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6263,6 +6267,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "false" + mongosh_install_workspace: "@mongosh/browser-repl" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6282,6 +6287,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/browser-runtime-core" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6301,6 +6307,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/browser-runtime-electron" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6320,6 +6327,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/build" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6339,6 +6347,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/cli-repl" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6358,6 +6367,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/connectivity-tests" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6377,6 +6387,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/e2e-tests" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6396,6 +6407,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/editor" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6415,6 +6427,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/errors" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6434,6 +6447,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/history" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6453,6 +6467,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/i18n" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6472,6 +6487,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/java-shell" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6491,6 +6507,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/js-multiline-to-singleline" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6510,6 +6527,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/logging" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6529,6 +6547,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/mongosh" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6548,6 +6567,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/node-runtime-worker-thread" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6567,6 +6587,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/service-provider-core" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6586,6 +6607,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/service-provider-node-driver" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6605,6 +6627,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/shell-api" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6624,6 +6647,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/shell-bson" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6643,6 +6667,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/shell-evaluator" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6662,6 +6687,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/snippet-manager" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6681,6 +6707,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/testing" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} @@ -6700,6 +6727,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "true" + mongosh_install_workspace: "@mongosh/types" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} diff --git a/.evergreen/evergreen.yml.in b/.evergreen/evergreen.yml.in index 37aa6caa7..134ef6511 100644 --- a/.evergreen/evergreen.yml.in +++ b/.evergreen/evergreen.yml.in @@ -172,6 +172,7 @@ functions: DISTRO_ID: ${distro_id} MONOGDB_DRIVER_VERSION_OVERRIDE: ${mongodb_driver_version_override} PUPPETEER_SKIP_DOWNLOAD: ${puppeteer_skip_download|true} + MONGOSH_INSTALL_WORKSPACE: ${mongosh_install_workspace|} script: | set -e set -x @@ -1167,6 +1168,7 @@ tasks: vars: node_js_version: ${node_js_version} puppeteer_skip_download: "<% out(usePuppeteer ? "false" : "true") %>" + mongosh_install_workspace: "@mongosh/<% out(packageName) %>" - func: test vars: mongosh_server_test_version: ${mongosh_server_test_version} diff --git a/.evergreen/install-npm-deps.sh b/.evergreen/install-npm-deps.sh index 1752a52b4..928edc84b 100755 --- a/.evergreen/install-npm-deps.sh +++ b/.evergreen/install-npm-deps.sh @@ -5,7 +5,13 @@ export BASEDIR="$PWD/.evergreen" . "$BASEDIR/setup-env.sh" -npm ci --verbose +# If MONGOSH_INSTALL_WORKSPACE is set, install only that workspace +if [[ -n "$MONGOSH_INSTALL_WORKSPACE" ]]; then + echo "Installing workspace: $MONGOSH_INSTALL_WORKSPACE" + npm ci -w "$MONGOSH_INSTALL_WORKSPACE" --include-workspace-root --verbose +else + npm ci --verbose +fi echo "MONOGDB_DRIVER_VERSION_OVERRIDE:$MONOGDB_DRIVER_VERSION_OVERRIDE" # if MONOGDB_DRIVER_VERSION_OVERRIDE is set, then we want to replace the package version @@ -28,7 +34,17 @@ npm run mark-ci-required-optional-dependencies # mongodb-client-encryption failed to install (it can't install on some # platforms), then install again ignoring scripts so that the package installs # along with its types, but npm wouldn't try and compile the addon -(npm ci && test -e node_modules/mongodb-client-encryption) || npm ci --ignore-scripts +if [[ -n "$MONGOSH_INSTALL_WORKSPACE" ]]; then + # Check if the workspace or root actually depends on mongodb-client-encryption + if npm ls --workspace "$MONGOSH_INSTALL_WORKSPACE" --depth=1 mongodb-client-encryption > /dev/null 2>&1; then + echo "Workspace or root depends on mongodb-client-encryption, retrying install with optional deps..." + (npm ci -w "$MONGOSH_INSTALL_WORKSPACE" --include-workspace-root && test -e node_modules/mongodb-client-encryption) || npm ci -w "$MONGOSH_INSTALL_WORKSPACE" --include-workspace-root --ignore-scripts + else + echo "Workspace does not depend on mongodb-client-encryption, skipping optional deps reinstall" + fi +else + (npm ci && test -e node_modules/mongodb-client-encryption) || npm ci --ignore-scripts +fi echo "npm packages after installation" npm ls || true diff --git a/package-lock.json b/package-lock.json index 14ad2515e..d57e2d55b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12719,9 +12719,9 @@ "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { @@ -37136,7 +37136,7 @@ "@mongodb-js/eslint-config-mongosh": "^1.0.0", "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", - "@types/babel__core": "^7.20.1", + "@types/babel__core": "^7.20.5", "eslint": "^7.25.0", "prettier": "^2.8.8" }, @@ -38639,7 +38639,7 @@ "@mongodb-js/eslint-config-mongosh": "^1.0.0", "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", - "@types/babel__core": "^7.1.18", + "@types/babel__core": "^7.20.5", "eslint": "^7.25.0", "prettier": "^2.8.8" }, @@ -38715,6 +38715,11 @@ }, "engines": { "node": ">=14.15.1" + }, + "optionalDependencies": { + "glibc-version": "^1.0.0", + "macos-export-certificate-and-key": "^1.2.4", + "win-export-certificate-and-key": "^2.1.0" } }, "packages/service-provider-core": { @@ -38796,6 +38801,7 @@ "@mongodb-js/tsconfig-mongosh": "^1.0.0", "@mongosh/testing": "0.0.0-dev.0", "@mongosh/types": "^3.14.1", + "@types/babel__core": "^7.20.5", "bson": "^6.10.4", "eslint": "^7.25.0", "mongodb": "^6.19.0", diff --git a/packages/async-rewriter2/package.json b/packages/async-rewriter2/package.json index 7c99bc8c5..e766810ac 100644 --- a/packages/async-rewriter2/package.json +++ b/packages/async-rewriter2/package.json @@ -49,7 +49,7 @@ "@mongodb-js/eslint-config-mongosh": "^1.0.0", "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", - "@types/babel__core": "^7.20.1", + "@types/babel__core": "^7.20.5", "eslint": "^7.25.0", "prettier": "^2.8.8" } diff --git a/packages/js-multiline-to-singleline/package.json b/packages/js-multiline-to-singleline/package.json index a18431806..287fb86c0 100644 --- a/packages/js-multiline-to-singleline/package.json +++ b/packages/js-multiline-to-singleline/package.json @@ -41,7 +41,7 @@ "@mongodb-js/eslint-config-mongosh": "^1.0.0", "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", - "@types/babel__core": "^7.1.18", + "@types/babel__core": "^7.20.5", "eslint": "^7.25.0", "prettier": "^2.8.8" } diff --git a/packages/node-runtime-worker-thread/package.json b/packages/node-runtime-worker-thread/package.json index 1385da8d2..c16b5b1b4 100644 --- a/packages/node-runtime-worker-thread/package.json +++ b/packages/node-runtime-worker-thread/package.json @@ -56,5 +56,23 @@ "dependencies": { "interruptor": "^1.0.1", "system-ca": "^2.0.1" + }, + "optionalDependencies": { + "glibc-version": "^1.0.0", + "macos-export-certificate-and-key": "^1.2.4", + "win-export-certificate-and-key": "^2.1.0" + }, + "mongosh": { + "ciRequiredOptionalDependencies": { + "macos-export-certificate-and-key": [ + "darwin" + ], + "win-export-certificate-and-key": [ + "win32" + ], + "glibc-version": [ + "linux" + ] + } } } diff --git a/packages/shell-api/package.json b/packages/shell-api/package.json index a0e3025eb..12c40fc66 100644 --- a/packages/shell-api/package.json +++ b/packages/shell-api/package.json @@ -72,6 +72,7 @@ "prettier": "^2.8.8", "semver": "^7.5.3", "@babel/core": "^7.26.10", - "@babel/types": "^7.26.10" + "@babel/types": "^7.26.10", + "@types/babel__core": "^7.20.5" } } diff --git a/packages/shell-api/src/deep-inspect/custom-inspect.ts b/packages/shell-api/src/deep-inspect/custom-inspect.ts index 4282e946d..467809db5 100644 --- a/packages/shell-api/src/deep-inspect/custom-inspect.ts +++ b/packages/shell-api/src/deep-inspect/custom-inspect.ts @@ -1,4 +1,5 @@ import type { InspectOptions, inspect as _inspect } from 'util'; +import type { Document } from '@mongosh/service-provider-core'; const customInspectSymbol = Symbol.for('nodejs.util.inspect.custom'); diff --git a/packages/shell-api/src/shell-instance-state.ts b/packages/shell-api/src/shell-instance-state.ts index 4aae05f86..d20dbfb8e 100644 --- a/packages/shell-api/src/shell-instance-state.ts +++ b/packages/shell-api/src/shell-instance-state.ts @@ -3,6 +3,7 @@ import type { AutoEncryptionOptions, ConnectionExtraInfo, ConnectionInfo, + Document, ServerApi, ServiceProvider, ServiceProviderBaseCursor,