Skip to content
This repository was archived by the owner on Feb 4, 2022. It is now read-only.

Commit ec2b7a6

Browse files
authored
chore(assign): replace assign with native Object.assign (#259)
Fixes NODE-1227
1 parent 243e942 commit ec2b7a6

26 files changed

+268
-325
lines changed

lib/connection/pool.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ var inherits = require('util').inherits,
99
f = require('util').format,
1010
Query = require('./commands').Query,
1111
CommandResult = require('./command_result'),
12-
assign = require('../utils').assign,
1312
MESSAGE_HEADER_SIZE = require('../wireprotocol/shared').MESSAGE_HEADER_SIZE,
1413
opcodes = require('../wireprotocol/shared').opcodes,
1514
compress = require('../wireprotocol/compression').compress,
@@ -80,7 +79,7 @@ var Pool = function(topology, options) {
8079
this.topology = topology;
8180

8281
// Add the options
83-
this.options = assign(
82+
this.options = Object.assign(
8483
{
8584
// Host and port settings
8685
host: 'localhost',

lib/topologies/server.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ var inherits = require('util').inherits,
1515
ThreeTwoWireProtocolSupport = require('../wireprotocol/3_2_support'),
1616
BasicCursor = require('../cursor'),
1717
sdam = require('./shared'),
18-
assign = require('../utils').assign,
1918
createClientInfo = require('./shared').createClientInfo,
2019
createCompressionInfo = require('./shared').createCompressionInfo,
2120
resolveClusterTime = require('./shared').resolveClusterTime,
@@ -534,7 +533,7 @@ Server.prototype.connect = function(options) {
534533
}
535534

536535
// Create a pool
537-
self.s.pool = new Pool(this, assign(self.s.options, options, { bson: this.s.bson }));
536+
self.s.pool = new Pool(this, Object.assign(self.s.options, options, { bson: this.s.bson }));
538537

539538
// Set up listeners
540539
self.s.pool.on('close', eventHandler(self, 'close'));
@@ -657,7 +656,7 @@ Server.prototype.command = function(ns, cmd, options, callback) {
657656
if (result) return callback(result);
658657

659658
// Clone the options
660-
options = assign({}, options, { wireProtocolCommand: false });
659+
options = Object.assign({}, options, { wireProtocolCommand: false });
661660

662661
// Debug log
663662
if (self.s.logger.isDebug())

lib/utils.js

-32
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,6 @@
22

33
const crypto = require('crypto');
44

5-
/**
6-
* Copy the values of all enumerable own properties from one or more
7-
* source objects to a target object. It will return the target object.
8-
*/
9-
const assign = Object.assign
10-
? Object.assign
11-
: function assign(target) {
12-
if (target === undefined || target === null) {
13-
throw new TypeError('Cannot convert first argument to object');
14-
}
15-
16-
var to = Object(target);
17-
for (var i = 1; i < arguments.length; i++) {
18-
var nextSource = arguments[i];
19-
if (nextSource === undefined || nextSource === null) {
20-
continue;
21-
}
22-
23-
var keysArray = Object.keys(Object(nextSource));
24-
for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
25-
var nextKey = keysArray[nextIndex];
26-
var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
27-
if (desc !== undefined && desc.enumerable) {
28-
to[nextKey] = nextSource[nextKey];
29-
}
30-
}
31-
}
32-
33-
return to;
34-
};
35-
365
const uuidV4 = () => {
376
const result = crypto.randomBytes(16);
387
result[6] = (result[6] & 0x0f) | 0x40;
@@ -41,6 +10,5 @@ const uuidV4 = () => {
4110
};
4211

4312
module.exports = {
44-
assign: assign,
4513
uuidV4: uuidV4
4614
};

test/tests/functional/mongos_mocks/mixed_seed_list_tests.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
var expect = require('chai').expect,
3-
assign = require('../../../../lib/utils').assign,
43
co = require('co'),
54
mock = require('../../../mock');
65

@@ -25,12 +24,12 @@ describe('Mongos Mixed Seed List (mocks)', function() {
2524
var mongos2 = null;
2625

2726
// Default message fields
28-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
27+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
2928
msg: 'isdbgrid'
3029
});
3130

3231
// Default message fields
33-
var defaultRSFields = assign({}, mock.DEFAULT_ISMASTER, {
32+
var defaultRSFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
3433
setName: 'rs',
3534
setVersion: 1,
3635
electionId: new ObjectId(),
@@ -39,7 +38,7 @@ describe('Mongos Mixed Seed List (mocks)', function() {
3938
});
4039

4140
// Primary server states
42-
var serverIsMaster = [assign({}, defaultFields), assign({}, defaultRSFields)];
41+
var serverIsMaster = [Object.assign({}, defaultFields), Object.assign({}, defaultRSFields)];
4342

4443
// Boot the mock
4544
co(function*() {
@@ -116,7 +115,7 @@ describe('Mongos Mixed Seed List (mocks)', function() {
116115
var mongos2 = null;
117116

118117
// Default message fields
119-
var defaultRSFields = assign({}, mock.DEFAULT_ISMASTER, {
118+
var defaultRSFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
120119
setName: 'rs',
121120
setVersion: 1,
122121
electionId: new ObjectId(),
@@ -125,7 +124,7 @@ describe('Mongos Mixed Seed List (mocks)', function() {
125124
});
126125

127126
// Primary server states
128-
var serverIsMaster = [assign({}, defaultRSFields), assign({}, defaultRSFields)];
127+
var serverIsMaster = [Object.assign({}, defaultRSFields), Object.assign({}, defaultRSFields)];
129128

130129
// Boot the mock
131130
co(function*() {

test/tests/functional/mongos_mocks/multiple_proxies_tests.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
var expect = require('chai').expect,
3-
assign = require('../../../../lib/utils').assign,
43
co = require('co'),
54
mock = require('../../../mock');
65

@@ -23,12 +22,12 @@ describe('Mongos Multiple Proxies (mocks)', function() {
2322
var mongos2 = null;
2423

2524
// Default message fields
26-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
25+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
2726
msg: 'isdbgrid'
2827
});
2928

3029
// Primary server states
31-
var serverIsMaster = [assign({}, defaultFields)];
30+
var serverIsMaster = [Object.assign({}, defaultFields)];
3231
// Boot the mock
3332
co(function*() {
3433
mongos1 = yield mock.createServer(11000, 'localhost');
@@ -107,12 +106,12 @@ describe('Mongos Multiple Proxies (mocks)', function() {
107106
var Mongos = this.configuration.mongo.Mongos;
108107

109108
// Default message fields
110-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
109+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
111110
msg: 'isdbgrid'
112111
});
113112

114113
// Primary server states
115-
var serverIsMaster = [assign({}, defaultFields)];
114+
var serverIsMaster = [Object.assign({}, defaultFields)];
116115
// Boot the mock
117116
co(function*() {
118117
const mongos1 = yield mock.createServer(11002, 'localhost');

test/tests/functional/mongos_mocks/proxy_failover_tests.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
var expect = require('chai').expect,
3-
assign = require('../../../../lib/utils').assign,
43
co = require('co'),
54
mock = require('../../../mock');
65

@@ -19,12 +18,12 @@ describe('Mongos Proxy Failover (mocks)', function() {
1918
var Mongos = this.configuration.mongo.Mongos;
2019

2120
// Default message fields
22-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
21+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
2322
msg: 'isdbgrid'
2423
});
2524

2625
// Primary server states
27-
var serverIsMaster = [assign({}, defaultFields)];
26+
var serverIsMaster = [Object.assign({}, defaultFields)];
2827
// Boot the mock
2928
co(function*() {
3029
const mongos1 = yield mock.createServer(52007, 'localhost');
@@ -98,12 +97,12 @@ describe('Mongos Proxy Failover (mocks)', function() {
9897
var currentStep = 0;
9998

10099
// Default message fields
101-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
100+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
102101
msg: 'isdbgrid'
103102
});
104103

105104
// Primary server states
106-
var serverIsMaster = [assign({}, defaultFields)];
105+
var serverIsMaster = [Object.assign({}, defaultFields)];
107106
// Boot the mock
108107
co(function*() {
109108
const mongos1 = yield mock.createServer(52009, 'localhost');
@@ -198,12 +197,12 @@ describe('Mongos Proxy Failover (mocks)', function() {
198197
var currentStep = 0;
199198

200199
// Default message fields
201-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
200+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
202201
msg: 'isdbgrid'
203202
});
204203

205204
// Primary server states
206-
var serverIsMaster = [assign({}, defaultFields)];
205+
var serverIsMaster = [Object.assign({}, defaultFields)];
207206
// Boot the mock
208207
co(function*() {
209208
const mongos1 = yield mock.createServer(52011, 'localhost');

test/tests/functional/mongos_mocks/proxy_read_preference_tests.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
var expect = require('chai').expect,
3-
assign = require('../../../../lib/utils').assign,
43
co = require('co'),
54
mock = require('../../../mock');
65

@@ -21,12 +20,12 @@ describe('Mongos Proxy Read Preference (mocks)', function() {
2120
ReadPreference = this.configuration.mongo.ReadPreference;
2221

2322
// Default message fields
24-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
23+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
2524
msg: 'isdbgrid'
2625
});
2726

2827
// Primary server states
29-
var serverIsMaster = [assign({}, defaultFields)];
28+
var serverIsMaster = [Object.assign({}, defaultFields)];
3029
// Received command on server
3130
var command = null;
3231
// Boot the mock
@@ -102,12 +101,12 @@ describe('Mongos Proxy Read Preference (mocks)', function() {
102101
ReadPreference = this.configuration.mongo.ReadPreference;
103102

104103
// Default message fields
105-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
104+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
106105
msg: 'isdbgrid'
107106
});
108107

109108
// Primary server states
110-
var serverIsMaster = [assign({}, defaultFields)];
109+
var serverIsMaster = [Object.assign({}, defaultFields)];
111110
// Received command on server
112111
var command = null;
113112
// Boot the mock
@@ -182,12 +181,12 @@ describe('Mongos Proxy Read Preference (mocks)', function() {
182181
ReadPreference = this.configuration.mongo.ReadPreference;
183182

184183
// Default message fields
185-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
184+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
186185
msg: 'isdbgrid'
187186
});
188187

189188
// Primary server states
190-
var serverIsMaster = [assign({}, defaultFields)];
189+
var serverIsMaster = [Object.assign({}, defaultFields)];
191190
// Received command on server
192191
var command = null;
193192
// Boot the mock

test/tests/functional/mongos_mocks/single_proxy_connection_tests.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
var expect = require('chai').expect,
33
f = require('util').format,
44
co = require('co'),
5-
assign = require('../../../../lib/utils').assign,
65
mock = require('../../../mock');
76

87
describe('Mongos Single Proxy Connection (mocks)', function() {
@@ -25,12 +24,12 @@ describe('Mongos Single Proxy Connection (mocks)', function() {
2524
var stopRespondingPrimary = false;
2625

2726
// Default message fields
28-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
27+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
2928
msg: 'isdbgrid'
3029
});
3130

3231
// Primary server states
33-
var serverIsMaster = [assign({}, defaultFields)];
32+
var serverIsMaster = [Object.assign({}, defaultFields)];
3433

3534
// Boot the mock
3635
co(function*() {
@@ -109,12 +108,12 @@ describe('Mongos Single Proxy Connection (mocks)', function() {
109108
ObjectId = this.configuration.mongo.BSON.ObjectId;
110109

111110
// Default message fields
112-
var defaultFields = assign({}, mock.DEFAULT_ISMASTER, {
111+
var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER, {
113112
msg: 'isdbgrid'
114113
});
115114

116115
// Primary server states
117-
var serverIsMaster = [assign({}, defaultFields)];
116+
var serverIsMaster = [Object.assign({}, defaultFields)];
118117

119118
// Boot the mock
120119
co(function*() {

0 commit comments

Comments
 (0)