diff --git a/README.md b/README.md index 7ec0b5fc646..b4793b9c74e 100644 --- a/README.md +++ b/README.md @@ -83,14 +83,14 @@ For exhaustive server and runtime version compatibility matrices, please refer t The following table describes add-on component version compatibility for the Node.js driver. Only packages with versions in these supported ranges are stable when used in combination. -| Component | `mongodb@3.x` | `mongodb@4.x` | `mongodb@5.x` | `mongodb@<6.12` | `mongodb@>=6.12` | -| ------------------------------------------------------------------------------------ | ------------------ | ------------------ | ------------------ | --------------- | ------------------ | -| [bson](https://www.npmjs.com/package/bson) | ^1.0.0 | ^4.0.0 | ^5.0.0 | ^6.0.0 | ^6.0.0 | -| [bson-ext](https://www.npmjs.com/package/bson-ext) | ^1.0.0 \|\| ^2.0.0 | ^4.0.0 | N/A | N/A | N/A | -| [kerberos](https://www.npmjs.com/package/kerberos) | ^1.0.0 | ^1.0.0 \|\| ^2.0.0 | ^1.0.0 \|\| ^2.0.0 | ^2.0.1 | ^2.0.1 | -| [mongodb-client-encryption](https://www.npmjs.com/package/mongodb-client-encryption) | ^1.0.0 | ^1.0.0 \|\| ^2.0.0 | ^2.3.0 | ^6.0.0 | ^6.0.0 | -| [mongodb-legacy](https://www.npmjs.com/package/mongodb-legacy) | N/A | ^4.0.0 | ^5.0.0 | ^6.0.0 | ^6.0.0 | -| [@mongodb-js/zstd](https://www.npmjs.com/package/@mongodb-js/zstd) | N/A | ^1.0.0 | ^1.0.0 | ^1.1.0 | ^1.1.0 \|\| ^2.0.0 | +| Component | `mongodb@3.x` | `mongodb@4.x` | `mongodb@5.x` | `mongodb@<6.12` | `mongodb@>=6.12` | `mongodb@>=7` | +| ------------------------------------------------------------------------------------ | ------------------ | ------------------ | ------------------ | --------------- | ------------------ | ------------------- | +| [bson](https://www.npmjs.com/package/bson) | ^1.0.0 | ^4.0.0 | ^5.0.0 | ^6.0.0 | ^6.0.0 | ^7.0.0 | +| [bson-ext](https://www.npmjs.com/package/bson-ext) | ^1.0.0 \|\| ^2.0.0 | ^4.0.0 | N/A | N/A | N/A | N/A | +| [kerberos](https://www.npmjs.com/package/kerberos) | ^1.0.0 | ^1.0.0 \|\| ^2.0.0 | ^1.0.0 \|\| ^2.0.0 | ^2.0.1 | ^2.0.1 | ^7.0.0 | +| [mongodb-client-encryption](https://www.npmjs.com/package/mongodb-client-encryption) | ^1.0.0 | ^1.0.0 \|\| ^2.0.0 | ^2.3.0 | ^6.0.0 | ^6.0.0 | ^7.0.0 | +| [mongodb-legacy](https://www.npmjs.com/package/mongodb-legacy) | N/A | ^4.0.0 | ^5.0.0 | ^6.0.0 | ^6.0.0 | N/A | +| [@mongodb-js/zstd](https://www.npmjs.com/package/@mongodb-js/zstd) | N/A | ^1.0.0 | ^1.0.0 | ^1.1.0 | ^1.1.0 \|\| ^2.0.0 | ^7.0.0 | #### Typescript Version diff --git a/package-lock.json b/package-lock.json index 3755585d925..59c29d576cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,6 @@ "mocha": "^11.7.1", "mocha-sinon": "^2.1.2", "mongodb-client-encryption": "^7.0.0-alpha.1", - "mongodb-legacy": "^6.1.3", "nyc": "^15.1.0", "prettier": "^3.6.2", "semver": "^7.7.2", @@ -847,6 +846,7 @@ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -3014,7 +3014,8 @@ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/chai-subset": { "version": "1.3.6", @@ -3116,6 +3117,7 @@ "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3247,6 +3249,7 @@ "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.46.2", @@ -3277,6 +3280,7 @@ "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/types": "8.46.2", @@ -3522,6 +3526,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3582,6 +3587,7 @@ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3890,6 +3896,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -4067,6 +4074,7 @@ "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -4673,6 +4681,7 @@ "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -4733,6 +4742,7 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -7156,259 +7166,6 @@ "node": ">=20.19.0" } }, - "node_modules/mongodb-legacy": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/mongodb-legacy/-/mongodb-legacy-6.1.3.tgz", - "integrity": "sha512-XJ2PIbVEHUUF4/SyH00dfeprfeLOdWiHcKq8At+JoEZeTue+IAG39G2ixRwClnI7roPb/46K8IF713v9dgQ8rg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mongodb": "^6.0.0" - }, - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/mongodb-legacy/node_modules/@mongodb-js/zstd": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-2.0.1.tgz", - "integrity": "sha512-hbQKltFj0hMrhe+Udh9gjkzswIJJVOo55vEHgfHbb6wjPpo4Oc3kng2bao/XnzLPCdd5Q1PXbWTC91LYPQrCtA==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.1.3" - }, - "engines": { - "node": ">= 16.20.1" - } - }, - "node_modules/mongodb-legacy/node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "node_modules/mongodb-legacy/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/mongodb-legacy/node_modules/bson": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", - "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/mongodb-legacy/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-legacy/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-legacy/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mongodb-legacy/node_modules/mongodb": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.20.0.tgz", - "integrity": "sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/saslprep": "^1.3.0", - "bson": "^6.10.4", - "mongodb-connection-string-url": "^3.0.2" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.3.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, - "node_modules/mongodb-legacy/node_modules/mongodb-client-encryption": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/mongodb-client-encryption/-/mongodb-client-encryption-6.5.0.tgz", - "integrity": "sha512-Gj8EeyYKsssdko0NKhWRBGDif6uVFBbv+e+Nyn7E316UmRzApc4IP+p2NLm+av+fU+dFHVT5WqfzaQVDTh8i9w==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.1.3" - }, - "engines": { - "node": ">=16.20.1" - } - }, - "node_modules/mongodb-legacy/node_modules/mongodb-connection-string-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", - "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^14.1.0 || ^13.0.0" - } - }, - "node_modules/mongodb-legacy/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==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/mongodb-legacy/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/mongodb-legacy/node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/mongodb-legacy/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/mongodb-legacy/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -7569,6 +7326,7 @@ "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -8267,6 +8025,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -9122,6 +8881,7 @@ "integrity": "sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "@sinonjs/commons": "^3.0.1", "@sinonjs/fake-timers": "11.2.2", @@ -9904,6 +9664,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 55e3aecef9c..9f51d0dcee5 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,6 @@ "mocha": "^11.7.1", "mocha-sinon": "^2.1.2", "mongodb-client-encryption": "^7.0.0-alpha.1", - "mongodb-legacy": "^6.1.3", "nyc": "^15.1.0", "prettier": "^3.6.2", "semver": "^7.7.2", diff --git a/test/integration/sessions/sessions.test.ts b/test/integration/sessions/sessions.test.ts index 92c0198f696..58e59c13122 100644 --- a/test/integration/sessions/sessions.test.ts +++ b/test/integration/sessions/sessions.test.ts @@ -1,5 +1,4 @@ import { expect } from 'chai'; -import { MongoClient as LegacyMongoClient } from 'mongodb-legacy'; import { type CommandStartedEvent, @@ -416,33 +415,4 @@ describe('Sessions Spec', function () { expect(new Set(events.map(ev => ev.command.lsid.id.toString('hex'))).size).to.equal(1); }); }); - - // TODO(NODE-XXXX): LegacyMongoClient uses a released version of the driver so it won't be fixed until the error listeners are published - context.skip('when using a LegacyMongoClient', () => { - let legacyClient; - beforeEach(async function () { - const options = this.configuration.serverApi - ? { serverApi: this.configuration.serverApi } - : {}; - legacyClient = new LegacyMongoClient(this.configuration.url(), options); - legacyClient.on('error', () => null); - }); - - afterEach(async function () { - await legacyClient?.close(); - }); - - it('insertOne accepts session started by legacy client', async () => { - const db = legacyClient.db(); - const collection = db.collection('test'); - const session = legacyClient.startSession(); - const error = await collection.insertOne({}, { session }).catch(error => error); - expect(error).to.not.be.instanceOf(Error); - }); - - it('session returned by legacy startSession has reference to legacyClient', async () => { - const session = legacyClient.startSession(); - expect(session).to.have.property('client', legacyClient); - }); - }); }); diff --git a/test/mongodb.ts b/test/mongodb.ts index 0c1783dfcec..b289249eb65 100644 --- a/test/mongodb.ts +++ b/test/mongodb.ts @@ -1,7 +1,5 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import * as process from 'node:process'; -import * as vm from 'node:vm'; // eslint-disable-next-line @typescript-eslint/no-unused-vars function printExports() { @@ -24,78 +22,6 @@ function printExports() { } } -/** - * Using node's require resolution logic this function will locate the entrypoint for the `'mongodb-legacy'` module, - * then execute the `mongodb-legacy` module in a `vm` context that replaces the global require function with a custom - * implementation. The custom version of `require` will return the local instance of the driver import (magically compiled by ts-node) when - * the module specifier is 'mongodb' and otherwise defer to the normal require behavior to import relative files and stdlib modules. - * Each of the legacy module's patched classes are placed on the input object. - * - * @param exportsToOverride - An object that is an import of the MongoDB driver to be modified by this function - */ -function importMongoDBLegacy(exportsToOverride: Record) { - const mongodbLegacyEntryPoint = require.resolve('mongodb-legacy'); - const mongodbLegacyLocation = path.dirname(mongodbLegacyEntryPoint); - const mongodbLegacyIndex = fs.readFileSync(mongodbLegacyEntryPoint, { - encoding: 'utf8' - }); - - // eslint-disable-next-line @typescript-eslint/no-require-imports - const localMongoDB = require('../src/index'); - const ctx = vm.createContext({ - module: { exports: null }, - require: (mod: string) => { - if (mod === 'mongodb') { - return localMongoDB; - } else if (mod.startsWith('.')) { - // eslint-disable-next-line @typescript-eslint/no-require-imports - return require(path.join(mongodbLegacyLocation, mod)); - } - // eslint-disable-next-line @typescript-eslint/no-require-imports - return require(mod); - } - }); - vm.runInContext(mongodbLegacyIndex, ctx); - - const mongodbLegacy = ctx.module.exports; - - Object.defineProperty(exportsToOverride, 'Admin', { get: () => mongodbLegacy.Admin }); - Object.defineProperty(exportsToOverride, 'FindCursor', { get: () => mongodbLegacy.FindCursor }); - Object.defineProperty(exportsToOverride, 'ListCollectionsCursor', { - get: () => mongodbLegacy.ListCollectionsCursor - }); - Object.defineProperty(exportsToOverride, 'ListIndexesCursor', { - get: () => mongodbLegacy.ListIndexesCursor - }); - Object.defineProperty(exportsToOverride, 'AggregationCursor', { - get: () => mongodbLegacy.AggregationCursor - }); - Object.defineProperty(exportsToOverride, 'ChangeStream', { - get: () => mongodbLegacy.ChangeStream - }); - Object.defineProperty(exportsToOverride, 'Collection', { get: () => mongodbLegacy.Collection }); - Object.defineProperty(exportsToOverride, 'Db', { get: () => mongodbLegacy.Db }); - Object.defineProperty(exportsToOverride, 'GridFSBucket', { - get: () => mongodbLegacy.GridFSBucket - }); - Object.defineProperty(exportsToOverride, 'ClientSession', { - get: () => mongodbLegacy.ClientSession - }); - Object.defineProperty(exportsToOverride, 'MongoClient', { get: () => mongodbLegacy.MongoClient }); - Object.defineProperty(exportsToOverride, 'ClientSession', { - get: () => mongodbLegacy.ClientSession - }); - Object.defineProperty(exportsToOverride, 'GridFSBucketWriteStream', { - get: () => mongodbLegacy.GridFSBucketWriteStream - }); - Object.defineProperty(exportsToOverride, 'OrderedBulkOperation', { - get: () => mongodbLegacy.OrderedBulkOperation - }); - Object.defineProperty(exportsToOverride, 'UnorderedBulkOperation', { - get: () => mongodbLegacy.UnorderedBulkOperation - }); -} - export * from '../src/admin'; export * from '../src/bson'; export * from '../src/bulk/common'; @@ -212,16 +138,3 @@ export * from '../src/write_concern'; // Must be last for precedence export * from '../src/index'; - -/** - * TODO(NODE-4979): ENABLE_MONGODB_LEGACY is 'true' by default for now - */ -const ENABLE_MONGODB_LEGACY = - typeof process.env.ENABLE_MONGODB_LEGACY === 'string' && process.env.ENABLE_MONGODB_LEGACY !== '' - ? process.env.ENABLE_MONGODB_LEGACY - : 'true'; - -if (ENABLE_MONGODB_LEGACY === 'true') { - // Override our own exports with the legacy patched ones - importMongoDBLegacy(module.exports); -} diff --git a/test/tools/runner/config.ts b/test/tools/runner/config.ts index 01dd893e39e..c536ea16906 100644 --- a/test/tools/runner/config.ts +++ b/test/tools/runner/config.ts @@ -4,7 +4,6 @@ import * as types from 'node:util/types'; import { expect } from 'chai'; import { type Context } from 'mocha'; import ConnectionString from 'mongodb-connection-string-url'; -import { type CompressorName } from 'mongodb-legacy'; import * as qs from 'querystring'; import * as url from 'url'; @@ -19,6 +18,7 @@ import { TopologyType, type WriteConcernSettings } from '../../../src'; +import { type CompressorName } from '../../../src/cmap/wire_protocol/compression'; import { HostAddress } from '../../../src/utils'; import { getEnvironmentalOptions } from '../utils'; import { type Filter } from './filters/filter'; diff --git a/test/unit/assorted/client.test.js b/test/unit/assorted/client.test.js index 9d40b7decd4..9013069e24b 100644 --- a/test/unit/assorted/client.test.js +++ b/test/unit/assorted/client.test.js @@ -7,7 +7,6 @@ const { MongoClient } = require('../../../src/mongo_client'); describe('Client (unit)', function () { let server, client; - const isLegacyMongoClient = MongoClient.name === 'LegacyMongoClient'; afterEach(async () => { await client.close(); @@ -40,12 +39,7 @@ describe('Client (unit)', function () { return client.connect().then(() => { expect(handshake).to.have.nested.property('client.driver'); - expect(handshake) - .nested.property('client.driver.name') - // Currently the tests import either MongoClient or LegacyMongoClient, the latter of which overrides the client metadata - // We still are confirming here that a third party wrapper can set the metadata but it will change depending on the - // MongoClient constructor that is imported - .to.equal(isLegacyMongoClient ? 'nodejs|mongodb-legacy|mongoose' : 'nodejs|mongoose'); + expect(handshake).nested.property('client.driver.name').to.equal('nodejs|mongoose'); expect(handshake) .nested.property('client.driver.version') .to.match(/|5.7.10/); diff --git a/test/unit/tools/mongodb-legacy.test.ts b/test/unit/tools/mongodb-legacy.test.ts deleted file mode 100644 index a397e521b57..00000000000 --- a/test/unit/tools/mongodb-legacy.test.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { expect } from 'chai'; - -import { - Admin, - AggregationCursor, - ChangeStream, - ClientSession, - Collection, - Db, - FindCursor, - GridFSBucket, - GridFSBucketWriteStream, - ListCollectionsCursor, - ListIndexesCursor, - MongoClient, - OrderedBulkOperation, - UnorderedBulkOperation -} from '../../mongodb'; - -const classesWithAsyncAPIs = new Map([ - ['Admin', Admin], - ['FindCursor', FindCursor], - ['ListCollectionsCursor', ListCollectionsCursor], - ['ListIndexesCursor', ListIndexesCursor], - ['AggregationCursor', AggregationCursor], - ['ChangeStream', ChangeStream], - ['Collection', Collection], - ['Db', Db], - ['GridFSBucket', GridFSBucket], - ['ClientSession', ClientSession], - ['GridFSBucketWriteStream', GridFSBucketWriteStream], - ['OrderedBulkOperation', OrderedBulkOperation], - ['UnorderedBulkOperation', UnorderedBulkOperation] -]); - -describe('mongodb-legacy', () => { - for (const [className, ctor] of classesWithAsyncAPIs) { - it(`test suite imports a ${className} with the legacy symbol`, () => { - // Just confirming that the mongodb-legacy import is correctly overriding the local copies - // of these classes from "src". See test/mongodb.ts for more. - expect(ctor.prototype).to.have.property(Symbol.for('@@mdb.callbacks.toLegacy')); - }); - } - - it('test suite imports a LegacyMongoClient as MongoClient', () => { - // Just confirming that the mongodb-legacy import is correctly overriding the local copy - // of MongoClient from "src". See test/mongodb.ts for more. - expect(MongoClient).to.have.property('name', 'LegacyMongoClient'); - }); -});