From f2a4ff870178fbbe8de616c45891368665f29f4b Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Wed, 24 Mar 2021 23:00:16 +0100 Subject: [PATCH] fix: no infinite loop on windows requiring optional deps NODE-3050 --- lib/core/connection/utils.js | 23 +++++++++-------------- lib/core/index.js | 2 +- lib/core/utils.js | 7 ++----- package-lock.json | 22 +++++++--------------- package.json | 9 +-------- 5 files changed, 20 insertions(+), 43 deletions(-) diff --git a/lib/core/connection/utils.js b/lib/core/connection/utils.js index 2f3d889f43..3362b6984d 100644 --- a/lib/core/connection/utils.js +++ b/lib/core/connection/utils.js @@ -1,9 +1,9 @@ 'use strict'; -const require_optional = require('require_optional'); +const require_optional = require('optional-require')(require); function debugOptions(debugFields, options) { - var finaloptions = {}; + const finaloptions = {}; debugFields.forEach(function(n) { finaloptions[n] = options[n]; }); @@ -12,16 +12,14 @@ function debugOptions(debugFields, options) { } function retrieveBSON() { - var BSON = require('bson'); + const BSON = require('bson'); BSON.native = false; - try { - var optionalBSON = require_optional('bson-ext'); - if (optionalBSON) { - optionalBSON.native = true; - return optionalBSON; - } - } catch (err) {} // eslint-disable-line + const optionalBSON = require_optional('bson-ext'); + if (optionalBSON) { + optionalBSON.native = true; + return optionalBSON; + } return BSON; } @@ -35,10 +33,7 @@ function noSnappyWarning() { // Facilitate loading Snappy optionally function retrieveSnappy() { - var snappy = null; - try { - snappy = require_optional('snappy'); - } catch (error) {} // eslint-disable-line + let snappy = require_optional('snappy'); if (!snappy) { snappy = { compress: noSnappyWarning, diff --git a/lib/core/index.js b/lib/core/index.js index 28aca32e9c..cf3bbfed7b 100644 --- a/lib/core/index.js +++ b/lib/core/index.js @@ -1,7 +1,7 @@ 'use strict'; let BSON = require('bson'); -const require_optional = require('require_optional'); +const require_optional = require('optional-require')(require); const EJSON = require('./utils').retrieveEJSON(); try { diff --git a/lib/core/utils.js b/lib/core/utils.js index 6043a51297..631c4a9b3b 100644 --- a/lib/core/utils.js +++ b/lib/core/utils.js @@ -1,7 +1,7 @@ 'use strict'; const os = require('os'); const crypto = require('crypto'); -const requireOptional = require('require_optional'); +const requireOptional = require('optional-require')(require); /** * Generate a UUIDv4 @@ -46,10 +46,7 @@ const noEJSONError = function() { // Facilitate loading EJSON optionally function retrieveEJSON() { - let EJSON = null; - try { - EJSON = requireOptional('mongodb-extjson'); - } catch (error) {} // eslint-disable-line + let EJSON = requireOptional('mongodb-extjson'); if (!EJSON) { EJSON = { parse: noEJSONError, diff --git a/package-lock.json b/package-lock.json index 01cbe16238..7e5dee192e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3589,6 +3589,11 @@ "wrappy": "1" } }, + "optional-require": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.2.tgz", + "integrity": "sha512-HZubVd6IfHsbnpdNF/ICaSAzBUEW1TievpkjY3tB4Jnk8L7+pJ3conPzUt3Mn/6OZx9uzTDOHYPGA8/AxYHBOg==" + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -4112,15 +4117,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "require_optional": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", - "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", - "requires": { - "resolve-from": "^2.0.0", - "semver": "^5.1.0" - } - }, "requizzle": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", @@ -4136,11 +4132,6 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -4179,7 +4170,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, "set-blocking": { "version": "2.0.0", diff --git a/package.json b/package.json index 8361e5afec..092ebe4744 100644 --- a/package.json +++ b/package.json @@ -16,13 +16,6 @@ "driver", "official" ], - "peerOptionalDependencies": { - "kerberos": "^1.1.0", - "mongodb-client-encryption": "^1.0.0", - "mongodb-extjson": "^2.1.2", - "snappy": "^6.3.4", - "bson-ext": "^2.0.0" - }, "peerDependenciesMeta": { "kerberos": { "optional": true @@ -47,7 +40,7 @@ "bl": "^2.2.1", "bson": "^1.1.4", "denque": "^1.4.1", - "require_optional": "^1.0.1", + "optional-require": "^1.0.2", "safe-buffer": "^5.1.2" }, "devDependencies": {