Skip to content

Commit f2a4ff8

Browse files
authored
fix: no infinite loop on windows requiring optional deps
NODE-3050
1 parent 86bddf1 commit f2a4ff8

File tree

5 files changed

+20
-43
lines changed

5 files changed

+20
-43
lines changed

lib/core/connection/utils.js

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
'use strict';
22

3-
const require_optional = require('require_optional');
3+
const require_optional = require('optional-require')(require);
44

55
function debugOptions(debugFields, options) {
6-
var finaloptions = {};
6+
const finaloptions = {};
77
debugFields.forEach(function(n) {
88
finaloptions[n] = options[n];
99
});
@@ -12,16 +12,14 @@ function debugOptions(debugFields, options) {
1212
}
1313

1414
function retrieveBSON() {
15-
var BSON = require('bson');
15+
const BSON = require('bson');
1616
BSON.native = false;
1717

18-
try {
19-
var optionalBSON = require_optional('bson-ext');
20-
if (optionalBSON) {
21-
optionalBSON.native = true;
22-
return optionalBSON;
23-
}
24-
} catch (err) {} // eslint-disable-line
18+
const optionalBSON = require_optional('bson-ext');
19+
if (optionalBSON) {
20+
optionalBSON.native = true;
21+
return optionalBSON;
22+
}
2523

2624
return BSON;
2725
}
@@ -35,10 +33,7 @@ function noSnappyWarning() {
3533

3634
// Facilitate loading Snappy optionally
3735
function retrieveSnappy() {
38-
var snappy = null;
39-
try {
40-
snappy = require_optional('snappy');
41-
} catch (error) {} // eslint-disable-line
36+
let snappy = require_optional('snappy');
4237
if (!snappy) {
4338
snappy = {
4439
compress: noSnappyWarning,

lib/core/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
let BSON = require('bson');
4-
const require_optional = require('require_optional');
4+
const require_optional = require('optional-require')(require);
55
const EJSON = require('./utils').retrieveEJSON();
66

77
try {

lib/core/utils.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22
const os = require('os');
33
const crypto = require('crypto');
4-
const requireOptional = require('require_optional');
4+
const requireOptional = require('optional-require')(require);
55

66
/**
77
* Generate a UUIDv4
@@ -46,10 +46,7 @@ const noEJSONError = function() {
4646

4747
// Facilitate loading EJSON optionally
4848
function retrieveEJSON() {
49-
let EJSON = null;
50-
try {
51-
EJSON = requireOptional('mongodb-extjson');
52-
} catch (error) {} // eslint-disable-line
49+
let EJSON = requireOptional('mongodb-extjson');
5350
if (!EJSON) {
5451
EJSON = {
5552
parse: noEJSONError,

package-lock.json

Lines changed: 7 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@
1616
"driver",
1717
"official"
1818
],
19-
"peerOptionalDependencies": {
20-
"kerberos": "^1.1.0",
21-
"mongodb-client-encryption": "^1.0.0",
22-
"mongodb-extjson": "^2.1.2",
23-
"snappy": "^6.3.4",
24-
"bson-ext": "^2.0.0"
25-
},
2619
"peerDependenciesMeta": {
2720
"kerberos": {
2821
"optional": true
@@ -47,7 +40,7 @@
4740
"bl": "^2.2.1",
4841
"bson": "^1.1.4",
4942
"denque": "^1.4.1",
50-
"require_optional": "^1.0.1",
43+
"optional-require": "^1.0.2",
5144
"safe-buffer": "^5.1.2"
5245
},
5346
"devDependencies": {

0 commit comments

Comments
 (0)