From 6b8202f9d8e21dc8c7eaeb4bf594c5c7d183ea0a Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Fri, 6 May 2022 16:06:49 -0400 Subject: [PATCH 01/11] feat(NODE-1837): add zstd compression option --- .evergreen/run-tests.sh | 1 + package-lock.json | 296 ++++++++++++++++++ package.json | 1 + src/cmap/message_stream.ts | 1 + src/cmap/wire_protocol/compression.ts | 25 +- src/deps.ts | 24 ++ .../types/community/changes_from_36.test-d.ts | 2 +- .../cmap/wire_protocol/compression.test.ts | 52 +++ 8 files changed, 398 insertions(+), 4 deletions(-) create mode 100644 test/unit/cmap/wire_protocol/compression.test.ts diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index cae34a6769a..f294586dd61 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -48,6 +48,7 @@ else fi npm install mongodb-client-encryption@">=2.2.0-alpha.0" +npm install @mongodb-js/zstd export AUTH=$AUTH export SINGLE_MONGOS_LB_URI=${SINGLE_MONGOS_LB_URI} diff --git a/package-lock.json b/package-lock.json index 18702c48309..41034fa047b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "4.6.0", "license": "Apache-2.0", "dependencies": { + "@mongodb-js/zstd": "^0.0.4", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", @@ -792,6 +793,209 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@mongodb-js/zstd": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.4.tgz", + "integrity": "sha512-7R2GpdKekCXYtu3eFAPLUNMhZonfH0naAaVCGvlyAxy9ODXyYxo7cDfTXgwp1ufMHa82SWiy0hWt58+g/B2UVQ==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@mongodb-js/zstd-android-arm-eabi": "0.0.4", + "@mongodb-js/zstd-android-arm64": "0.0.4", + "@mongodb-js/zstd-darwin-arm64": "0.0.4", + "@mongodb-js/zstd-darwin-x64": "0.0.4", + "@mongodb-js/zstd-freebsd-x64": "0.0.4", + "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.4", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.4", + "@mongodb-js/zstd-linux-arm64-musl": "0.0.4", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.4", + "@mongodb-js/zstd-linux-x64-musl": "0.0.4", + "@mongodb-js/zstd-win32-arm64-msvc": "0.0.4", + "@mongodb-js/zstd-win32-ia32-msvc": "0.0.4", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.4" + } + }, + "node_modules/@mongodb-js/zstd-android-arm-eabi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.4.tgz", + "integrity": "sha512-3Kir7Hl4oE2e/T3N6DJytW0+xU4Kg3K1n1Bx7Z72c5OTjdQDl5z641PhYhxwdocibkKSro98qj4YQqZNmtkg4Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-android-arm64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.4.tgz", + "integrity": "sha512-lFLx2x7v2pKdZovmh8Nmg/XLbTu8Jt7Q1dzcb8dC8PN8Kx/RANAvC3QLH3mfKGLdMsCzBDCsT8sJ1pCwJMrOxw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-darwin-arm64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.4.tgz", + "integrity": "sha512-hVehLy/PDzvNxvBO0R2T7pWrrLEzuX2AEeLzdhbJHKalEZZIHc1ede2+rpOJ7uoVwm0lAnWphBOvRQfEec6v2g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-darwin-x64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.4.tgz", + "integrity": "sha512-utfK07Q6c7kwDKqQOYdoOj5Sirb12yY9x3c+dnP8ukqD1ox5W9r9yXmz96dlLpE/X+hoVFjva1q9DREKwc+fLw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-freebsd-x64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.4.tgz", + "integrity": "sha512-yZa9ae0tLK1aAaPnJX67jifj1PX3diOI6QU+Bge3mIz4PsK/lgaTe0Vfw5kfn2Od3+9MHAeMyz8cl0uYaE2RzQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-linux-arm-gnueabihf": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.4.tgz", + "integrity": "sha512-EPXNb6WOUWUkjot21RJMI7a3Rbe9IHclLVoJod+F8K4o35dBm0/Zdw8OradGBR/13+1uCB5cpDRW20XHhGymxA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-linux-arm64-gnu": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.4.tgz", + "integrity": "sha512-oZiDFkXkAuDNGfKcG6pIkUew6S/axwkn3lrhFDI0+Q//Fh3ACIgPnIZJLe2+5Xu7DiyyNinKpD3KlJI1rDkqIQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-linux-arm64-musl": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.4.tgz", + "integrity": "sha512-6r/3a2R53t8UNcTxMDqDHWYzam3wCDunnodu6JYFQJZuThC4q7zDQJ9qqc+8OHEkYZ+hibtdtqJAv2us0rSTMg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-linux-x64-gnu": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.4.tgz", + "integrity": "sha512-YL0GYYyoqCRo77iuatC6NAxPHnHwBEjGxldlyehuaaVkE/NB80umVXCB4C+yGcuwQP0+za9Frmt3lyMmPBR1Uw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-linux-x64-musl": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.4.tgz", + "integrity": "sha512-vfQbsWQPnou4JZLYkAxDnDWdMZEwQJpYbDL+O90UokVlKiupoyvdNRxS7Lxbvynki5K9AS++Sd+Lv9ZagdIH+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-win32-arm64-msvc": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.4.tgz", + "integrity": "sha512-JF0KuCzES61GHFCIBlfMavnaR2bhILMBfM/7fVewe2nulCB2hLa4j/9yN7aULJwdtuoXxJ5qZTo8Nj1gIfO/Bw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@mongodb-js/zstd-win32-x64-msvc": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.4.tgz", + "integrity": "sha512-TazZBA64NBGQcYDXIrMCFhNAnViRDeoO3luFltwhF2NTw2M7nmIL4vxdM8WWhakCNeOYQOA/SDe/bgU3WljmIg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8647,6 +8851,98 @@ } } }, + "@mongodb-js/zstd": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.4.tgz", + "integrity": "sha512-7R2GpdKekCXYtu3eFAPLUNMhZonfH0naAaVCGvlyAxy9ODXyYxo7cDfTXgwp1ufMHa82SWiy0hWt58+g/B2UVQ==", + "requires": { + "@mongodb-js/zstd-android-arm-eabi": "0.0.4", + "@mongodb-js/zstd-android-arm64": "0.0.4", + "@mongodb-js/zstd-darwin-arm64": "0.0.4", + "@mongodb-js/zstd-darwin-x64": "0.0.4", + "@mongodb-js/zstd-freebsd-x64": "0.0.4", + "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.4", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.4", + "@mongodb-js/zstd-linux-arm64-musl": "0.0.4", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.4", + "@mongodb-js/zstd-linux-x64-musl": "0.0.4", + "@mongodb-js/zstd-win32-arm64-msvc": "0.0.4", + "@mongodb-js/zstd-win32-ia32-msvc": "0.0.4", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.4" + } + }, + "@mongodb-js/zstd-android-arm-eabi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.4.tgz", + "integrity": "sha512-3Kir7Hl4oE2e/T3N6DJytW0+xU4Kg3K1n1Bx7Z72c5OTjdQDl5z641PhYhxwdocibkKSro98qj4YQqZNmtkg4Q==", + "optional": true + }, + "@mongodb-js/zstd-android-arm64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.4.tgz", + "integrity": "sha512-lFLx2x7v2pKdZovmh8Nmg/XLbTu8Jt7Q1dzcb8dC8PN8Kx/RANAvC3QLH3mfKGLdMsCzBDCsT8sJ1pCwJMrOxw==", + "optional": true + }, + "@mongodb-js/zstd-darwin-arm64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.4.tgz", + "integrity": "sha512-hVehLy/PDzvNxvBO0R2T7pWrrLEzuX2AEeLzdhbJHKalEZZIHc1ede2+rpOJ7uoVwm0lAnWphBOvRQfEec6v2g==", + "optional": true + }, + "@mongodb-js/zstd-darwin-x64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.4.tgz", + "integrity": "sha512-utfK07Q6c7kwDKqQOYdoOj5Sirb12yY9x3c+dnP8ukqD1ox5W9r9yXmz96dlLpE/X+hoVFjva1q9DREKwc+fLw==", + "optional": true + }, + "@mongodb-js/zstd-freebsd-x64": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.4.tgz", + "integrity": "sha512-yZa9ae0tLK1aAaPnJX67jifj1PX3diOI6QU+Bge3mIz4PsK/lgaTe0Vfw5kfn2Od3+9MHAeMyz8cl0uYaE2RzQ==", + "optional": true + }, + "@mongodb-js/zstd-linux-arm-gnueabihf": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.4.tgz", + "integrity": "sha512-EPXNb6WOUWUkjot21RJMI7a3Rbe9IHclLVoJod+F8K4o35dBm0/Zdw8OradGBR/13+1uCB5cpDRW20XHhGymxA==", + "optional": true + }, + "@mongodb-js/zstd-linux-arm64-gnu": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.4.tgz", + "integrity": "sha512-oZiDFkXkAuDNGfKcG6pIkUew6S/axwkn3lrhFDI0+Q//Fh3ACIgPnIZJLe2+5Xu7DiyyNinKpD3KlJI1rDkqIQ==", + "optional": true + }, + "@mongodb-js/zstd-linux-arm64-musl": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.4.tgz", + "integrity": "sha512-6r/3a2R53t8UNcTxMDqDHWYzam3wCDunnodu6JYFQJZuThC4q7zDQJ9qqc+8OHEkYZ+hibtdtqJAv2us0rSTMg==", + "optional": true + }, + "@mongodb-js/zstd-linux-x64-gnu": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.4.tgz", + "integrity": "sha512-YL0GYYyoqCRo77iuatC6NAxPHnHwBEjGxldlyehuaaVkE/NB80umVXCB4C+yGcuwQP0+za9Frmt3lyMmPBR1Uw==", + "optional": true + }, + "@mongodb-js/zstd-linux-x64-musl": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.4.tgz", + "integrity": "sha512-vfQbsWQPnou4JZLYkAxDnDWdMZEwQJpYbDL+O90UokVlKiupoyvdNRxS7Lxbvynki5K9AS++Sd+Lv9ZagdIH+Q==", + "optional": true + }, + "@mongodb-js/zstd-win32-arm64-msvc": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.4.tgz", + "integrity": "sha512-JF0KuCzES61GHFCIBlfMavnaR2bhILMBfM/7fVewe2nulCB2hLa4j/9yN7aULJwdtuoXxJ5qZTo8Nj1gIfO/Bw==", + "optional": true + }, + "@mongodb-js/zstd-win32-x64-msvc": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.4.tgz", + "integrity": "sha512-TazZBA64NBGQcYDXIrMCFhNAnViRDeoO3luFltwhF2NTw2M7nmIL4vxdM8WWhakCNeOYQOA/SDe/bgU3WljmIg==", + "optional": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", diff --git a/package.json b/package.json index 3b6a9bc8c76..9dc335f8e65 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "email": "dbx-node@mongodb.com" }, "dependencies": { + "@mongodb-js/zstd": "^0.0.4", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", diff --git a/src/cmap/message_stream.ts b/src/cmap/message_stream.ts index 55ed847e95b..2319f50dfd4 100644 --- a/src/cmap/message_stream.ts +++ b/src/cmap/message_stream.ts @@ -40,6 +40,7 @@ export interface OperationDescription extends BSONSerializeOptions { socketTimeoutOverride?: boolean; agreedCompressor?: CompressorName; zlibCompressionLevel?: number; + zstdCompressionLevel?: number; $clusterTime?: Document; } diff --git a/src/cmap/wire_protocol/compression.ts b/src/cmap/wire_protocol/compression.ts index 556f7412f31..aa9ee31c7da 100644 --- a/src/cmap/wire_protocol/compression.ts +++ b/src/cmap/wire_protocol/compression.ts @@ -1,7 +1,7 @@ import * as zlib from 'zlib'; import { LEGACY_HELLO_COMMAND } from '../../constants'; -import { PKG_VERSION, Snappy } from '../../deps'; +import { PKG_VERSION, Snappy, ZStandard } from '../../deps'; import { MongoDecompressionError, MongoInvalidArgumentError } from '../../error'; import type { Callback } from '../../utils'; import type { OperationDescription } from '../message_stream'; @@ -10,7 +10,8 @@ import type { OperationDescription } from '../message_stream'; export const Compressor = Object.freeze({ none: 0, snappy: 1, - zlib: 2 + zlib: 2, + zstd: 3 } as const); /** @public */ @@ -61,6 +62,14 @@ export function compress( } zlib.deflate(dataToBeCompressed, zlibOptions, callback as zlib.CompressCallback); break; + case 'zstd': + if ('kModuleError' in ZStandard) { + return callback(ZStandard['kModuleError']); + } + ZStandard.compress(dataToBeCompressed, self.options.zstdCompressionLevel) + .then(buffer => callback(undefined, buffer)) + .catch(error => callback(error)); + break; default: throw new MongoInvalidArgumentError( `Unknown compressor ${self.options.agreedCompressor} failed to compress` @@ -74,7 +83,7 @@ export function decompress( compressedData: Buffer, callback: Callback ): void { - if (compressorID < 0 || compressorID > Math.max(2)) { + if (compressorID < 0 || compressorID > Math.max(3)) { throw new MongoDecompressionError( `Server sent message compressed using an unsupported compressor. (Received compressor ID ${compressorID})` ); @@ -95,6 +104,16 @@ export function decompress( } break; } + case Compressor.zstd: { + if ('kModuleError' in ZStandard) { + return callback(ZStandard['kModuleError']); + } + + ZStandard.decompress(compressedData) + .then(buffer => callback(undefined, buffer)) + .catch(error => callback(error)); + break; + } case Compressor.zlib: zlib.inflate(compressedData, callback as zlib.CompressCallback); break; diff --git a/src/deps.ts b/src/deps.ts index 36f4e20e4ab..4c6ce98bef2 100644 --- a/src/deps.ts +++ b/src/deps.ts @@ -44,6 +44,30 @@ export interface KerberosClient { unwrap: (challenge: string, callback?: Callback) => Promise | void; } +type ZStandardLib = { + /** + * Compress using zstd. + * @param buf - Buffer to be compressed. + */ + compress(buf: Buffer, level?: number): Promise; + + /** + * Decompress using zstd. + */ + decompress(buf: Buffer): Promise; +}; + +export let ZStandard: ZStandardLib | { kModuleError: MongoMissingDependencyError } = + makeErrorModule( + new MongoMissingDependencyError( + 'Optional module `@mongodb-js/zstd` not found. Please install it to enable zstd compression' + ) + ); + +try { + ZStandard = require('@mongodb-js/zstd'); +} catch {} // eslint-disable-line + type SnappyLib = { [PKG_VERSION]: { major: number; minor: number; patch: number }; diff --git a/test/types/community/changes_from_36.test-d.ts b/test/types/community/changes_from_36.test-d.ts index 74e9c14a1b4..d43c313097e 100644 --- a/test/types/community/changes_from_36.test-d.ts +++ b/test/types/community/changes_from_36.test-d.ts @@ -70,7 +70,7 @@ expectAssignable<((host: string, cert: PeerCertificate) => Error | undefined) | // compression options have simpler specification: // old way: {compression: { compressors: ['zlib', 'snappy'] }} expectType>(false); -expectType<('none' | 'snappy' | 'zlib')[] | string | undefined>(options.compressors); +expectType<('none' | 'snappy' | 'zlib' | 'zstd')[] | string | undefined>(options.compressors); // Removed cursor API const cursor = new MongoClient('').db().aggregate(); diff --git a/test/unit/cmap/wire_protocol/compression.test.ts b/test/unit/cmap/wire_protocol/compression.test.ts new file mode 100644 index 00000000000..77ebfdef109 --- /dev/null +++ b/test/unit/cmap/wire_protocol/compression.test.ts @@ -0,0 +1,52 @@ +import { expect } from 'chai'; + +import { compress, Compressor, decompress } from '../../../../src/cmap/wire_protocol/compression'; + +describe('compression', function () { + describe('.compress()', function () { + context('when the compression library is zstd', function () { + const buffer = Buffer.from('test'); + + context('when a level is not provided', function () { + const options = { options: { agreedCompressor: 'zstd' } }; + + it('compresses the data', function (done) { + compress(options, buffer, (error, data) => { + expect(error).to.not.exist; + expect(data).to.not.deep.equal(buffer); + done(); + }); + }); + }); + + context('when a level is provided', function () { + const options = { options: { agreedCompressor: 'zstd', zstdCompressionLevel: 2 } }; + + it('compresses the data', function (done) { + compress(options, buffer, (error, data) => { + expect(error).to.not.exist; + expect(data).to.not.deep.equal(buffer); + done(); + }); + }); + }); + }); + }); + + describe('.decompress()', function () { + context('when the compression library is zstd', function () { + const buffer = Buffer.from('test'); + const options = { options: { agreedCompressor: 'zstd' } }; + + it('decompresses the data', function (done) { + compress(options, buffer, (error, data) => { + expect(error).to.not.exist; + decompress(Compressor.zstd, data, (err, decompressed) => { + expect(decompressed).to.deep.equal(buffer); + done(); + }); + }); + }); + }); + }); +}); From e67851dee79e64807661c29dff6e2e3e71e218b7 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Tue, 10 May 2022 14:30:29 +0200 Subject: [PATCH 02/11] fix(NODE-1837): update zstd to 0.0.5 --- package-lock.json | 210 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 105 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41034fa047b..9a260cf112f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.6.0", "license": "Apache-2.0", "dependencies": { - "@mongodb-js/zstd": "^0.0.4", + "@mongodb-js/zstd": "^0.0.5", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", @@ -794,32 +794,31 @@ } }, "node_modules/@mongodb-js/zstd": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.4.tgz", - "integrity": "sha512-7R2GpdKekCXYtu3eFAPLUNMhZonfH0naAaVCGvlyAxy9ODXyYxo7cDfTXgwp1ufMHa82SWiy0hWt58+g/B2UVQ==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.5.tgz", + "integrity": "sha512-Qz6kJl+IKNvsQmY/JTsilyAubUODA02GG8AjuP3oJvJzHurVljrRDY1zTQfDkgoI2wUimT/qOpg2NEnuyqH05A==", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@mongodb-js/zstd-android-arm-eabi": "0.0.4", - "@mongodb-js/zstd-android-arm64": "0.0.4", - "@mongodb-js/zstd-darwin-arm64": "0.0.4", - "@mongodb-js/zstd-darwin-x64": "0.0.4", - "@mongodb-js/zstd-freebsd-x64": "0.0.4", - "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.4", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.4", - "@mongodb-js/zstd-linux-arm64-musl": "0.0.4", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.4", - "@mongodb-js/zstd-linux-x64-musl": "0.0.4", - "@mongodb-js/zstd-win32-arm64-msvc": "0.0.4", - "@mongodb-js/zstd-win32-ia32-msvc": "0.0.4", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.4" + "@mongodb-js/zstd-android-arm-eabi": "0.0.5", + "@mongodb-js/zstd-android-arm64": "0.0.5", + "@mongodb-js/zstd-darwin-arm64": "0.0.5", + "@mongodb-js/zstd-darwin-x64": "0.0.5", + "@mongodb-js/zstd-freebsd-x64": "0.0.5", + "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.5", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.5", + "@mongodb-js/zstd-linux-arm64-musl": "0.0.5", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.5", + "@mongodb-js/zstd-linux-x64-musl": "0.0.5", + "@mongodb-js/zstd-win32-arm64-msvc": "0.0.5", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.5" } }, "node_modules/@mongodb-js/zstd-android-arm-eabi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.4.tgz", - "integrity": "sha512-3Kir7Hl4oE2e/T3N6DJytW0+xU4Kg3K1n1Bx7Z72c5OTjdQDl5z641PhYhxwdocibkKSro98qj4YQqZNmtkg4Q==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.5.tgz", + "integrity": "sha512-mn5ErKXQhu7Ea14YyjyrlN5amy7zwdtwpvc2NsTVPB+4rIOVsVXSvWOLpoDI/0V9u666EmVTxiBVaVqqbzAzmw==", "cpu": [ "arm" ], @@ -832,9 +831,9 @@ } }, "node_modules/@mongodb-js/zstd-android-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.4.tgz", - "integrity": "sha512-lFLx2x7v2pKdZovmh8Nmg/XLbTu8Jt7Q1dzcb8dC8PN8Kx/RANAvC3QLH3mfKGLdMsCzBDCsT8sJ1pCwJMrOxw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.5.tgz", + "integrity": "sha512-dZDGs+iOrIysZUz9JmWmUYblxyLDGmavBqBIps7fwoFEOLi49+PaF2zWRyxgNJnKz7xRRrQQTb4a+2COQNGq7A==", "cpu": [ "arm64" ], @@ -847,9 +846,9 @@ } }, "node_modules/@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.4.tgz", - "integrity": "sha512-hVehLy/PDzvNxvBO0R2T7pWrrLEzuX2AEeLzdhbJHKalEZZIHc1ede2+rpOJ7uoVwm0lAnWphBOvRQfEec6v2g==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.5.tgz", + "integrity": "sha512-3gv6qSWhIe6gdfOzrz+uqoacnM/5AuSwJbMzW8v5ysyAj/jvOdbGNM2BVecVZiGHe42v3f/cjnAjQ2jIcVKHcg==", "cpu": [ "arm64" ], @@ -862,9 +861,9 @@ } }, "node_modules/@mongodb-js/zstd-darwin-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.4.tgz", - "integrity": "sha512-utfK07Q6c7kwDKqQOYdoOj5Sirb12yY9x3c+dnP8ukqD1ox5W9r9yXmz96dlLpE/X+hoVFjva1q9DREKwc+fLw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.5.tgz", + "integrity": "sha512-doxtroZb4dSQRy1dqm+Fj+mtqlNuks2goSTE/nxmeIv3d89RhHLwNGXBwosaITwlEtgcLKwpMWSQGBs+n7Klfg==", "cpu": [ "x64" ], @@ -877,9 +876,9 @@ } }, "node_modules/@mongodb-js/zstd-freebsd-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.4.tgz", - "integrity": "sha512-yZa9ae0tLK1aAaPnJX67jifj1PX3diOI6QU+Bge3mIz4PsK/lgaTe0Vfw5kfn2Od3+9MHAeMyz8cl0uYaE2RzQ==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.5.tgz", + "integrity": "sha512-xe22UiA6ynkb8nabfSB0cguLd7m1Bjae4eY7tyXpdXguiUstqj3gAeil9U9vWze4IG0gFYOiEZXtk1unRov0aw==", "cpu": [ "x64" ], @@ -892,9 +891,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-arm-gnueabihf": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.4.tgz", - "integrity": "sha512-EPXNb6WOUWUkjot21RJMI7a3Rbe9IHclLVoJod+F8K4o35dBm0/Zdw8OradGBR/13+1uCB5cpDRW20XHhGymxA==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.5.tgz", + "integrity": "sha512-IrsV4brnWWPpG5J/QmvG/UyhsMiVI0aEOQF2Czjjq4kzVhR19q2Tuz4vfJ2ER0rQm4557UgaXNtUmzhlp03aPQ==", "cpu": [ "arm" ], @@ -907,9 +906,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.4.tgz", - "integrity": "sha512-oZiDFkXkAuDNGfKcG6pIkUew6S/axwkn3lrhFDI0+Q//Fh3ACIgPnIZJLe2+5Xu7DiyyNinKpD3KlJI1rDkqIQ==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.5.tgz", + "integrity": "sha512-0s9X9boTfAsygv43+f0NT4gUUZAdV61wjN86+zx5V5INNPG3XSrfeyvf+7Wnb3LWdHuGzbLPO5nXGdV9B9euxA==", "cpu": [ "arm64" ], @@ -922,9 +921,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-arm64-musl": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.4.tgz", - "integrity": "sha512-6r/3a2R53t8UNcTxMDqDHWYzam3wCDunnodu6JYFQJZuThC4q7zDQJ9qqc+8OHEkYZ+hibtdtqJAv2us0rSTMg==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.5.tgz", + "integrity": "sha512-pW6f5ra+F37aW7DtOBvWZ5KgOrahWaKK6+vWv5TyrGRBdrTKfn6w5NHS22jcCUB5KtTtghNQBmH0Y6LSej0cLg==", "cpu": [ "arm64" ], @@ -937,9 +936,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.4.tgz", - "integrity": "sha512-YL0GYYyoqCRo77iuatC6NAxPHnHwBEjGxldlyehuaaVkE/NB80umVXCB4C+yGcuwQP0+za9Frmt3lyMmPBR1Uw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.5.tgz", + "integrity": "sha512-jdOxxh97R+UMSvB+EpwsHPpZlTawDHDEJQ9OpqNgAA8z9X10ykknQJbwuhE8TWOJdF0/MG6maPaEhS8YtBXKtQ==", "cpu": [ "x64" ], @@ -952,9 +951,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-x64-musl": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.4.tgz", - "integrity": "sha512-vfQbsWQPnou4JZLYkAxDnDWdMZEwQJpYbDL+O90UokVlKiupoyvdNRxS7Lxbvynki5K9AS++Sd+Lv9ZagdIH+Q==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.5.tgz", + "integrity": "sha512-Ob9TuDYJMT4XcrU+48xu3z4bXTAsjn+x0GYtLRU41jT/nTAteRS4pFXkNM8BrML4zZSQH1N7GC4LY6V8Pf9NKw==", "cpu": [ "x64" ], @@ -967,9 +966,9 @@ } }, "node_modules/@mongodb-js/zstd-win32-arm64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.4.tgz", - "integrity": "sha512-JF0KuCzES61GHFCIBlfMavnaR2bhILMBfM/7fVewe2nulCB2hLa4j/9yN7aULJwdtuoXxJ5qZTo8Nj1gIfO/Bw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.5.tgz", + "integrity": "sha512-EMgaXdo/RYJK6zTl5NiMEb0YK5XAnbUp5wpAWqWhZieqn6vtl52x6iPaslagXtgkOmjx1J3mTz3HRj47YkmYtw==", "cpu": [ "arm64" ], @@ -982,9 +981,9 @@ } }, "node_modules/@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.4.tgz", - "integrity": "sha512-TazZBA64NBGQcYDXIrMCFhNAnViRDeoO3luFltwhF2NTw2M7nmIL4vxdM8WWhakCNeOYQOA/SDe/bgU3WljmIg==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.5.tgz", + "integrity": "sha512-p7FOd0jrvdvRs/Wzt+jkTsaENJkU6aW8vxBb7iYCDhWs2cSbkM8yl82J+Ho5pglNDhNGMVSPFcQ/+13S6+4ToA==", "cpu": [ "x64" ], @@ -8852,95 +8851,94 @@ } }, "@mongodb-js/zstd": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.4.tgz", - "integrity": "sha512-7R2GpdKekCXYtu3eFAPLUNMhZonfH0naAaVCGvlyAxy9ODXyYxo7cDfTXgwp1ufMHa82SWiy0hWt58+g/B2UVQ==", - "requires": { - "@mongodb-js/zstd-android-arm-eabi": "0.0.4", - "@mongodb-js/zstd-android-arm64": "0.0.4", - "@mongodb-js/zstd-darwin-arm64": "0.0.4", - "@mongodb-js/zstd-darwin-x64": "0.0.4", - "@mongodb-js/zstd-freebsd-x64": "0.0.4", - "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.4", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.4", - "@mongodb-js/zstd-linux-arm64-musl": "0.0.4", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.4", - "@mongodb-js/zstd-linux-x64-musl": "0.0.4", - "@mongodb-js/zstd-win32-arm64-msvc": "0.0.4", - "@mongodb-js/zstd-win32-ia32-msvc": "0.0.4", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.4" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.5.tgz", + "integrity": "sha512-Qz6kJl+IKNvsQmY/JTsilyAubUODA02GG8AjuP3oJvJzHurVljrRDY1zTQfDkgoI2wUimT/qOpg2NEnuyqH05A==", + "requires": { + "@mongodb-js/zstd-android-arm-eabi": "0.0.5", + "@mongodb-js/zstd-android-arm64": "0.0.5", + "@mongodb-js/zstd-darwin-arm64": "0.0.5", + "@mongodb-js/zstd-darwin-x64": "0.0.5", + "@mongodb-js/zstd-freebsd-x64": "0.0.5", + "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.5", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.5", + "@mongodb-js/zstd-linux-arm64-musl": "0.0.5", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.5", + "@mongodb-js/zstd-linux-x64-musl": "0.0.5", + "@mongodb-js/zstd-win32-arm64-msvc": "0.0.5", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.5" } }, "@mongodb-js/zstd-android-arm-eabi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.4.tgz", - "integrity": "sha512-3Kir7Hl4oE2e/T3N6DJytW0+xU4Kg3K1n1Bx7Z72c5OTjdQDl5z641PhYhxwdocibkKSro98qj4YQqZNmtkg4Q==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.5.tgz", + "integrity": "sha512-mn5ErKXQhu7Ea14YyjyrlN5amy7zwdtwpvc2NsTVPB+4rIOVsVXSvWOLpoDI/0V9u666EmVTxiBVaVqqbzAzmw==", "optional": true }, "@mongodb-js/zstd-android-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.4.tgz", - "integrity": "sha512-lFLx2x7v2pKdZovmh8Nmg/XLbTu8Jt7Q1dzcb8dC8PN8Kx/RANAvC3QLH3mfKGLdMsCzBDCsT8sJ1pCwJMrOxw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.5.tgz", + "integrity": "sha512-dZDGs+iOrIysZUz9JmWmUYblxyLDGmavBqBIps7fwoFEOLi49+PaF2zWRyxgNJnKz7xRRrQQTb4a+2COQNGq7A==", "optional": true }, "@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.4.tgz", - "integrity": "sha512-hVehLy/PDzvNxvBO0R2T7pWrrLEzuX2AEeLzdhbJHKalEZZIHc1ede2+rpOJ7uoVwm0lAnWphBOvRQfEec6v2g==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.5.tgz", + "integrity": "sha512-3gv6qSWhIe6gdfOzrz+uqoacnM/5AuSwJbMzW8v5ysyAj/jvOdbGNM2BVecVZiGHe42v3f/cjnAjQ2jIcVKHcg==", "optional": true }, "@mongodb-js/zstd-darwin-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.4.tgz", - "integrity": "sha512-utfK07Q6c7kwDKqQOYdoOj5Sirb12yY9x3c+dnP8ukqD1ox5W9r9yXmz96dlLpE/X+hoVFjva1q9DREKwc+fLw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.5.tgz", + "integrity": "sha512-doxtroZb4dSQRy1dqm+Fj+mtqlNuks2goSTE/nxmeIv3d89RhHLwNGXBwosaITwlEtgcLKwpMWSQGBs+n7Klfg==", "optional": true }, "@mongodb-js/zstd-freebsd-x64": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.4.tgz", - "integrity": "sha512-yZa9ae0tLK1aAaPnJX67jifj1PX3diOI6QU+Bge3mIz4PsK/lgaTe0Vfw5kfn2Od3+9MHAeMyz8cl0uYaE2RzQ==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.5.tgz", + "integrity": "sha512-xe22UiA6ynkb8nabfSB0cguLd7m1Bjae4eY7tyXpdXguiUstqj3gAeil9U9vWze4IG0gFYOiEZXtk1unRov0aw==", "optional": true }, "@mongodb-js/zstd-linux-arm-gnueabihf": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.4.tgz", - "integrity": "sha512-EPXNb6WOUWUkjot21RJMI7a3Rbe9IHclLVoJod+F8K4o35dBm0/Zdw8OradGBR/13+1uCB5cpDRW20XHhGymxA==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.5.tgz", + "integrity": "sha512-IrsV4brnWWPpG5J/QmvG/UyhsMiVI0aEOQF2Czjjq4kzVhR19q2Tuz4vfJ2ER0rQm4557UgaXNtUmzhlp03aPQ==", "optional": true }, "@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.4.tgz", - "integrity": "sha512-oZiDFkXkAuDNGfKcG6pIkUew6S/axwkn3lrhFDI0+Q//Fh3ACIgPnIZJLe2+5Xu7DiyyNinKpD3KlJI1rDkqIQ==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.5.tgz", + "integrity": "sha512-0s9X9boTfAsygv43+f0NT4gUUZAdV61wjN86+zx5V5INNPG3XSrfeyvf+7Wnb3LWdHuGzbLPO5nXGdV9B9euxA==", "optional": true }, "@mongodb-js/zstd-linux-arm64-musl": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.4.tgz", - "integrity": "sha512-6r/3a2R53t8UNcTxMDqDHWYzam3wCDunnodu6JYFQJZuThC4q7zDQJ9qqc+8OHEkYZ+hibtdtqJAv2us0rSTMg==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.5.tgz", + "integrity": "sha512-pW6f5ra+F37aW7DtOBvWZ5KgOrahWaKK6+vWv5TyrGRBdrTKfn6w5NHS22jcCUB5KtTtghNQBmH0Y6LSej0cLg==", "optional": true }, "@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.4.tgz", - "integrity": "sha512-YL0GYYyoqCRo77iuatC6NAxPHnHwBEjGxldlyehuaaVkE/NB80umVXCB4C+yGcuwQP0+za9Frmt3lyMmPBR1Uw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.5.tgz", + "integrity": "sha512-jdOxxh97R+UMSvB+EpwsHPpZlTawDHDEJQ9OpqNgAA8z9X10ykknQJbwuhE8TWOJdF0/MG6maPaEhS8YtBXKtQ==", "optional": true }, "@mongodb-js/zstd-linux-x64-musl": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.4.tgz", - "integrity": "sha512-vfQbsWQPnou4JZLYkAxDnDWdMZEwQJpYbDL+O90UokVlKiupoyvdNRxS7Lxbvynki5K9AS++Sd+Lv9ZagdIH+Q==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.5.tgz", + "integrity": "sha512-Ob9TuDYJMT4XcrU+48xu3z4bXTAsjn+x0GYtLRU41jT/nTAteRS4pFXkNM8BrML4zZSQH1N7GC4LY6V8Pf9NKw==", "optional": true }, "@mongodb-js/zstd-win32-arm64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.4.tgz", - "integrity": "sha512-JF0KuCzES61GHFCIBlfMavnaR2bhILMBfM/7fVewe2nulCB2hLa4j/9yN7aULJwdtuoXxJ5qZTo8Nj1gIfO/Bw==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.5.tgz", + "integrity": "sha512-EMgaXdo/RYJK6zTl5NiMEb0YK5XAnbUp5wpAWqWhZieqn6vtl52x6iPaslagXtgkOmjx1J3mTz3HRj47YkmYtw==", "optional": true }, "@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.4.tgz", - "integrity": "sha512-TazZBA64NBGQcYDXIrMCFhNAnViRDeoO3luFltwhF2NTw2M7nmIL4vxdM8WWhakCNeOYQOA/SDe/bgU3WljmIg==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.5.tgz", + "integrity": "sha512-p7FOd0jrvdvRs/Wzt+jkTsaENJkU6aW8vxBb7iYCDhWs2cSbkM8yl82J+Ho5pglNDhNGMVSPFcQ/+13S6+4ToA==", "optional": true }, "@nodelib/fs.scandir": { diff --git a/package.json b/package.json index 9dc335f8e65..49ba73a49aa 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "email": "dbx-node@mongodb.com" }, "dependencies": { - "@mongodb-js/zstd": "^0.0.4", + "@mongodb-js/zstd": "^0.0.5", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", From f43e3c3e18365a24e298bafb7a4eaf25f7552495 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Tue, 10 May 2022 16:13:12 +0200 Subject: [PATCH 03/11] test(NODE-1837): add compression evg tasks --- .evergreen/config.in.yml | 21 +++++++++++++++ .evergreen/config.yml | 36 ++++++++++++++++++++++++++ .evergreen/generate_evergreen_tasks.js | 17 ++++++++++++ .evergreen/run-tests.sh | 9 +++++++ 4 files changed, 83 insertions(+) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index de48ac71b29..86864e3739b 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -101,6 +101,7 @@ functions: ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ REQUIRE_API_VERSION=${REQUIRE_API_VERSION} \ LOAD_BALANCER=${LOAD_BALANCER} \ + COMPRESSOR=${COMPRESSOR} \ bash ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh # run-orchestration generates expansion file with the MONGODB_URI for the cluster - command: expansions.update @@ -239,6 +240,26 @@ functions: LOAD_BALANCER="${LOAD_BALANCER}" \ bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh + "run-compression-tests": + - command: shell.exec + type: test + params: + working_dir: src + timeout_secs: 300 + script: | + ${PREPARE_SHELL} + + MONGODB_URI="${MONGODB_URI}" \ + AUTH=${AUTH} \ + SSL=${SSL} \ + MONGODB_API_VERSION="${MONGODB_API_VERSION}" \ + NODE_VERSION=${NODE_VERSION} \ + TOPOLOGY="${TOPOLOGY}" \ + COMPRESSOR="${COMPRESSOR}" \ + SKIP_DEPS=${SKIP_DEPS|1} \ + NO_EXIT=${NO_EXIT|1} \ + bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh + "run lint checks": - command: subprocess.exec type: test diff --git a/.evergreen/config.yml b/.evergreen/config.yml index d9ab4255567..43c0fc71553 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -84,6 +84,7 @@ functions: ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ REQUIRE_API_VERSION=${REQUIRE_API_VERSION} \ LOAD_BALANCER=${LOAD_BALANCER} \ + COMPRESSOR=${COMPRESSOR} \ bash ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh - command: expansions.update params: @@ -214,6 +215,25 @@ functions: NO_EXIT=${NO_EXIT|1} \ LOAD_BALANCER="${LOAD_BALANCER}" \ bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh + run-compression-tests: + - command: shell.exec + type: test + params: + working_dir: src + timeout_secs: 300 + script: | + ${PREPARE_SHELL} + + MONGODB_URI="${MONGODB_URI}" \ + AUTH=${AUTH} \ + SSL=${SSL} \ + MONGODB_API_VERSION="${MONGODB_API_VERSION}" \ + NODE_VERSION=${NODE_VERSION} \ + TOPOLOGY="${TOPOLOGY}" \ + COMPRESSOR="${COMPRESSOR}" \ + SKIP_DEPS=${SKIP_DEPS|1} \ + NO_EXIT=${NO_EXIT|1} \ + bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh run lint checks: - command: subprocess.exec type: test @@ -1118,6 +1138,19 @@ tasks: - func: start-load-balancer - func: run-lb-tests - func: stop-load-balancer + - name: test-zstd-compression + tags: + - latest + - zstd + commands: + - func: install dependencies + - func: bootstrap mongo-orchestration + vars: + VERSION: latest + TOPOLOGY: standalone + AUTH: auth + COMPRESSOR: zstd + - func: run-compression-tests - name: test-auth-kerberos tags: - auth @@ -1960,6 +1993,7 @@ buildvariants: - test-latest-server-v1-api - test-atlas-connectivity - test-atlas-data-lake + - test-zstd-compression - test-auth-kerberos - test-auth-ldap - test-socks5 @@ -2015,6 +2049,7 @@ buildvariants: - test-atlas-connectivity - test-atlas-data-lake - test-load-balancer + - test-zstd-compression - test-auth-kerberos - test-auth-ldap - test-socks5 @@ -2068,6 +2103,7 @@ buildvariants: - test-3.6-sharded_cluster - test-latest-server-v1-api - test-atlas-data-lake + - test-zstd-compression - test-socks5 - test-socks5-tls - test-tls-support-latest diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index c819c38f9ed..a14d40543be 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -144,6 +144,23 @@ TASKS.push( { func: 'stop-load-balancer' } ] }, + { + name: 'test-zstd-compression', + tags: ['latest', 'zstd'], + commands: [ + { func: 'install dependencies' }, + { + func: 'bootstrap mongo-orchestration', + vars: { + VERSION: 'latest', + TOPOLOGY: 'standalone', + AUTH: 'auth', + COMPRESSOR: 'zstd' + } + }, + { func: 'run-compression-tests' } + ] + }, { name: 'test-auth-kerberos', tags: ['auth', 'kerberos'], diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index f294586dd61..932ea8723e4 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -15,6 +15,7 @@ set -o errexit # Exit the script with error if any of the commands fail AUTH=${AUTH:-noauth} MONGODB_URI=${MONGODB_URI:-} TEST_NPM_SCRIPT=${TEST_NPM_SCRIPT:-check:integration-coverage} +COMPRESSOR=${COMPRESSOR:-} if [[ -z "${NO_EXIT}" ]]; then TEST_NPM_SCRIPT="$TEST_NPM_SCRIPT -- --exit" fi @@ -35,6 +36,14 @@ else source "${PROJECT_DIRECTORY}/.evergreen/init-nvm.sh" fi +if [ "$COMPRESSOR" != "" ]; then + if [[ "$MONGODB_URI" == *"?"* ]]; then + export MONGODB_URI="${MONGODB_URI}&compressors=${COMPRESSOR}" + else + export MONGODB_URI="${MONGODB_URI}/?compressors=${COMPRESSOR}" + fi +fi + # only run FLE tets on hosts we explicitly choose to test on if [[ -z "${CLIENT_ENCRYPTION}" ]]; then unset AWS_ACCESS_KEY_ID; From deb5c50cfc66a4656cc6163a24b14da694bf032b Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Tue, 10 May 2022 16:21:37 +0200 Subject: [PATCH 04/11] fix(NODE-1837): standalone -> server --- .evergreen/config.yml | 2 +- .evergreen/generate_evergreen_tasks.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 43c0fc71553..430efce2a65 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1147,7 +1147,7 @@ tasks: - func: bootstrap mongo-orchestration vars: VERSION: latest - TOPOLOGY: standalone + TOPOLOGY: server AUTH: auth COMPRESSOR: zstd - func: run-compression-tests diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index a14d40543be..451b863e973 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -153,7 +153,7 @@ TASKS.push( func: 'bootstrap mongo-orchestration', vars: { VERSION: 'latest', - TOPOLOGY: 'standalone', + TOPOLOGY: 'server', AUTH: 'auth', COMPRESSOR: 'zstd' } From 831d05c7a7578033bd0532b42ac4c381746b4cb1 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Wed, 11 May 2022 14:13:13 +0200 Subject: [PATCH 05/11] fix(NODE-1837): update for pr comments --- .evergreen/config.yml | 48 ++++++++++++++++-------- .evergreen/generate_evergreen_tasks.js | 37 +++++++++--------- .evergreen/run-tests.sh | 2 + package.json | 2 +- src/cmap/wire_protocol/compression.ts | 18 +++++---- test/tools/runner/hooks/configuration.js | 3 +- 6 files changed, 68 insertions(+), 42 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 430efce2a65..f9bc7f4a5c7 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1138,19 +1138,6 @@ tasks: - func: start-load-balancer - func: run-lb-tests - func: stop-load-balancer - - name: test-zstd-compression - tags: - - latest - - zstd - commands: - - func: install dependencies - - func: bootstrap mongo-orchestration - vars: - VERSION: latest - TOPOLOGY: server - AUTH: auth - COMPRESSOR: zstd - - func: run-compression-tests - name: test-auth-kerberos tags: - auth @@ -1187,6 +1174,32 @@ tasks: - func: run socks5 tests vars: SSL: ssl + - name: test-zstd-compression + tags: + - latest + - zstd + commands: + - func: install dependencies + - func: bootstrap mongo-orchestration + vars: + VERSION: latest + TOPOLOGY: server + AUTH: auth + COMPRESSOR: zstd + - func: run-compression-tests + - name: test-snappy-compression + tags: + - latest + - snappy + commands: + - func: install dependencies + - func: bootstrap mongo-orchestration + vars: + VERSION: latest + TOPOLOGY: server + AUTH: auth + COMPRESSOR: snappy + - func: run-compression-tests - name: test-tls-support-latest tags: - tls-support @@ -1993,11 +2006,12 @@ buildvariants: - test-latest-server-v1-api - test-atlas-connectivity - test-atlas-data-lake - - test-zstd-compression - test-auth-kerberos - test-auth-ldap - test-socks5 - test-socks5-tls + - test-zstd-compression + - test-snappy-compression - test-tls-support-latest - test-tls-support-6.0 - test-tls-support-5.0 @@ -2049,11 +2063,12 @@ buildvariants: - test-atlas-connectivity - test-atlas-data-lake - test-load-balancer - - test-zstd-compression - test-auth-kerberos - test-auth-ldap - test-socks5 - test-socks5-tls + - test-zstd-compression + - test-snappy-compression - test-tls-support-latest - test-tls-support-6.0 - test-tls-support-5.0 @@ -2103,9 +2118,10 @@ buildvariants: - test-3.6-sharded_cluster - test-latest-server-v1-api - test-atlas-data-lake - - test-zstd-compression - test-socks5 - test-socks5-tls + - test-zstd-compression + - test-snappy-compression - test-tls-support-latest - test-tls-support-6.0 - test-tls-support-5.0 diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 451b863e973..b7ec218df29 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -144,23 +144,6 @@ TASKS.push( { func: 'stop-load-balancer' } ] }, - { - name: 'test-zstd-compression', - tags: ['latest', 'zstd'], - commands: [ - { func: 'install dependencies' }, - { - func: 'bootstrap mongo-orchestration', - vars: { - VERSION: 'latest', - TOPOLOGY: 'server', - AUTH: 'auth', - COMPRESSOR: 'zstd' - } - }, - { func: 'run-compression-tests' } - ] - }, { name: 'test-auth-kerberos', tags: ['auth', 'kerberos'], @@ -206,6 +189,26 @@ TASKS.push( ] ); +['zstd', 'snappy'].forEach(compressor => { + TASKS.push({ + name: `test-${compressor}-compression`, + tags: ['latest', compressor], + commands: [ + { func: 'install dependencies' }, + { + func: 'bootstrap mongo-orchestration', + vars: { + VERSION: 'latest', + TOPOLOGY: 'server', + AUTH: 'auth', + COMPRESSOR: compressor + } + }, + { func: 'run-compression-tests' } + ] + }); +}); + TLS_VERSIONS.forEach(VERSION => { TASKS.push({ name: `test-tls-support-${VERSION}`, diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 932ea8723e4..94f92d5704d 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -58,6 +58,7 @@ fi npm install mongodb-client-encryption@">=2.2.0-alpha.0" npm install @mongodb-js/zstd +npm install snappy export AUTH=$AUTH export SINGLE_MONGOS_LB_URI=${SINGLE_MONGOS_LB_URI} @@ -66,5 +67,6 @@ export MONGODB_API_VERSION=${MONGODB_API_VERSION} export MONGODB_URI=${MONGODB_URI} export LOAD_BALANCER=${LOAD_BALANCER} export TEST_CSFLE=${TEST_CSFLE} +export COMPRESSOR=${COMPRESSOR} # Do not add quotes, due to the way NO_EXIT is handled npm run ${TEST_NPM_SCRIPT} diff --git a/package.json b/package.json index 49ba73a49aa..5ca88f2bb06 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "email": "dbx-node@mongodb.com" }, "dependencies": { - "@mongodb-js/zstd": "^0.0.5", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", @@ -36,6 +35,7 @@ "@istanbuljs/nyc-config-typescript": "^1.0.2", "@microsoft/api-extractor": "^7.20.0", "@microsoft/tsdoc-config": "^0.15.2", + "@mongodb-js/zstd": "^0.0.5", "@types/chai": "^4.3.0", "@types/chai-subset": "^1.3.3", "@types/express": "^4.17.13", diff --git a/src/cmap/wire_protocol/compression.ts b/src/cmap/wire_protocol/compression.ts index aa9ee31c7da..6edeb537338 100644 --- a/src/cmap/wire_protocol/compression.ts +++ b/src/cmap/wire_protocol/compression.ts @@ -33,6 +33,8 @@ export const uncompressibleCommands = new Set([ 'copydb' ]); +const MAX_COMPRESSOR_ID = 3; + // Facilitate compressing a message using an agreed compressor export function compress( self: { options: OperationDescription & zlib.ZlibOptions }, @@ -66,9 +68,10 @@ export function compress( if ('kModuleError' in ZStandard) { return callback(ZStandard['kModuleError']); } - ZStandard.compress(dataToBeCompressed, self.options.zstdCompressionLevel) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + ZStandard.compress(dataToBeCompressed, self.options.zstdCompressionLevel).then( + buffer => callback(undefined, buffer), + error => callback(error) + ); break; default: throw new MongoInvalidArgumentError( @@ -83,7 +86,7 @@ export function decompress( compressedData: Buffer, callback: Callback ): void { - if (compressorID < 0 || compressorID > Math.max(3)) { + if (compressorID < 0 || compressorID > MAX_COMPRESSOR_ID) { throw new MongoDecompressionError( `Server sent message compressed using an unsupported compressor. (Received compressor ID ${compressorID})` ); @@ -109,9 +112,10 @@ export function decompress( return callback(ZStandard['kModuleError']); } - ZStandard.decompress(compressedData) - .then(buffer => callback(undefined, buffer)) - .catch(error => callback(error)); + ZStandard.decompress(compressedData).then( + buffer => callback(undefined, buffer), + error => callback(error) + ); break; } case Compressor.zlib: diff --git a/test/tools/runner/hooks/configuration.js b/test/tools/runner/hooks/configuration.js index f7ad51d89d9..107068ae7c5 100644 --- a/test/tools/runner/hooks/configuration.js +++ b/test/tools/runner/hooks/configuration.js @@ -140,7 +140,8 @@ const testConfigBeforeHook = async function () { kerberos: process.env.KRB5_PRINCIPAL != null, ldap: MONGODB_URI.includes('authMechanism=PLAIN'), ocsp: process.env.OCSP_TLS_SHOULD_SUCCEED != null && process.env.CA_FILE != null, - socks5: MONGODB_URI.includes('proxyHost=') + socks5: MONGODB_URI.includes('proxyHost='), + compressor: process.env.COMPRESSOR }; console.error(inspect(currentEnv, { colors: true })); From e5fd68238abb920a60e6edab8c163297e8cef808 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Thu, 12 May 2022 15:44:21 +0200 Subject: [PATCH 06/11] test(NODE-1837): use replica set topology --- .evergreen/config.yml | 4 ++-- .evergreen/generate_evergreen_tasks.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index f9bc7f4a5c7..bbf80529f9a 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1183,7 +1183,7 @@ tasks: - func: bootstrap mongo-orchestration vars: VERSION: latest - TOPOLOGY: server + TOPOLOGY: replica_set AUTH: auth COMPRESSOR: zstd - func: run-compression-tests @@ -1196,7 +1196,7 @@ tasks: - func: bootstrap mongo-orchestration vars: VERSION: latest - TOPOLOGY: server + TOPOLOGY: replica_set AUTH: auth COMPRESSOR: snappy - func: run-compression-tests diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index b7ec218df29..6d6a5e8daa6 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -199,7 +199,7 @@ TASKS.push( func: 'bootstrap mongo-orchestration', vars: { VERSION: 'latest', - TOPOLOGY: 'server', + TOPOLOGY: 'replica_set', AUTH: 'auth', COMPRESSOR: compressor } From 464cfbb6ab1806cac3d2c231368300de601cc160 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Thu, 12 May 2022 15:54:10 +0200 Subject: [PATCH 07/11] feat(NODE-1837): adding level option to client and uri --- src/cmap/connection.ts | 4 ++++ src/cmap/stream_description.ts | 1 + src/connection_string.ts | 4 ++++ src/mongo_client.ts | 27 +++++++++++++++++++++++++++ 4 files changed, 36 insertions(+) diff --git a/src/cmap/connection.ts b/src/cmap/connection.ts index 670fcd49940..c1b25832054 100644 --- a/src/cmap/connection.ts +++ b/src/cmap/connection.ts @@ -795,6 +795,10 @@ function write( if (conn[kDescription].zlibCompressionLevel) { operationDescription.zlibCompressionLevel = conn[kDescription].zlibCompressionLevel; } + + if (conn[kDescription].zstdCompressionLevel) { + operationDescription.zstdCompressionLevel = conn[kDescription].zstdCompressionLevel; + } } if (typeof options.socketTimeoutMS === 'number') { diff --git a/src/cmap/stream_description.ts b/src/cmap/stream_description.ts index c5fbec0f404..bfa654bde58 100644 --- a/src/cmap/stream_description.ts +++ b/src/cmap/stream_description.ts @@ -36,6 +36,7 @@ export class StreamDescription { __nodejs_mock_server__?: boolean; zlibCompressionLevel?: number; + zstdCompressionLevel?: number; constructor(address: string, options?: StreamDescriptionOptions) { this.address = address; diff --git a/src/connection_string.ts b/src/connection_string.ts index 261ebacb8df..934296ea33b 100644 --- a/src/connection_string.ts +++ b/src/connection_string.ts @@ -1210,6 +1210,10 @@ export const OPTIONS = { default: 0, type: 'int' }, + zstdCompressionLevel: { + default: 3, + type: 'int' + }, // Custom types for modifying core behavior connectionType: { type: 'any' }, srvPoller: { type: 'any' }, diff --git a/src/mongo_client.ts b/src/mongo_client.ts index 2b04f01e639..695ef02d237 100644 --- a/src/mongo_client.ts +++ b/src/mongo_client.ts @@ -127,6 +127,32 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC compressors?: CompressorName[] | string; /** An integer that specifies the compression level if using zlib for network compression. */ zlibCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined; + /** An integer specifying zstd compression level. */ + zstdCompressionLevel?: + | 0 + | 1 + | 2 + | 3 + | 4 + | 5 + | 6 + | 7 + | 8 + | 9 + | 10 + | 11 + | 12 + | 13 + | 14 + | 15 + | 16 + | 17 + | 18 + | 19 + | 20 + | 21 + | 22 + | undefined; /** The maximum number of hosts to connect to when using an srv connection string, a setting of `0` means unlimited hosts */ srvMaxHosts?: number; /** @@ -672,6 +698,7 @@ export interface MongoOptions | 'tlsInsecure' | 'waitQueueTimeoutMS' | 'zlibCompressionLevel' + | 'zstdCompressionLevel' > >, SupportedNodeConnectionOptions { From 4fa444fa7b771f4654d8f7fe4f57562de4eadc28 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Mon, 16 May 2022 16:05:24 +0200 Subject: [PATCH 08/11] test(NODE-1837): check for zstd magic number --- test/unit/cmap/wire_protocol/compression.test.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/unit/cmap/wire_protocol/compression.test.ts b/test/unit/cmap/wire_protocol/compression.test.ts index 77ebfdef109..b5f82dafed9 100644 --- a/test/unit/cmap/wire_protocol/compression.test.ts +++ b/test/unit/cmap/wire_protocol/compression.test.ts @@ -13,7 +13,9 @@ describe('compression', function () { it('compresses the data', function (done) { compress(options, buffer, (error, data) => { expect(error).to.not.exist; - expect(data).to.not.deep.equal(buffer); + const zstdMagicNumber = data.reverse().toString('hex').substring(16, 26); + // Zstd magic number first set of bytes is is 0xFD2FB528 + expect(zstdMagicNumber).to.equal('00fd2fb528'); done(); }); }); @@ -25,7 +27,9 @@ describe('compression', function () { it('compresses the data', function (done) { compress(options, buffer, (error, data) => { expect(error).to.not.exist; - expect(data).to.not.deep.equal(buffer); + const zstdMagicNumber = data.reverse().toString('hex').substring(16, 26); + // Zstd magic number first set of bytes is is 0xFD2FB528 + expect(zstdMagicNumber).to.equal('00fd2fb528'); done(); }); }); From 5112841aef93d0dffd27e0410a1632fffbb65a36 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Mon, 16 May 2022 16:11:29 +0200 Subject: [PATCH 09/11] fix(NODE-1837): remove zstc level option --- src/cmap/connection.ts | 4 ---- src/cmap/message_stream.ts | 1 - src/cmap/stream_description.ts | 1 - src/cmap/wire_protocol/compression.ts | 3 ++- src/connection_string.ts | 4 ---- src/mongo_client.ts | 27 --------------------------- 6 files changed, 2 insertions(+), 38 deletions(-) diff --git a/src/cmap/connection.ts b/src/cmap/connection.ts index c1b25832054..670fcd49940 100644 --- a/src/cmap/connection.ts +++ b/src/cmap/connection.ts @@ -795,10 +795,6 @@ function write( if (conn[kDescription].zlibCompressionLevel) { operationDescription.zlibCompressionLevel = conn[kDescription].zlibCompressionLevel; } - - if (conn[kDescription].zstdCompressionLevel) { - operationDescription.zstdCompressionLevel = conn[kDescription].zstdCompressionLevel; - } } if (typeof options.socketTimeoutMS === 'number') { diff --git a/src/cmap/message_stream.ts b/src/cmap/message_stream.ts index 2319f50dfd4..55ed847e95b 100644 --- a/src/cmap/message_stream.ts +++ b/src/cmap/message_stream.ts @@ -40,7 +40,6 @@ export interface OperationDescription extends BSONSerializeOptions { socketTimeoutOverride?: boolean; agreedCompressor?: CompressorName; zlibCompressionLevel?: number; - zstdCompressionLevel?: number; $clusterTime?: Document; } diff --git a/src/cmap/stream_description.ts b/src/cmap/stream_description.ts index bfa654bde58..c5fbec0f404 100644 --- a/src/cmap/stream_description.ts +++ b/src/cmap/stream_description.ts @@ -36,7 +36,6 @@ export class StreamDescription { __nodejs_mock_server__?: boolean; zlibCompressionLevel?: number; - zstdCompressionLevel?: number; constructor(address: string, options?: StreamDescriptionOptions) { this.address = address; diff --git a/src/cmap/wire_protocol/compression.ts b/src/cmap/wire_protocol/compression.ts index 6edeb537338..9f98051fcb7 100644 --- a/src/cmap/wire_protocol/compression.ts +++ b/src/cmap/wire_protocol/compression.ts @@ -34,6 +34,7 @@ export const uncompressibleCommands = new Set([ ]); const MAX_COMPRESSOR_ID = 3; +const ZSTD_COMPRESSION_LEVEL = 3; // Facilitate compressing a message using an agreed compressor export function compress( @@ -68,7 +69,7 @@ export function compress( if ('kModuleError' in ZStandard) { return callback(ZStandard['kModuleError']); } - ZStandard.compress(dataToBeCompressed, self.options.zstdCompressionLevel).then( + ZStandard.compress(dataToBeCompressed, ZSTD_COMPRESSION_LEVEL).then( buffer => callback(undefined, buffer), error => callback(error) ); diff --git a/src/connection_string.ts b/src/connection_string.ts index 934296ea33b..261ebacb8df 100644 --- a/src/connection_string.ts +++ b/src/connection_string.ts @@ -1210,10 +1210,6 @@ export const OPTIONS = { default: 0, type: 'int' }, - zstdCompressionLevel: { - default: 3, - type: 'int' - }, // Custom types for modifying core behavior connectionType: { type: 'any' }, srvPoller: { type: 'any' }, diff --git a/src/mongo_client.ts b/src/mongo_client.ts index 695ef02d237..2b04f01e639 100644 --- a/src/mongo_client.ts +++ b/src/mongo_client.ts @@ -127,32 +127,6 @@ export interface MongoClientOptions extends BSONSerializeOptions, SupportedNodeC compressors?: CompressorName[] | string; /** An integer that specifies the compression level if using zlib for network compression. */ zlibCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | undefined; - /** An integer specifying zstd compression level. */ - zstdCompressionLevel?: - | 0 - | 1 - | 2 - | 3 - | 4 - | 5 - | 6 - | 7 - | 8 - | 9 - | 10 - | 11 - | 12 - | 13 - | 14 - | 15 - | 16 - | 17 - | 18 - | 19 - | 20 - | 21 - | 22 - | undefined; /** The maximum number of hosts to connect to when using an srv connection string, a setting of `0` means unlimited hosts */ srvMaxHosts?: number; /** @@ -698,7 +672,6 @@ export interface MongoOptions | 'tlsInsecure' | 'waitQueueTimeoutMS' | 'zlibCompressionLevel' - | 'zstdCompressionLevel' > >, SupportedNodeConnectionOptions { From b45361f71abf8eec694632750d1cb9f298b847d9 Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Wed, 18 May 2022 22:22:58 +0200 Subject: [PATCH 10/11] chore(NODE-1837): bump zstd to 0.0.7 --- package-lock.json | 271 +++++++++++----------------------------------- package.json | 2 +- 2 files changed, 62 insertions(+), 211 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a260cf112f..7c855d1a33f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "4.6.0", "license": "Apache-2.0", "dependencies": { - "@mongodb-js/zstd": "^0.0.5", "bson": "^4.6.3", "denque": "^2.0.1", "mongodb-connection-string-url": "^2.5.2", @@ -20,6 +19,7 @@ "@istanbuljs/nyc-config-typescript": "^1.0.2", "@microsoft/api-extractor": "^7.20.0", "@microsoft/tsdoc-config": "^0.15.2", + "@mongodb-js/zstd": "^0.0.7", "@types/chai": "^4.3.0", "@types/chai-subset": "^1.3.3", "@types/express": "^4.17.13", @@ -794,64 +794,29 @@ } }, "node_modules/@mongodb-js/zstd": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.5.tgz", - "integrity": "sha512-Qz6kJl+IKNvsQmY/JTsilyAubUODA02GG8AjuP3oJvJzHurVljrRDY1zTQfDkgoI2wUimT/qOpg2NEnuyqH05A==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.7.tgz", + "integrity": "sha512-JTumrb3BaIBAXTuYQdGvbjvZT38FOmHAA3zKKxpSOPn80AO00cK2taW/5IajJL162k5q6VlT2dp43dCENeYrFw==", + "dev": true, "engines": { "node": ">= 10" }, "optionalDependencies": { - "@mongodb-js/zstd-android-arm-eabi": "0.0.5", - "@mongodb-js/zstd-android-arm64": "0.0.5", - "@mongodb-js/zstd-darwin-arm64": "0.0.5", - "@mongodb-js/zstd-darwin-x64": "0.0.5", - "@mongodb-js/zstd-freebsd-x64": "0.0.5", - "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.5", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.5", - "@mongodb-js/zstd-linux-arm64-musl": "0.0.5", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.5", - "@mongodb-js/zstd-linux-x64-musl": "0.0.5", - "@mongodb-js/zstd-win32-arm64-msvc": "0.0.5", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.5" - } - }, - "node_modules/@mongodb-js/zstd-android-arm-eabi": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.5.tgz", - "integrity": "sha512-mn5ErKXQhu7Ea14YyjyrlN5amy7zwdtwpvc2NsTVPB+4rIOVsVXSvWOLpoDI/0V9u666EmVTxiBVaVqqbzAzmw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@mongodb-js/zstd-android-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.5.tgz", - "integrity": "sha512-dZDGs+iOrIysZUz9JmWmUYblxyLDGmavBqBIps7fwoFEOLi49+PaF2zWRyxgNJnKz7xRRrQQTb4a+2COQNGq7A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "@mongodb-js/zstd-darwin-arm64": "0.0.7", + "@mongodb-js/zstd-darwin-x64": "0.0.7", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.7", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.7", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.7" } }, "node_modules/@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.5.tgz", - "integrity": "sha512-3gv6qSWhIe6gdfOzrz+uqoacnM/5AuSwJbMzW8v5ysyAj/jvOdbGNM2BVecVZiGHe42v3f/cjnAjQ2jIcVKHcg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.7.tgz", + "integrity": "sha512-cCncJPPzqxIBRQhZi/EJhuwGALH6whD9tBsUFzFun69w/bZJ+DjESE4pGp2nnx3scTuhGJoxJp52DY/7I/6XGQ==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -861,12 +826,13 @@ } }, "node_modules/@mongodb-js/zstd-darwin-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.5.tgz", - "integrity": "sha512-doxtroZb4dSQRy1dqm+Fj+mtqlNuks2goSTE/nxmeIv3d89RhHLwNGXBwosaITwlEtgcLKwpMWSQGBs+n7Klfg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.7.tgz", + "integrity": "sha512-+BkGlG8JsjIpNfCFrVuR7hVv5of5kTG+H0+xDPtqcu9JLW2EtFTFDU+t31TyR/8/mUeiboHPFMr42wl4lFkgQw==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "darwin" @@ -875,58 +841,14 @@ "node": ">= 10" } }, - "node_modules/@mongodb-js/zstd-freebsd-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.5.tgz", - "integrity": "sha512-xe22UiA6ynkb8nabfSB0cguLd7m1Bjae4eY7tyXpdXguiUstqj3gAeil9U9vWze4IG0gFYOiEZXtk1unRov0aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@mongodb-js/zstd-linux-arm-gnueabihf": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.5.tgz", - "integrity": "sha512-IrsV4brnWWPpG5J/QmvG/UyhsMiVI0aEOQF2Czjjq4kzVhR19q2Tuz4vfJ2ER0rQm4557UgaXNtUmzhlp03aPQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.5.tgz", - "integrity": "sha512-0s9X9boTfAsygv43+f0NT4gUUZAdV61wjN86+zx5V5INNPG3XSrfeyvf+7Wnb3LWdHuGzbLPO5nXGdV9B9euxA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@mongodb-js/zstd-linux-arm64-musl": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.5.tgz", - "integrity": "sha512-pW6f5ra+F37aW7DtOBvWZ5KgOrahWaKK6+vWv5TyrGRBdrTKfn6w5NHS22jcCUB5KtTtghNQBmH0Y6LSej0cLg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.7.tgz", + "integrity": "sha512-ejZ9po5oBaYuFBD4lSGrGlsHq5N8ulh6peAEWMn6asdhJA99QE7zhB+mXXmRZ2G0j4ICA3p+4Oj8LP+0pAIEZg==", "cpu": [ "arm64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -936,27 +858,13 @@ } }, "node_modules/@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.5.tgz", - "integrity": "sha512-jdOxxh97R+UMSvB+EpwsHPpZlTawDHDEJQ9OpqNgAA8z9X10ykknQJbwuhE8TWOJdF0/MG6maPaEhS8YtBXKtQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@mongodb-js/zstd-linux-x64-musl": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.5.tgz", - "integrity": "sha512-Ob9TuDYJMT4XcrU+48xu3z4bXTAsjn+x0GYtLRU41jT/nTAteRS4pFXkNM8BrML4zZSQH1N7GC4LY6V8Pf9NKw==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.7.tgz", + "integrity": "sha512-rfKIV5FxjJ9KEMqCrwlV+9x1ofsbINVFGTn0va7KbAeP3pbW0yfB8ZvO3hWo2nkEpwNDT0Mdk67k6zsokO/bsQ==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "linux" @@ -965,28 +873,14 @@ "node": ">= 10" } }, - "node_modules/@mongodb-js/zstd-win32-arm64-msvc": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.5.tgz", - "integrity": "sha512-EMgaXdo/RYJK6zTl5NiMEb0YK5XAnbUp5wpAWqWhZieqn6vtl52x6iPaslagXtgkOmjx1J3mTz3HRj47YkmYtw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.5.tgz", - "integrity": "sha512-p7FOd0jrvdvRs/Wzt+jkTsaENJkU6aW8vxBb7iYCDhWs2cSbkM8yl82J+Ho5pglNDhNGMVSPFcQ/+13S6+4ToA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.7.tgz", + "integrity": "sha512-/bg9FyjaUK5xDZsYi/hmT46P1Gm77+aE9hbLZ7H2hZCRBg1wLzyaxUMz8Fyfct1W3GyRaj0duMeZMal0KhPMCw==", "cpu": [ "x64" ], + "dev": true, "optional": true, "os": [ "win32" @@ -8851,94 +8745,51 @@ } }, "@mongodb-js/zstd": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.5.tgz", - "integrity": "sha512-Qz6kJl+IKNvsQmY/JTsilyAubUODA02GG8AjuP3oJvJzHurVljrRDY1zTQfDkgoI2wUimT/qOpg2NEnuyqH05A==", - "requires": { - "@mongodb-js/zstd-android-arm-eabi": "0.0.5", - "@mongodb-js/zstd-android-arm64": "0.0.5", - "@mongodb-js/zstd-darwin-arm64": "0.0.5", - "@mongodb-js/zstd-darwin-x64": "0.0.5", - "@mongodb-js/zstd-freebsd-x64": "0.0.5", - "@mongodb-js/zstd-linux-arm-gnueabihf": "0.0.5", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.5", - "@mongodb-js/zstd-linux-arm64-musl": "0.0.5", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.5", - "@mongodb-js/zstd-linux-x64-musl": "0.0.5", - "@mongodb-js/zstd-win32-arm64-msvc": "0.0.5", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.5" - } - }, - "@mongodb-js/zstd-android-arm-eabi": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm-eabi/-/zstd-android-arm-eabi-0.0.5.tgz", - "integrity": "sha512-mn5ErKXQhu7Ea14YyjyrlN5amy7zwdtwpvc2NsTVPB+4rIOVsVXSvWOLpoDI/0V9u666EmVTxiBVaVqqbzAzmw==", - "optional": true - }, - "@mongodb-js/zstd-android-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-android-arm64/-/zstd-android-arm64-0.0.5.tgz", - "integrity": "sha512-dZDGs+iOrIysZUz9JmWmUYblxyLDGmavBqBIps7fwoFEOLi49+PaF2zWRyxgNJnKz7xRRrQQTb4a+2COQNGq7A==", - "optional": true + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.7.tgz", + "integrity": "sha512-JTumrb3BaIBAXTuYQdGvbjvZT38FOmHAA3zKKxpSOPn80AO00cK2taW/5IajJL162k5q6VlT2dp43dCENeYrFw==", + "dev": true, + "requires": { + "@mongodb-js/zstd-darwin-arm64": "0.0.7", + "@mongodb-js/zstd-darwin-x64": "0.0.7", + "@mongodb-js/zstd-linux-arm64-gnu": "0.0.7", + "@mongodb-js/zstd-linux-x64-gnu": "0.0.7", + "@mongodb-js/zstd-win32-x64-msvc": "0.0.7" + } }, "@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.5.tgz", - "integrity": "sha512-3gv6qSWhIe6gdfOzrz+uqoacnM/5AuSwJbMzW8v5ysyAj/jvOdbGNM2BVecVZiGHe42v3f/cjnAjQ2jIcVKHcg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.7.tgz", + "integrity": "sha512-cCncJPPzqxIBRQhZi/EJhuwGALH6whD9tBsUFzFun69w/bZJ+DjESE4pGp2nnx3scTuhGJoxJp52DY/7I/6XGQ==", + "dev": true, "optional": true }, "@mongodb-js/zstd-darwin-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.5.tgz", - "integrity": "sha512-doxtroZb4dSQRy1dqm+Fj+mtqlNuks2goSTE/nxmeIv3d89RhHLwNGXBwosaITwlEtgcLKwpMWSQGBs+n7Klfg==", - "optional": true - }, - "@mongodb-js/zstd-freebsd-x64": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-freebsd-x64/-/zstd-freebsd-x64-0.0.5.tgz", - "integrity": "sha512-xe22UiA6ynkb8nabfSB0cguLd7m1Bjae4eY7tyXpdXguiUstqj3gAeil9U9vWze4IG0gFYOiEZXtk1unRov0aw==", - "optional": true - }, - "@mongodb-js/zstd-linux-arm-gnueabihf": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm-gnueabihf/-/zstd-linux-arm-gnueabihf-0.0.5.tgz", - "integrity": "sha512-IrsV4brnWWPpG5J/QmvG/UyhsMiVI0aEOQF2Czjjq4kzVhR19q2Tuz4vfJ2ER0rQm4557UgaXNtUmzhlp03aPQ==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.7.tgz", + "integrity": "sha512-+BkGlG8JsjIpNfCFrVuR7hVv5of5kTG+H0+xDPtqcu9JLW2EtFTFDU+t31TyR/8/mUeiboHPFMr42wl4lFkgQw==", + "dev": true, "optional": true }, "@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.5.tgz", - "integrity": "sha512-0s9X9boTfAsygv43+f0NT4gUUZAdV61wjN86+zx5V5INNPG3XSrfeyvf+7Wnb3LWdHuGzbLPO5nXGdV9B9euxA==", - "optional": true - }, - "@mongodb-js/zstd-linux-arm64-musl": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-musl/-/zstd-linux-arm64-musl-0.0.5.tgz", - "integrity": "sha512-pW6f5ra+F37aW7DtOBvWZ5KgOrahWaKK6+vWv5TyrGRBdrTKfn6w5NHS22jcCUB5KtTtghNQBmH0Y6LSej0cLg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.7.tgz", + "integrity": "sha512-ejZ9po5oBaYuFBD4lSGrGlsHq5N8ulh6peAEWMn6asdhJA99QE7zhB+mXXmRZ2G0j4ICA3p+4Oj8LP+0pAIEZg==", + "dev": true, "optional": true }, "@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.5.tgz", - "integrity": "sha512-jdOxxh97R+UMSvB+EpwsHPpZlTawDHDEJQ9OpqNgAA8z9X10ykknQJbwuhE8TWOJdF0/MG6maPaEhS8YtBXKtQ==", - "optional": true - }, - "@mongodb-js/zstd-linux-x64-musl": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-musl/-/zstd-linux-x64-musl-0.0.5.tgz", - "integrity": "sha512-Ob9TuDYJMT4XcrU+48xu3z4bXTAsjn+x0GYtLRU41jT/nTAteRS4pFXkNM8BrML4zZSQH1N7GC4LY6V8Pf9NKw==", - "optional": true - }, - "@mongodb-js/zstd-win32-arm64-msvc": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-arm64-msvc/-/zstd-win32-arm64-msvc-0.0.5.tgz", - "integrity": "sha512-EMgaXdo/RYJK6zTl5NiMEb0YK5XAnbUp5wpAWqWhZieqn6vtl52x6iPaslagXtgkOmjx1J3mTz3HRj47YkmYtw==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.7.tgz", + "integrity": "sha512-rfKIV5FxjJ9KEMqCrwlV+9x1ofsbINVFGTn0va7KbAeP3pbW0yfB8ZvO3hWo2nkEpwNDT0Mdk67k6zsokO/bsQ==", + "dev": true, "optional": true }, "@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.5.tgz", - "integrity": "sha512-p7FOd0jrvdvRs/Wzt+jkTsaENJkU6aW8vxBb7iYCDhWs2cSbkM8yl82J+Ho5pglNDhNGMVSPFcQ/+13S6+4ToA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.7.tgz", + "integrity": "sha512-/bg9FyjaUK5xDZsYi/hmT46P1Gm77+aE9hbLZ7H2hZCRBg1wLzyaxUMz8Fyfct1W3GyRaj0duMeZMal0KhPMCw==", + "dev": true, "optional": true }, "@nodelib/fs.scandir": { diff --git a/package.json b/package.json index 5ca88f2bb06..29c4dcc010b 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@istanbuljs/nyc-config-typescript": "^1.0.2", "@microsoft/api-extractor": "^7.20.0", "@microsoft/tsdoc-config": "^0.15.2", - "@mongodb-js/zstd": "^0.0.5", + "@mongodb-js/zstd": "^0.0.7", "@types/chai": "^4.3.0", "@types/chai-subset": "^1.3.3", "@types/express": "^4.17.13", From 67e02c37b49a83c315198dd479aa47ce1dd3ef1c Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Wed, 18 May 2022 23:02:06 +0200 Subject: [PATCH 11/11] chore(NODE-1837): update zstd to 1.0.0 --- package-lock.json | 94 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c855d1a33f..08400b8161c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@istanbuljs/nyc-config-typescript": "^1.0.2", "@microsoft/api-extractor": "^7.20.0", "@microsoft/tsdoc-config": "^0.15.2", - "@mongodb-js/zstd": "^0.0.7", + "@mongodb-js/zstd": "^1.0.0", "@types/chai": "^4.3.0", "@types/chai-subset": "^1.3.3", "@types/express": "^4.17.13", @@ -794,25 +794,25 @@ } }, "node_modules/@mongodb-js/zstd": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.7.tgz", - "integrity": "sha512-JTumrb3BaIBAXTuYQdGvbjvZT38FOmHAA3zKKxpSOPn80AO00cK2taW/5IajJL162k5q6VlT2dp43dCENeYrFw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-1.0.0.tgz", + "integrity": "sha512-vApdTgi6gxRjgKpKm8z5wtZ5dGNTfh4AewomjMhHanDvCOkv3HQHjJhoodtecdqZnaJm3WcvTYgcL53rQAsOaA==", "dev": true, "engines": { "node": ">= 10" }, "optionalDependencies": { - "@mongodb-js/zstd-darwin-arm64": "0.0.7", - "@mongodb-js/zstd-darwin-x64": "0.0.7", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.7", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.7", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.7" + "@mongodb-js/zstd-darwin-arm64": "1.0.0", + "@mongodb-js/zstd-darwin-x64": "1.0.0", + "@mongodb-js/zstd-linux-arm64-gnu": "1.0.0", + "@mongodb-js/zstd-linux-x64-gnu": "1.0.0", + "@mongodb-js/zstd-win32-x64-msvc": "1.0.0" } }, "node_modules/@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.7.tgz", - "integrity": "sha512-cCncJPPzqxIBRQhZi/EJhuwGALH6whD9tBsUFzFun69w/bZJ+DjESE4pGp2nnx3scTuhGJoxJp52DY/7I/6XGQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-WRVWJ5BZOcxmbHRPFhUPAIAb8BVLDvH1dJzL3+Wl+xPDevu6eoFKZ6ZPsyyZe4aBFnVgS4bqlpwdQ4ShzrY+HQ==", "cpu": [ "arm64" ], @@ -826,9 +826,9 @@ } }, "node_modules/@mongodb-js/zstd-darwin-x64": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.7.tgz", - "integrity": "sha512-+BkGlG8JsjIpNfCFrVuR7hVv5of5kTG+H0+xDPtqcu9JLW2EtFTFDU+t31TyR/8/mUeiboHPFMr42wl4lFkgQw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-1.0.0.tgz", + "integrity": "sha512-7cInPU8m3by4EawyaDe3GD0WytrTeS9+B3JX2e+XeDChf9RXzFs+zXmVu51lIq8aqS2J+LwYoBPV/xxPdxTS1g==", "cpu": [ "x64" ], @@ -842,9 +842,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.7.tgz", - "integrity": "sha512-ejZ9po5oBaYuFBD4lSGrGlsHq5N8ulh6peAEWMn6asdhJA99QE7zhB+mXXmRZ2G0j4ICA3p+4Oj8LP+0pAIEZg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-qGL8mp2UyJNqGObgnh3NBzAxScVSQxn7bZsLrkSWy1xTytXgAgPmmnmIPhIH5q7Aa/sk797bkIprO8G0bRrNTQ==", "cpu": [ "arm64" ], @@ -858,9 +858,9 @@ } }, "node_modules/@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.7.tgz", - "integrity": "sha512-rfKIV5FxjJ9KEMqCrwlV+9x1ofsbINVFGTn0va7KbAeP3pbW0yfB8ZvO3hWo2nkEpwNDT0Mdk67k6zsokO/bsQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-5oBwpDjA3pY0XMo6uqr59ZOJjdkY4Yay6szzIRBzk//z1XpWjPs2Lf2zfRlnlzH7Q3EZEoHqFkk+kH9ZvHBC4Q==", "cpu": [ "x64" ], @@ -874,9 +874,9 @@ } }, "node_modules/@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.7.tgz", - "integrity": "sha512-/bg9FyjaUK5xDZsYi/hmT46P1Gm77+aE9hbLZ7H2hZCRBg1wLzyaxUMz8Fyfct1W3GyRaj0duMeZMal0KhPMCw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-c/7D7l0pw9yIsCmuUDxRaJxT9cmxn3A9u1GeslHuz/DRSMVHY6Sb5srMJlBviUF1Q7YGK5teM03JoHso4+vLlw==", "cpu": [ "x64" ], @@ -8745,50 +8745,50 @@ } }, "@mongodb-js/zstd": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-0.0.7.tgz", - "integrity": "sha512-JTumrb3BaIBAXTuYQdGvbjvZT38FOmHAA3zKKxpSOPn80AO00cK2taW/5IajJL162k5q6VlT2dp43dCENeYrFw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd/-/zstd-1.0.0.tgz", + "integrity": "sha512-vApdTgi6gxRjgKpKm8z5wtZ5dGNTfh4AewomjMhHanDvCOkv3HQHjJhoodtecdqZnaJm3WcvTYgcL53rQAsOaA==", "dev": true, "requires": { - "@mongodb-js/zstd-darwin-arm64": "0.0.7", - "@mongodb-js/zstd-darwin-x64": "0.0.7", - "@mongodb-js/zstd-linux-arm64-gnu": "0.0.7", - "@mongodb-js/zstd-linux-x64-gnu": "0.0.7", - "@mongodb-js/zstd-win32-x64-msvc": "0.0.7" + "@mongodb-js/zstd-darwin-arm64": "1.0.0", + "@mongodb-js/zstd-darwin-x64": "1.0.0", + "@mongodb-js/zstd-linux-arm64-gnu": "1.0.0", + "@mongodb-js/zstd-linux-x64-gnu": "1.0.0", + "@mongodb-js/zstd-win32-x64-msvc": "1.0.0" } }, "@mongodb-js/zstd-darwin-arm64": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-0.0.7.tgz", - "integrity": "sha512-cCncJPPzqxIBRQhZi/EJhuwGALH6whD9tBsUFzFun69w/bZJ+DjESE4pGp2nnx3scTuhGJoxJp52DY/7I/6XGQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-arm64/-/zstd-darwin-arm64-1.0.0.tgz", + "integrity": "sha512-WRVWJ5BZOcxmbHRPFhUPAIAb8BVLDvH1dJzL3+Wl+xPDevu6eoFKZ6ZPsyyZe4aBFnVgS4bqlpwdQ4ShzrY+HQ==", "dev": true, "optional": true }, "@mongodb-js/zstd-darwin-x64": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-0.0.7.tgz", - "integrity": "sha512-+BkGlG8JsjIpNfCFrVuR7hVv5of5kTG+H0+xDPtqcu9JLW2EtFTFDU+t31TyR/8/mUeiboHPFMr42wl4lFkgQw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-darwin-x64/-/zstd-darwin-x64-1.0.0.tgz", + "integrity": "sha512-7cInPU8m3by4EawyaDe3GD0WytrTeS9+B3JX2e+XeDChf9RXzFs+zXmVu51lIq8aqS2J+LwYoBPV/xxPdxTS1g==", "dev": true, "optional": true }, "@mongodb-js/zstd-linux-arm64-gnu": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-0.0.7.tgz", - "integrity": "sha512-ejZ9po5oBaYuFBD4lSGrGlsHq5N8ulh6peAEWMn6asdhJA99QE7zhB+mXXmRZ2G0j4ICA3p+4Oj8LP+0pAIEZg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-arm64-gnu/-/zstd-linux-arm64-gnu-1.0.0.tgz", + "integrity": "sha512-qGL8mp2UyJNqGObgnh3NBzAxScVSQxn7bZsLrkSWy1xTytXgAgPmmnmIPhIH5q7Aa/sk797bkIprO8G0bRrNTQ==", "dev": true, "optional": true }, "@mongodb-js/zstd-linux-x64-gnu": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-0.0.7.tgz", - "integrity": "sha512-rfKIV5FxjJ9KEMqCrwlV+9x1ofsbINVFGTn0va7KbAeP3pbW0yfB8ZvO3hWo2nkEpwNDT0Mdk67k6zsokO/bsQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-linux-x64-gnu/-/zstd-linux-x64-gnu-1.0.0.tgz", + "integrity": "sha512-5oBwpDjA3pY0XMo6uqr59ZOJjdkY4Yay6szzIRBzk//z1XpWjPs2Lf2zfRlnlzH7Q3EZEoHqFkk+kH9ZvHBC4Q==", "dev": true, "optional": true }, "@mongodb-js/zstd-win32-x64-msvc": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-0.0.7.tgz", - "integrity": "sha512-/bg9FyjaUK5xDZsYi/hmT46P1Gm77+aE9hbLZ7H2hZCRBg1wLzyaxUMz8Fyfct1W3GyRaj0duMeZMal0KhPMCw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/zstd-win32-x64-msvc/-/zstd-win32-x64-msvc-1.0.0.tgz", + "integrity": "sha512-c/7D7l0pw9yIsCmuUDxRaJxT9cmxn3A9u1GeslHuz/DRSMVHY6Sb5srMJlBviUF1Q7YGK5teM03JoHso4+vLlw==", "dev": true, "optional": true }, diff --git a/package.json b/package.json index 29c4dcc010b..3666aa34f72 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@istanbuljs/nyc-config-typescript": "^1.0.2", "@microsoft/api-extractor": "^7.20.0", "@microsoft/tsdoc-config": "^0.15.2", - "@mongodb-js/zstd": "^0.0.7", + "@mongodb-js/zstd": "^1.0.0", "@types/chai": "^4.3.0", "@types/chai-subset": "^1.3.3", "@types/express": "^4.17.13",