From 918a1e06fbf2cf672b0cff97681972100e7569bb Mon Sep 17 00:00:00 2001 From: Simon Tretter Date: Wed, 15 Aug 2018 22:40:47 +0200 Subject: [PATCH 01/40] fix(connect): correct replacement of topology on connect callback if topology.connect has an error, topology is "overwritten", changing the function parameter to a new name, let's "force close" the old instance. --- lib/operations/mongo_client_ops.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/operations/mongo_client_ops.js b/lib/operations/mongo_client_ops.js index 6c888405f18..d614c062e97 100644 --- a/lib/operations/mongo_client_ops.js +++ b/lib/operations/mongo_client_ops.js @@ -407,14 +407,14 @@ function createTopology(mongoClient, topologyType, options, callback) { relayEvents(mongoClient, topology); // Open the connection - topology.connect(options, (err, topology) => { + topology.connect(options, (err, newTopology) => { if (err) { topology.close(true); return callback(err); } - assignTopology(mongoClient, topology); - callback(null, topology); + assignTopology(mongoClient, newTopology); + callback(null, newTopology); }); } From c43a34b7f5a80ffa1f9be557777dd3ebb4d156a8 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Thu, 16 Aug 2018 16:47:32 -0400 Subject: [PATCH 02/40] fix(change-stream): properly support resumablity in stream mode A number of changes were required to support this bug report, first being that we need to process errors emitted by the stream on the 'error' event. This also introduces a minimal server selection mechanism that will have to be depended upon until the new SDAM layer becomes the default NODE-1617 --- lib/change_stream.js | 149 ++++++++++++++++++++++++++++--------------- 1 file changed, 99 insertions(+), 50 deletions(-) diff --git a/lib/change_stream.js b/lib/change_stream.js index 03ee9d8d3c2..e875bc52029 100644 --- a/lib/change_stream.js +++ b/lib/change_stream.js @@ -46,7 +46,7 @@ class ChangeStream extends EventEmitter { if (changeDomain instanceof Collection) { this.type = CHANGE_DOMAIN_TYPES.COLLECTION; - this.serverConfig = changeDomain.s.db.serverConfig; + this.topology = changeDomain.s.db.serverConfig; this.namespace = { collection: changeDomain.collectionName, @@ -58,12 +58,12 @@ class ChangeStream extends EventEmitter { this.type = CHANGE_DOMAIN_TYPES.DATABASE; this.namespace = { collection: '', database: changeDomain.databaseName }; this.cursorNamespace = this.namespace.database; - this.serverConfig = changeDomain.serverConfig; + this.topology = changeDomain.serverConfig; } else if (changeDomain instanceof MongoClient) { this.type = CHANGE_DOMAIN_TYPES.CLUSTER; this.namespace = { collection: '', database: 'admin' }; this.cursorNamespace = this.namespace.database; - this.serverConfig = changeDomain.topology; + this.topology = changeDomain.topology; } else { throw new TypeError( 'changeDomain provided to ChangeStream constructor is not an instance of Collection, Db, or MongoClient' @@ -76,9 +76,9 @@ class ChangeStream extends EventEmitter { } // We need to get the operationTime as early as possible - const isMaster = this.serverConfig.lastIsMaster(); + const isMaster = this.topology.lastIsMaster(); if (!isMaster) { - throw new MongoError('ServerConfig does not have an ismaster yet.'); + throw new MongoError('Topology does not have an ismaster yet.'); } this.operationTime = isMaster.operationTime; @@ -89,7 +89,9 @@ class ChangeStream extends EventEmitter { // Listen for any `change` listeners being added to ChangeStream this.on('newListener', eventName => { if (eventName === 'change' && this.cursor && this.cursor.listenerCount('change') === 0) { - this.cursor.on('data', change => processNewChange(this, null, change)); + this.cursor.on('data', change => + processNewChange({ changeStream: this, change, eventEmitter: true }) + ); } }); @@ -125,14 +127,11 @@ class ChangeStream extends EventEmitter { if (callback) return callback(new Error('Change Stream is not open.'), null); return self.promiseLibrary.reject(new Error('Change Stream is not open.')); } + return this.cursor .next() - .then(function(change) { - return processNewChange(self, null, change, callback); - }) - .catch(function(err) { - return processNewChange(self, err, null, callback); - }); + .then(change => processNewChange({ changeStream: self, change, callback })) + .catch(error => processNewChange({ changeStream: self, error, callback })); } /** @@ -230,14 +229,16 @@ var createChangeStreamCursor = function(self) { var changeStreamCursor = buildChangeStreamAggregationCommand(self); /** - * Fired for each new matching change in the specified namespace. Attaching a `change` event listener to a Change Stream will switch the stream into flowing mode. Data will then be passed as soon as it is available. + * Fired for each new matching change in the specified namespace. Attaching a `change` + * event listener to a Change Stream will switch the stream into flowing mode. Data will + * then be passed as soon as it is available. * * @event ChangeStream#change * @type {object} */ if (self.listenerCount('change') > 0) { changeStreamCursor.on('data', function(change) { - processNewChange(self, null, change); + processNewChange({ changeStream: self, change, eventEmitter: true }); }); } @@ -268,7 +269,7 @@ var createChangeStreamCursor = function(self) { * @type {Error} */ changeStreamCursor.on('error', function(error) { - self.emit('error', error); + processNewChange({ changeStream: self, error, eventEmitter: true }); }); if (self.pipeDestinations) { @@ -286,14 +287,14 @@ function getResumeToken(self) { } function getStartAtOperationTime(self) { - const isMaster = self.serverConfig.lastIsMaster() || {}; + const isMaster = self.topology.lastIsMaster() || {}; return ( isMaster.maxWireVersion && isMaster.maxWireVersion >= 7 && self.options.startAtOperationTime ); } var buildChangeStreamAggregationCommand = function(self) { - const serverConfig = self.serverConfig; + const topology = self.topology; const namespace = self.namespace; const pipeline = self.pipeline; const options = self.options; @@ -339,62 +340,110 @@ var buildChangeStreamAggregationCommand = function(self) { }; // Create and return the cursor - return serverConfig.cursor(cursorNamespace, command, cursorOptions); + return topology.cursor(cursorNamespace, command, cursorOptions); }; +// This method performs a basic server selection loop, satisfying the requirements of +// ChangeStream resumability until the new SDAM layer can be used. +const SELECTION_TIMEOUT = 30000; +function waitForTopologyConnected(topology, options, callback) { + setTimeout(() => { + if (options && options.start == null) options.start = process.hrtime(); + const start = options.start || process.hrtime(); + const timeout = options.timeout || SELECTION_TIMEOUT; + const readPreference = options.readPreference; + + if (topology.isConnected({ readPreference })) return callback(null, null); + const hrElapsed = process.hrtime(start); + const elapsed = (hrElapsed[0] * 1e9 + hrElapsed[1]) / 1e6; + if (elapsed > timeout) return callback(new MongoError('Timed out waiting for connection')); + waitForTopologyConnected(topology, options, callback); + }, 3000); // this is an arbitrary wait time to allow SDAM to transition +} + // Handle new change events. This method brings together the routes from the callback, event emitter, and promise ways of using ChangeStream. -var processNewChange = function(self, err, change, callback) { - // Handle errors - if (err) { - // Handle resumable MongoNetworkErrors - if (isResumableError(err) && !self.attemptingResume) { - self.attemptingResume = true; - - if (!(getResumeToken(self) || getStartAtOperationTime(self))) { - const startAtOperationTime = self.cursor.cursorState.operationTime; - self.options = Object.assign({ startAtOperationTime }, self.options); +function processNewChange(args) { + const changeStream = args.changeStream; + const error = args.error; + const change = args.change; + const callback = args.callback; + const eventEmitter = args.eventEmitter || false; + const topology = changeStream.topology; + const options = changeStream.cursor.options; + + if (error) { + if (isResumableError(error) && !changeStream.attemptingResume) { + changeStream.attemptingResume = true; + + if (!(getResumeToken(changeStream) || getStartAtOperationTime(changeStream))) { + const startAtOperationTime = changeStream.cursor.cursorState.operationTime; + changeStream.options = Object.assign({ startAtOperationTime }, changeStream.options); } - if (callback) { - return self.cursor.close(function(closeErr) { - if (closeErr) { - return callback(err, null); - } + // stop listening to all events from old cursor + ['data', 'close', 'end', 'error'].forEach(event => + changeStream.cursor.removeAllListeners(event) + ); + + // close internal cursor, ignore errors + changeStream.cursor.close(); + + // attempt recreating the cursor + if (eventEmitter) { + waitForTopologyConnected(topology, { readPreference: options.readPreference }, err => { + if (err) return changeStream.emit('error', err); + changeStream.cursor = createChangeStreamCursor(changeStream); + }); + + return; + } - self.cursor = createChangeStreamCursor(self); + if (callback) { + waitForTopologyConnected(topology, { readPreference: options.readPreference }, err => { + if (err) return callback(err, null); - return self.next(callback); + changeStream.cursor = createChangeStreamCursor(changeStream); + changeStream.next(callback); }); + + return; } - return self.cursor - .close() - .then(() => (self.cursor = createChangeStreamCursor(self))) - .then(() => self.next()); + return new Promise((resolve, reject) => { + waitForTopologyConnected(topology, { readPreference: options.readPreference }, err => { + if (err) return reject(err); + resolve(); + }); + }) + .then(() => (changeStream.cursor = createChangeStreamCursor(changeStream))) + .then(() => changeStream.next()); } - if (typeof callback === 'function') return callback(err, null); - if (self.listenerCount('error')) return self.emit('error', err); - return self.promiseLibrary.reject(err); + if (eventEmitter) return changeStream.emit('error', error); + if (typeof callback === 'function') return callback(error, null); + return changeStream.promiseLibrary.reject(error); } - self.attemptingResume = false; + + changeStream.attemptingResume = false; // Cache the resume token if it is present. If it is not present return an error. if (!change || !change._id) { var noResumeTokenError = new Error( 'A change stream document has been received that lacks a resume token (_id).' ); + + if (eventEmitter) return changeStream.emit('error', noResumeTokenError); if (typeof callback === 'function') return callback(noResumeTokenError, null); - if (self.listenerCount('error')) return self.emit('error', noResumeTokenError); - return self.promiseLibrary.reject(noResumeTokenError); + return changeStream.promiseLibrary.reject(noResumeTokenError); } - self.resumeToken = change._id; + + changeStream.resumeToken = change._id; // Return the change - if (typeof callback === 'function') return callback(err, change); - if (self.listenerCount('change')) return self.emit('change', change); - return self.promiseLibrary.resolve(change); -}; + if (eventEmitter) return changeStream.emit('change', change); + if (typeof callback === 'function') return callback(error, change); + return changeStream.promiseLibrary.resolve(change); +} /** * The callback format for results From 327da9591021e01c087a891ee6481a9c4141a848 Mon Sep 17 00:00:00 2001 From: Fonger <5862369+Fonger@users.noreply.github.com> Date: Sat, 18 Aug 2018 15:04:45 +0800 Subject: [PATCH 03/40] fix(buffer): use safe-buffer polyfill to maintain compatibility node.js < 4.5 and node.js < 5.9 doesn't support Buffer.alloc and Buffer.from --- lib/gridfs-stream/upload.js | 1 + lib/gridfs/chunk.js | 2 ++ lib/gridfs/grid_store.js | 2 +- package.json | 3 ++- test/functional/cursor_tests.js | 1 + test/functional/cursorstream_tests.js | 1 + test/functional/find_tests.js | 1 + test/functional/gridfs_stream_tests.js | 3 ++- test/functional/gridfs_tests.js | 3 ++- test/functional/insert_tests.js | 3 ++- test/functional/operation_example_tests.js | 3 ++- test/functional/operation_generators_example_tests.js | 1 + test/functional/operation_promises_example_tests.js | 1 + test/functional/promote_buffers_tests.js | 2 +- 14 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/gridfs-stream/upload.js b/lib/gridfs-stream/upload.js index 45f0e474d60..da77dcd6500 100644 --- a/lib/gridfs-stream/upload.js +++ b/lib/gridfs-stream/upload.js @@ -4,6 +4,7 @@ var core = require('mongodb-core'); var crypto = require('crypto'); var stream = require('stream'); var util = require('util'); +var Buffer = require('safe-buffer').Buffer; var ERROR_NAMESPACE_NOT_FOUND = 26; diff --git a/lib/gridfs/chunk.js b/lib/gridfs/chunk.js index fef81c14fcf..c29bba02a7e 100644 --- a/lib/gridfs/chunk.js +++ b/lib/gridfs/chunk.js @@ -3,6 +3,8 @@ var Binary = require('mongodb-core').BSON.Binary, ObjectID = require('mongodb-core').BSON.ObjectID; +var Buffer = require('safe-buffer').Buffer; + /** * Class for representing a single chunk in GridFS. * diff --git a/lib/gridfs/grid_store.js b/lib/gridfs/grid_store.js index bf72537b586..4b5eb5e4b85 100644 --- a/lib/gridfs/grid_store.js +++ b/lib/gridfs/grid_store.js @@ -38,7 +38,7 @@ const Chunk = require('./chunk'); const ObjectID = require('mongodb-core').BSON.ObjectID; const ReadPreference = require('mongodb-core').ReadPreference; -const Buffer = require('buffer').Buffer; +const Buffer = require('safe-buffer').Buffer; const fs = require('fs'); const f = require('util').format; const util = require('util'); diff --git a/package.json b/package.json index 41b645bab34..b6e95ad52fb 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "official" ], "dependencies": { - "mongodb-core": "3.1.2" + "mongodb-core": "3.1.2", + "safe-buffer": "^5.1.2" }, "devDependencies": { "bluebird": "3.5.0", diff --git a/test/functional/cursor_tests.js b/test/functional/cursor_tests.js index 21146f6777c..972cbaa4a92 100644 --- a/test/functional/cursor_tests.js +++ b/test/functional/cursor_tests.js @@ -6,6 +6,7 @@ const expect = require('chai').expect; const Long = require('bson').Long; const sinon = require('sinon'); const ReadPreference = require('mongodb-core').ReadPreference; +const Buffer = require('safe-buffer').Buffer; describe('Cursor', function() { before(function() { diff --git a/test/functional/cursorstream_tests.js b/test/functional/cursorstream_tests.js index 79621dd261c..bee7f647f21 100644 --- a/test/functional/cursorstream_tests.js +++ b/test/functional/cursorstream_tests.js @@ -1,5 +1,6 @@ 'use strict'; var expect = require('chai').expect; +var Buffer = require('safe-buffer').Buffer; describe('Cursor Streams', function() { before(function() { diff --git a/test/functional/find_tests.js b/test/functional/find_tests.js index 9e9848c55d1..8f00a81a2a4 100644 --- a/test/functional/find_tests.js +++ b/test/functional/find_tests.js @@ -3,6 +3,7 @@ const test = require('./shared').assert; const setupDatabase = require('./shared').setupDatabase; const expect = require('chai').expect; const MongoClient = require('../../lib/mongo_client'); +const Buffer = require('safe-buffer').Buffer; describe('Find', function() { before(function() { diff --git a/test/functional/gridfs_stream_tests.js b/test/functional/gridfs_stream_tests.js index 6bb98d5fa76..db792c61fc1 100644 --- a/test/functional/gridfs_stream_tests.js +++ b/test/functional/gridfs_stream_tests.js @@ -5,7 +5,8 @@ const crypto = require('crypto'), fs = require('fs'), test = require('./shared').assert, setupDatabase = require('./shared').setupDatabase, - expect = require('chai').expect; + expect = require('chai').expect, + Buffer = require('safe-buffer').Buffer; describe('GridFS Stream', function() { before(function() { diff --git a/test/functional/gridfs_tests.js b/test/functional/gridfs_tests.js index 6a801d09f8e..ea063c98a10 100644 --- a/test/functional/gridfs_tests.js +++ b/test/functional/gridfs_tests.js @@ -5,7 +5,8 @@ const test = require('./shared').assert, fs = require('fs'), format = require('util').format, child_process = require('child_process'), - expect = require('chai').expect; + expect = require('chai').expect, + Buffer = require('safe-buffer').Buffer; describe('GridFS', function() { before(function() { diff --git a/test/functional/insert_tests.js b/test/functional/insert_tests.js index a2f008364e3..eba7cf5040f 100644 --- a/test/functional/insert_tests.js +++ b/test/functional/insert_tests.js @@ -3,7 +3,8 @@ const test = require('./shared').assert, setupDatabase = require('./shared').setupDatabase, Script = require('vm'), expect = require('chai').expect, - normalizedFunctionString = require('bson/lib/bson/parser/utils').normalizedFunctionString; + normalizedFunctionString = require('bson/lib/bson/parser/utils').normalizedFunctionString, + Buffer = require('safe-buffer').Buffer; /** * Module for parsing an ISO 8601 formatted string into a Date object. diff --git a/test/functional/operation_example_tests.js b/test/functional/operation_example_tests.js index b8280360523..6addde4e8f3 100644 --- a/test/functional/operation_example_tests.js +++ b/test/functional/operation_example_tests.js @@ -2,7 +2,8 @@ const test = require('./shared').assert, setupDatabase = require('./shared').setupDatabase, f = require('util').format, - expect = require('chai').expect; + expect = require('chai').expect, + Buffer = require('safe-buffer').Buffer; describe('Operation Examples', function() { before(function() { diff --git a/test/functional/operation_generators_example_tests.js b/test/functional/operation_generators_example_tests.js index 3edf376b0e5..c6e74eebc5c 100644 --- a/test/functional/operation_generators_example_tests.js +++ b/test/functional/operation_generators_example_tests.js @@ -1,6 +1,7 @@ 'use strict'; var test = require('./shared').assert; var setupDatabase = require('./shared').setupDatabase; +var Buffer = require('safe-buffer').Buffer; /************************************************************************** * diff --git a/test/functional/operation_promises_example_tests.js b/test/functional/operation_promises_example_tests.js index 725fc2866c7..a0149293c0f 100644 --- a/test/functional/operation_promises_example_tests.js +++ b/test/functional/operation_promises_example_tests.js @@ -3,6 +3,7 @@ var fs = require('fs'); var f = require('util').format; var test = require('./shared').assert; var setupDatabase = require('./shared').setupDatabase; +var Buffer = require('safe-buffer').Buffer; var delay = function(ms) { return new Promise(function(resolve) { diff --git a/test/functional/promote_buffers_tests.js b/test/functional/promote_buffers_tests.js index 68b8efedd12..033bd55abcb 100644 --- a/test/functional/promote_buffers_tests.js +++ b/test/functional/promote_buffers_tests.js @@ -1,7 +1,7 @@ 'use strict'; var test = require('./shared').assert; var setupDatabase = require('./shared').setupDatabase; -var Buffer = require('buffer').Buffer; +var Buffer = require('safe-buffer').Buffer; describe('Promote Buffers', function() { before(function() { From da864901a0a053c36b4628826138bbad62193c22 Mon Sep 17 00:00:00 2001 From: ciyinhuang Date: Fri, 24 Aug 2018 10:53:35 +0800 Subject: [PATCH 04/40] fix bug: 'change' event callback was called multi times. --- lib/change_stream.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/change_stream.js b/lib/change_stream.js index e875bc52029..1d2bbe69ea4 100644 --- a/lib/change_stream.js +++ b/lib/change_stream.js @@ -88,7 +88,7 @@ class ChangeStream extends EventEmitter { // Listen for any `change` listeners being added to ChangeStream this.on('newListener', eventName => { - if (eventName === 'change' && this.cursor && this.cursor.listenerCount('change') === 0) { + if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) { this.cursor.on('data', change => processNewChange({ changeStream: this, change, eventEmitter: true }) ); From 771e55564a51f43c78ed4842f1c0c4150747eca0 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 21 Aug 2018 18:46:42 -0400 Subject: [PATCH 05/40] test(mongodb+srv): add missing expectation for no errors on parsing --- test/functional/mongodb_srv_tests.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/functional/mongodb_srv_tests.js b/test/functional/mongodb_srv_tests.js index ce3a2881bd0..d8cf3a6f864 100644 --- a/test/functional/mongodb_srv_tests.js +++ b/test/functional/mongodb_srv_tests.js @@ -17,6 +17,7 @@ function getTests() { describe('mongodb+srv (spec)', function() { it('should parse a default database', function(done) { parse('mongodb+srv://test5.test.build.10gen.cc/somedb', (err, result) => { + expect(err).to.not.exist; expect(result.dbName).to.eql('somedb'); done(); }); From 1dac18f0ba07ab29ecced4cd2f090e180b008d74 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 21 Aug 2018 18:48:03 -0400 Subject: [PATCH 06/40] feat(test): use connection strings for all calls to `newClient` We have been inconsistently testing our code for some time using a deprecated form of creating a `MongoClient` by passing in a topology to the constructor. Now we take the passed in variables and construct a connection string to connect to the server, just like users of the module would. --- test/config.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/test/config.js b/test/config.js index 33a5add7ecd..00bd5b0eea8 100644 --- a/test/config.js +++ b/test/config.js @@ -1,7 +1,8 @@ 'use strict'; const ConfigurationBase = require('mongodb-test-runner').ConfigurationBase; const f = require('util').format; - +const url = require('url'); +const qs = require('querystring'); class NativeConfiguration extends ConfigurationBase { constructor(options) { super(options); @@ -59,17 +60,23 @@ class NativeConfiguration extends ConfigurationBase { if (keys.indexOf('sslOnNormalPorts') !== -1) serverOptions.ssl = true; // Fall back - const dbHost = (serverOptions && serverOptions.host) || 'localhost'; + let dbHost = (serverOptions && serverOptions.host) || 'localhost'; const dbPort = (serverOptions && serverOptions.port) || this.options.port || 27017; - // Default topology - const DbTopology = this.options.topology ? this.options.topology : this.mongo.Server; + if (dbHost.indexOf('.sock') !== -1) { + dbHost = qs.escape(dbHost); + } + + const connectionString = url.format({ + protocol: 'mongodb', + slashes: true, + hostname: dbHost, + port: dbPort, + query: dbOptions, + pathname: '/' + }); - // Return a new MongoClient instance - return new this.mongo.MongoClient( - new DbTopology(dbHost, dbPort, serverOptions, this.mongo), - dbOptions - ); + return new this.mongo.MongoClient(connectionString, serverOptions); } url(username, password) { From 93d01e1f7203a50055057ca324a52d00875781fc Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 21 Aug 2018 18:50:05 -0400 Subject: [PATCH 07/40] test(new-client): correct tests with expectations around topologies These tests were inconsistent in passing variables to client creation, expecting them to create a topology rather than creating a connection string. --- test/functional/cursor_tests.js | 2 +- test/functional/custom_pk_tests.js | 14 +++++++++----- test/functional/db_tests.js | 4 ++-- test/functional/domain_tests.js | 8 ++++---- test/functional/ignore_undefined_tests.js | 20 ++++++++------------ 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/test/functional/cursor_tests.js b/test/functional/cursor_tests.js index 972cbaa4a92..b2e990a4d67 100644 --- a/test/functional/cursor_tests.js +++ b/test/functional/cursor_tests.js @@ -4541,7 +4541,7 @@ describe('Cursor', function() { const configuration = this.configuration; const ReadPreference = this.configuration.require.ReadPreference; const client = configuration.newClient( - { w: 1, readPreference: ReadPreference.secondary }, + { w: 1, readPreference: ReadPreference.SECONDARY }, { poolSize: 1, auto_reconnect: false } ); diff --git a/test/functional/custom_pk_tests.js b/test/functional/custom_pk_tests.js index ea0e7d192e9..5cfe78b43b7 100644 --- a/test/functional/custom_pk_tests.js +++ b/test/functional/custom_pk_tests.js @@ -27,11 +27,15 @@ describe('Custom PK', function() { return new ObjectID('aaaaaaaaaaaa'); }; - var client = configuration.newClient({ - w: 1, - poolSize: 1, - pkFactory: CustomPKFactory - }); + var client = configuration.newClient( + { + w: 1, + poolSize: 1 + }, + { + pkFactory: CustomPKFactory + } + ); client.connect(function(err, client) { var db = client.db(configuration.db); diff --git a/test/functional/db_tests.js b/test/functional/db_tests.js index 2a118286c7a..946d4d09a7d 100644 --- a/test/functional/db_tests.js +++ b/test/functional/db_tests.js @@ -196,8 +196,8 @@ describe('Db', function() { test: function(done) { var configuration = this.configuration; var client = configuration.newClient( - { w: 1, bufferMaxEntries: 0 }, - { poolSize: 1, auto_reconnect: true } + { w: 1 }, + { poolSize: 1, auto_reconnect: true, bufferMaxEntries: 0 } ); client.connect(function(err, client) { diff --git a/test/functional/domain_tests.js b/test/functional/domain_tests.js index a8761a7cd0a..98384bb4a5f 100644 --- a/test/functional/domain_tests.js +++ b/test/functional/domain_tests.js @@ -129,8 +129,8 @@ describe('Decimal128', function() { var domainInstance = Domain.create(); var configuration = this.configuration; var client = configuration.newClient( - { w: 0, bufferMaxEntries: 0 }, - { poolSize: 1, auto_reconnect: true, domainsEnabled: true } + { w: 0 }, + { poolSize: 1, auto_reconnect: true, domainsEnabled: true, bufferMaxEntries: 0 } ); client.connect(function(err, client) { @@ -168,8 +168,8 @@ describe('Decimal128', function() { var domainInstance = Domain.create(); var configuration = this.configuration; var client = configuration.newClient( - { w: 1, bufferMaxEntries: 0 }, - { poolSize: 1, auto_reconnect: true, domainsEnabled: true } + { w: 1 }, + { poolSize: 1, auto_reconnect: true, domainsEnabled: true, bufferMaxEntries: 0 } ); client.connect(function(err, client) { diff --git a/test/functional/ignore_undefined_tests.js b/test/functional/ignore_undefined_tests.js index c1150d30fef..d4e62c8fe02 100644 --- a/test/functional/ignore_undefined_tests.js +++ b/test/functional/ignore_undefined_tests.js @@ -15,12 +15,10 @@ describe('Ignore Undefined', function() { test: function(done) { var configuration = this.configuration; - var client = configuration.newClient( - Object.assign({}, configuration.writeConcernMax(), { - poolSize: 1, - ignoreUndefined: true - }) - ); + var client = configuration.newClient(configuration.writeConcernMax(), { + poolSize: 1, + ignoreUndefined: true + }); client.connect(function(err, client) { var db = client.db(configuration.db); @@ -108,12 +106,10 @@ describe('Ignore Undefined', function() { var configuration = this.configuration; var ObjectId = configuration.require.ObjectID; - var client = configuration.newClient( - Object.assign({}, configuration.writeConcernMax(), { - poolSize: 1, - ignoreUndefined: true - }) - ); + var client = configuration.newClient(configuration.writeConcernMax(), { + poolSize: 1, + ignoreUndefined: true + }); client.connect(function(err, client) { var db = client.db(configuration.db); From 3cb3da32331db36c8433fc0c2221b0c1f79995e8 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 21 Aug 2018 18:51:10 -0400 Subject: [PATCH 08/40] fix(url-parser): bail early on validation when using domain socket --- lib/url_parser.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/url_parser.js b/lib/url_parser.js index 8ced4f11b12..7cc0b2f2935 100644 --- a/lib/url_parser.js +++ b/lib/url_parser.js @@ -212,6 +212,7 @@ function parseConnectionString(url, options) { for (let i = 0; i < hosts.length; i++) { let r = parser.parse(f('mongodb://%s', hosts[i].trim())); + if (r.path && r.path.indexOf('.sock') !== -1) continue; if (r.path && r.path.indexOf(':') !== -1) { // Not connecting to a socket so check for an extra slash in the hostname. // Using String#split as perf is better than match. From fe39b93302705c5f97f286b62ead8aebb2e70817 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 21 Aug 2018 18:51:43 -0400 Subject: [PATCH 09/40] feat(client-ops): allow bypassing creation of topologies on connect --- lib/operations/mongo_client_ops.js | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/operations/mongo_client_ops.js b/lib/operations/mongo_client_ops.js index d614c062e97..e99d5470236 100644 --- a/lib/operations/mongo_client_ops.js +++ b/lib/operations/mongo_client_ops.js @@ -31,7 +31,8 @@ const monitoringEvents = [ 'ping', 'ha', 'all', - 'fullsetup' + 'fullsetup', + 'open' ]; const ignoreOptionNames = ['native_parser']; const legacyOptionNames = ['server', 'replset', 'replSet', 'mongos', 'db']; @@ -132,11 +133,11 @@ function collectEvents(mongoClient, topology) { if (mongoClient instanceof MongoClient) { monitoringEvents.forEach(event => { topology.on(event, (object1, object2) => { - collectedEvents.push({ - event: event, - object1: object1, - object2: object2 - }); + if (event === 'open') { + collectedEvents.push({ event: event, object1: mongoClient }); + } else { + collectedEvents.push({ event: event, object1: object1, object2: object2 }); + } }); }); } @@ -346,11 +347,11 @@ function createServer(mongoClient, options, callback) { // Set default options const servers = translateOptions(options); - // Propagate the events to the client - const collectedEvents = collectEvents(mongoClient, servers[0]); - const server = servers[0]; + // Propagate the events to the client + const collectedEvents = collectEvents(mongoClient, server); + // Connect to topology server.connect(options, (err, topology) => { if (err) { @@ -389,8 +390,11 @@ function createTopology(mongoClient, topologyType, options, callback) { // Pass in the promise library options.promiseLibrary = mongoClient.s.promiseLibrary; + const translationOptions = {}; + if (topologyType === 'unified') translationOptions.createServers = false; + // Set default options - const servers = translateOptions(options); + const servers = translateOptions(options, translationOptions); // Create the topology let topology; @@ -571,7 +575,9 @@ function transformUrlOptions(_object) { return object; } -function translateOptions(options) { +function translateOptions(options, translationOptions) { + translationOptions = Object.assign({}, { createServers: true }, translationOptions); + // If we have a readPreference passed in by the db options if (typeof options.readPreference === 'string' || typeof options.read_preference === 'string') { options.readPreference = new ReadPreference(options.readPreference || options.read_preference); @@ -591,6 +597,10 @@ function translateOptions(options) { if (options.socketTimeoutMS == null) options.socketTimeoutMS = 360000; if (options.connectTimeoutMS == null) options.connectTimeoutMS = 30000; + if (!translationOptions.createServers) { + return; + } + // Create server instances return options.servers.map(serverObj => { return serverObj.domain_socket From f86d48b82a4b37e1204e42c8fe5a450c23a3c0bc Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 09:12:03 -0400 Subject: [PATCH 10/40] test(read-concern): add error expectations, move readConcern level --- test/functional/readconcern_tests.js | 98 ++++++++++++++++------------ 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/test/functional/readconcern_tests.js b/test/functional/readconcern_tests.js index 936dcb980cb..a1b28675c64 100644 --- a/test/functional/readconcern_tests.js +++ b/test/functional/readconcern_tests.js @@ -2,6 +2,7 @@ var test = require('./shared').assert; var setupDatabase = require('./shared').setupDatabase; var f = require('util').format; +const expect = require('chai').expect; describe('ReadConcern', function() { before(function(done) { @@ -33,14 +34,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'local' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'local' } } ); client.connect(function(err, client) { - var db = client.db(configuration.db); + expect(err).to.not.exist; - test.equal(null, err); + var db = client.db(configuration.db); test.deepEqual({ level: 'local' }, db.s.readConcern); // Get a collection @@ -79,13 +80,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -125,8 +127,9 @@ describe('ReadConcern', function() { var configuration = this.configuration; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); // Get a collection var collection = db.collection('readConcernCollection', { readConcern: { level: 'local' } @@ -166,13 +169,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); // Get a collection var collection = db.collection('readConcernCollection', { readConcern: { level: 'majority' } @@ -218,8 +222,9 @@ describe('ReadConcern', function() { // Connect using mongoclient MongoClient.connect(url, function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'local' }, db.s.readConcern); // Get a collection @@ -265,8 +270,9 @@ describe('ReadConcern', function() { // Connect using mongoclient MongoClient.connect(url, function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -313,8 +319,9 @@ describe('ReadConcern', function() { // Connect using mongoclient MongoClient.connect(url, options, function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -354,13 +361,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -397,13 +405,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -449,13 +458,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get a collection @@ -514,13 +524,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection @@ -577,13 +588,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection @@ -643,13 +655,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection @@ -709,13 +722,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection @@ -781,13 +795,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection @@ -847,13 +862,14 @@ describe('ReadConcern', function() { // Get a new instance var configuration = this.configuration; var client = configuration.newClient( - { w: 1, readConcern: { level: 'majority' } }, - { poolSize: 1 } + { w: 1 }, + { poolSize: 1, readConcern: { level: 'majority' } } ); client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(configuration.db); - test.equal(null, err); test.deepEqual({ level: 'majority' }, db.s.readConcern); // Get the collection From df7384b9816f254867a34482079497dd691eff31 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 09:12:22 -0400 Subject: [PATCH 11/40] test(cursor): ensure test for secondary allows secondary-only conn --- test/functional/cursor_tests.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/functional/cursor_tests.js b/test/functional/cursor_tests.js index b2e990a4d67..de79182c3b7 100644 --- a/test/functional/cursor_tests.js +++ b/test/functional/cursor_tests.js @@ -4542,15 +4542,18 @@ describe('Cursor', function() { const ReadPreference = this.configuration.require.ReadPreference; const client = configuration.newClient( { w: 1, readPreference: ReadPreference.SECONDARY }, - { poolSize: 1, auto_reconnect: false } + { poolSize: 1, auto_reconnect: false, connectWithNoPrimary: true } ); client.connect(function(err, client) { + expect(err).to.not.exist; + const db = client.db(configuration.db); let collection, cursor, spy; const close = e => cursor.close(() => client.close(() => done(e))); Promise.resolve() + .then(() => new Promise(resolve => setTimeout(() => resolve(), 500))) .then(() => db.createCollection('test_count_readPreference')) .then(() => (collection = db.collection('test_count_readPreference'))) .then(() => collection.find()) From c6c643dfcec8ba5bf799a039c3738b1f39a5d88e Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 09:25:07 -0400 Subject: [PATCH 12/40] test(connection): don't use unreliable `fullsetup`/`open` events --- test/functional/apm_tests.js | 4 +--- test/functional/connection_tests.js | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/test/functional/apm_tests.js b/test/functional/apm_tests.js index 84c30f92021..50e90a22b35 100644 --- a/test/functional/apm_tests.js +++ b/test/functional/apm_tests.js @@ -266,7 +266,7 @@ describe('APM', function() { client.on('commandStarted', filterForCommands(desiredEvents, started)); client.on('commandSucceeded', filterForCommands(desiredEvents, succeeded)); - client.on('fullsetup', client => { + client.connect().then(() => { const db = client.db(self.configuration.db); db @@ -295,8 +295,6 @@ describe('APM', function() { done(); }); }); - - client.connect(); } }); diff --git a/test/functional/connection_tests.js b/test/functional/connection_tests.js index 9f6daad3300..b1864ce0239 100644 --- a/test/functional/connection_tests.js +++ b/test/functional/connection_tests.js @@ -128,14 +128,12 @@ describe('Connection', function() { var configuration = this.configuration; var client = configuration.newClient({ w: 1 }, { poolSize: 1, auto_reconnect: true }); - client.on('open', function(client) { + client.connect().then(() => { test.equal('js', client.topology.parserType); client.close(); done(); }); - - client.connect(); } }); From ed7e2c5d2afc37966df6ecc3491f262fd77c5393 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 09:51:32 -0400 Subject: [PATCH 13/40] test(sesion-leaks): add stack trace to acquired sessions This should make it easier to trace where the originating call to the session acquisiton was made, in order to aid triaging the leak. --- test/functional/session_leak_test.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/functional/session_leak_test.js b/test/functional/session_leak_test.js index 148e3475dde..88323573224 100644 --- a/test/functional/session_leak_test.js +++ b/test/functional/session_leak_test.js @@ -28,6 +28,7 @@ beforeEach('Session Leak Before Each - setup session tracking', function() { const _acquire = ServerSessionPool.prototype.acquire; sandbox.stub(ServerSessionPool.prototype, 'acquire').callsFake(function() { const session = _acquire.apply(this, arguments); + session.trace = new Error().stack; activeSessions.add(sessionId(session.id)); return session; }); @@ -71,16 +72,28 @@ afterEach('Session Leak After Each - ensure no leaks', function() { } try { + if (activeSessionsBeforeClose.size) { + console.dir(activeSessionsBeforeClose, { depth: 5 }); + } + expect( activeSessionsBeforeClose.size, `test is leaking ${activeSessionsBeforeClose.size} active sessions while running client` ).to.equal(0); + if (activeSessions.size) { + console.dir(activeSessions, { depth: 5 }); + } + expect( activeSessions.size, `client close failed to clean up ${activeSessions.size} active sessions` ).to.equal(0); + if (pooledSessions.size) { + console.dir(pooledSessions, { depth: 5 }); + } + expect( pooledSessions.size, `client close failed to clean up ${pooledSessions.size} pooled sessions` From ccffe3fc7a1a64bfc13499f20421c5e31789e068 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 09:54:11 -0400 Subject: [PATCH 14/40] test(change-streams): add delay for sample document insertions --- test/examples/change_streams.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/examples/change_streams.js b/test/examples/change_streams.js index f9e998fc0a9..d1ea7814669 100644 --- a/test/examples/change_streams.js +++ b/test/examples/change_streams.js @@ -28,9 +28,10 @@ describe('examples(change-stream):', function() { it('Open A Change Stream', { metadata: { requires: { topology: ['replicaset'], mongodb: '>=3.6.0' } }, test: async function() { + await db.collection('inventory').insertOne({ a: 1 }); setTimeout(async function() { await db.collection('inventory').insertOne({ a: 1 }); - }); + }, 250); // Start Changestream Example 1 const collection = db.collection('inventory'); @@ -52,7 +53,7 @@ describe('examples(change-stream):', function() { await db.collection('inventory').insertOne({ a: 1, b: 2 }); setTimeout(async function() { await db.collection('inventory').updateOne({ a: 1 }, { $set: { a: 2 } }); - }); + }, 250); // Start Changestream Example 2 const collection = db.collection('inventory'); @@ -77,7 +78,7 @@ describe('examples(change-stream):', function() { setTimeout(async function() { await db.collection('inventory').insertOne({ a: 1 }); await db.collection('inventory').insertOne({ b: 2 }); - }); + }, 250); // Start Changestream Example 3 const collection = db.collection('inventory'); @@ -103,7 +104,7 @@ describe('examples(change-stream):', function() { test: async function() { setTimeout(async function() { await db.collection('inventory').insertOne({ username: 'alice' }); - }); + }, 250); // Start Changestream Example 4 const pipeline = [ From 950903c93ffd4f2eb585d05ae0b5948f9cbd8204 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 10:29:34 -0400 Subject: [PATCH 15/40] test(sdam): use `connect` rather than `fullsetup` to start test --- test/functional/sdam_tests.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/test/functional/sdam_tests.js b/test/functional/sdam_tests.js index 3c0c72ec498..b5367ac7ead 100644 --- a/test/functional/sdam_tests.js +++ b/test/functional/sdam_tests.js @@ -42,19 +42,16 @@ describe('SDAM', function() { }); }); - client.on('fullsetup', function(topology) { - topology.close(true); + client.connect(function(err) { + test.equal(null, err); + client.close(true); for (var name in operations) { test.ok(operations[name].length > 0); } done(); }); - - client.connect(function(err) { - test.equal(null, err); - }); } }); From 6cd5fb870a94e41eb7ae13d54017418808e6fb13 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Wed, 22 Aug 2018 10:29:51 -0400 Subject: [PATCH 16/40] test(config): if a `setName` is present, generate a replset uri --- test/config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/config.js b/test/config.js index 00bd5b0eea8..c6dea98bfb1 100644 --- a/test/config.js +++ b/test/config.js @@ -67,6 +67,10 @@ class NativeConfiguration extends ConfigurationBase { dbHost = qs.escape(dbHost); } + if (this.options.setName) { + Object.assign(dbOptions, { replicaSet: this.options.setName, auto_reconnect: false }); + } + const connectionString = url.format({ protocol: 'mongodb', slashes: true, From 6f412d05dbed4b5dd9f5157cf37bf71d7c3e35b5 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Thu, 23 Aug 2018 15:38:21 -0400 Subject: [PATCH 17/40] test(*): exclusively use `newClient` to create new MongoClients This is a followup to the previous commit, where now all tests consistently use the single `newClient` defined on the test config object to create their clients. This ensures that we are testing everything using connection strings. NODE-1640 --- test/config.js | 5 + test/functional/aggregation_tests.js | 16 +- test/functional/apm_tests.js | 15 +- test/functional/buffering_proxy_tests.js | 198 +++---- test/functional/byo_promises_tests.js | 15 +- test/functional/change_stream_spec_tests.js | 11 +- test/functional/change_stream_tests.js | 207 +++---- test/functional/collations_tests.js | 180 +++--- test/functional/collection_tests.js | 38 +- .../functional/command_write_concern_tests.js | 396 ++++++------- test/functional/crud_spec_tests.js | 4 +- test/functional/db_tests.js | 19 +- test/functional/disconnect_handler_tests.js | 4 +- test/functional/domain_tests.js | 34 +- test/functional/error_tests.js | 49 +- test/functional/find_and_modify_tests.js | 4 +- test/functional/find_tests.js | 47 +- test/functional/gridfs_stream_tests.js | 325 +++++------ test/functional/gridfs_tests.js | 24 +- test/functional/ignore_undefined_tests.js | 59 +- test/functional/jira_bug_tests.js | 112 ++-- test/functional/kerberos_tests.js | 404 +++++++------ test/functional/ldap_tests.js | 10 +- test/functional/max_staleness_tests.js | 71 +-- test/functional/mongo_client_tests.js | 509 ++++++++--------- test/functional/multiple_db_tests.js | 4 +- test/functional/operation_example_tests.js | 537 +++++++++++------- .../operation_generators_example_tests.js | 453 +++++++++++---- .../operation_promises_example_tests.js | 388 ++++++++----- test/functional/promises_collection_tests.js | 32 +- test/functional/promises_cursor_tests.js | 4 +- test/functional/promises_db_tests.js | 59 +- test/functional/promote_buffers_tests.js | 108 ++-- test/functional/promote_values_tests.js | 138 ++--- test/functional/readconcern_tests.js | 12 +- test/functional/reconnect_tests.js | 76 ++- test/functional/replicaset_mock_tests.js | 46 +- test/functional/replset_connection_tests.js | 486 +++++----------- test/functional/replset_failover_tests.js | 139 ++--- test/functional/replset_operations_tests.js | 41 +- .../replset_read_preference_tests.js | 341 +++-------- test/functional/retryable_writes_tests.js | 5 +- test/functional/sdam_tests.js | 9 +- test/functional/sharding_connection_tests.js | 125 ++-- test/functional/sharding_failover_tests.js | 10 +- test/functional/transactions_tests.js | 7 +- test/functional/uri_tests.js | 129 +++-- test/functional/view_tests.js | 9 +- test/unit/bypass_validation_tests.js | 37 +- test/unit/change_stream_resume_tests.js | 4 +- test/unit/db_list_collections_tests.js | 4 +- test/unit/sessions/client_tests.js | 7 +- test/unit/sessions/collection_tests.js | 13 +- 53 files changed, 2953 insertions(+), 3026 deletions(-) diff --git a/test/config.js b/test/config.js index c6dea98bfb1..5b7a4b3ab0d 100644 --- a/test/config.js +++ b/test/config.js @@ -48,6 +48,11 @@ class NativeConfiguration extends ConfigurationBase { } newClient(dbOptions, serverOptions) { + // support MongoClient contructor form (url, options) for `newClient` + if (typeof dbOptions === 'string') { + return new this.mongo.MongoClient(dbOptions, serverOptions); + } + serverOptions = Object.assign({}, { haInterval: 100 }, serverOptions); // Override implementation diff --git a/test/functional/aggregation_tests.js b/test/functional/aggregation_tests.js index 7db2f43d342..f4677ea28aa 100644 --- a/test/functional/aggregation_tests.js +++ b/test/functional/aggregation_tests.js @@ -25,7 +25,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -117,7 +117,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -210,7 +210,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -303,7 +303,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -388,7 +388,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -478,7 +478,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -572,7 +572,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN @@ -664,7 +664,7 @@ describe('Aggregation', function() { databaseName = this.configuration.db; // LINE var MongoClient = require('mongodb').MongoClient; - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // REPLACE this.configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE test. // BEGIN diff --git a/test/functional/apm_tests.js b/test/functional/apm_tests.js index 50e90a22b35..69fc62ac318 100644 --- a/test/functional/apm_tests.js +++ b/test/functional/apm_tests.js @@ -1,6 +1,5 @@ 'use strict'; -const MongoClient = require('../..').MongoClient; const instrument = require('../..').instrument; const path = require('path'); const fs = require('fs'); @@ -94,7 +93,7 @@ describe('APM', function() { } ); - it('should support legacy `instrument`/`uninstrument` methods with MongoClient.connect', { + it('should support legacy `instrument`/`uninstrument` methods with MongoClient `connect`', { metadata: { requires: { topology: ['single', 'replicaset', 'sharded'] } }, // The actual test we wish to run @@ -106,8 +105,9 @@ describe('APM', function() { instrumentation.on('started', filterForCommands('insert', started)); instrumentation.on('succeeded', filterForCommands('insert', succeeded)); - const uri = this.configuration.url(); - return MongoClient.connect(uri, { monitorCommands: true }).then(client => { + const firstClient = this.configuration.newClient({}, { monitorCommands: true }); + const secondClient = this.configuration.newClient({}, { monitorCommands: true }); + return firstClient.connect().then(client => { return client .db(this.configuration.db) .collection('apm_test') @@ -124,7 +124,7 @@ describe('APM', function() { .then(() => { started = []; succeeded = []; - return MongoClient.connect(uri, { monitorCommands: true }); + return secondClient.connect(); }) .then(newClient => { return newClient @@ -1108,9 +1108,8 @@ describe('APM', function() { it(test.description, { metadata: { requires: requirements }, test: function() { - return MongoClient.connect(this.configuration.url(), { - monitorCommands: true - }).then(client => { + const client = this.configuration.newClient({}, { monitorCommands: true }); + return client.connect().then(client => { expect(client).to.exist; return executeOperation(client, scenario, test).then(() => client.close()); }); diff --git a/test/functional/buffering_proxy_tests.js b/test/functional/buffering_proxy_tests.js index ad216ea01f9..0807a3e3989 100644 --- a/test/functional/buffering_proxy_tests.js +++ b/test/functional/buffering_proxy_tests.js @@ -29,7 +29,6 @@ describe.skip('Buffering Proxy', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId, ReadPreference = configuration.require.ReadPreference; @@ -179,68 +178,69 @@ describe.skip('Buffering Proxy', function() { } }); - MongoClient.connect( + const client = configuration.newClient( 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', { socketTimeoutMS: 2000, haInterval: 1000 - }, - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - var results = []; + } + ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + var results = []; + + setTimeout(function() { + die = true; + dieSecondary = true; setTimeout(function() { - die = true; - dieSecondary = true; + db.collection('test').insertOne({ a: 1 }, function(err) { + test.equal(null, err); + results.push('insertOne'); + }); + + db.command( + { count: 'test', query: {} }, + { readPreference: new ReadPreference(ReadPreference.SECONDARY) }, + function(err) { + test.equal(null, err); + results.push('count'); + } + ); + + db + .collection('test') + .aggregate([{ $match: {} }]) + .toArray(function(err) { + test.equal(null, err); + results.push('aggregate'); + }); - setTimeout(function() { - db.collection('test').insertOne({ a: 1 }, function(err) { + db + .collection('test') + .find({}) + .setReadPreference(new ReadPreference(ReadPreference.SECONDARY)) + .toArray(function(err) { test.equal(null, err); - results.push('insertOne'); + results.push('find'); }); - db.command( - { count: 'test', query: {} }, - { readPreference: new ReadPreference(ReadPreference.SECONDARY) }, - function(err) { - test.equal(null, err); - results.push('count'); - } - ); - - db - .collection('test') - .aggregate([{ $match: {} }]) - .toArray(function(err) { - test.equal(null, err); - results.push('aggregate'); - }); - - db - .collection('test') - .find({}) - .setReadPreference(new ReadPreference(ReadPreference.SECONDARY)) - .toArray(function(err) { - test.equal(null, err); - results.push('find'); - }); + setTimeout(function() { + die = false; setTimeout(function() { - die = false; + test.deepEqual(['insertOne', 'aggregate'].sort(), results.sort()); - setTimeout(function() { - test.deepEqual(['insertOne', 'aggregate'].sort(), results.sort()); - - client.close(); - // test.deepEqual(['insertOne', 'aggregate', 'count', 'find'], results); - done(); - }, 1000); + client.close(); + // test.deepEqual(['insertOne', 'aggregate', 'count', 'find'], results); + done(); }, 1000); - }, 3000); - }, 1000); - } - ); + }, 1000); + }, 3000); + }, 1000); + }); }); } }); @@ -255,7 +255,6 @@ describe.skip('Buffering Proxy', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId, ReadPreference = configuration.require.ReadPreference; @@ -409,70 +408,71 @@ describe.skip('Buffering Proxy', function() { } }); - MongoClient.connect( + const client = configuration.newClient( 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', { socketTimeoutMS: 2000, haInterval: 1000 - }, - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + } + ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + setTimeout(function() { + die = true; + diePrimary = true; setTimeout(function() { - die = true; - diePrimary = true; + var results = []; - setTimeout(function() { - var results = []; + db.collection('test').insertOne({ a: 1 }, function(err) { + test.equal(null, err); + results.push('insertOne'); + }); + + db.command( + { count: 'test', query: {} }, + { readPreference: new ReadPreference(ReadPreference.SECONDARY) }, + function(err) { + test.equal(null, err); + results.push('count'); + } + ); + + db + .collection('test') + .aggregate([{ $match: {} }]) + .toArray(function(err) { + test.equal(null, err); + results.push('aggregate'); + }); - db.collection('test').insertOne({ a: 1 }, function(err) { + db + .collection('test') + .find({}) + .setReadPreference(new ReadPreference(ReadPreference.SECONDARY)) + .toArray(function(err) { test.equal(null, err); - results.push('insertOne'); + results.push('find'); }); - db.command( - { count: 'test', query: {} }, - { readPreference: new ReadPreference(ReadPreference.SECONDARY) }, - function(err) { - test.equal(null, err); - results.push('count'); - } - ); - - db - .collection('test') - .aggregate([{ $match: {} }]) - .toArray(function(err) { - test.equal(null, err); - results.push('aggregate'); - }); - - db - .collection('test') - .find({}) - .setReadPreference(new ReadPreference(ReadPreference.SECONDARY)) - .toArray(function(err) { - test.equal(null, err); - results.push('find'); - }); + setTimeout(function() { + die = false; setTimeout(function() { - die = false; + test.deepEqual(['count', 'find'].sort(), results.sort()); - setTimeout(function() { - test.deepEqual(['count', 'find'].sort(), results.sort()); + client.close(); - client.close(); - - // test.deepEqual(['count', 'find', 'insertOne', 'aggregate'], results); - done(); - }, 1500); - }, 1000); - }, 3000); - }, 1000); - } - ); + // test.deepEqual(['count', 'find', 'insertOne', 'aggregate'], results); + done(); + }, 1500); + }, 1000); + }, 3000); + }, 1000); + }); }); } }); diff --git a/test/functional/byo_promises_tests.js b/test/functional/byo_promises_tests.js index 736cd8a8dee..2f14c15ac46 100644 --- a/test/functional/byo_promises_tests.js +++ b/test/functional/byo_promises_tests.js @@ -12,13 +12,18 @@ describe('BYO Promises', function() { // The actual test we wish to run test: function(done) { var self = this; - var MongoClient = self.configuration.require.MongoClient; + const configuration = this.configuration; var Promise = require('bluebird'); - MongoClient.connect(self.configuration.url(), { - promiseLibrary: Promise, - sslValidate: false - }).then(function(client) { + const client = configuration.newClient( + {}, + { + promiseLibrary: Promise, + sslValidate: false + } + ); + + client.connect().then(function(client) { var db = client.db(self.configuration.db); var promise = db.collection('test').insert({ a: 1 }); expect(promise).to.be.an.instanceOf(Promise); diff --git a/test/functional/change_stream_spec_tests.js b/test/functional/change_stream_spec_tests.js index 46b4e2321b6..5b2e1aecff2 100644 --- a/test/functional/change_stream_spec_tests.js +++ b/test/functional/change_stream_spec_tests.js @@ -4,7 +4,6 @@ const EJSON = require('mongodb-extjson'); const chai = require('chai'); const fs = require('fs'); const camelCase = require('lodash.camelcase'); -const MongoClient = require('../../lib/mongo_client'); const setupDatabase = require('./shared').setupDatabase; const delay = require('./shared').delay; const expect = chai.expect; @@ -17,8 +16,9 @@ describe('Change Stream Spec', function() { let events; before(function() { - return setupDatabase(this.configuration).then(() => { - globalClient = new MongoClient(this.configuration.url()); + const configuration = this.configuration; + return setupDatabase(configuration).then(() => { + globalClient = configuration.newClient(); return globalClient.connect(); }); }); @@ -43,11 +43,10 @@ describe('Change Stream Spec', function() { const gc = globalClient; const sDB = specData.database_name; const sColl = specData.collection_name; + const configuration = this.configuration; return Promise.all(ALL_DBS.map(db => gc.db(db).dropDatabase())) .then(() => gc.db(sDB).createCollection(sColl)) - .then(() => - new MongoClient(this.configuration.url(), { monitorCommands: true }).connect() - ) + .then(() => configuration.newClient({}, { monitorCommands: true }).connect()) .then(client => { ctx = { gc, client }; events = []; diff --git a/test/functional/change_stream_tests.js b/test/functional/change_stream_tests.js index b7d2315abe8..9cd0357ce14 100644 --- a/test/functional/change_stream_tests.js +++ b/test/functional/change_stream_tests.js @@ -25,8 +25,7 @@ describe('Change Streams', function() { beforeEach(function() { const configuration = this.configuration; - const MongoClient = configuration.require.MongoClient; - const client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(() => { const db = client.db('integration_tests'); @@ -40,8 +39,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + var client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -95,8 +93,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -155,8 +152,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -242,8 +238,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -274,8 +269,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -302,8 +296,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -342,8 +335,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(function() { var theDatabase = client.db('integration_tests'); @@ -380,8 +372,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -417,8 +408,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -465,8 +455,8 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); + client.connect(function(err, client) { assert.ifError(err); @@ -508,8 +498,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -564,8 +553,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -610,8 +598,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -664,8 +651,7 @@ describe('Change Streams', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - ObjectId = configuration.require.ObjectId; + const ObjectId = configuration.require.ObjectId; // Contain mock server var primaryServer = null; @@ -712,8 +698,7 @@ describe('Change Streams', function() { }); const mockServerURL = 'mongodb://localhost:32000/'; - - var client = new MongoClient(mockServerURL); + var client = configuration.newClient(mockServerURL); client.connect(function(err, client) { assert.ifError(err); @@ -763,8 +748,7 @@ describe('Change Streams', function() { }, test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - ObjectId = configuration.require.ObjectId; + const ObjectId = configuration.require.ObjectId; // Contain mock server var primaryServer = null; @@ -815,39 +799,37 @@ describe('Change Streams', function() { }); }); - MongoClient.connect( - 'mongodb://localhost:32000/', - { - socketTimeoutMS: 500, - validateOptions: true - }, - function(err, client) { - assert.ifError(err); + const client = configuration.newClient('mongodb://localhost:32000/', { + socketTimeoutMS: 500, + validateOptions: true + }); - var theDatabase = client.db('integration_tests'); - var theCollection = theDatabase.collection('MongoNetworkErrorTestPromises'); - var thisChangeStream = theCollection.watch(pipeline); + client.connect(function(err, client) { + assert.ifError(err); - thisChangeStream.next(function(err, change) { - assert.ok(err instanceof MongoNetworkError); - assert.ok(err.message); - assert.ok(err.message.indexOf('timed out') > -1); + var theDatabase = client.db('integration_tests'); + var theCollection = theDatabase.collection('MongoNetworkErrorTestPromises'); + var thisChangeStream = theCollection.watch(pipeline); - assert.equal( - change, - null, - 'ChangeStream.next() returned a change document but it should have returned a MongoNetworkError' - ); + thisChangeStream.next(function(err, change) { + assert.ok(err instanceof MongoNetworkError); + assert.ok(err.message); + assert.ok(err.message.indexOf('timed out') > -1); - thisChangeStream.close(function(err) { - assert.ifError(err); - thisChangeStream.close(); + assert.equal( + change, + null, + 'ChangeStream.next() returned a change document but it should have returned a MongoNetworkError' + ); - client.close(() => mock.cleanup(() => done())); - }); + thisChangeStream.close(function(err) { + assert.ifError(err); + thisChangeStream.close(); + + client.close(() => mock.cleanup(() => done())); }); - } - ); + }); + }); } }); @@ -861,10 +843,9 @@ describe('Change Streams', function() { }, test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - ObjectId = configuration.require.ObjectId, - Timestamp = configuration.require.Timestamp, - Long = configuration.require.Long; + const ObjectId = configuration.require.ObjectId; + const Timestamp = configuration.require.Timestamp; + const Long = configuration.require.Long; // Contain mock server var primaryServer = null; @@ -939,11 +920,13 @@ describe('Change Streams', function() { }); let finalError = undefined; - - MongoClient.connect('mongodb://localhost:32000/', { + const client = configuration.newClient('mongodb://localhost:32000/', { socketTimeoutMS: 500, validateOptions: true - }) + }); + + client + .connect() .then(client => { var database = client.db('integration_tests'); var collection = database.collection('MongoNetworkErrorTestPromises'); @@ -990,8 +973,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(client => { var database = client.db('integration_tests'); @@ -1081,8 +1063,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(client => { var database = client.db('integration_tests'); @@ -1137,8 +1118,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(client => { var database = client.db('integration_tests'); @@ -1206,9 +1186,8 @@ describe('Change Streams', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var ReadPreference = configuration.require.ReadPreference; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); return client.connect().then(client => { // Should get preference from database @@ -1256,8 +1235,7 @@ describe('Change Streams', function() { test: function(done) { var configuration = this.configuration; var fs = require('fs'); - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -1304,10 +1282,9 @@ describe('Change Streams', function() { }, test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - ObjectId = configuration.require.ObjectId, - Timestamp = configuration.require.Timestamp, - Long = configuration.require.Long; + const ObjectId = configuration.require.ObjectId; + const Timestamp = configuration.require.Timestamp; + const Long = configuration.require.Long; // Contain mock server var primaryServer = null; @@ -1403,44 +1380,42 @@ describe('Change Streams', function() { } }); - MongoClient.connect( - `mongodb://${primaryServer.uri()}/`, - { - socketTimeoutMS: 500, - validateOptions: true - }, - function(err, client) { - assert.ifError(err); + const client = configuration.newClient(`mongodb://${primaryServer.uri()}/`, { + socketTimeoutMS: 500, + validateOptions: true + }); - var fs = require('fs'); - var theDatabase = client.db('integration_tests5'); - var theCollection = theDatabase.collection('MongoNetworkErrorTestPromises'); - var thisChangeStream = theCollection.watch(pipeline); + client.connect(function(err, client) { + assert.ifError(err); - var filename = '/tmp/_nodemongodbnative_resumepipe.txt'; - var outStream = fs.createWriteStream(filename); + var fs = require('fs'); + var theDatabase = client.db('integration_tests5'); + var theCollection = theDatabase.collection('MongoNetworkErrorTestPromises'); + var thisChangeStream = theCollection.watch(pipeline); - thisChangeStream.stream({ transform: JSON.stringify }).pipe(outStream); + var filename = '/tmp/_nodemongodbnative_resumepipe.txt'; + var outStream = fs.createWriteStream(filename); - // Listen for changes to the file - var watcher = fs.watch(filename, function(eventType) { - assert.equal(eventType, 'change'); + thisChangeStream.stream({ transform: JSON.stringify }).pipe(outStream); - var fileContents = fs.readFileSync(filename, 'utf8'); + // Listen for changes to the file + var watcher = fs.watch(filename, function(eventType) { + assert.equal(eventType, 'change'); - var parsedFileContents = JSON.parse(fileContents); - assert.equal(parsedFileContents.fullDocument.a, 1); + var fileContents = fs.readFileSync(filename, 'utf8'); - watcher.close(); + var parsedFileContents = JSON.parse(fileContents); + assert.equal(parsedFileContents.fullDocument.a, 1); - thisChangeStream.close(function(err) { - assert.ifError(err); + watcher.close(); - mock.cleanup(() => done()); - }); + thisChangeStream.close(function(err) { + assert.ifError(err); + + mock.cleanup(() => done()); }); - } - ); + }); + }); }); } }); @@ -1452,8 +1427,7 @@ describe('Change Streams', function() { test: function(done) { var configuration = this.configuration; var crypto = require('crypto'); - var MongoClient = configuration.require.MongoClient; - var client = new MongoClient(configuration.url(), { + var client = configuration.newClient(configuration.url(), { poolSize: 1, autoReconnect: false }); @@ -1512,8 +1486,7 @@ describe('Change Streams', function() { metadata: { requires: { topology: 'replicaset', mongodb: '>=3.5.10' } }, test: function(done) { const configuration = this.configuration; - const MongoClient = configuration.require.MongoClient; - const client = new MongoClient(configuration.url()); + const client = configuration.newClient(); const collectionName = 'resumeAfterKillCursor'; @@ -1552,7 +1525,6 @@ describe('Change Streams', function() { metadata: { requires: { topology: 'replicaset', mongodb: '>=3.7.3' } }, test: function(done) { const configuration = this.configuration; - const MongoClient = configuration.require.MongoClient; const ObjectId = configuration.require.ObjectId; const Timestamp = configuration.require.Timestamp; const Long = configuration.require.Long; @@ -1630,9 +1602,9 @@ describe('Change Streams', function() { validateOptions: true }; + const client = configuration.newClient(`mongodb://${server.uri()}`, connectOptions); let getMoreCounter = 0; let aggregateCounter = 0; - let client; let changeStream; let server; @@ -1681,8 +1653,7 @@ describe('Change Streams', function() { .createServer() .then(_server => (server = _server)) .then(() => server.setMessageHandler(primaryServerHandler)) - .then(() => MongoClient.connect(`mongodb://${server.uri()}`, connectOptions)) - .then(_client => (client = _client)) + .then(() => client.connect()) .then(() => client.db(dbName)) .then(db => db.collection(collectionName)) .then(col => col.watch(pipeline)) diff --git a/test/functional/collations_tests.js b/test/functional/collations_tests.js index 1d89a0dfc31..321e0b628a0 100644 --- a/test/functional/collations_tests.js +++ b/test/functional/collations_tests.js @@ -27,8 +27,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -50,7 +49,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -79,8 +79,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -102,7 +101,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -123,8 +123,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -148,7 +147,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -174,8 +174,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -199,7 +198,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -222,8 +222,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -247,7 +246,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -280,7 +280,6 @@ describe('Collation', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, Code = configuration.require.Code; // Primary server states @@ -305,7 +304,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -338,8 +338,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -363,7 +362,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -384,8 +384,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -409,7 +408,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -434,8 +434,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -459,7 +458,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -483,8 +483,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -508,7 +507,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -533,8 +533,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -558,7 +557,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -582,7 +582,6 @@ describe('Collation', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, Long = configuration.require.Long; // Primary server states @@ -616,7 +615,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -637,8 +637,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields, { maxWireVersion: 4 })]; @@ -659,7 +658,8 @@ describe('Collation', function() { }); // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -681,8 +681,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields, { maxWireVersion: 4 })]; @@ -703,7 +702,8 @@ describe('Collation', function() { }); // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -723,8 +723,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -750,7 +749,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -785,8 +785,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields, { maxWireVersion: 4 })]; @@ -808,7 +807,8 @@ describe('Collation', function() { }); // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -843,7 +843,6 @@ describe('Collation', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -930,35 +929,36 @@ describe('Collation', function() { setTimeout(() => { // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - - db.collection('test').bulkWrite( - [ - { - updateOne: { - q: { a: 2 }, - u: { $set: { a: 2 } }, - upsert: true, - collation: { caseLevel: true } - } - }, - { deleteOne: { q: { c: 1 } } } - ], - { ordered: true }, - function(err) { - test.ok(err); - test.equal('server/primary/mongos does not support collation', err.message); - - client.close(); - done(); - } - ); - } + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001/test?replicaSet=rs' ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + db.collection('test').bulkWrite( + [ + { + updateOne: { + q: { a: 2 }, + u: { $set: { a: 2 } }, + upsert: true, + collation: { caseLevel: true } + } + }, + { deleteOne: { q: { c: 1 } } } + ], + { ordered: true }, + function(err) { + test.ok(err); + test.equal('server/primary/mongos does not support collation', err.message); + + client.close(); + done(); + } + ); + }); }, 500); }); } @@ -968,8 +968,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields)]; @@ -991,7 +990,8 @@ describe('Collation', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -1017,8 +1017,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields, { maxWireVersion: 4 })]; @@ -1039,7 +1038,8 @@ describe('Collation', function() { }); // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -1062,8 +1062,7 @@ describe('Collation', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Primary server states var primary = [Object.assign({}, defaultFields, { maxWireVersion: 4 })]; @@ -1084,7 +1083,8 @@ describe('Collation', function() { }); // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -1142,11 +1142,11 @@ describe('Collation', function() { metadata: { requires: { topology: 'single', mongodb: '>=3.3.12' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Connect to the mocks - MongoClient.connect(configuration.url(), function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -1184,11 +1184,11 @@ describe('Collation', function() { metadata: { requires: { topology: 'single', mongodb: '>=3.3.12' } }, test: function(done) { - var configuration = this.configuration, - MongoClient = configuration.require.MongoClient; + var configuration = this.configuration; // Connect to the mocks - MongoClient.connect(configuration.url(), function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); diff --git a/test/functional/collection_tests.js b/test/functional/collection_tests.js index 61ed7d7e442..8facf4433b9 100644 --- a/test/functional/collection_tests.js +++ b/test/functional/collection_tests.js @@ -3,7 +3,6 @@ const test = require('./shared').assert; const setupDatabase = require('./shared').setupDatabase; const chai = require('chai'); const expect = chai.expect; -const MongoClient = require('../..').MongoClient; const sinonChai = require('sinon-chai'); const mock = require('mongodb-mock-server'); chai.use(sinonChai); @@ -1588,7 +1587,7 @@ describe('Collection', function() { it('should correctly perform estimatedDocumentCount on non-matching query', function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = configuration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1605,7 +1604,7 @@ describe('Collection', function() { it('should correctly perform countDocuments on non-matching query', function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = configuration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1622,7 +1621,7 @@ describe('Collection', function() { it('countDocuments should return Promise that resolves when no callback passed', function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = configuration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1641,7 +1640,7 @@ describe('Collection', function() { it('countDocuments should not return a promise if callback given', function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = configuration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1657,7 +1656,7 @@ describe('Collection', function() { it('countDocuments should correctly call the given callback', function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = configuration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1685,8 +1684,8 @@ describe('Collection', function() { afterEach(() => mock.cleanup()); - function testCountDocMock(config, done) { - const client = new MongoClient(`mongodb://${server.uri()}/test`); + function testCountDocMock(testConfiguration, config, done) { + const client = testConfiguration.newClient(`mongodb://${server.uri()}/test`); const close = e => client.close(() => done(e)); server.setMessageHandler(request => { @@ -1726,6 +1725,7 @@ describe('Collection', function() { }; testCountDocMock( + this.configuration, { replyHandler, executeCountDocuments, @@ -1748,6 +1748,7 @@ describe('Collection', function() { }; testCountDocMock( + this.configuration, { replyHandler, executeCountDocuments, @@ -1770,6 +1771,7 @@ describe('Collection', function() { }; testCountDocMock( + this.configuration, { replyHandler, executeCountDocuments, @@ -1780,9 +1782,9 @@ describe('Collection', function() { }); }); - function testCapped(config, done) { + function testCapped(testConfiguration, config, done) { const configuration = config.config; - const client = new MongoClient(configuration.url(), { w: 1 }); + const client = testConfiguration.newClient({}, { w: 1 }); client.connect(function(err, client) { const db = client.db(configuration.db); @@ -1798,16 +1800,22 @@ describe('Collection', function() { } it('isCapped should return false for uncapped collections', function(done) { - testCapped({ config: this.configuration, collName: 'uncapped', opts: { capped: false } }, done); + testCapped( + this.configuration, + { config: this.configuration, collName: 'uncapped', opts: { capped: false } }, + done + ); }); it('isCapped should return false for collections instantiated without specifying capped', function(done) { - testCapped({ config: this.configuration, collName: 'uncapped2', opts: {} }, done); + testCapped( + this.configuration, + { config: this.configuration, collName: 'uncapped2', opts: {} }, + done + ); }); describe('Retryable Writes on bulk ops', function() { - const MongoClient = require('../../lib/mongo_client'); - let client; let db; let collection; @@ -1815,7 +1823,7 @@ describe('Collection', function() { const metadata = { requires: { topology: ['replicaset'], mongodb: '>=3.6.0' } }; beforeEach(function() { - client = new MongoClient(this.configuration.url(), { retryWrites: true }); + client = this.configuration.newClient({}, { retryWrites: true }); return client.connect().then(() => { db = client.db('test_retry_writes'); collection = db.collection('tests'); diff --git a/test/functional/command_write_concern_tests.js b/test/functional/command_write_concern_tests.js index 369d6ba77f7..cc58cd87c45 100644 --- a/test/functional/command_write_concern_tests.js +++ b/test/functional/command_write_concern_tests.js @@ -30,7 +30,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -112,27 +111,28 @@ describe('Command Write Concern', function() { }); var commandResult = null; - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - - db - .collection('test') - .aggregate([{ $match: {} }, { $out: 'readConcernCollectionAggregate1Output' }], { - w: 2, - wtimeout: 1000 - }) - .toArray(function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); - - client.close(); - done(); - }); - } + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + db + .collection('test') + .aggregate([{ $match: {} }, { $out: 'readConcernCollectionAggregate1Output' }], { + w: 2, + wtimeout: 1000 + }) + .toArray(function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + }); + }); }); } }); @@ -147,7 +147,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId, Long = configuration.require.Long; @@ -242,21 +241,22 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.createCollection('test_collection_methods', { w: 2, wtimeout: 1000 }, function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - }); - } - ); + db.createCollection('test_collection_methods', { w: 2, wtimeout: 1000 }, function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + }); + }); }); } }); @@ -271,7 +271,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -356,29 +355,30 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.collection('indexOptionDefault').createIndex( - { a: 1 }, - { - indexOptionDefaults: true, - w: 2, - wtimeout: 1000 - }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + db.collection('indexOptionDefault').createIndex( + { a: 1 }, + { + indexOptionDefaults: true, + w: 2, + wtimeout: 1000 + }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); - client.close(); - done(); - } - ); - } - ); + client.close(); + done(); + } + ); + }); }); } }); @@ -393,7 +393,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -477,27 +476,28 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.collection('indexOptionDefault').drop( - { - w: 2, - wtimeout: 1000 - }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - } - ); - } - ); + db.collection('indexOptionDefault').drop( + { + w: 2, + wtimeout: 1000 + }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + } + ); + }); }); } }); @@ -512,7 +512,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -596,27 +595,28 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.dropDatabase( - { - w: 2, - wtimeout: 1000 - }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - } - ); - } - ); + db.dropDatabase( + { + w: 2, + wtimeout: 1000 + }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + } + ); + }); }); } }); @@ -631,7 +631,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -715,27 +714,28 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.collection('test').dropIndexes( - { - w: 2, - wtimeout: 1000 - }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - } - ); - } - ); + db.collection('test').dropIndexes( + { + w: 2, + wtimeout: 1000 + }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + } + ); + }); }); } }); @@ -750,7 +750,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId, Code = configuration.require.Code; @@ -835,35 +834,36 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - - // String functions - var map = new Code('function() { emit(this.user_id, 1); }'); - var reduce = new Code('function(k,vals) { return 1; }'); - - // db.collection('test').mapReduce({ - db.collection('test').mapReduce( - map, - reduce, - { - out: { replace: 'tempCollection' }, - w: 2, - wtimeout: 1000 - }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); - - client.close(); - done(); - } - ); - } + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + // String functions + var map = new Code('function() { emit(this.user_id, 1); }'); + var reduce = new Code('function(k,vals) { return 1; }'); + + // db.collection('test').mapReduce({ + db.collection('test').mapReduce( + map, + reduce, + { + out: { replace: 'tempCollection' }, + w: 2, + wtimeout: 1000 + }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + } + ); + }); }); } }); @@ -878,7 +878,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -962,21 +961,22 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.admin().addUser('kay:kay', 'abc123', { w: 2, wtimeout: 1000 }, function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - }); - } - ); + db.admin().addUser('kay:kay', 'abc123', { w: 2, wtimeout: 1000 }, function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + }); + }); }); } }); @@ -991,7 +991,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -1075,21 +1074,22 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' + ); - db.admin().removeUser('kay:kay', { w: 2, wtimeout: 1000 }, function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - client.close(); - done(); - }); - } - ); + db.admin().removeUser('kay:kay', { w: 2, wtimeout: 1000 }, function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + }); + }); }); } }); @@ -1104,7 +1104,6 @@ describe('Command Write Concern', function() { test: function(done) { var configuration = this.configuration, - MongoClient = configuration.require.MongoClient, ObjectId = configuration.require.ObjectId; var electionIds = [new ObjectId(), new ObjectId()]; @@ -1188,30 +1187,31 @@ describe('Command Write Concern', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect( - 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs', - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - - // Simple findAndModify command returning the new document - db - .collection('test') - .findAndModify( - { a: 1 }, - [['a', 1]], - { $set: { b1: 1 } }, - { new: true, w: 2, wtimeout: 1000 }, - function(err) { - test.equal(null, err); - test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); - - client.close(); - done(); - } - ); - } + const client = configuration.newClient( + 'mongodb://localhost:32000,localhost:32001,localhost:32002/test?replicaSet=rs' ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + // Simple findAndModify command returning the new document + db + .collection('test') + .findAndModify( + { a: 1 }, + [['a', 1]], + { $set: { b1: 1 } }, + { new: true, w: 2, wtimeout: 1000 }, + function(err) { + test.equal(null, err); + test.deepEqual({ w: 2, wtimeout: 1000 }, commandResult.writeConcern); + + client.close(); + done(); + } + ); + }); }); } }); diff --git a/test/functional/crud_spec_tests.js b/test/functional/crud_spec_tests.js index a73aee29a06..ee60fc4a313 100644 --- a/test/functional/crud_spec_tests.js +++ b/test/functional/crud_spec_tests.js @@ -19,8 +19,8 @@ const testContext = {}; describe('CRUD spec', function() { beforeEach(function() { const configuration = this.configuration; - const MongoClient = configuration.require.MongoClient; - return MongoClient.connect(configuration.url()).then(client => { + const client = configuration.newClient(); + return client.connect().then(client => { testContext.client = client; testContext.db = client.db(configuration.db); }); diff --git a/test/functional/db_tests.js b/test/functional/db_tests.js index 946d4d09a7d..d03edc12592 100644 --- a/test/functional/db_tests.js +++ b/test/functional/db_tests.js @@ -232,13 +232,10 @@ describe('Db', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - Server = configuration.require.Server; + var fs_client = configuration.newClient('mongodb://127.0.0.1:25117/test', { + auto_reconnect: false + }); - var fs_client = new MongoClient( - new Server('127.0.0.1', 25117, { auto_reconnect: false }), - configuration.writeConcernMax() - ); fs_client.connect(function(err) { test.ok(err != null); done(); @@ -426,13 +423,11 @@ describe('Db', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - Server = configuration.require.Server; + var client = configuration.newClient(`mongodb://127.0.0.1:27088/test`, { + auto_reconnect: false, + poolSize: 4 + }); - var client = new MongoClient( - new Server('127.0.0.1', 27088, { auto_reconnect: false, poolSize: 4 }), - configuration.writeConcernMax() - ); // Establish connection to db client.connect(function(err) { test.ok(err != null); diff --git a/test/functional/disconnect_handler_tests.js b/test/functional/disconnect_handler_tests.js index c7957e35a5a..c2ef21760b4 100644 --- a/test/functional/disconnect_handler_tests.js +++ b/test/functional/disconnect_handler_tests.js @@ -11,9 +11,9 @@ describe('Disconnect Handler', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newCLient(); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); diff --git a/test/functional/domain_tests.js b/test/functional/domain_tests.js index 98384bb4a5f..02cc1eaeecb 100644 --- a/test/functional/domain_tests.js +++ b/test/functional/domain_tests.js @@ -53,30 +53,24 @@ describe('Decimal128', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var Domain = require('domain'); var domainInstance = Domain.create(); - MongoClient.connect( - configuration.url(), - { - domainsEnabled: true - }, - function(err, client) { - test.ok(!err); - var db = client.db(configuration.db); - var collection = db.collection('test'); - domainInstance.run(function() { - collection.count({}, function(err) { - test.ok(!err); - test.ok(domainInstance === process.domain); - domainInstance.exit(); - client.close(); - done(); - }); + const client = configuration.newClient({}, { domainsEnabled: true }); + client.connect(function(err, client) { + test.ok(!err); + var db = client.db(configuration.db); + var collection = db.collection('test'); + domainInstance.run(function() { + collection.count({}, function(err) { + test.ok(!err); + test.ok(domainInstance === process.domain); + domainInstance.exit(); + client.close(); + done(); }); - } - ); + }); + }); } }); diff --git a/test/functional/error_tests.js b/test/functional/error_tests.js index 03ea7fb0e32..9f78c2d2270 100644 --- a/test/functional/error_tests.js +++ b/test/functional/error_tests.js @@ -209,7 +209,6 @@ describe.skip('Errors', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var domain = require('domain'); var d = domain.create(); d.on('error', function(err) { @@ -218,7 +217,8 @@ describe.skip('Errors', function() { }); d.run(function() { - MongoClient.connect(configuration.url(), function() { + const client = configuration.newClient(); + client.connect(function() { testdfdma(); // eslint-disable-line test.ok(false); }); @@ -234,11 +234,9 @@ describe.skip('Errors', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect(configuration.url(), { server: { sslValidate: false } }, function( - err, - client - ) { + + const client = configuration.newClient({}, { server: { sslValidate: false } }); + client.connect(function(err, client) { var db = client.db(configuration.db); process.once('uncaughtException', function(err) { @@ -265,8 +263,6 @@ describe.skip('Errors', function() { // The actual test we wish to run test: function(done) { - var client = null; - // TODO: check exception and fix test process.once('uncaughtException', function() { client.close(); @@ -274,31 +270,30 @@ describe.skip('Errors', function() { }); var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { server: { sslValidate: false }, replset: { sslValidate: false }, mongos: { sslValidate: false } - }, - function(err, _client) { - test.equal(null, err); - client = _client; - var db = client.db(configuration.db); + } + ); - db.collection('throwerrorduringoperation').insert([{ a: 1 }, { a: 1 }], function(err) { - test.equal(null, err); + client.connect(function(err) { + test.equal(null, err); + var db = client.db(configuration.db); - db - .collection('throwerrorduringoperation') - .find() - .toArray(function() { + db.collection('throwerrorduringoperation').insert([{ a: 1 }, { a: 1 }], function(err) { + test.equal(null, err); + + db + .collection('throwerrorduringoperation') + .find() + .toArray(function() { err = a; // eslint-disable-line - }); - }); - } - ); + }); + }); + }); } }); diff --git a/test/functional/find_and_modify_tests.js b/test/functional/find_and_modify_tests.js index 442b6440437..20308868fae 100644 --- a/test/functional/find_and_modify_tests.js +++ b/test/functional/find_and_modify_tests.js @@ -147,7 +147,6 @@ describe('Find and Modify', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var started = []; var succeeded = []; @@ -167,7 +166,8 @@ describe('Find and Modify', function() { url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'fsync=true') : f('%s?%s', url, 'fsync=true'); // Establish connection to db - MongoClient.connect(url, { sslValidate: false }, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); var collection = db.collection('findAndModifyTEST'); diff --git a/test/functional/find_tests.js b/test/functional/find_tests.js index 8f00a81a2a4..bc4d0738c1c 100644 --- a/test/functional/find_tests.js +++ b/test/functional/find_tests.js @@ -2,7 +2,6 @@ const test = require('./shared').assert; const setupDatabase = require('./shared').setupDatabase; const expect = require('chai').expect; -const MongoClient = require('../../lib/mongo_client'); const Buffer = require('safe-buffer').Buffer; describe('Find', function() { @@ -2635,7 +2634,7 @@ describe('Find', function() { }, test: function(done) { const configuration = this.configuration; - const client = new MongoClient(configuration.url()); + const client = configuration.newClient(); client.connect(function(err, client) { var db = client.db(configuration.db); @@ -3096,35 +3095,29 @@ describe('Find', function() { }); var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), - { - ignoreUndefined: true - }, - function(err, client) { - var db = client.db(configuration.db); - var collection = db.collection('test_find_simple_cursor_inheritance'); + const client = configuration.newClient({}, { ignoreUndefined: true }); + client.connect(function(err, client) { + var db = client.db(configuration.db); + var collection = db.collection('test_find_simple_cursor_inheritance'); - // Insert some test documents - collection.insert([{ a: 2 }, { b: 3, c: undefined }], function(err) { - test.equal(null, err); - // Ensure correct insertion testing via the cursor and the count function - var cursor = collection.find({ c: undefined }); - test.equal(true, cursor.s.options.ignoreUndefined); + // Insert some test documents + collection.insert([{ a: 2 }, { b: 3, c: undefined }], function(err) { + test.equal(null, err); + // Ensure correct insertion testing via the cursor and the count function + var cursor = collection.find({ c: undefined }); + test.equal(true, cursor.s.options.ignoreUndefined); - cursor.toArray(function(err, documents) { - test.equal(2, documents.length); - // process.exit(0) - listener.uninstrument(); + cursor.toArray(function(err, documents) { + test.equal(2, documents.length); + // process.exit(0) + listener.uninstrument(); - // Let's close the db - client.close(); - done(); - }); + // Let's close the db + client.close(); + done(); }); - } - ); + }); + }); } }); }); diff --git a/test/functional/gridfs_stream_tests.js b/test/functional/gridfs_stream_tests.js index db792c61fc1..3cba86a51ea 100644 --- a/test/functional/gridfs_stream_tests.js +++ b/test/functional/gridfs_stream_tests.js @@ -29,16 +29,17 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); db.dropDatabase(function(error) { test.equal(error, null); @@ -113,16 +114,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); db.dropDatabase(function(error) { test.equal(error, null); @@ -199,16 +200,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var CHUNKS_COLL = 'gridfsdownload.chunks'; @@ -267,16 +268,16 @@ describe('GridFS Stream', function() { ObjectId = configuration.require.ObjectID; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); @@ -311,16 +312,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var readStream = fs.createReadStream('./LICENSE'); @@ -365,16 +366,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload', @@ -434,16 +435,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var CHUNKS_COLL = 'gridfsdownload.chunks'; @@ -495,16 +496,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsabort', chunkSizeBytes: 1 }); var CHUNKS_COLL = 'gridfsabort.chunks'; @@ -557,16 +558,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsabort', chunkSizeBytes: 1 }); var CHUNKS_COLL = 'gridfsabort.chunks'; @@ -621,16 +622,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdestroy', chunkSizeBytes: 10 }); var readStream = fs.createReadStream('./LICENSE'); @@ -693,16 +694,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var CHUNKS_COLL = 'gridfsdownload.chunks'; @@ -746,16 +747,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'fs' }); @@ -792,16 +793,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var CHUNKS_COLL = 'gridfsdownload.chunks'; @@ -854,16 +855,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload' }); var CHUNKS_COLL = 'gridfsdownload.chunks'; @@ -914,16 +915,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload_2' }); var readStream = fs.createReadStream('./LICENSE'); @@ -961,16 +962,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload_3' }); var readStream = fs.createReadStream('./LICENSE'); @@ -1287,16 +1288,16 @@ describe('GridFS Stream', function() { var configuration = this.configuration; var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsabort', chunkSizeBytes: 1 }); var CHUNKS_COLL = 'gridfsabort.chunks'; @@ -1356,16 +1357,16 @@ describe('GridFS Stream', function() { var GridFSBucket = configuration.require.GridFSBucket; var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE const db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN client.connect(function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN var db = client.db(configuration.db); var bucket = new GridFSBucket(db, { bucketName: 'gridfsdownload', diff --git a/test/functional/gridfs_tests.js b/test/functional/gridfs_tests.js index ea063c98a10..5fb301c8dd3 100644 --- a/test/functional/gridfs_tests.js +++ b/test/functional/gridfs_tests.js @@ -3671,12 +3671,12 @@ describe('GridFS', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - GridStore = configuration.require.GridStore, + var GridStore = configuration.require.GridStore, fs = require('fs'); // Use connect method to connect to the Server - MongoClient.connect(configuration.url(), { sslValidate: false }, function(err, client) { + const client = configuration.newClient({}, { sslValidate: false }); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); @@ -3716,11 +3716,11 @@ describe('GridFS', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - GridStore = configuration.require.GridStore; + var GridStore = configuration.require.GridStore; // Use connect method to connect to the Server - MongoClient.connect(configuration.url(), { sslValidate: false }, function(err, client) { + const client = configuration.newClient({}, { sslValidate: false }); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); @@ -3786,12 +3786,12 @@ describe('GridFS', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - GridStore = configuration.require.GridStore, + var GridStore = configuration.require.GridStore, ObjectID = configuration.require.ObjectID; var id = new ObjectID(); - MongoClient.connect(configuration.url(), { sslValidate: false }, function(err, client) { + const client = configuration.newClient({}, { sslValidate: false }); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); @@ -3869,15 +3869,15 @@ describe('GridFS', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - GridStore = configuration.require.GridStore, + var GridStore = configuration.require.GridStore, ObjectID = configuration.require.ObjectID; // Create a test buffer var buffer = Buffer.alloc(200033); // Use connect method to connect to the Server - MongoClient.connect(configuration.url(), { sslValidate: false }, function(err, client) { + const client = configuration.newClient({}, { sslValidate: false }); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); diff --git a/test/functional/ignore_undefined_tests.js b/test/functional/ignore_undefined_tests.js index d4e62c8fe02..9c6eb6e8259 100644 --- a/test/functional/ignore_undefined_tests.js +++ b/test/functional/ignore_undefined_tests.js @@ -50,48 +50,47 @@ describe('Ignore Undefined', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { bufferMaxEntries: 0, ignoreUndefined: true, sslValidate: false - }, - function(err, client) { - var db = client.db(configuration.db); - var collection = db.collection('shouldCorrectlyIgnoreUndefinedValue1'); - collection.insert({ a: 1, b: undefined }, function(err) { - test.equal(null, err); - - collection.findOne(function(err, item) { - test.equal(1, item.a); - test.ok(item.b === undefined); - - collection.insertOne({ a: 2, b: undefined }, function(err) { - test.equal(null, err); + } + ); - collection.findOne({ a: 2 }, function(err, item) { - test.equal(2, item.a); - test.ok(item.b === undefined); + client.connect(function(err, client) { + var db = client.db(configuration.db); + var collection = db.collection('shouldCorrectlyIgnoreUndefinedValue1'); + collection.insert({ a: 1, b: undefined }, function(err) { + test.equal(null, err); - collection.insertMany([{ a: 3, b: undefined }], function(err) { - test.equal(null, err); + collection.findOne(function(err, item) { + test.equal(1, item.a); + test.ok(item.b === undefined); - collection.findOne({ a: 3 }, function(err, item) { - test.equal(3, item.a); - test.ok(item.b === undefined); - client.close(); - done(); - }); + collection.insertOne({ a: 2, b: undefined }, function(err) { + test.equal(null, err); + + collection.findOne({ a: 2 }, function(err, item) { + test.equal(2, item.a); + test.ok(item.b === undefined); + + collection.insertMany([{ a: 3, b: undefined }], function(err) { + test.equal(null, err); + + collection.findOne({ a: 3 }, function(err, item) { + test.equal(3, item.a); + test.ok(item.b === undefined); + client.close(); + done(); }); }); }); }); }); - } - ); + }); + }); } } ); diff --git a/test/functional/jira_bug_tests.js b/test/functional/jira_bug_tests.js index df040bc0191..4e234cb0bc6 100644 --- a/test/functional/jira_bug_tests.js +++ b/test/functional/jira_bug_tests.js @@ -99,72 +99,68 @@ describe('JIRA bugs', function() { /** * @ignore */ - it( - 'NODE-746 should correctly connect using MongoClient.connect to single primary/secondary with both hosts in uri', - { - metadata: { requires: { topology: ['auth'] } }, + it('NODE-746 should correctly connect to single primary/secondary with both hosts in uri', { + metadata: { requires: { topology: ['auth'] } }, - // The actual test we wish to run - test: function(done) { - var configuration = this.configuration; - var Db = configuration.require.Db, - MongoClient = configuration.require.MongoClient, - Server = configuration.require.Server, - ReplSet = configuration.require.ReplSet; + // The actual test we wish to run + test: function(done) { + var configuration = this.configuration; + var Db = configuration.require.Db, + Server = configuration.require.Server, + ReplSet = configuration.require.ReplSet; - setUp(configuration, function(err, replicasetManager) { - var replSet = new ReplSet( - [new Server('localhost', 31000), new Server('localhost', 31001)], - { - rs_name: 'rs', - poolSize: 1 - } - ); + setUp(configuration, function(err, replicasetManager) { + var replSet = new ReplSet( + [new Server('localhost', 31000), new Server('localhost', 31001)], + { + rs_name: 'rs', + poolSize: 1 + } + ); - // Connect - new Db('replicaset_test_auth', replSet, { w: 1 }).open(function(err, db) { - // Add a user - db.admin().addUser('root', 'root', { w: 3, wtimeout: 25000 }, function(err) { - test.equal(null, err); - db.close(); + // Connect + new Db('replicaset_test_auth', replSet, { w: 1 }).open(function(err, db) { + // Add a user + db.admin().addUser('root', 'root', { w: 3, wtimeout: 25000 }, function(err) { + test.equal(null, err); + db.close(); - // shut down one of the secondaries - replicasetManager.secondaries().then(function(managers) { - // Remove the secondary server - replicasetManager - .removeMember( - managers[1], - { - returnImmediately: false, - force: true, - skipWait: false - }, - { - provider: 'scram-sha-1', - db: 'admin', - user: 'root', - password: 'root' - } - ) - .then(function() { - // Attempt to connect - MongoClient.connect( - 'mongodb://root:root@localhost:31000,localhost:31001/admin?replicaSet=rs', - function(err, db) { - test.equal(null, err); - db.close(); + // shut down one of the secondaries + replicasetManager.secondaries().then(function(managers) { + // Remove the secondary server + replicasetManager + .removeMember( + managers[1], + { + returnImmediately: false, + force: true, + skipWait: false + }, + { + provider: 'scram-sha-1', + db: 'admin', + user: 'root', + password: 'root' + } + ) + .then(function() { + // Attempt to connect + const client = configuration.newClient( + 'mongodb://root:root@localhost:31000,localhost:31001/admin?replicaSet=rs' + ); + client.connect(function(err, db) { + test.equal(null, err); + db.close(); - replicasetManager.stop().then(function() { - done(); - }); - } - ); + replicasetManager.stop().then(function() { + done(); + }); }); - }); + }); }); }); }); - } + }); } - ); + }); }); diff --git a/test/functional/kerberos_tests.js b/test/functional/kerberos_tests.js index b25db2b6782..04eda4201f8 100644 --- a/test/functional/kerberos_tests.js +++ b/test/functional/kerberos_tests.js @@ -23,36 +23,33 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; var principal = 'drivers@LDAPTEST.10GEN.CC'; var urlEncodedPrincipal = encodeURIComponent(principal); + const url = format( + 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb&maxPoolSize=1', + urlEncodedPrincipal, + server + ); - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb&maxPoolSize=1', - urlEncodedPrincipal, - server - ), - function(err, client) { - test.equal(null, err); - var db = client.db('kerberos'); + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db('kerberos'); - db - .collection('test') - .find() - .toArray(function(err, docs) { - test.equal(null, err); - test.ok(true, docs[0].kerberos); + db + .collection('test') + .find() + .toArray(function(err, docs) { + test.equal(null, err); + test.ok(true, docs[0].kerberos); - client.close(); - done(); - }); - } - ); + client.close(); + done(); + }); + }); } }); @@ -65,36 +62,33 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; var principal = 'drivers@LDAPTEST.10GEN.CC'; var urlEncodedPrincipal = encodeURIComponent(principal); + const url = format( + 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:mongodb,CANONICALIZE_HOST_NAME:false,SERVICE_REALM:windows&maxPoolSize=1', + urlEncodedPrincipal, + server + ); - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:mongodb,CANONICALIZE_HOST_NAME:false,SERVICE_REALM:windows&maxPoolSize=1', - urlEncodedPrincipal, - server - ), - function(err, client) { - test.equal(null, err); - var db = client.db('kerberos'); + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db('kerberos'); - db - .collection('test') - .find() - .toArray(function(err, docs) { - test.equal(null, err); - test.ok(true, docs[0].kerberos); + db + .collection('test') + .find() + .toArray(function(err, docs) { + test.equal(null, err); + test.ok(true, docs[0].kerberos); - client.close(); - done(); - }); - } - ); + client.close(); + done(); + }); + }); } }); @@ -109,36 +103,33 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; var principal = 'drivers@LDAPTEST.10GEN.CC'; var urlEncodedPrincipal = encodeURIComponent(principal); - - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:mongodb,CANONICALIZE_HOST_NAME:false&maxPoolSize=1', - urlEncodedPrincipal, - server - ), - function(err, client) { - test.equal(null, err); - var db = client.db('kerberos'); - - db - .collection('test') - .find() - .toArray(function(err, docs) { - test.equal(null, err); - test.ok(true, docs[0].kerberos); - - client.close(); - done(); - }); - } + const url = format( + 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:mongodb,CANONICALIZE_HOST_NAME:false&maxPoolSize=1', + urlEncodedPrincipal, + server ); + + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db('kerberos'); + + db + .collection('test') + .find() + .toArray(function(err, docs) { + test.equal(null, err); + test.ok(true, docs[0].kerberos); + + client.close(); + done(); + }); + }); } } ); @@ -152,61 +143,58 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; var principal = 'drivers@LDAPTEST.10GEN.CC'; var urlEncodedPrincipal = encodeURIComponent(principal); + const url = format( + 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb&maxPoolSize=5', + urlEncodedPrincipal, + server + ); - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb&maxPoolSize=5', - urlEncodedPrincipal, - server - ), - function(err, client) { - test.equal(null, err); + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - client.topology.once('reconnect', function() { - // Await reconnect and re-authentication - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - // Attempt disconnect again - client.topology.connections()[0].destroy(); - - // Await reconnect and re-authentication - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - client.close(); - done(); - }); - }); - }); - - // Force close - client.topology.connections()[0].destroy(); + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + client.topology.once('reconnect', function() { + // Await reconnect and re-authentication + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + // Attempt disconnect again + client.topology.connections()[0].destroy(); + + // Await reconnect and re-authentication + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + client.close(); + done(); + }); + }); }); - } - ); + + // Force close + client.topology.connections()[0].destroy(); + }); + }); } }); @@ -258,25 +246,22 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; var principal = 'drivers@LDAPTEST.10GEN.CC'; var urlEncodedPrincipal = encodeURIComponent(principal); - - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s@%s/test?authMechanism=GSSAPI&gssapiServiceName=mongodb2&maxPoolSize=1', - urlEncodedPrincipal, - server - ), - function(err) { - test.ok(err != null); - done(); - } + const url = format( + 'mongodb://%s@%s/test?authMechanism=GSSAPI&gssapiServiceName=mongodb2&maxPoolSize=1', + urlEncodedPrincipal, + server ); + + const client = configuration.newClient(url); + client.connect(function(err) { + test.ok(err != null); + done(); + }); } }); @@ -289,7 +274,6 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; @@ -298,31 +282,29 @@ describe('Kerberos', function() { if (pass == null) throw new Error('The env parameter LDAPTEST_PASSWORD must be set'); var urlEncodedPrincipal = encodeURIComponent(principal); + const url = format( + 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&maxPoolSize=1', + urlEncodedPrincipal, + pass, + server + ); - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&maxPoolSize=1', - urlEncodedPrincipal, - pass, - server - ), - function(err, client) { - test.equal(null, err); - var db = client.db('kerberos'); + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db('kerberos'); - db - .collection('test') - .find() - .toArray(function(err, docs) { - test.equal(null, err); - test.ok(true, docs[0].kerberos); + db + .collection('test') + .find() + .toArray(function(err, docs) { + test.equal(null, err); + test.ok(true, docs[0].kerberos); - client.close(); - done(); - }); - } - ); + client.close(); + done(); + }); + }); } }); @@ -335,7 +317,6 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; @@ -343,56 +324,54 @@ describe('Kerberos', function() { var pass = process.env['LDAPTEST_PASSWORD']; if (pass == null) throw new Error('The env parameter LDAPTEST_PASSWORD must be set'); var urlEncodedPrincipal = encodeURIComponent(principal); + const url = format( + 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&maxPoolSize=5', + urlEncodedPrincipal, + pass, + server + ); - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&maxPoolSize=5', - urlEncodedPrincipal, - pass, - server - ), - function(err, client) { - test.equal(null, err); + const client = configuration.newClient(url); + client.connect(function(err, client) { + test.equal(null, err); - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - client.topology.once('reconnect', function() { - // Await reconnect and re-authentication - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - // Attempt disconnect again - client.topology.connections()[0].destroy(); - - // Await reconnect and re-authentication - client - .db('kerberos') - .collection('test') - .findOne(function(err, doc) { - test.equal(null, err); - test.equal(true, doc.kerberos); - - client.close(); - done(); - }); - }); - }); - - // Force close - client.topology.connections()[0].destroy(); + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + client.topology.once('reconnect', function() { + // Await reconnect and re-authentication + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + // Attempt disconnect again + client.topology.connections()[0].destroy(); + + // Await reconnect and re-authentication + client + .db('kerberos') + .collection('test') + .findOne(function(err, doc) { + test.equal(null, err); + test.equal(true, doc.kerberos); + + client.close(); + done(); + }); + }); }); - } - ); + + // Force close + client.topology.connections()[0].destroy(); + }); + }); } }); @@ -413,13 +392,13 @@ describe('Kerberos', function() { var principal = 'drivers@LDAPTEST.10GEN.CC'; var pass = process.env['LDAPTEST_PASSWORD']; if (pass == null) throw new Error('The env parameter LDAPTEST_PASSWORD must be set'); - var client = new MongoClient(new Server(server, 27017), { w: 1, user: principal, password: pass, authMechanism: 'GSSAPI' }); + client.connect(function(err, client) { test.equal(null, err); var db = client.db('kerberos'); @@ -447,7 +426,6 @@ describe('Kerberos', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; @@ -456,20 +434,18 @@ describe('Kerberos', function() { if (pass == null) throw new Error('The env parameter LDAPTEST_PASSWORD must be set'); var urlEncodedPrincipal = encodeURIComponent(principal); - - // Let's write the actual connection code - MongoClient.connect( - format( - 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb2&maxPoolSize=1', - urlEncodedPrincipal, - pass, - server - ), - function(err) { - test.ok(err != null); - done(); - } + const url = format( + 'mongodb://%s:%s@%s/kerberos?authMechanism=GSSAPI&gssapiServiceName=mongodb2&maxPoolSize=1', + urlEncodedPrincipal, + pass, + server ); + + const client = configuration.newClient(url); + client.connect(function(err) { + test.ok(err != null); + done(); + }); } }); }); diff --git a/test/functional/ldap_tests.js b/test/functional/ldap_tests.js index 953df9021cd..c293b65a7c4 100644 --- a/test/functional/ldap_tests.js +++ b/test/functional/ldap_tests.js @@ -18,7 +18,6 @@ describe('LDAP', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; @@ -33,8 +32,8 @@ describe('LDAP', function() { server ); - // Let's write the actual connection code - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); client @@ -60,7 +59,6 @@ describe('LDAP', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; // KDC Server var server = 'ldaptest.10gen.cc'; @@ -75,8 +73,8 @@ describe('LDAP', function() { server ); - // Let's write the actual connection code - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); client diff --git a/test/functional/max_staleness_tests.js b/test/functional/max_staleness_tests.js index 6766e73e851..5e4519f91bc 100644 --- a/test/functional/max_staleness_tests.js +++ b/test/functional/max_staleness_tests.js @@ -41,7 +41,7 @@ describe('Max Staleness', function() { }); }); - it('should correctly set maxStalenessSeconds on Mongos query using MongoClient.connect', { + it('should correctly set maxStalenessSeconds on Mongos query on connect', { metadata: { requires: { generators: true, @@ -50,30 +50,30 @@ describe('Max Staleness', function() { }, test: function(done) { - var self = this, - MongoClient = self.configuration.require.MongoClient; - - MongoClient.connect( - `mongodb://${test.server.uri()}/test?readPreference=secondary&maxStalenessSeconds=250`, - function(err, client) { - expect(err).to.not.exist; - var db = client.db(self.configuration.db); + var self = this; + const configuration = this.configuration; + const client = configuration.newClient( + `mongodb://${test.server.uri()}/test?readPreference=secondary&maxStalenessSeconds=250` + ); - db - .collection('test') - .find({}) - .toArray(function(err) { - expect(err).to.not.exist; - expect(test.checkCommand).to.eql({ - $query: { find: 'test', filter: {}, returnKey: false, showRecordId: false }, - $readPreference: { mode: 'secondary', maxStalenessSeconds: 250 } - }); + client.connect(function(err, client) { + expect(err).to.not.exist; + var db = client.db(self.configuration.db); - client.close(); - done(); + db + .collection('test') + .find({}) + .toArray(function(err) { + expect(err).to.not.exist; + expect(test.checkCommand).to.eql({ + $query: { find: 'test', filter: {}, returnKey: false, showRecordId: false }, + $readPreference: { mode: 'secondary', maxStalenessSeconds: 250 } }); - } - ); + + client.close(); + done(); + }); + }); } }); @@ -86,11 +86,12 @@ describe('Max Staleness', function() { }, test: function(done) { - var self = this, - MongoClient = self.configuration.require.MongoClient, - ReadPreference = self.configuration.require.ReadPreference; + var self = this; + const configuration = this.configuration; + const ReadPreference = self.configuration.require.ReadPreference; - MongoClient.connect(`mongodb://${test.server.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${test.server.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; // Get a db with a new readPreference @@ -126,11 +127,12 @@ describe('Max Staleness', function() { }, test: function(done) { - var self = this, - MongoClient = self.configuration.require.MongoClient, - ReadPreference = self.configuration.require.ReadPreference; + var self = this; + const configuration = this.configuration; + const ReadPreference = self.configuration.require.ReadPreference; - MongoClient.connect(`mongodb://${test.server.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${test.server.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(self.configuration.db); @@ -164,11 +166,12 @@ describe('Max Staleness', function() { }, test: function(done) { - var self = this, - MongoClient = self.configuration.require.MongoClient, - ReadPreference = self.configuration.require.ReadPreference; + var self = this; + const configuration = this.configuration; + const ReadPreference = self.configuration.require.ReadPreference; - MongoClient.connect(`mongodb://${test.server.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${test.server.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(self.configuration.db); var readPreference = new ReadPreference('secondary', null, { maxStalenessSeconds: 250 }); diff --git a/test/functional/mongo_client_tests.js b/test/functional/mongo_client_tests.js index 21d7b5ef96e..cb324536be3 100644 --- a/test/functional/mongo_client_tests.js +++ b/test/functional/mongo_client_tests.js @@ -19,39 +19,33 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), - { - bufferMaxEntries: 0, - sslValidate: false - }, - function(err, client) { - var db = client.db(configuration.db); - // Listener for closing event - var closeListener = function() { - // Let's insert a document - var collection = db.collection('test_object_id_generation.data2'); - // Insert another test document and collect using ObjectId - var docs = []; - for (var i = 0; i < 1500; i++) docs.push({ a: i }); - - collection.insert(docs, configuration.writeConcern(), function(err) { - test.ok(err != null); - test.ok(err.message.indexOf('0') !== -1); - - // Let's close the db - client.close(); - done(); - }); - }; - - // Add listener to close event - db.once('close', closeListener); - // Ensure death of server instance - client.topology.connections()[0].destroy(); - } - ); + const client = configuration.newClient({}, { bufferMaxEntries: 0, sslValidate: false }); + + client.connect(function(err, client) { + var db = client.db(configuration.db); + // Listener for closing event + var closeListener = function() { + // Let's insert a document + var collection = db.collection('test_object_id_generation.data2'); + // Insert another test document and collect using ObjectId + var docs = []; + for (var i = 0; i < 1500; i++) docs.push({ a: i }); + + collection.insert(docs, configuration.writeConcern(), function(err) { + test.ok(err != null); + test.ok(err.message.indexOf('0') !== -1); + + // Let's close the db + client.close(); + done(); + }); + }; + + // Add listener to close event + db.once('close', closeListener); + // Ensure death of server instance + client.topology.connections()[0].destroy(); + }); } }); @@ -65,42 +59,36 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), - { - bufferMaxEntries: 0, - sslValidate: false - }, - function(err, client) { - var db = client.db(configuration.db); - // Listener for closing event - var closeListener = function() { - // Let's insert a document - var collection = db.collection('test_object_id_generation.data_3'); - // Insert another test document and collect using ObjectId - var docs = []; - for (var i = 0; i < 1500; i++) docs.push({ a: i }); - - var opts = configuration.writeConcern(); - opts.keepGoing = true; - // Execute insert - collection.insert(docs, opts, function(err) { - test.ok(err != null); - test.ok(err.message.indexOf('0') !== -1); - - // Let's close the db - client.close(); - done(); - }); - }; - - // Add listener to close event - db.once('close', closeListener); - // Ensure death of server instance - client.topology.connections()[0].destroy(); - } - ); + const client = configuration.newClient({}, { bufferMaxEntries: 0, sslValidate: false }); + + client.connect(function(err, client) { + var db = client.db(configuration.db); + // Listener for closing event + var closeListener = function() { + // Let's insert a document + var collection = db.collection('test_object_id_generation.data_3'); + // Insert another test document and collect using ObjectId + var docs = []; + for (var i = 0; i < 1500; i++) docs.push({ a: i }); + + var opts = configuration.writeConcern(); + opts.keepGoing = true; + // Execute insert + collection.insert(docs, opts, function(err) { + test.ok(err != null); + test.ok(err.message.indexOf('0') !== -1); + + // Let's close the db + client.close(); + done(); + }); + }; + + // Add listener to close event + db.once('close', closeListener); + // Ensure death of server instance + client.topology.connections()[0].destroy(); + }); } }); @@ -114,9 +102,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { w: 1, wtimeout: 1000, @@ -133,30 +120,31 @@ describe('MongoClient', function() { raw: true, numberOfRetries: 10, bufferMaxEntries: 0 - }, - function(err, client) { - var db = client.db(configuration.db); - - test.equal(1, db.writeConcern.w); - test.equal(1000, db.writeConcern.wtimeout); - test.equal(true, db.writeConcern.fsync); - test.equal(true, db.writeConcern.j); - - test.equal('nearest', db.s.readPreference.mode); - test.deepEqual({ loc: 'ny' }, db.s.readPreference.tags); - - test.equal(false, db.s.nativeParser); - test.equal(true, db.s.options.forceServerObjectId); - test.equal(1, db.s.pkFactory()); - test.equal(true, db.s.options.serializeFunctions); - test.equal(true, db.s.options.raw); - test.equal(10, db.s.options.numberOfRetries); - test.equal(0, db.s.options.bufferMaxEntries); - - client.close(); - done(); } ); + + client.connect(function(err, client) { + var db = client.db(configuration.db); + + test.equal(1, db.writeConcern.w); + test.equal(1000, db.writeConcern.wtimeout); + test.equal(true, db.writeConcern.fsync); + test.equal(true, db.writeConcern.j); + + test.equal('nearest', db.s.readPreference.mode); + test.deepEqual({ loc: 'ny' }, db.s.readPreference.tags); + + test.equal(false, db.s.nativeParser); + test.equal(true, db.s.options.forceServerObjectId); + test.equal(1, db.s.pkFactory()); + test.equal(true, db.s.options.serializeFunctions); + test.equal(true, db.s.options.raw); + test.equal(10, db.s.options.numberOfRetries); + test.equal(0, db.s.options.bufferMaxEntries); + + client.close(); + done(); + }); } }); @@ -170,9 +158,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { poolSize: 10, autoReconnect: false, @@ -181,20 +168,21 @@ describe('MongoClient', function() { keepAliveInitialDelay: 100, connectTimeoutMS: 444444, socketTimeoutMS: 555555 - }, - function(err, client) { - var db = client.db(configuration.db); - test.equal(10, db.s.topology.s.poolSize); - test.equal(false, db.s.topology.autoReconnect); - test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); - test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); - test.equal(true, db.s.topology.s.clonedOptions.keepAlive); - test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); - - client.close(); - done(); } ); + + client.connect(function(err, client) { + var db = client.db(configuration.db); + test.equal(10, db.s.topology.s.poolSize); + test.equal(false, db.s.topology.autoReconnect); + test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); + test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); + test.equal(true, db.s.topology.s.clonedOptions.keepAlive); + test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); + + client.close(); + done(); + }); } }); @@ -208,46 +196,43 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url().replace('rs_name=rs', 'rs_name=rs1'); - MongoClient.connect( - url, - { - replSet: { - ha: false, - haInterval: 10000, - replicaSet: 'rs', - secondaryAcceptableLatencyMS: 100, - connectWithNoPrimary: true, - poolSize: 1, - socketOptions: { - noDelay: false, - keepAlive: true, - keepAliveInitialDelay: 100, - connectTimeoutMS: 444444, - socketTimeoutMS: 555555 - } + const client = configuration.newClient(url, { + replSet: { + ha: false, + haInterval: 10000, + replicaSet: 'rs', + secondaryAcceptableLatencyMS: 100, + connectWithNoPrimary: true, + poolSize: 1, + socketOptions: { + noDelay: false, + keepAlive: true, + keepAliveInitialDelay: 100, + connectTimeoutMS: 444444, + socketTimeoutMS: 555555 } - }, - function(err, client) { - var db = client.db(configuration.db); - - test.equal(false, db.s.topology.s.clonedOptions.ha); - test.equal(10000, db.s.topology.s.clonedOptions.haInterval); - test.equal('rs', db.s.topology.s.clonedOptions.setName); - test.equal(100, db.s.topology.s.clonedOptions.acceptableLatency); - test.equal(true, db.s.topology.s.clonedOptions.secondaryOnlyConnectionAllowed); - test.equal(1, db.s.topology.s.clonedOptions.size); - - test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); - test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); - test.equal(true, db.s.topology.s.clonedOptions.keepAlive); - test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); - - client.close(); - done(); } - ); + }); + + client.connect(function(err, client) { + var db = client.db(configuration.db); + + test.equal(false, db.s.topology.s.clonedOptions.ha); + test.equal(10000, db.s.topology.s.clonedOptions.haInterval); + test.equal('rs', db.s.topology.s.clonedOptions.setName); + test.equal(100, db.s.topology.s.clonedOptions.acceptableLatency); + test.equal(true, db.s.topology.s.clonedOptions.secondaryOnlyConnectionAllowed); + test.equal(1, db.s.topology.s.clonedOptions.size); + + test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); + test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); + test.equal(true, db.s.topology.s.clonedOptions.keepAlive); + test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); + + client.close(); + done(); + }); } }); @@ -261,9 +246,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { ha: false, haInterval: 10000, @@ -276,24 +260,25 @@ describe('MongoClient', function() { connectTimeoutMS: 444444, socketTimeoutMS: 555555 } - }, - function(err, client) { - var db = client.db(configuration.db); + } + ); - test.equal(false, db.s.topology.s.clonedOptions.ha); - test.equal(10000, db.s.topology.s.clonedOptions.haInterval); - test.equal(100, db.s.topology.s.clonedOptions.localThresholdMS); - test.equal(1, db.s.topology.s.clonedOptions.poolSize); + client.connect(function(err, client) { + var db = client.db(configuration.db); - test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); - test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); - test.equal(true, db.s.topology.s.clonedOptions.keepAlive); - test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); + test.equal(false, db.s.topology.s.clonedOptions.ha); + test.equal(10000, db.s.topology.s.clonedOptions.haInterval); + test.equal(100, db.s.topology.s.clonedOptions.localThresholdMS); + test.equal(1, db.s.topology.s.clonedOptions.poolSize); - client.close(); - done(); - } - ); + test.equal(444444, db.s.topology.s.clonedOptions.connectionTimeout); + test.equal(555555, db.s.topology.s.clonedOptions.socketTimeout); + test.equal(true, db.s.topology.s.clonedOptions.keepAlive); + test.equal(100, db.s.topology.s.clonedOptions.keepAliveInitialDelay); + + client.close(); + done(); + }); } }); @@ -307,14 +292,14 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(1, client.topology.connections().length); test.equal(100, client.topology.s.coreTopology.s.pool.size); @@ -334,14 +319,14 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url, {}, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.ok(client.topology.connections().length >= 1); var connections = client.topology.connections(); @@ -353,26 +338,25 @@ describe('MongoClient', function() { client.close(); - MongoClient.connect( - url, - { - connectTimeoutMS: 15000, - socketTimeoutMS: 30000 - }, - function(err, client) { - test.ok(client.topology.connections().length >= 1); + const secondClient = configuration.newClient(url, { + connectTimeoutMS: 15000, + socketTimeoutMS: 30000 + }); - var connections = client.topology.connections(); + secondClient.connect(function(err) { + test.equal(null, err); + test.ok(client.topology.connections().length >= 1); - for (var i = 0; i < connections.length; i++) { - test.equal(15000, connections[i].connectionTimeout); - test.equal(30000, connections[i].socketTimeout); - } + var connections = secondClient.topology.connections(); - client.close(); - done(); + for (var i = 0; i < connections.length; i++) { + test.equal(15000, connections[i].connectionTimeout); + test.equal(30000, connections[i].socketTimeout); } - ); + + secondClient.close(); + done(); + }); }); } }); @@ -387,14 +371,14 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.ok(client.topology.connections().length >= 1); client.close(); @@ -414,9 +398,9 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const client = configuration.newClient('user:password@localhost:27017/test'); - MongoClient.connect('user:password@localhost:27017/test', function(err) { + client.connect(function(err) { test.equal(err.message, 'Invalid schema, expected `mongodb` or `mongodb+srv`'); done(); }); @@ -434,11 +418,11 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const client = configuration.newClient('user:password@localhost:27017/test', { + useNewUrlParser: true + }); - MongoClient.connect('user:password@localhost:27017/test', { useNewUrlParser: true }, function( - err - ) { + client.connect(function(err) { test.equal(err.message, 'Invalid connection string'); done(); }); @@ -448,7 +432,7 @@ describe('MongoClient', function() { /** * @ignore */ - it('correctly error out when no socket available on MongoClient.connect', { + it('correctly error out when no socket available on MongoClient `connect`', { metadata: { requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } }, @@ -456,8 +440,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect('mongodb://localhost:27088/test', function(err) { + const client = configuration.newClient('mongodb://localhost:27088/test'); + client.connect(function(err) { test.ok(err != null); done(); @@ -471,8 +455,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect('mongodb://%2Ftmp%2Fmongodb-27017.sock/test', function(err) { + const client = configuration.newClient('mongodb://%2Ftmp%2Fmongodb-27017.sock/test'); + client.connect(function(err) { test.equal(null, err); done(); }); @@ -482,7 +466,7 @@ describe('MongoClient', function() { /** * @ignore */ - it('correctly error out when no socket available on MongoClient.connect with domain', { + it('correctly error out when no socket available on MongoClient `connect` with domain', { metadata: { requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } }, @@ -490,9 +474,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect('mongodb://test.does.not.exist.com:80/test', function(err) { + const client = configuration.newClient('mongodb://test.does.not.exist.com:80/test'); + client.connect(function(err) { test.ok(err != null); done(); @@ -511,40 +494,34 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { keepAlive: true, keepAliveInitialDelay: 100 - }, - function(err, client) { - test.equal(null, err); - var connection = client.topology.connections()[0]; - test.equal(true, connection.keepAlive); - test.equal(100, connection.keepAliveInitialDelay); - - client.close(); - - MongoClient.connect( - configuration.url(), - { - keepAlive: false - }, - function(err, client) { - test.equal(null, err); - - client.topology.connections().forEach(function(x) { - test.equal(false, x.keepAlive); - }); - - client.close(); - done(); - } - ); } ); + + client.connect(function(err, client) { + test.equal(null, err); + var connection = client.topology.connections()[0]; + test.equal(true, connection.keepAlive); + test.equal(100, connection.keepAliveInitialDelay); + + client.close(); + + const secondClient = configuration.newClient({}, { keepAlive: false }); + secondClient.connect(function(err) { + test.equal(null, err); + + secondClient.topology.connections().forEach(function(x) { + test.equal(false, x.keepAlive); + }); + + secondClient.close(); + done(); + }); + }); } }); @@ -559,9 +536,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { test.equal(null, err); client.topology.connections().forEach(function(x) { test.equal(true, x.keepAlive); @@ -583,8 +559,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect('mongodb://unknownhost:36363/ddddd', {}, function(err) { + const client = configuration.newClient('mongodb://unknownhost:36363/ddddd'); + client.connect(function(err) { test.ok(err != null); done(); }); @@ -601,12 +577,13 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration .url() .replace('rs_name=rs', '') .replace('localhost:31000', 'localhost:31000,localhost:31001'); - MongoClient.connect(url, function(err) { + + const client = configuration.newClient(url); + client.connect(function(err) { test.ok(err != null); done(); }); @@ -623,7 +600,6 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); if (url.indexOf('rs_name') !== -1) { url = f('%s&appname=hello%20world', configuration.url()); @@ -631,7 +607,8 @@ describe('MongoClient', function() { url = f('%s?appname=hello%20world', configuration.url()); } - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); test.equal('hello world', client.topology.clientInfo.application.name); @@ -651,10 +628,10 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); - MongoClient.connect(url, { appname: 'hello world' }, function(err, db) { + const client = configuration.newClient(url, { appname: 'hello world' }); + client.connect(function(err, db) { test.equal(null, err); test.equal('hello world', db.topology.clientInfo.application.name); @@ -674,29 +651,29 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect( - configuration.url(), + const client = configuration.newClient( + {}, { socketTimeoutMS: 0, connectTimeoutMS: 0 - }, - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); - - if (db.s.topology.s.clonedOptions) { - test.equal(0, db.s.topology.s.clonedOptions.connectionTimeout); - test.equal(0, db.s.topology.s.clonedOptions.socketTimeout); - } else { - test.equal(0, db.s.topology.s.options.connectionTimeout); - test.equal(0, db.s.topology.s.options.socketTimeout); - } - - client.close(); - done(); } ); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + if (db.s.topology.s.clonedOptions) { + test.equal(0, db.s.topology.s.clonedOptions.connectionTimeout); + test.equal(0, db.s.topology.s.clonedOptions.socketTimeout); + } else { + test.equal(0, db.s.topology.s.options.connectionTimeout); + test.equal(0, db.s.topology.s.options.socketTimeout); + } + + client.close(); + done(); + }); } }); @@ -710,10 +687,10 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var uri = f('%s?socketTimeoutMS=120000&connectTimeoutMS=15000', configuration.url()); - MongoClient.connect(uri, {}, function(err, client) { + const client = configuration.newClient(uri); + client.connect(function(err, client) { test.equal(null, err); test.equal(120000, client.topology.s.coreTopology.s.options.socketTimeout); test.equal(15000, client.topology.s.coreTopology.s.options.connectionTimeout); @@ -739,9 +716,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - new MongoClient(configuration.url()).connect(function(err, mongoclient) { + const client = configuration.newClient(); + client.connect(function(err, mongoclient) { test.equal(null, err); mongoclient @@ -768,9 +744,8 @@ describe('MongoClient', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - new MongoClient(configuration.url()).connect().then(function(mongoclient) { + const client = configuration.newClient(); + client.connect().then(function(mongoclient) { mongoclient .db('integration_tests') .collection('new_mongo_client_collection') diff --git a/test/functional/multiple_db_tests.js b/test/functional/multiple_db_tests.js index 2d46ccf2b78..53cdf82b136 100644 --- a/test/functional/multiple_db_tests.js +++ b/test/functional/multiple_db_tests.js @@ -169,8 +169,8 @@ describe('Multiple Databases', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect(configuration.url(), { sslValidate: false }, function(err, client) { + const client = configuration.newClient({}, { sslValidate: false }); + client.connect(function(err, client) { for (var i = 0; i < 100; i++) { client.db('test'); } diff --git a/test/functional/operation_example_tests.js b/test/functional/operation_example_tests.js index 6addde4e8f3..0e11f5e802b 100644 --- a/test/functional/operation_example_tests.js +++ b/test/functional/operation_example_tests.js @@ -40,7 +40,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -133,7 +134,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -221,7 +223,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -309,7 +312,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -401,7 +405,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -491,7 +496,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -587,7 +593,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -674,7 +681,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -731,7 +739,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -799,7 +808,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -855,7 +865,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -921,7 +932,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -985,7 +997,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1045,7 +1058,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1105,7 +1119,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1151,7 +1166,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1218,7 +1234,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1286,7 +1303,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1353,7 +1371,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1406,7 +1425,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1458,7 +1478,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1521,7 +1542,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1614,7 +1636,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1674,7 +1697,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1725,7 +1749,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -1791,7 +1816,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2014,7 +2040,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2089,7 +2116,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2161,7 +2189,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2258,7 +2287,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2353,7 +2383,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2411,7 +2442,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2473,7 +2505,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2544,7 +2577,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2613,7 +2647,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2661,7 +2696,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2714,7 +2750,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2776,7 +2813,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2848,7 +2886,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2895,7 +2934,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -2943,7 +2983,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3018,7 +3059,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3086,7 +3128,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3136,7 +3179,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3185,7 +3229,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3300,7 +3345,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3347,7 +3393,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3412,7 +3459,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3467,7 +3515,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3518,7 +3567,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3580,7 +3630,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3632,7 +3683,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3714,7 +3766,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3752,7 +3805,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3808,7 +3862,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3932,7 +3987,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -3991,7 +4047,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4032,7 +4089,8 @@ describe('Operation Examples', function() { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4068,7 +4126,8 @@ describe('Operation Examples', function() { test.equal(null, err); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4121,7 +4180,8 @@ describe('Operation Examples', function() { test.equal(null, err); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4175,7 +4235,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4238,7 +4299,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4278,7 +4340,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4320,12 +4383,13 @@ describe('Operation Examples', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + var client = configuration.newClient(configuration.writeConcernMax(), { poolSize: 1 }); client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4341,15 +4405,16 @@ describe('Operation Examples', function() { test.equal(null, err); client.close(); - MongoClient.connect('mongodb://user:name@localhost:27017/integration_tests', function( - err, - client - ) { + const secondClient = configuration.newClient( + 'mongodb://user:name@localhost:27017/integration_tests' + ); + + secondClient.connect(function(err) { test.equal(null, err); - var db = client.db(configuration.db); + var db = secondClient.db(configuration.db); // Logout the db - client.logout(function(err, result) { + secondClient.logout(function(err, result) { test.equal(true, result); // Remove the user from the db @@ -4357,17 +4422,17 @@ describe('Operation Examples', function() { test.ok(result); test.equal(null, err); - const oldClient = client; - // Authenticate - MongoClient.connect( - 'mongodb://user:name@localhost:27017/integration_tests', - function(err, client) { - expect(err).to.exist; - expect(client).to.not.exist; - oldClient.close(); - done(); - } + const oldClient = secondClient; + const thirdClient = configuration.newClient( + 'mongodb://user:name@localhost:27017/integration_tests' ); + + // Authenticate + thirdClient.connect(function(err) { + expect(err).to.exist; + oldClient.close(); + done(); + }); }); }); }); @@ -4396,7 +4461,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4447,7 +4513,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4520,7 +4587,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4562,7 +4630,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4645,7 +4714,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4714,7 +4784,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4781,7 +4852,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4852,7 +4924,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4893,7 +4966,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4970,7 +5044,8 @@ describe('Operation Examples', function() { test.equal(null, err); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5007,7 +5082,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5049,7 +5125,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5090,7 +5167,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5143,7 +5221,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5215,7 +5294,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5265,7 +5345,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5306,7 +5387,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5349,7 +5431,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5397,7 +5480,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5436,7 +5520,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5484,7 +5569,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5536,7 +5622,8 @@ describe('Operation Examples', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5598,7 +5685,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5649,7 +5737,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5709,7 +5798,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5769,7 +5859,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5836,7 +5927,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5890,7 +5982,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5957,7 +6050,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6015,7 +6109,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6074,7 +6169,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6133,7 +6229,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6220,7 +6317,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6275,7 +6373,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6336,7 +6435,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6403,7 +6503,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6467,7 +6568,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6537,7 +6639,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6589,7 +6692,6 @@ describe('Operation Examples', function() { * Example of a simple url connection string to a replicaset, with acknowledgement of writes. * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should correctly connect to a replicaset', { @@ -6598,8 +6700,6 @@ describe('Operation Examples', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; // Create url var url = f( @@ -6611,11 +6711,13 @@ describe('Operation Examples', function() { 'primary' ); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6643,7 +6745,6 @@ describe('Operation Examples', function() { * Example of a simple url connection string to a shard, with acknowledgement of writes. * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should connect to mongos proxies using connectiong string', { @@ -6652,8 +6753,6 @@ describe('Operation Examples', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1', configuration.host, @@ -6662,10 +6761,12 @@ describe('Operation Examples', function() { configuration.port + 1 ); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -6694,7 +6795,6 @@ describe('Operation Examples', function() { * Example of a simple url connection string for a single server connection * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should correctly connect using MongoClient to a single server using connect', { @@ -6705,37 +6805,36 @@ describe('Operation Examples', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const client = configuration.newClient('mongodb://localhost:27017/integration_tests', { + native_parser: true + }); // DOC_START // Connect using the connection string - MongoClient.connect( - 'mongodb://localhost:27017/integration_tests', - { native_parser: true }, - function(err, client) { - // LINE var MongoClient = require('mongodb').MongoClient, - // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { - // LINE var db = client.db('test); - // REPLACE configuration.writeConcernMax() WITH {w:1} - // REMOVE-LINE restartAndDone - // REMOVE-LINE done(); - // REMOVE-LINE var db = client.db(configuration.db); - // BEGIN - var db = client.db(configuration.db); - test.equal(null, err); + client.connect(function(err, client) { + // LINE var MongoClient = require('mongodb').MongoClient, + // LINE test = require('assert'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { + // LINE var db = client.db('test); + // REPLACE configuration.writeConcernMax() WITH {w:1} + // REMOVE-LINE restartAndDone + // REMOVE-LINE done(); + // REMOVE-LINE var db = client.db(configuration.db); + // BEGIN + var db = client.db(configuration.db); + test.equal(null, err); - db - .collection('mongoclient_test') - .updateOne({ a: 1 }, { $set: { b: 1 } }, { upsert: true }, function(err, result) { - test.equal(null, err); - test.equal(1, result.result.n); + db + .collection('mongoclient_test') + .updateOne({ a: 1 }, { $set: { b: 1 } }, { upsert: true }, function(err, result) { + test.equal(null, err); + test.equal(1, result.result.n); - client.close(); - done(); - }); - } - ); + client.close(); + done(); + }); + }); // END } }); @@ -6980,7 +7079,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7051,7 +7151,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7187,7 +7288,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7239,7 +7341,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7327,7 +7430,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7396,7 +7500,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7456,7 +7561,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7519,7 +7625,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7582,7 +7689,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7652,7 +7760,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7715,7 +7824,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7770,7 +7880,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7822,7 +7933,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7892,7 +8004,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -7944,7 +8057,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8010,7 +8124,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8079,7 +8194,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8134,7 +8250,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8207,7 +8324,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8259,7 +8377,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8330,7 +8449,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8454,7 +8574,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8531,7 +8652,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8584,7 +8706,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8648,7 +8771,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8704,7 +8828,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8784,7 +8909,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8856,7 +8982,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -8944,7 +9071,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9017,7 +9145,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9084,7 +9213,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9159,7 +9289,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9200,7 +9331,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9241,7 +9373,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9283,7 +9416,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9332,7 +9466,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9378,7 +9513,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9426,7 +9562,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9490,7 +9627,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9540,7 +9678,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9598,7 +9737,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -9656,7 +9796,8 @@ describe('Operation Examples', function() { client.connect(function(err, client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect(function(err, client) { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone diff --git a/test/functional/operation_generators_example_tests.js b/test/functional/operation_generators_example_tests.js index c6e74eebc5c..93765ed471e 100644 --- a/test/functional/operation_generators_example_tests.js +++ b/test/functional/operation_generators_example_tests.js @@ -42,7 +42,12 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -126,7 +131,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -209,7 +216,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -260,7 +269,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -315,7 +326,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -373,7 +386,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -431,7 +446,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -492,7 +509,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -532,7 +551,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -587,7 +608,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -645,7 +668,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -700,7 +725,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -751,7 +778,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -800,7 +829,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -862,7 +893,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -941,7 +974,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -997,7 +1032,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1049,7 +1086,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1106,7 +1145,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1303,7 +1344,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1370,7 +1413,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1435,7 +1480,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1524,7 +1571,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1612,7 +1661,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1661,7 +1712,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1719,7 +1772,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1780,7 +1835,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1839,7 +1896,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1883,7 +1942,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1933,7 +1994,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -1984,7 +2047,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2048,7 +2113,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2096,7 +2163,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2147,7 +2216,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2209,7 +2280,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2266,7 +2339,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2315,7 +2390,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2361,7 +2438,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2466,7 +2545,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2511,7 +2592,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2571,7 +2654,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2622,7 +2707,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2673,7 +2760,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2730,7 +2819,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2780,7 +2871,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2849,7 +2942,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -2904,7 +2999,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3012,7 +3109,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3065,7 +3164,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3118,7 +3219,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3158,7 +3261,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3186,8 +3291,7 @@ describe('Operation (Generators)', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var co = require('co'), - MongoClient = configuration.require.MongoClient; + var co = require('co'); return co(function*() { // Connect @@ -3200,7 +3304,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3209,9 +3315,11 @@ describe('Operation (Generators)', function() { yield db.addUser('user', 'name'); // Authenticate - var client2 = yield MongoClient.connect( + var client2 = configuration.newClient( 'mongodb://user:name@localhost:27017/' + configuration.db ); + + yield client2.connect(); client2.close(); // Remove the user from the db @@ -3219,7 +3327,8 @@ describe('Operation (Generators)', function() { try { // Authenticate - yield MongoClient.connect('mongodb://user:name@localhost:27017/admin'); + const client = configuration.newClient('mongodb://user:name@localhost:27017/admin'); + yield client.connect(); test.ok(false); } catch (err) {} // eslint-disable-line @@ -3255,7 +3364,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3301,7 +3412,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3358,7 +3471,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3396,7 +3511,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3467,7 +3584,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3527,7 +3646,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3587,7 +3708,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3652,7 +3775,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3691,7 +3816,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3752,7 +3879,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3795,7 +3924,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3839,7 +3970,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3913,7 +4046,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -3974,7 +4109,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4024,7 +4161,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4067,7 +4206,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4112,7 +4253,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4159,7 +4302,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4203,7 +4348,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4254,7 +4401,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4314,7 +4463,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4364,7 +4515,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4413,7 +4566,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4474,7 +4629,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4524,7 +4681,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4588,7 +4747,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4648,7 +4809,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4763,7 +4926,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4814,7 +4979,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4887,7 +5054,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -4946,7 +5115,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5000,7 +5171,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5057,7 +5230,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5117,7 +5292,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5184,7 +5361,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5244,7 +5423,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5297,7 +5478,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5360,7 +5543,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5423,7 +5608,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5489,7 +5676,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5541,7 +5730,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5644,7 +5835,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5712,7 +5905,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5770,7 +5965,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5823,7 +6020,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5897,7 +6096,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -5967,7 +6168,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6043,7 +6246,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6084,7 +6289,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6125,7 +6332,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6167,7 +6376,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6214,7 +6425,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6258,7 +6471,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6304,7 +6519,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6367,7 +6584,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6412,7 +6631,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6467,7 +6688,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN @@ -6522,7 +6745,9 @@ describe('Operation (Generators)', function() { // LINE test = require('assert'); // LINE // LINE co(function*() { - // LINE var client = yield MongoClient.connect('mongodb://localhost:27017/test'); + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE yield client.connect(); + // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN diff --git a/test/functional/operation_promises_example_tests.js b/test/functional/operation_promises_example_tests.js index a0149293c0f..6c13b3a4d88 100644 --- a/test/functional/operation_promises_example_tests.js +++ b/test/functional/operation_promises_example_tests.js @@ -45,7 +45,10 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -128,7 +131,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); // BEGIN @@ -213,7 +217,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -267,7 +272,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -327,7 +333,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -386,7 +393,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -443,7 +451,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -503,7 +512,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -546,7 +556,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -605,7 +616,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -668,7 +680,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -727,7 +740,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -776,7 +790,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -825,7 +840,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -888,7 +904,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -973,7 +990,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1030,7 +1048,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1080,7 +1099,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1141,7 +1161,8 @@ describe('Operation (Promises)', function() { // LINE var MongoClient = require('mongodb').MongoClient, // LINE Code = require('mongodb').Code, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1349,7 +1370,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1417,7 +1439,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1484,7 +1507,8 @@ describe('Operation (Promises)', function() { // LINE var MongoClient = require('mongodb').MongoClient, // LINE Code = require('mongodb').Code, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1576,7 +1600,8 @@ describe('Operation (Promises)', function() { // LINE var MongoClient = require('mongodb').MongoClient, // LINE Code = require('mongodb').Code, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1666,7 +1691,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1720,7 +1746,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1785,7 +1812,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1848,7 +1876,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1908,7 +1937,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -1951,7 +1981,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2000,7 +2031,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2056,7 +2088,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2126,7 +2159,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2169,7 +2203,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2220,7 +2255,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2292,7 +2328,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2353,7 +2390,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2403,7 +2441,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2456,7 +2495,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2580,7 +2620,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2624,7 +2665,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2688,7 +2730,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2738,7 +2781,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2785,7 +2829,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2840,7 +2885,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2885,7 +2931,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -2961,7 +3008,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3015,7 +3063,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3123,7 +3172,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3177,7 +3227,8 @@ describe('Operation (Promises)', function() { return client.connect().then(function(client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3213,7 +3264,8 @@ describe('Operation (Promises)', function() { return client.connect().then(function(client) { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3314,7 +3366,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3375,7 +3428,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3412,7 +3466,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3448,13 +3503,14 @@ describe('Operation (Promises)', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - return MongoClient.connect(configuration.url()).then(function(client) { + const client = configuration.newClient(); + return client.connect().then(function(client) { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3466,8 +3522,11 @@ describe('Operation (Promises)', function() { .then(function(result) { test.ok(result); client.close(); + const secondClient = configuration.newClient( + 'mongodb://user3:name@localhost:27017/integration_tests' + ); - return MongoClient.connect('mongodb://user3:name@localhost:27017/integration_tests'); + return secondClient.connect(); }) .then(function(client) { // Logout the db @@ -3484,7 +3543,11 @@ describe('Operation (Promises)', function() { test.equal(true, result); // Should error out due to user no longer existing - return MongoClient.connect('mongodb://user3:name@localhost:27017/integration_tests'); + const thirdClient = configuration.newClient( + 'mongodb://user3:name@localhost:27017/integration_tests' + ); + + return thirdClient.connect(); }) .catch(function(err) { test.ok(err); @@ -3517,7 +3580,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3565,7 +3629,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3630,7 +3695,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3667,7 +3733,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3747,7 +3814,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3813,7 +3881,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3879,7 +3948,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3946,7 +4016,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -3979,7 +4050,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -4049,7 +4121,8 @@ describe('Operation (Promises)', function() { return client.connect().then(function() { // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4086,7 +4159,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4125,7 +4199,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4164,7 +4239,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4215,7 +4291,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4298,7 +4375,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4366,7 +4444,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4415,7 +4494,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4454,7 +4534,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4499,7 +4580,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4546,7 +4628,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4585,7 +4668,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4656,7 +4740,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4708,7 +4793,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4759,7 +4845,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4810,7 +4897,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4861,7 +4949,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4911,7 +5000,6 @@ describe('Operation (Promises)', function() { * Example of a simple url connection string to a replicaset, with acknowledgement of writes using a Promise. * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should correctly connect to a replicaset With Promises', { @@ -4920,10 +5008,6 @@ describe('Operation (Promises)', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; - - // Create url var url = f( 'mongodb://%s,%s/%s?replicaSet=%s&readPreference=%s', f('%s:%s', configuration.host, configuration.port), @@ -4933,11 +5017,13 @@ describe('Operation (Promises)', function() { 'primary' ); - return MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + return client.connect().then(function(client) { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -4961,7 +5047,6 @@ describe('Operation (Promises)', function() { * Example of a simple url connection string to a shard, with acknowledgement of writes using a Promise. * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should connect to mongos proxies using connectiong string With Promises', { @@ -4970,8 +5055,6 @@ describe('Operation (Promises)', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1', configuration.host, @@ -4980,11 +5063,13 @@ describe('Operation (Promises)', function() { configuration.port + 1 ); - return MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + return client.connect().then(function(client) { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5008,7 +5093,6 @@ describe('Operation (Promises)', function() { * Example of a simple url connection string for a single server connection * * @example-class MongoClient - * @example-method MongoClient.connect * @ignore */ it('Should correctly connect using MongoClient to a single server using connect With Promises', { @@ -5019,17 +5103,18 @@ describe('Operation (Promises)', function() { // The actual test we wish to run test: function() { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const client = configuration.newClient('mongodb://localhost:27017/integration_tests', { + native_parser: true + }); // DOC_START // Connect using the connection string - return MongoClient.connect('mongodb://localhost:27017/integration_tests', { - native_parser: true - }).then(function(client) { + return client.connect().then(function(client) { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE restartAndDone @@ -5076,7 +5161,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5142,7 +5228,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5272,7 +5359,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5325,7 +5413,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5412,7 +5501,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5481,7 +5571,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5536,7 +5627,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5594,7 +5686,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5654,7 +5747,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5721,7 +5815,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5783,7 +5878,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5836,7 +5932,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5905,7 +6002,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -5971,7 +6069,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6043,7 +6142,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6099,7 +6199,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6225,7 +6326,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6305,7 +6407,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6371,7 +6474,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6431,7 +6535,8 @@ describe('Operation (Promises)', function() { // LINE GridStore = require('mongodb').GridStore, // LINE ObjectID = require('mongodb').ObjectID, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6523,7 +6628,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6591,7 +6697,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6665,7 +6772,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6704,7 +6812,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6743,7 +6852,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6783,7 +6893,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6836,7 +6947,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6882,7 +6994,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -6930,7 +7043,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -7024,7 +7138,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -7071,7 +7186,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -7127,7 +7243,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -7184,7 +7301,8 @@ describe('Operation (Promises)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); diff --git a/test/functional/promises_collection_tests.js b/test/functional/promises_collection_tests.js index 9148cd92a69..596cb237b8c 100644 --- a/test/functional/promises_collection_tests.js +++ b/test/functional/promises_collection_tests.js @@ -18,14 +18,14 @@ describe('Promises (Collection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { test.equal(1, client.topology.connections().length); var db = client.db(configuration.db); @@ -61,7 +61,9 @@ describe('Promises (Collection)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { + // LINE // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -108,7 +110,9 @@ describe('Promises (Collection)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { + // LINE // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -157,7 +161,9 @@ describe('Promises (Collection)', function() { var db = client.db(configuration.db); // LINE var MongoClient = require('mongodb').MongoClient, // LINE test = require('assert'); - // LINE MongoClient.connect('mongodb://localhost:27017/test', function(err, client) { + // LINE const client = new MongoClient('mongodb://localhost:27017/test'); + // LINE client.connect().then(() => { + // LINE // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); @@ -237,14 +243,14 @@ describe('Promises (Collection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); db .collection('insertMany_Promise_error') @@ -270,14 +276,14 @@ describe('Promises (Collection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); db .collection('insertOne_Promise_error') @@ -303,14 +309,14 @@ describe('Promises (Collection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); var bulk = db.collection('unordered_bulk_promise_form').initializeUnorderedBulkOp({ w: 1 }); bulk.insert({ a: 1 }); @@ -335,14 +341,14 @@ describe('Promises (Collection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); var bulk = db.collection('unordered_bulk_promise_form').initializeOrderedBulkOp({ w: 1 }); bulk.insert({ a: 1 }); diff --git a/test/functional/promises_cursor_tests.js b/test/functional/promises_cursor_tests.js index b9faa1d41ba..940b2f70171 100644 --- a/test/functional/promises_cursor_tests.js +++ b/test/functional/promises_cursor_tests.js @@ -18,14 +18,14 @@ describe('Promises (Cursor)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); test.equal(1, client.topology.connections().length); diff --git a/test/functional/promises_db_tests.js b/test/functional/promises_db_tests.js index 8467d0a6f2e..c76f9a7340c 100644 --- a/test/functional/promises_db_tests.js +++ b/test/functional/promises_db_tests.js @@ -8,7 +8,7 @@ describe('Promises (Db)', function() { return setupDatabase(this.configuration); }); - it('Should correctly connect with MongoClient.connect using Promise', { + it('Should correctly connect with MongoClient `connect` using Promise', { metadata: { requires: { topology: ['single'] @@ -18,14 +18,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=100') : f('%s?%s', url, 'maxPoolSize=100'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { test.equal(1, client.topology.connections().length); client.close(); @@ -62,14 +62,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { // Execute ismaster client .db(configuration.db) @@ -94,14 +94,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { // Execute ismaster client .db(configuration.db) @@ -127,14 +127,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { client .db(configuration.db) .createCollection('promiseCollection') @@ -161,14 +161,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { client .db(configuration.db) .stats() @@ -192,14 +192,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { client .db(configuration.db) .eval('function (x) {return x;}', [3], { nolock: true }) @@ -223,14 +223,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); db.createCollection('promiseCollection1').then(function(col) { @@ -262,14 +262,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { client .db(configuration.db) .dropDatabase() @@ -296,14 +296,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { var db = client.db(configuration.db); db.createCollection('promiseCollectionCollections1').then(function(col) { @@ -334,14 +334,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { client .db(configuration.db) .executeDbAdminCommand({ ismaster: true }) @@ -365,14 +365,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { // Create an index client .db(configuration.db) @@ -397,14 +397,14 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var url = configuration.url(); url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'maxPoolSize=5') : f('%s?%s', url, 'maxPoolSize=5'); - MongoClient.connect(url).then(function(client) { + const client = configuration.newClient(url); + client.connect().then(function(client) { // Create an index client .db(configuration.db) @@ -429,14 +429,13 @@ describe('Promises (Db)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var db = null; - var client = null; var BlueBird = require('bluebird'); - MongoClient.connect(configuration.url(), { promiseLibrary: BlueBird }) - .then(function(_client) { - client = _client; + const client = configuration.newClient({}, { promiseLibrary: BlueBird }); + client + .connect() + .then(function() { db = client.db(configuration.db); return db.createCollection('test'); }) diff --git a/test/functional/promote_buffers_tests.js b/test/functional/promote_buffers_tests.js index 033bd55abcb..84a0a95df8b 100644 --- a/test/functional/promote_buffers_tests.js +++ b/test/functional/promote_buffers_tests.js @@ -55,34 +55,28 @@ describe('Promote Buffers', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), - { - promoteBuffers: true - }, - function(err, client) { - var db = client.db(configuration.db); - - db.collection('shouldCorrectlyHonorPromoteBuffer2').insert( - { - doc: Buffer.alloc(256) - }, - function(err) { - test.equal(null, err); - db.collection('shouldCorrectlyHonorPromoteBuffer2').findOne(function(err, doc) { - test.equal(null, err); - test.ok(doc.doc instanceof Buffer); + const client = configuration.newClient({}, { promoteBuffers: true }); + client.connect(function(err, client) { + var db = client.db(configuration.db); - client.close(); - done(); - }); - } - ); - } - ); + db.collection('shouldCorrectlyHonorPromoteBuffer2').insert( + { + doc: Buffer.alloc(256) + }, + function(err) { + test.equal(null, err); + + db.collection('shouldCorrectlyHonorPromoteBuffer2').findOne(function(err, doc) { + test.equal(null, err); + test.ok(doc.doc instanceof Buffer); + + client.close(); + done(); + }); + } + ); + }); } }); @@ -96,37 +90,31 @@ describe('Promote Buffers', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), - { - promoteBuffers: true - }, - function(err, client) { - var db = client.db(configuration.db); - - db.collection('shouldCorrectlyHonorPromoteBuffer3').insert( - { - doc: Buffer.alloc(256) - }, - function(err) { - test.equal(null, err); - db - .collection('shouldCorrectlyHonorPromoteBuffer3') - .find() - .next(function(err, doc) { - test.equal(null, err); - test.ok(doc.doc instanceof Buffer); - - client.close(); - done(); - }); - } - ); - } - ); + const client = configuration.newClient({}, { promoteBuffers: true }); + client.connect(function(err, client) { + var db = client.db(configuration.db); + + db.collection('shouldCorrectlyHonorPromoteBuffer3').insert( + { + doc: Buffer.alloc(256) + }, + function(err) { + test.equal(null, err); + + db + .collection('shouldCorrectlyHonorPromoteBuffer3') + .find() + .next(function(err, doc) { + test.equal(null, err); + test.ok(doc.doc instanceof Buffer); + + client.close(); + done(); + }); + } + ); + }); } }); @@ -140,9 +128,9 @@ describe('Promote Buffers', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { var db = client.db(configuration.db); db.collection('shouldCorrectlyHonorPromoteBuffer4').insert( { @@ -180,9 +168,9 @@ describe('Promote Buffers', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { var db = client.db(configuration.db); db.collection('shouldCorrectlyHonorPromoteBuffer5').insert( { diff --git a/test/functional/promote_values_tests.js b/test/functional/promote_values_tests.js index eb70f999909..486e8641a32 100644 --- a/test/functional/promote_values_tests.js +++ b/test/functional/promote_values_tests.js @@ -67,40 +67,34 @@ describe('Promote Values', function() { var configuration = this.configuration; var Long = configuration.require.Long, Int32 = configuration.require.Int32, - Double = configuration.require.Double, - MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), - { - promoteValues: false - }, - function(err, client) { - var db = client.db(configuration.db); - db.collection('shouldCorrectlyHonorPromoteValues').insert( - { - doc: Long.fromNumber(10), - int: 10, - double: 2.2222, - array: [[Long.fromNumber(10)]] - }, - function(err) { - test.equal(null, err); + Double = configuration.require.Double; - db.collection('shouldCorrectlyHonorPromoteValues').findOne(function(err, doc) { - test.equal(null, err); + const client = configuration.newClient({}, { promoteValues: false }); + client.connect(function(err, client) { + var db = client.db(configuration.db); + db.collection('shouldCorrectlyHonorPromoteValues').insert( + { + doc: Long.fromNumber(10), + int: 10, + double: 2.2222, + array: [[Long.fromNumber(10)]] + }, + function(err) { + test.equal(null, err); - test.deepEqual(Long.fromNumber(10), doc.doc); - test.deepEqual(new Int32(10), doc.int); - test.deepEqual(new Double(2.2222), doc.double); + db.collection('shouldCorrectlyHonorPromoteValues').findOne(function(err, doc) { + test.equal(null, err); - client.close(); - done(); - }); - } - ); - } - ); + test.deepEqual(Long.fromNumber(10), doc.doc); + test.deepEqual(new Int32(10), doc.int); + test.deepEqual(new Double(2.2222), doc.double); + + client.close(); + done(); + }); + } + ); + }); } }); @@ -116,43 +110,37 @@ describe('Promote Values', function() { var configuration = this.configuration; var Long = configuration.require.Long, Int32 = configuration.require.Int32, - Double = configuration.require.Double, - MongoClient = configuration.require.MongoClient; - - MongoClient.connect( - configuration.url(), - { - promoteValues: false - }, - function(err, client) { - var db = client.db(configuration.db); - db.collection('shouldCorrectlyHonorPromoteValues').insert( - { - doc: Long.fromNumber(10), - int: 10, - double: 2.2222, - array: [[Long.fromNumber(10)]] - }, - function(err) { - test.equal(null, err); + Double = configuration.require.Double; - db - .collection('shouldCorrectlyHonorPromoteValues') - .find() - .next(function(err, doc) { - test.equal(null, err); - - test.deepEqual(Long.fromNumber(10), doc.doc); - test.deepEqual(new Int32(10), doc.int); - test.deepEqual(new Double(2.2222), doc.double); - - client.close(); - done(); - }); - } - ); - } - ); + const client = configuration.newClient({}, { promoteValues: false }); + client.connect(function(err, client) { + var db = client.db(configuration.db); + db.collection('shouldCorrectlyHonorPromoteValues').insert( + { + doc: Long.fromNumber(10), + int: 10, + double: 2.2222, + array: [[Long.fromNumber(10)]] + }, + function(err) { + test.equal(null, err); + + db + .collection('shouldCorrectlyHonorPromoteValues') + .find() + .next(function(err, doc) { + test.equal(null, err); + + test.deepEqual(Long.fromNumber(10), doc.doc); + test.deepEqual(new Int32(10), doc.int); + test.deepEqual(new Double(2.2222), doc.double); + + client.close(); + done(); + }); + } + ); + }); } }); @@ -168,10 +156,10 @@ describe('Promote Values', function() { var configuration = this.configuration; var Long = configuration.require.Long, Int32 = configuration.require.Int32, - Double = configuration.require.Double, - MongoClient = configuration.require.MongoClient; + Double = configuration.require.Double; - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { var db = client.db(configuration.db); db.collection('shouldCorrectlyHonorPromoteValues').insert( { @@ -214,10 +202,10 @@ describe('Promote Values', function() { var configuration = this.configuration; var Long = configuration.require.Long, Int32 = configuration.require.Int32, - Double = configuration.require.Double, - MongoClient = configuration.require.MongoClient; + Double = configuration.require.Double; - MongoClient.connect(configuration.url(), {}, function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { var db = client.db(configuration.db); db.collection('shouldCorrectlyHonorPromoteValues2').insert( { @@ -258,10 +246,10 @@ describe('Promote Values', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var Long = configuration.require.Long; - MongoClient.connect(configuration.url(), function(err, client) { + const client = configuration.newClient(); + client.connect(function(err, client) { var docs = new Array(150).fill(0).map(function(_, i) { return { _id: 'needle_' + i, diff --git a/test/functional/readconcern_tests.js b/test/functional/readconcern_tests.js index a1b28675c64..ed66fd75af7 100644 --- a/test/functional/readconcern_tests.js +++ b/test/functional/readconcern_tests.js @@ -207,7 +207,6 @@ describe('ReadConcern', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var listener = require('../..').instrument(function(err) { test.equal(null, err); }); @@ -221,7 +220,8 @@ describe('ReadConcern', function() { : f('%s?%s', url, 'readConcernLevel=local'); // Connect using mongoclient - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); @@ -255,7 +255,6 @@ describe('ReadConcern', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var listener = require('../..').instrument(function(err) { test.equal(null, err); }); @@ -269,7 +268,8 @@ describe('ReadConcern', function() { : f('%s?%s', url, 'readConcernLevel=majority'); // Connect using mongoclient - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); @@ -303,7 +303,6 @@ describe('ReadConcern', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var listener = require('../..').instrument(function(err) { test.equal(null, err); }); @@ -318,7 +317,8 @@ describe('ReadConcern', function() { }; // Connect using mongoclient - MongoClient.connect(url, options, function(err, client) { + const client = configuration.newClient(url, options); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(configuration.db); diff --git a/test/functional/reconnect_tests.js b/test/functional/reconnect_tests.js index 1a53904a2b2..f07e427c5ea 100644 --- a/test/functional/reconnect_tests.js +++ b/test/functional/reconnect_tests.js @@ -54,52 +54,48 @@ describe('Reconnect', function() { // The actual test we wish to run test: function(done) { - var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const configuration = this.configuration; + const client = configuration.newClient('mongodb://localhost:27017/test', { + db: { native_parser: true, bufferMaxEntries: -1 }, + server: { + poolSize: 20, + socketOptions: { autoReconnect: true, keepAlive: true, keepAliveInitialDelay: 50 }, + reconnectTries: 1000, + reconnectInterval: 1000 + } + }); - MongoClient.connect( - 'mongodb://localhost:27017/test', - { - db: { native_parser: true, bufferMaxEntries: -1 }, - server: { - poolSize: 20, - socketOptions: { autoReconnect: true, keepAlive: true, keepAliveInitialDelay: 50 }, - reconnectTries: 1000, - reconnectInterval: 1000 - } - }, - function(err, client) { - var db = client.db(configuration.db); - var col = db.collection('t'); - var count = 1; - - var execute = function() { - if (!done) { - col.insertOne({ a: 1, count: count }, function(err) { - test.equal(null, err); - count = count + 1; + client.connect(function(err, client) { + var db = client.db(configuration.db); + var col = db.collection('t'); + var count = 1; - col.findOne({}, function(err) { - test.equal(null, err); - setTimeout(execute, 500); - }); - }); - } else { - col.insertOne({ a: 1, count: count }, function(err) { + var execute = function() { + if (!done) { + col.insertOne({ a: 1, count: count }, function(err) { + test.equal(null, err); + count = count + 1; + + col.findOne({}, function(err) { test.equal(null, err); + setTimeout(execute, 500); + }); + }); + } else { + col.insertOne({ a: 1, count: count }, function(err) { + test.equal(null, err); - col.findOne({}, function(err) { - test.equal(null, err); - client.close(); - done(); - }); + col.findOne({}, function(err) { + test.equal(null, err); + client.close(); + done(); }); - } - }; + }); + } + }; - setTimeout(execute, 500); - } - ); + setTimeout(execute, 500); + }); var count = 2; diff --git a/test/functional/replicaset_mock_tests.js b/test/functional/replicaset_mock_tests.js index bf6b494319a..ef42f360767 100644 --- a/test/functional/replicaset_mock_tests.js +++ b/test/functional/replicaset_mock_tests.js @@ -62,9 +62,7 @@ describe('ReplSet (mocks)', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - Logger = configuration.require.Logger; - + var Logger = configuration.require.Logger; var logger = Logger.currentLogger(); Logger.setLevel('warn'); Logger.setCurrentLogger(function(msg, state) { @@ -74,10 +72,10 @@ describe('ReplSet (mocks)', function() { ); }); - MongoClient.connect(`mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test`, function( - err, - client - ) { + const client = configuration.newClient( + `mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test` + ); + client.connect(function(err, client) { Logger.setCurrentLogger(logger); Logger.reset(); expect(err).to.not.exist; @@ -99,9 +97,7 @@ describe('ReplSet (mocks)', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient, - Logger = configuration.require.Logger; - + var Logger = configuration.require.Logger; var warnings = []; var logger = Logger.currentLogger(); Logger.setLevel('warn'); @@ -110,10 +106,11 @@ describe('ReplSet (mocks)', function() { warnings.push(state); }); - MongoClient.connect(`mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test`, function( - err, - client - ) { + const client = configuration.newClient( + `mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test` + ); + + client.connect(function(err, client) { Logger.setCurrentLogger(logger); Logger.reset(); @@ -155,19 +152,18 @@ describe('ReplSet (mocks)', function() { test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; + const client = configuration.newClient( + `mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test?socketTimeoutMS=120000&connectTimeoutMS=15000` + ); - MongoClient.connect( - `mongodb://${test.mongos1.uri()},${test.mongos2.uri()}/test?socketTimeoutMS=120000&connectTimeoutMS=15000`, - function(err, client) { - expect(err).to.not.exist; - expect(client.topology.s.coreTopology.s.options.connectionTimeout).to.equal(15000); - expect(client.topology.s.coreTopology.s.options.socketTimeout).to.equal(120000); + client.connect(function(err, client) { + expect(err).to.not.exist; + expect(client.topology.s.coreTopology.s.options.connectionTimeout).to.equal(15000); + expect(client.topology.s.coreTopology.s.options.socketTimeout).to.equal(120000); - client.close(); - done(); - } - ); + client.close(); + done(); + }); } }); }); diff --git a/test/functional/replset_connection_tests.js b/test/functional/replset_connection_tests.js index a0ddfa30013..604fef54665 100644 --- a/test/functional/replset_connection_tests.js +++ b/test/functional/replset_connection_tests.js @@ -59,27 +59,17 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server('localhost', 28390), - new Server('localhost', 28391), - new Server('localhost', 28392) - ], - { rs_name: configuration.replicasetName } + var client = configuration.newClient( + 'mongodb://localhost:28390,localhost:28391,localhost:38392/test?replicaSet=rs', + { w: 0 } ); - - var client = new MongoClient(replSet, { w: 0 }); client.connect(function(err) { test.ok(err != null); @@ -102,10 +92,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Replset start port @@ -115,17 +102,7 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0 }); client.connect(function(err, client) { test.equal(null, err); client.close(); @@ -145,10 +122,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Replset start port @@ -158,17 +132,7 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - {} - ); - - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0 }); client.connect(function(err, client) { test.equal(null, err); client.close(); @@ -186,30 +150,17 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { - socketOptions: { keepAlive: true, keepAliveInitialDelay: 100 }, - rs_name: configuration.replicasetName - } + const client = configuration.newClient( + {}, + { w: 0, keepAlive: true, keepAliveInitialDelay: 100 } ); - var client = new MongoClient(replSet, { w: 0 }); client.connect(function(err, client) { test.equal(null, err); // Get a connection @@ -228,27 +179,15 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - - new MongoClient(replSet, { w: 0 }).connect(function(err, client) { + const client = configuration.newClient({}, { w: 0 }); + client.connect(function(err, client) { test.equal(null, err); var dbCloseCount = 0; client.on('close', function() { @@ -278,27 +217,15 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - - new MongoClient(replSet, { w: 0 }).connect(function(err, client) { + const client = configuration.newClient({}, { w: 0 }); + client.connect(function(err, client) { test.equal(null, err); var dbCloseCount = 0; client.on('close', function() { @@ -328,21 +255,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName + '-wrong' } - ); - - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { rs_name: 'wrong' }); client.connect(function(err) { test.notEqual(null, err); done(); @@ -352,26 +265,12 @@ describe.skip('ReplSet (Connection)', function() { var retries = 120; var ensureConnection = function(configuration, numberOfTries, callback) { - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, socketOptions: { connectTimeoutMS: 1000 } } - ); - if (numberOfTries <= 0) { return callback(new Error('could not connect correctly'), null); } // Open the db - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0, connectTimeoutMS: 1000 }); client.connect(function(err, client) { if (err != null) { // Wait for a sec and retry @@ -392,26 +291,13 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - // // Step down primary server configuration.manager .stepDownPrimary(false, { stepDownSecs: 1, force: true }) @@ -420,7 +306,8 @@ describe.skip('ReplSet (Connection)', function() { ensureConnection(configuration, retries, function(err) { test.equal(null, err); - new MongoClient(replSet, { w: 0 }).connect(function(err, client) { + const client = configuration.newClient({}, { w: 0 }); + client.connect(function(err, client) { test.ok(err == null); // Get a connection var connection = client.topology.connections()[0]; @@ -441,10 +328,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Replset start port @@ -454,21 +338,12 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - // Wait for new primary to pop up ensureConnection(configuration, retries, function(err) { test.equal(null, err); - new MongoClient(replSet, { w: 0 }).connect(function(err, client) { + const client = configuration.newClient({}, { w: 0 }); + client.connect(function(err, client) { test.ok(err == null); // Get a connection var connection = client.topology.connections()[0]; @@ -490,10 +365,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Replset start port @@ -503,21 +375,12 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - // Wait for new primary to pop up ensureConnection(configuration, retries, function(err) { test.equal(null, err); - new MongoClient(replSet, { w: 0 }).connect(function(err, client) { + const client = configuration.newClient({}, { w: 0 }); + client.connect(function(err, client) { test.ok(err == null); // Get a connection var connection = client.topology.connections()[0]; @@ -539,10 +402,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; var openCalled = false; @@ -550,17 +410,7 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0 }); client.once('open', function(_err) { test.equal(null, _err); openCalled = true; @@ -595,34 +445,23 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], + const client = configuration.newClient( + {}, { - socketOptions: { - connectTimeoutMS: 1000, - socketTimeoutMS: 3000, - noDelay: false - }, - rs_name: configuration.replicasetName + w: 0, + connectTimeoutMS: 1000, + socketTimeoutMS: 3000, + noDelay: false } ); - var client = new MongoClient(replSet, { w: 0 }); client.connect(function(err, client) { test.equal(null, err); // Get a connection @@ -651,28 +490,15 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - // Connect to the replicaset - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0 }); client.connect(function(err, client) { // Kill the secondary // Replset start port @@ -694,28 +520,15 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName } - ); - // Connect to the replicaset - var client = new MongoClient(replSet, { w: 1, bufferMaxEntries: 0 }); + const client = configuration.newClient({}, { w: 1, bufferMaxEntries: 0 }); client.connect(function(err, client) { var db = client.db(configuration.db); @@ -752,11 +565,9 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { - var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient, - CoreServer = configuration.require.CoreServer, - CoreConnection = configuration.require.CoreConnection; + const configuration = this.configuration; + const CoreServer = configuration.require.CoreServer; + const CoreConnection = configuration.require.CoreConnection; var url = f( 'mongodb://localhost:%s,localhost:%s,localhost:%s/integration_test_?replicaSet=%s', @@ -770,43 +581,41 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - MongoClient.connect( - url, - { - replSet: { - haInterval: 500, - socketOptions: { - connectTimeoutMS: 500 - } + const client = configuration.newClient(url, { + replSet: { + haInterval: 500, + socketOptions: { + connectTimeoutMS: 500 } - }, - function(err, client) { - test.equal(null, err); - var db = client.db(configuration.db); + } + }); - test.equal(500, client.topology.connections()[0].connectionTimeout); - test.equal(360000, client.topology.connections()[0].socketTimeout); + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); - db - .collection('replicaset_mongo_client_collection') - .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { - test.equal(null, err); - test.equal(1, result.result.n); + test.equal(500, client.topology.connections()[0].connectionTimeout); + test.equal(360000, client.topology.connections()[0].socketTimeout); - client.close(); + db + .collection('replicaset_mongo_client_collection') + .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { + test.equal(null, err); + test.equal(1, result.result.n); - setTimeout(function() { - // Connection account tests - test.equal(0, Object.keys(CoreConnection.connections()).length); - test.equal(0, Object.keys(CoreServer.servers()).length); - CoreServer.disableServerAccounting(); - CoreConnection.disableConnectionAccounting(); + client.close(); - done(); - }, 200); - }); - } - ); + setTimeout(function() { + // Connection account tests + test.equal(0, Object.keys(CoreConnection.connections()).length); + test.equal(0, Object.keys(CoreServer.servers()).length); + CoreServer.disableServerAccounting(); + CoreConnection.disableConnectionAccounting(); + + done(); + }, 200); + }); + }); } }); @@ -818,11 +627,9 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { - var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient, - CoreServer = configuration.require.CoreServer, - CoreConnection = configuration.require.CoreConnection; + const configuration = this.configuration; + const CoreServer = configuration.require.CoreServer; + const CoreConnection = configuration.require.CoreConnection; // Create url var url = f( @@ -838,7 +645,8 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { var db = client.db(configuration.db); db.collection('test_collection').insert({ a: 1 }, function(err) { @@ -869,9 +677,6 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; - var url = f( 'mongodb://%s,%s/%s?replicaSet=%s&readPreference=%s', 'nolocalhost:30000', @@ -881,7 +686,8 @@ describe.skip('ReplSet (Connection)', function() { 'primary' ); - MongoClient.connect(url, function(err) { + const client = configuration.newClient(url); + client.connect(function(err) { test.ok(err != null); done(); }); @@ -900,7 +706,6 @@ describe.skip('ReplSet (Connection)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, GridStore = mongo.GridStore, ObjectID = mongo.ObjectID, CoreServer = configuration.require.CoreServer, @@ -920,7 +725,8 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { var db = client.db(configuration.db); var gs = new GridStore(db, new ObjectID()); test.equal('majority', gs.writeConcern.w); @@ -950,28 +756,15 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Accounting tests CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, socketTimeoutMS: 5000 } - ); - // Open the db connection - var client = new MongoClient(replSet, { w: 1 }); + const client = configuration.newClient({}, { w: 1, socketTimeoutMS: 5000 }); client.on('fullsetup', function(client) { var db = client.db(configuration.db); db.command({ ismaster: true }, function(err, result) { @@ -984,7 +777,7 @@ describe.skip('ReplSet (Connection)', function() { // Get the arbiters var host = secondaries[0].split(':')[0]; var port = parseInt(secondaries[0].split(':')[1], 10); - var client1 = new MongoClient(new Server(host, port), { w: 1 }); + var client1 = configuration.newClient({}, { host, port, w: 1 }); var finished = false; client.topology.on('left', function(t) { @@ -1039,7 +832,6 @@ describe.skip('ReplSet (Connection)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, Server = mongo.Server, CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; @@ -1050,7 +842,8 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); test.ok(client.topology instanceof Server); client.close(); @@ -1097,10 +890,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - Server = mongo.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; // Replset start port @@ -1113,7 +903,7 @@ describe.skip('ReplSet (Connection)', function() { var host = managers[0].host; var port = managers[0].port; - var client = new MongoClient(new Server(host, port), { w: 1 }); + var client = configuration.newClient({}, { host, port, w: 1 }); client.connect(function(err, client) { var db = client.db(configuration.db); test.equal(null, err); @@ -1139,10 +929,7 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - Server = mongo.Server, - MongoClient = configuration.require.MongoClient, - CoreServer = configuration.require.CoreServer, + var CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; configuration.manager.secondaries().then(function(managers) { @@ -1154,7 +941,7 @@ describe.skip('ReplSet (Connection)', function() { var host = managers[0].host; var port = managers[0].port; - var client = new MongoClient(new Server(host, port), { w: 1 }); + var client = configuration.newClient({}, { host, port, w: 1 }); client.connect(function(err, client) { var db = client.db(configuration.db); test.equal(null, err); @@ -1180,7 +967,6 @@ describe.skip('ReplSet (Connection)', function() { var configuration = this.configuration; var ReplSet = configuration.require.ReplSet, ServerManager = require('mongodb-topology-manager').Server, - MongoClient = configuration.require.MongoClient, CoreServer = configuration.require.CoreServer, CoreConnection = configuration.require.CoreConnection; @@ -1213,7 +999,8 @@ describe.skip('ReplSet (Connection)', function() { CoreConnection.enableConnectionAccounting(); // Attempt to connect using MongoClient uri - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); test.ok(client.topology instanceof ReplSet); client.close(); @@ -1239,13 +1026,10 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { - var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient, - CoreServer = configuration.require.CoreServer, - CoreConnection = configuration.require.CoreConnection; - - var url = f( + const configuration = this.configuration; + const CoreServer = configuration.require.CoreServer; + const CoreConnection = configuration.require.CoreConnection; + const url = f( 'mongodb://localhost:%s,localhost:%s,localhost:%s/integration_test_?replicaSet=%s', configuration.port, configuration.port + 1, @@ -1257,33 +1041,28 @@ describe.skip('ReplSet (Connection)', function() { CoreServer.enableServerAccounting(); CoreConnection.enableConnectionAccounting(); - MongoClient.connect( - url, - { - reconnectTries: 10 - }, - function(err, client) { - test.equal(null, err); + const client = configuration.newClient(url, { reconnectTries: 10 }); + client.connect(function(err, client) { + test.equal(null, err); - var servers = client.topology.s.coreTopology.s.replicaSetState.allServers(); - for (var i = 0; i < servers.length; i++) { - test.equal(10, servers[i].s.pool.options.reconnectTries); - } + var servers = client.topology.s.coreTopology.s.replicaSetState.allServers(); + for (var i = 0; i < servers.length; i++) { + test.equal(10, servers[i].s.pool.options.reconnectTries); + } - // Destroy the pool - client.close(); + // Destroy the pool + client.close(); - setTimeout(function() { - // Connection account tests - test.equal(0, Object.keys(CoreConnection.connections()).length); - test.equal(0, Object.keys(CoreServer.servers()).length); - CoreServer.disableServerAccounting(); - CoreConnection.disableConnectionAccounting(); + setTimeout(function() { + // Connection account tests + test.equal(0, Object.keys(CoreConnection.connections()).length); + test.equal(0, Object.keys(CoreServer.servers()).length); + CoreServer.disableServerAccounting(); + CoreConnection.disableConnectionAccounting(); - done(); - }, 200); - } - ); + done(); + }, 200); + }); } }); @@ -1298,9 +1077,6 @@ describe.skip('ReplSet (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; - var url = f( 'mongodb://me:secret@localhost:%s,localhost:%s/integration_test_?replicaSet=%s', configuration.port + 1, @@ -1308,22 +1084,20 @@ describe.skip('ReplSet (Connection)', function() { configuration.replicasetName ); - MongoClient.connect( - url, - { - connectWithNoPrimary: true, - bufferMaxEntries: 0 - }, - function(err) { - test.ok(err); - test.ok( - err.message.indexOf( - 'no connection available for operation and number of stored operation' - ) === -1 - ); - done(); - } - ); + const client = configuration.newClient(url, { + connectWithNoPrimary: true, + bufferMaxEntries: 0 + }); + + client.connect(function(err) { + test.ok(err); + test.ok( + err.message.indexOf( + 'no connection available for operation and number of stored operation' + ) === -1 + ); + done(); + }); } } ); diff --git a/test/functional/replset_failover_tests.js b/test/functional/replset_failover_tests.js index 23f937397c0..dc0413edbd3 100644 --- a/test/functional/replset_failover_tests.js +++ b/test/functional/replset_failover_tests.js @@ -271,24 +271,9 @@ describe.skip('ReplSet (Failover)', function() { test: function(done) { var configuration = this.configuration; - var ReplSet = configuration.require.ReplSet, - MongoClient = configuration.require.MongoClient, - Server = configuration.require.Server; - var manager = configuration.manager; + const client = configuration.newClient({}, { w: 1, tag: 'Application', poolSize: 1 }); - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, tag: 'Application', poolSize: 1 } - ); - - // Get a new instance - var client = new MongoClient(replSet, { w: 1 }); client.on('fullsetup', function(client) { var db = client.db(configuration.db); // Drop collection on replicaset @@ -398,27 +383,18 @@ describe.skip('ReplSet (Failover)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - ReadPreference = mongo.ReadPreference, - MongoClient = configuration.require.MongoClient, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - + ReadPreference = mongo.ReadPreference; var manager = configuration.manager; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, tag: 'Application', poolSize: 1 } + var client = configuration.newClient( + {}, + { + w: 0, + readPreference: ReadPreference.PRIMARY_PREFERRED, + tag: 'Application', + poolSize: 1 + } ); - var client = new MongoClient(replSet, { - w: 0, - readPreference: ReadPreference.PRIMARY_PREFERRED - }); client.on('fullsetup', function(client) { var p_db = client.db(configuration.db); var collection = p_db.collection('notempty'); @@ -467,7 +443,6 @@ describe.skip('ReplSet (Failover)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, ReadPreference = mongo.ReadPreference; var manager = configuration.manager; @@ -480,62 +455,58 @@ describe.skip('ReplSet (Failover)', function() { ); // Connect using the MongoClient - MongoClient.connect( - url, - { - replSet: { - //set replset check interval to be much smaller than our querying interval - haInterval: 50, - socketOptions: { - connectTimeoutMS: 500 - } + const client = configuration.newClient(url, { + replSet: { + //set replset check interval to be much smaller than our querying interval + haInterval: 50, + socketOptions: { + connectTimeoutMS: 500 } - }, - function(err, client) { + } + }); + + client.connect(function(err, client) { + test.equal(null, err); + var db = client.db(configuration.db); + + db.collection('replicaset_readpref_test').insert({ testfield: 123 }, function(err) { test.equal(null, err); - var db = client.db(configuration.db); - db.collection('replicaset_readpref_test').insert({ testfield: 123 }, function(err) { + db.collection('replicaset_readpref_test').findOne({}, function(err, result) { test.equal(null, err); + test.equal(result.testfield, 123); - db.collection('replicaset_readpref_test').findOne({}, function(err, result) { - test.equal(null, err); - test.equal(result.testfield, 123); - - // wait five seconds, then kill 2 of the 3 nodes that are up. - setTimeout(function() { - manager.secondaries().then(function(secondaries) { - secondaries[0].stop().then(function() { - // Shut down primary server - manager.primary().then(function(primary) { - // Stop the primary - primary.stop().then(function() {}); - }); + // wait five seconds, then kill 2 of the 3 nodes that are up. + setTimeout(function() { + manager.secondaries().then(function(secondaries) { + secondaries[0].stop().then(function() { + // Shut down primary server + manager.primary().then(function(primary) { + // Stop the primary + primary.stop().then(function() {}); }); }); - }, 5000); + }); + }, 5000); - // we should be able to continue querying for a full minute - var counter = 0; - var intervalid = setInterval(function() { - if (counter++ >= 30) { - clearInterval(intervalid); - client.close(); - return restartAndDone(configuration, done); - } - - db - .collection('replicaset_readpref_test') - .findOne({}, { readPreference: ReadPreference.SECONDARY_PREFERRED }, function( - err - ) { - test.equal(null, err); - }); - }, 1000); - }); + // we should be able to continue querying for a full minute + var counter = 0; + var intervalid = setInterval(function() { + if (counter++ >= 30) { + clearInterval(intervalid); + client.close(); + return restartAndDone(configuration, done); + } + + db + .collection('replicaset_readpref_test') + .findOne({}, { readPreference: ReadPreference.SECONDARY_PREFERRED }, function(err) { + test.equal(null, err); + }); + }, 1000); }); - } - ); + }); + }); } }); @@ -550,7 +521,6 @@ describe.skip('ReplSet (Failover)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, ReadPreference = mongo.ReadPreference; var manager = configuration.manager; @@ -563,7 +533,8 @@ describe.skip('ReplSet (Failover)', function() { configuration.replicasetName ); - MongoClient.connect(url, { readPreference: ReadPreference.NEAREST }, function(err, client) { + const client = configuration.newClient(url, { readPreference: ReadPreference.NEAREST }); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); diff --git a/test/functional/replset_operations_tests.js b/test/functional/replset_operations_tests.js index 92bb61629b6..98c3113610e 100644 --- a/test/functional/replset_operations_tests.js +++ b/test/functional/replset_operations_tests.js @@ -36,8 +36,6 @@ describe('ReplSet (Operations)', function() { // The actual test we wish to run test: function(done) { const configuration = this.configuration; - const mongo = configuration.require, - MongoClient = mongo.MongoClient; // Create url const url = format( @@ -93,7 +91,8 @@ describe('ReplSet (Operations)', function() { }); } - MongoClient.connect(url, (err, client) => { + const client = configuration.newClient(url); + client.connect((err, client) => { expect(err).to.not.exist; const db = client.db(configuration.db); @@ -122,8 +121,6 @@ describe('ReplSet (Operations)', function() { // The actual test we wish to run test: function(done) { const configuration = this.configuration; - const mongo = configuration.require, - MongoClient = mongo.MongoClient; // Create url const url = format( @@ -192,7 +189,8 @@ describe('ReplSet (Operations)', function() { }); } - MongoClient.connect(url, (err, client) => { + const client = configuration.newClient(url); + client.connect((err, client) => { expect(err).to.not.exist; const db = client.db(configuration.db); @@ -226,8 +224,6 @@ describe('ReplSet (Operations)', function() { // The actual test we wish to run test: function(done) { const configuration = this.configuration; - const mongo = configuration.require, - MongoClient = mongo.MongoClient; // Create url const url = format( @@ -288,7 +284,8 @@ describe('ReplSet (Operations)', function() { }); } - MongoClient.connect(url, (err, client) => { + const client = configuration.newClient(url); + client.connect((err, client) => { expect(err).to.not.exist; const db = client.db(configuration.db); @@ -317,8 +314,6 @@ describe('ReplSet (Operations)', function() { // The actual test we wish to run test: function(done) { const configuration = this.configuration; - const mongo = configuration.require, - MongoClient = mongo.MongoClient; // Create url const url = format( @@ -395,7 +390,8 @@ describe('ReplSet (Operations)', function() { }); } - MongoClient.connect(url, (err, client) => { + const client = configuration.newClient(url); + client.connect((err, client) => { expect(err).to.not.exist; const db = client.db(configuration.db); @@ -416,7 +412,6 @@ describe('ReplSet (Operations)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, ReadPreference = mongo.ReadPreference; // Create url @@ -429,7 +424,8 @@ describe('ReplSet (Operations)', function() { 'primary' ); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -474,12 +470,11 @@ describe('ReplSet (Operations)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; - - MongoClient.connect( + const client = configuration.newClient( 'mongodb://localhost:31001/integration_test_?replicaSet=rs&readPreference=primaryPreferred' - ).then(function(client) { + ); + + client.connect().then(function(client) { var db = client.db(configuration.db); var collection = db.collection('ensureIndexWithPrimaryPreferred'); collection.ensureIndex({ a: 1 }, function(err) { @@ -500,7 +495,6 @@ describe('ReplSet (Operations)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, ReadPreference = mongo.ReadPreference; // Create url @@ -515,7 +509,8 @@ describe('ReplSet (Operations)', function() { var manager = configuration.manager; - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -567,7 +562,6 @@ describe('ReplSet (Operations)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, ReadPreference = mongo.ReadPreference; // Create url @@ -580,7 +574,8 @@ describe('ReplSet (Operations)', function() { 'secondary' ); - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); diff --git a/test/functional/replset_read_preference_tests.js b/test/functional/replset_read_preference_tests.js index f397f0bcd54..f5255c3d75c 100644 --- a/test/functional/replset_read_preference_tests.js +++ b/test/functional/replset_read_preference_tests.js @@ -30,23 +30,14 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { secondaryAcceptableLatencyMS: 5, rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { w: 1 }); + const client = configuration.newClient( + {}, + { secondaryAcceptableLatencyMS: 5, debug: true, w: 1 } + ); + // Trigger test once whole set is up client.on('fullsetup', function(client) { var db = client.db(configuration.db); @@ -171,27 +162,14 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { - readPreference: ReadPreference.NEAREST, - rs_name: configuration.replicasetName, - debug: true - } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { w: 1, readPreference: ReadPreference.NEAREST }); + const client = configuration.newClient( + {}, + { w: 1, readPreference: ReadPreference.NEAREST, debug: true } + ); + client.on('fullsetup', function() { var db = client.db(configuration.db); // Servers viewed @@ -244,23 +222,14 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { w: 1, readPreference: ReadPreference.NEAREST }); + var client = configuration.newClient( + {}, + { w: 1, readPreference: ReadPreference.NEAREST, debug: true } + ); + client.on('fullsetup', function() { var db = client.db(configuration.db); // Servers viewed @@ -328,29 +297,20 @@ describe.skip('ReplSet (ReadPreference)', function() { var configuration = this.configuration; var GridStore = configuration.require.GridStore, ObjectID = configuration.require.ObjectID, - MongoClient = configuration.require.MongoClient, - ReadPreference = configuration.require.ReadPreference, - ReplSet = configuration.require.ReplSet, - Server = configuration.require.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], + ReadPreference = configuration.require.ReadPreference; + + // Create an id + var id = new ObjectID(); + // Open the database + var client = configuration.newClient( + {}, { + w: 1, readPreference: ReadPreference.NEAREST, - rs_name: configuration.replicasetName, debug: true } ); - // Create an id - var id = new ObjectID(); - // Open the database - var client = new MongoClient(replSet, { w: 1 }); client.on('fullsetup', function() { var db = client.db(configuration.db); @@ -414,23 +374,14 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Create db instance - var client = new MongoClient(replSet, { w: 0, readPreference: ReadPreference.PRIMARY }); + var client = configuration.newClient( + {}, + { w: 0, readPreference: ReadPreference.PRIMARY, debug: true } + ); + // Logger.setLevel('info'); // Trigger test once whole set is up client.on('fullsetup', function(client) { @@ -472,23 +423,10 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Create db instance - var client = new MongoClient(replSet, { w: 0 }); + var client = configuration.newClient({}, { w: 0, debug: true }); // Connect to the db client.on('fullsetup', function(client) { var db = client.db(configuration.db); @@ -535,23 +473,10 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Create db instance - var client = new MongoClient(replSet, { w: 0 }); + var client = configuration.newClient({}, { w: 0, debug: true }); // Connect to the db client.on('fullsetup', function() { var db = client.db(configuration.db); @@ -602,23 +527,10 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Create db instance - var client = new MongoClient(replSet, { w: 0 }); + var client = configuration.newClient({}, { w: 0, debug: true }); // Connect to the db client.on('fullsetup', function() { var db = client.db(configuration.db); @@ -665,23 +577,9 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; - // Create db instance - var client = new MongoClient(replSet, { w: 0 }); + const client = configuration.newClient({}, { w: 0, debug: true }); // Connect to the db client.connect(function(err, client) { var db = client.db(configuration.db); @@ -724,26 +622,13 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } + ReadPreference = mongo.ReadPreference; + + const client = configuration.newClient( + {}, + { w: 0, debug: true, readPreference: new ReadPreference(ReadPreference.SECONDARY) } ); - // Create db instance - var client = new MongoClient(replSet, { - w: 0, - readPreference: new ReadPreference(ReadPreference.SECONDARY) - }); // Connect to the db client.on('fullsetup', function() { var db = client.db(configuration.db); @@ -787,23 +672,10 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true, haInterval: 100 } - ); + ReadPreference = mongo.ReadPreference; + + const client = configuration.newClient({}, { w: 0, debug: true, haInterval: 100 }); - // Create db instance - var client = new MongoClient(replSet, { w: 0 }); // Connect to the db client.on('fullsetup', function(client) { var db = client.db(configuration.db); @@ -849,26 +721,18 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { - w: 0, - readPreference: new ReadPreference(ReadPreference.SECONDARY, { loc: 'ny' }) - }); + const client = configuration.newClient( + {}, + { + w: 0, + debug: true, + readPreference: new ReadPreference(ReadPreference.SECONDARY, { loc: 'ny' }) + } + ); + // Trigger test once whole set is up client.on('fullsetup', function() { client.topology.replset.once('pickedServer', function(readPreference) { @@ -903,26 +767,18 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { - w: 1, - readPreference: new ReadPreference(ReadPreference.NEAREST, { loc: 'ny' }) - }); + const client = configuration( + {}, + { + w: 1, + debug: true, + readPreference: new ReadPreference(ReadPreference.NEAREST, { loc: 'ny' }) + } + ); + var success = false; // Trigger test once whole set is up client.on('fullsetup', function(client) { @@ -960,26 +816,16 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReadPreference = mongo.ReadPreference, - ReplSet = mongo.ReplSet, - Server = mongo.Server; - - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { rs_name: configuration.replicasetName, debug: true } - ); + ReadPreference = mongo.ReadPreference; // Open the database - var client = new MongoClient(replSet, { - w: 0, - readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED) - }); + const client = configuration.newClient( + {}, + { + w: 0, + readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED) + } + ); // Trigger test once whole set is up client.on('fullsetup', function(client) { @@ -1007,27 +853,16 @@ describe.skip('ReplSet (ReadPreference)', function() { test: function(done) { var configuration = this.configuration; var mongo = configuration.require, - MongoClient = mongo.MongoClient, - ReplSet = mongo.ReplSet, Server = mongo.Server, ReadPreference = mongo.ReadPreference; - // Replica configuration - var replSet = new ReplSet( - [ - new Server(configuration.host, configuration.port), - new Server(configuration.host, configuration.port + 1), - new Server(configuration.host, configuration.port + 2) - ], - { - readPreference: ReadPreference.NEAREST, - rs_name: configuration.replicasetName, - debug: true - } - ); - // Open the database - var client = new MongoClient(replSet, { w: 'majority', wtimeout: 10000 }); + const client = configuration.newClient({ + w: 'majority', + wtimeout: 10000, + readPreference: ReadPreference.NEAREST + }); + client.on('fullsetup', function(client) { var db = client.db(configuration.db); @@ -1047,16 +882,17 @@ describe.skip('ReplSet (ReadPreference)', function() { ); // Connect using the MongoClient - MongoClient.connect(url, function(err, client) { + const client2 = configuration.newClient(url); + client2.connect(url, function(err, client2) { test.equal(null, err); - var db = client.db(configuration.db); - test.ok(client.topology instanceof Server); + var db = client2.db(configuration.db); + test.ok(client2.topology instanceof Server); db.collection('direct_secondary_read_test').count(function(err, n) { test.equal(null, err); test.ok(n > 0); - client.close(); + client2.close(); done(); }); }); @@ -1089,7 +925,8 @@ describe.skip('ReplSet (ReadPreference)', function() { var url = format('mongodb://localhost:%s/integration_test_?slaveOk=true', configuration.port); // Connect using the MongoClient - MongoClient.connect(url, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); test.ok(client != null); diff --git a/test/functional/retryable_writes_tests.js b/test/functional/retryable_writes_tests.js index f37d9af946e..24fc4da2db3 100644 --- a/test/functional/retryable_writes_tests.js +++ b/test/functional/retryable_writes_tests.js @@ -57,7 +57,6 @@ function loadTestFiles() { } function executeScenarioSetup(scenario, test, config, ctx) { - const MongoClient = config.require.MongoClient; const url = config.url(); const options = Object.assign({}, test.clientOptions, { haInterval: 100, @@ -67,7 +66,9 @@ function executeScenarioSetup(scenario, test, config, ctx) { ctx.failPointName = test.failPoint && test.failPoint.configureFailPoint; - return MongoClient.connect(url, options) + const client = config.newClient(url, options); + return client + .connect() .then(client => (ctx.client = client)) .then(() => (ctx.db = ctx.client.db(config.db))) .then( diff --git a/test/functional/sdam_tests.js b/test/functional/sdam_tests.js index b5367ac7ead..b3b22f0f386 100644 --- a/test/functional/sdam_tests.js +++ b/test/functional/sdam_tests.js @@ -13,7 +13,6 @@ describe('SDAM', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var operations = { serverDescriptionChanged: [], serverHeartbeatStarted: [], @@ -25,7 +24,7 @@ describe('SDAM', function() { topologyClosed: [] }; - var client = new MongoClient(configuration.url()); + var client = configuration.newClient(); var events = [ 'serverDescriptionChanged', 'serverHeartbeatStarted', @@ -61,7 +60,6 @@ describe('SDAM', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var operations = { serverDescriptionChanged: [], serverHeartbeatStarted: [], @@ -73,7 +71,7 @@ describe('SDAM', function() { topologyClosed: [] }; - var client = new MongoClient(configuration.url(), { haInterval: 500 }); + var client = configuration.newClient({}, { haInterval: 500 }); var events = [ 'serverDescriptionChanged', 'serverHeartbeatStarted', @@ -114,7 +112,6 @@ describe('SDAM', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; var operations = { serverDescriptionChanged: [], serverOpening: [], @@ -124,7 +121,7 @@ describe('SDAM', function() { topologyClosed: [] }; - var client = new MongoClient(configuration.url()); + var client = configuration.newClient(); var events = [ 'serverDescriptionChanged', 'serverOpening', diff --git a/test/functional/sharding_connection_tests.js b/test/functional/sharding_connection_tests.js index fef10225cf9..23eb4d3a612 100644 --- a/test/functional/sharding_connection_tests.js +++ b/test/functional/sharding_connection_tests.js @@ -19,8 +19,6 @@ describe('Sharding (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1&readPreference=secondaryPreferred&readPreferenceTags=sf%3A1&readPreferenceTags=', configuration.host, @@ -28,34 +26,33 @@ describe('Sharding (Connection)', function() { configuration.host, configuration.port + 1 ); - MongoClient.connect( - url, - { - mongos: { - haInterval: 500 - } - }, - function(err, client) { - test.equal(null, err); - test.equal(500, client.topology.haInterval); - var db = client.db(configuration.db); - db - .collection('replicaset_mongo_client_collection') - .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { - test.equal(null, err); - test.equal(1, result.result.n); + const client = configuration.newClient(url, { + mongos: { + haInterval: 500 + } + }); + + client.connect(function(err, client) { + test.equal(null, err); + test.equal(500, client.topology.haInterval); + var db = client.db(configuration.db); + + db + .collection('replicaset_mongo_client_collection') + .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { + test.equal(null, err); + test.equal(1, result.result.n); - // Perform fetch of document - db.collection('replicaset_mongo_client_collection').findOne(function(err) { - test.equal(null, err); + // Perform fetch of document + db.collection('replicaset_mongo_client_collection').findOne(function(err) { + test.equal(null, err); - client.close(); - done(); - }); + client.close(); + done(); }); - } - ); + }); + }); } }); @@ -68,8 +65,6 @@ describe('Sharding (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s,localhost:50002/sharded_test_db?w=1', configuration.host, @@ -78,7 +73,8 @@ describe('Sharding (Connection)', function() { configuration.port + 1 ); - MongoClient.connect(url, {}, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { setTimeout(function() { test.equal(null, err); client.close(); @@ -97,8 +93,6 @@ describe('Sharding (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1&readPreference=secondaryPreferred&readPreferenceTags=sf%3A1&readPreferenceTags=', configuration.host, @@ -106,27 +100,21 @@ describe('Sharding (Connection)', function() { configuration.host, configuration.port + 1 ); - MongoClient.connect( - url, - { - mongos: { - haInterval: 500 - } - }, - function(err, client) { - test.equal(null, err); - test.equal(500, client.topology.haInterval); - test.ok(client.topology.capabilities() != null); - test.equal(true, client.topology.isConnected()); - test.ok(client.topology.lastIsMaster() != null); - test.ok(client.topology.connections() != null); - test.ok(client.topology.isMasterDoc != null); - test.ok(client.topology.bson != null); - client.close(); - done(); - } - ); + const client = configuration.newClient(url, { mongos: { haInterval: 500 } }); + client.connect(function(err, client) { + test.equal(null, err); + test.equal(500, client.topology.haInterval); + test.ok(client.topology.capabilities() != null); + test.equal(true, client.topology.isConnected()); + test.ok(client.topology.lastIsMaster() != null); + test.ok(client.topology.connections() != null); + test.ok(client.topology.isMasterDoc != null); + test.ok(client.topology.bson != null); + + client.close(); + done(); + }); } }); @@ -139,9 +127,6 @@ describe('Sharding (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require, - MongoClient = mongo.MongoClient; - var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1&readPreference=secondaryPreferred&readPreferenceTags=sf%3A1&readPreferenceTags=', configuration.host, @@ -150,24 +135,19 @@ describe('Sharding (Connection)', function() { configuration.port + 1 ); - MongoClient.connect( - url, - { - reconnectTries: 10 - }, - function(err, client) { - test.equal(null, err); - test.ok(client != null); + const client = configuration.newClient(url, { reconnectTries: 10 }); + client.connect(function(err, client) { + test.equal(null, err); + test.ok(client != null); - var servers = client.topology.s.coreTopology.connectedProxies; - for (var i = 0; i < servers.length; i++) { - test.equal(10, servers[i].s.pool.options.reconnectTries); - } - - client.close(); - done(); + var servers = client.topology.s.coreTopology.connectedProxies; + for (var i = 0; i < servers.length; i++) { + test.equal(10, servers[i].s.pool.options.reconnectTries); } - ); + + client.close(); + done(); + }); } }); @@ -180,8 +160,6 @@ describe('Sharding (Connection)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var mongo = configuration.require; - var MongoClient = mongo.MongoClient; var manager = configuration.manager; var mongos = manager.proxies; @@ -194,7 +172,8 @@ describe('Sharding (Connection)', function() { configuration.port + 1 ); - var client = yield MongoClient.connect(url); + const client = configuration.newClient(url); + yield client.connect(); var doc = { answer: 42 }; var db = client.db('Test'); diff --git a/test/functional/sharding_failover_tests.js b/test/functional/sharding_failover_tests.js index 16ae1844e5d..2f47a7938d9 100644 --- a/test/functional/sharding_failover_tests.js +++ b/test/functional/sharding_failover_tests.js @@ -20,8 +20,6 @@ describe.skip('Sharding (Failover)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var manager = configuration.manager; var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1', @@ -31,7 +29,8 @@ describe.skip('Sharding (Failover)', function() { configuration.port + 1 ); - MongoClient.connect(url, {}, function(err, client) { + const client = configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); @@ -187,8 +186,6 @@ describe.skip('Sharding (Failover)', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var MongoClient = configuration.require.MongoClient; - var manager = configuration.manager; var url = f( 'mongodb://%s:%s,%s:%s/sharded_test_db?w=1', @@ -198,7 +195,8 @@ describe.skip('Sharding (Failover)', function() { configuration.port + 1 ); - MongoClient.connect(url, {}, function(err, client) { + const client = this.configuration.newClient(url); + client.connect(function(err, client) { test.equal(null, err); test.ok(client != null); var db = client.db(configuration.db); diff --git a/test/functional/transactions_tests.js b/test/functional/transactions_tests.js index d94d47ba043..50a3381db64 100644 --- a/test/functional/transactions_tests.js +++ b/test/functional/transactions_tests.js @@ -1,8 +1,6 @@ 'use strict'; const Promise = require('bluebird'); -const mongodb = require('../..'); -const MongoClient = mongodb.MongoClient; const path = require('path'); const fs = require('fs'); const chai = require('chai'); @@ -100,7 +98,7 @@ describe('Transactions (spec)', function() { config.replicasetName }`; - testContext.sharedClient = new MongoClient(testContext.url); + testContext.sharedClient = config.newClient(testContext.url); return testContext.sharedClient.connect(); }); @@ -190,7 +188,8 @@ function runTestSuiteTest(testData, context) { clientOptions.autoReconnect = false; clientOptions.haInterval = 100; - return MongoClient.connect(context.url, clientOptions).then(client => { + const client = this.configuration.newClient(context.url, clientOptions); + return client.connect().then(client => { context.testClient = client; client.on('commandStarted', event => { if (event.databaseName === context.dbName || isTransactionCommand(event.commandName)) { diff --git a/test/functional/uri_tests.js b/test/functional/uri_tests.js index 4e5d96c0318..dbc5a29c59f 100644 --- a/test/functional/uri_tests.js +++ b/test/functional/uri_tests.js @@ -1,7 +1,6 @@ 'use strict'; const expect = require('chai').expect; -const MongoClient = require('../..').MongoClient; describe('URI', function() { /** @@ -19,30 +18,28 @@ describe('URI', function() { var self = this; // Connect using the connection string - MongoClient.connect( - 'mongodb://localhost:27017/integration_tests', - { - native_parser: false, - socketOptions: { - connectTimeoutMS: 500 - } - }, - function(err, client) { - var db = client.db(self.configuration.db); - expect(err).to.not.exist; - expect(client.topology.connections()[0].connectionTimeout).to.equal(500); + const client = this.configuration.newClient('mongodb://localhost:27017/integration_tests', { + native_parser: false, + socketOptions: { + connectTimeoutMS: 500 + } + }); - db - .collection('mongoclient_test') - .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { - expect(err).to.not.exist; - expect(result.result.n).to.equal(1); + client.connect(function(err, client) { + var db = client.db(self.configuration.db); + expect(err).to.not.exist; + expect(client.topology.connections()[0].connectionTimeout).to.equal(500); - client.close(); - done(); - }); - } - ); + db + .collection('mongoclient_test') + .update({ a: 1 }, { b: 1 }, { upsert: true }, function(err, result) { + expect(err).to.not.exist; + expect(result.result.n).to.equal(1); + + client.close(); + done(); + }); + }); } } ); @@ -60,7 +57,11 @@ describe('URI', function() { var self = this; // Connect using the connection string - MongoClient.connect('mongodb://localhost:27017/integration_tests?w=0', function(err, client) { + const client = this.configuration.newClient( + 'mongodb://localhost:27017/integration_tests?w=0' + ); + + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(self.configuration.db); @@ -89,18 +90,19 @@ describe('URI', function() { // The actual test we wish to run test: function(done) { - if (process.platform !== 'win32') { - MongoClient.connect('mongodb://%2Ftmp%2Fmongodb-27017.sock?safe=false', function( - err, - client - ) { - expect(err).to.not.exist; - client.close(); - done(); - }); - } else { - done(); + if (process.platform === 'win32') { + return done(); } + + const client = this.configuration.newClient( + 'mongodb://%2Ftmp%2Fmongodb-27017.sock?safe=false' + ); + + client.connect(function(err, client) { + expect(err).to.not.exist; + client.close(); + done(); + }); } }); @@ -111,9 +113,9 @@ describe('URI', function() { // The actual test we wish to run test: function(done) { - var self = this; - MongoClient.connect('mongodb://127.0.0.1:27017/?fsync=true', function(err, client) { - var db = client.db(self.configuration.db); + const client = this.configuration.newClient('mongodb://127.0.0.1:27017/?fsync=true'); + client.connect((err, client) => { + var db = client.db(this.configuration.db); expect(db.writeConcern.fsync).to.be.true; client.close(); done(); @@ -129,34 +131,36 @@ describe('URI', function() { // The actual test we wish to run test: function(done) { var self = this; + const configuration = this.configuration; + const client = configuration.newClient('mongodb://localhost:27017/integration_tests', { + native_parser: true + }); - MongoClient.connect( - 'mongodb://localhost:27017/integration_tests', - { native_parser: true }, - function(err, client) { - expect(err).to.not.exist; - var user = 'u$ser', - pass = '$specialch@rs'; - var db = client.db(self.configuration.db); + client.connect(function(err, client) { + expect(err).to.not.exist; + var user = 'u$ser', + pass = '$specialch@rs'; + var db = client.db(self.configuration.db); - db.addUser(user, pass, function(err) { + db.addUser(user, pass, function(err) { + expect(err).to.not.exist; + var uri = + 'mongodb://' + + encodeURIComponent(user) + + ':' + + encodeURIComponent(pass) + + '@localhost:27017/integration_tests'; + + const aclient = configuration.newClient(uri, { native_parser: true }); + aclient.connect(function(err, aclient) { expect(err).to.not.exist; - var uri = - 'mongodb://' + - encodeURIComponent(user) + - ':' + - encodeURIComponent(pass) + - '@localhost:27017/integration_tests'; - MongoClient.connect(uri, { native_parser: true }, function(err, aclient) { - expect(err).to.not.exist; - client.close(); - aclient.close(); - done(); - }); + client.close(); + aclient.close(); + done(); }); - } - ); + }); + }); } }); @@ -168,7 +172,8 @@ describe('URI', function() { config.replicasetName }`; - MongoClient.connect(uri, { useNewUrlParser: true }, (err, client) => { + const client = this.configuration.newClient(uri, { useNewUrlParser: true }); + client.connect((err, client) => { if (err) console.dir(err); expect(err).to.not.exist; expect(client).to.exist; diff --git a/test/functional/view_tests.js b/test/functional/view_tests.js index 2c1ce079266..be1aaade81c 100644 --- a/test/functional/view_tests.js +++ b/test/functional/view_tests.js @@ -8,9 +8,9 @@ describe('Views', function() { metadata: { requires: { generators: true, topology: 'single' } }, test: function(done) { - var self = this, - MongoClient = self.configuration.mongo.MongoClient, - Long = self.configuration.mongo.Long; + var self = this; + const configuration = this.configuration; + const Long = configuration.mongo.Long; // Default message fields var defaultFields = Object.assign({}, mock.DEFAULT_ISMASTER); @@ -46,7 +46,8 @@ describe('Views', function() { var commandResult = null; // Connect to the mocks - MongoClient.connect(`mongodb://${singleServer.uri()}/test`, function(err, client) { + const client = configuration.newClient(`mongodb://${singleServer.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; var db = client.db(self.configuration.db); diff --git a/test/unit/bypass_validation_tests.js b/test/unit/bypass_validation_tests.js index a9b5d77ee51..7ac4e5d7db2 100644 --- a/test/unit/bypass_validation_tests.js +++ b/test/unit/bypass_validation_tests.js @@ -1,6 +1,5 @@ 'use strict'; -const MongoClient = require('../..').MongoClient; const expect = require('chai').expect; const mock = require('mongodb-mock-server'); @@ -14,8 +13,8 @@ describe('bypass document validation', function() { afterEach(() => mock.cleanup()); // general test for aggregate function - function testAggregate(config, done) { - const client = new MongoClient(`mongodb://${test.server.uri()}/test`); + function testAggregate(testConfiguration, config, done) { + const client = testConfiguration.newClient(`mongodb://${test.server.uri()}/test`); let close = e => { close = () => {}; client.close(() => done(e)); @@ -63,16 +62,16 @@ describe('bypass document validation', function() { } // aggregate it('should only set bypass document validation if strictly true in aggregate', function(done) { - testAggregate({ expected: true, actual: true }, done); + testAggregate(this.configuration, { expected: true, actual: true }, done); }); it('should not set bypass document validation if not strictly true in aggregate', function(done) { - testAggregate({ expected: undefined, actual: false }, done); + testAggregate(this.configuration, { expected: undefined, actual: false }, done); }); // general test for mapReduce function - function testMapReduce(config, done) { - const client = new MongoClient(`mongodb://${test.server.uri()}/test`); + function testMapReduce(testConfiguration, config, done) { + const client = testConfiguration.newClient(`mongodb://${test.server.uri()}/test`); let close = e => { close = () => {}; client.close(() => done(e)); @@ -116,16 +115,16 @@ describe('bypass document validation', function() { } // map reduce it('should only set bypass document validation if strictly true in mapReduce', function(done) { - testMapReduce({ expected: true, actual: true }, done); + testMapReduce(this.configuration, { expected: true, actual: true }, done); }); it('should not set bypass document validation if not strictly true in mapReduce', function(done) { - testMapReduce({ expected: undefined, actual: false }, done); + testMapReduce(this.configuration, { expected: undefined, actual: false }, done); }); // general test for findAndModify function - function testFindAndModify(config, done) { - const client = new MongoClient(`mongodb://${test.server.uri()}/test`); + function testFindAndModify(testConfiguration, config, done) { + const client = testConfiguration.newClient(`mongodb://${test.server.uri()}/test`); let close = e => { close = () => {}; client.close(() => done(e)); @@ -171,16 +170,16 @@ describe('bypass document validation', function() { } // find and modify it('should only set bypass document validation if strictly true in findAndModify', function(done) { - testFindAndModify({ expected: true, actual: true }, done); + testFindAndModify(this.configuration, { expected: true, actual: true }, done); }); it('should not set bypass document validation if not strictly true in findAndModify', function(done) { - testFindAndModify({ expected: undefined, actual: false }, done); + testFindAndModify(this.configuration, { expected: undefined, actual: false }, done); }); // general test for BlukWrite to test changes made in ordered.js and unordered.js - function testBulkWrite(config, done) { - const client = new MongoClient(`mongodb://${test.server.uri()}/test`); + function testBulkWrite(testConfiguration, config, done) { + const client = testConfiguration.newClient(`mongodb://${test.server.uri()}/test`); let close = e => { close = () => {}; client.close(() => done(e)); @@ -221,19 +220,19 @@ describe('bypass document validation', function() { } // ordered bulk write, testing change in ordered.js it('should only set bypass document validation if strictly true in ordered bulkWrite', function(done) { - testBulkWrite({ expected: true, actual: true, ordered: true }, done); + testBulkWrite(this.configuration, { expected: true, actual: true, ordered: true }, done); }); it('should not set bypass document validation if not strictly true in ordered bulkWrite', function(done) { - testBulkWrite({ expected: undefined, actual: false, ordered: true }, done); + testBulkWrite(this.configuration, { expected: undefined, actual: false, ordered: true }, done); }); // unordered bulk write, testing change in ordered.js it('should only set bypass document validation if strictly true in unordered bulkWrite', function(done) { - testBulkWrite({ expected: true, actual: true, ordered: false }, done); + testBulkWrite(this.configuration, { expected: true, actual: true, ordered: false }, done); }); it('should not set bypass document validation if not strictly true in unordered bulkWrite', function(done) { - testBulkWrite({ expected: undefined, actual: false, ordered: false }, done); + testBulkWrite(this.configuration, { expected: undefined, actual: false, ordered: false }, done); }); }); diff --git a/test/unit/change_stream_resume_tests.js b/test/unit/change_stream_resume_tests.js index 5cd59225491..a3999f1f011 100644 --- a/test/unit/change_stream_resume_tests.js +++ b/test/unit/change_stream_resume_tests.js @@ -2,7 +2,6 @@ const expect = require('chai').expect; const mock = require('mongodb-mock-server'); -const MongoClient = require('../../lib/mongo_client'); const ObjectId = require('../../index').ObjectId; const Timestamp = require('../../index').Timestamp; const Long = require('../../index').Long; @@ -183,8 +182,9 @@ describe('Change Stream Resume Tests', function() { it(config.description, { metadata: { requires: { mongodb: '>=3.6.0' } }, test: function() { + const configuration = this.configuration; test.server.setMessageHandler(makeServerHandler(config)); - client = new MongoClient(`mongodb://${test.server.uri()}`, { + client = configuration.newClient(`mongodb://${test.server.uri()}`, { socketTimeoutMS: 300 }); return client diff --git a/test/unit/db_list_collections_tests.js b/test/unit/db_list_collections_tests.js index 05fffe0110f..ac6e034d5b6 100644 --- a/test/unit/db_list_collections_tests.js +++ b/test/unit/db_list_collections_tests.js @@ -2,7 +2,6 @@ const mock = require('mongodb-mock-server'); const expect = require('chai').expect; -const MongoClient = require('../../lib/mongo_client'); describe('db.listCollections', function() { const testHarness = {}; @@ -59,7 +58,8 @@ describe('db.listCollections', function() { } ].forEach(config => { function testFn(done) { - const client = new MongoClient(`mongodb://${testHarness.server.uri()}/test`, { + const configuration = this.configuration; + const client = configuration.newClient(`mongodb://${testHarness.server.uri()}/test`, { monitorCommands: true }); diff --git a/test/unit/sessions/client_tests.js b/test/unit/sessions/client_tests.js index 99d9b876a36..0231f07a647 100644 --- a/test/unit/sessions/client_tests.js +++ b/test/unit/sessions/client_tests.js @@ -1,6 +1,5 @@ 'use strict'; -const MongoClient = require('../../..').MongoClient; const expect = require('chai').expect; const mock = require('mongodb-mock-server'); @@ -26,7 +25,8 @@ describe('Sessions', function() { } }); - MongoClient.connect(`mongodb://${test.server.uri()}/test`, function(err, client) { + const client = this.configuration.newClient(`mongodb://${test.server.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; expect(() => { client.startSession(); @@ -55,7 +55,8 @@ describe('Sessions', function() { } }); - MongoClient.connect(`mongodb://${test.server.uri()}/test`, function(err, client) { + const client = this.configuration.newClient(`mongodb://${test.server.uri()}/test`); + client.connect(function(err, client) { expect(err).to.not.exist; let session = client.startSession(); expect(session).to.exist; diff --git a/test/unit/sessions/collection_tests.js b/test/unit/sessions/collection_tests.js index ebcffddebe2..5c667152ccb 100644 --- a/test/unit/sessions/collection_tests.js +++ b/test/unit/sessions/collection_tests.js @@ -1,8 +1,7 @@ 'use strict'; -const MongoClient = require('../../..').MongoClient, - Timestamp = require('bson').Timestamp, - expect = require('chai').expect, - mock = require('mongodb-mock-server'); +const Timestamp = require('bson').Timestamp; +const expect = require('chai').expect; +const mock = require('mongodb-mock-server'); const test = {}; describe('Sessions', function() { @@ -34,7 +33,8 @@ describe('Sessions', function() { } }); - return MongoClient.connect(`mongodb://${test.server.uri()}/test`).then(client => { + const client = this.configuration.newClient(`mongodb://${test.server.uri()}/test`); + return client.connect().then(client => { const session = client.startSession({ causalConsistency: true }); const coll = client.db('foo').collection('bar'); @@ -66,7 +66,8 @@ describe('Sessions', function() { } }); - return MongoClient.connect(`mongodb://${test.server.uri()}/test`).then(client => { + const client = this.configuration.newClient(`mongodb://${test.server.uri()}/test`); + return client.connect().then(client => { const coll = client.db('foo').collection('bar'); return coll.count({}, options).then(() => { From f786cd0d6ad754d223765696c569f9fe892768cb Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 07:18:52 -0400 Subject: [PATCH 18/40] test(apm): ignore `ismaster` commands for test expectations --- test/functional/apm_tests.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/test/functional/apm_tests.js b/test/functional/apm_tests.js index 69fc62ac318..005977e9f2e 100644 --- a/test/functional/apm_tests.js +++ b/test/functional/apm_tests.js @@ -414,7 +414,6 @@ describe('APM', function() { .limit(100) .batchSize(2) .comment('some comment') - .maxScan(1000) .maxTimeMS(5000) .setReadPreference(ReadPreference.PRIMARY) .addCursorFlag('noCursorTimeout', true) @@ -489,7 +488,6 @@ describe('APM', function() { .limit(100) .batchSize(2) .comment('some comment') - .maxScan(1000) .maxTimeMS(5000) .setReadPreference(ReadPreference.PRIMARY) .addCursorFlag('noCursorTimeout', true) @@ -1001,11 +999,17 @@ describe('APM', function() { expect(data).to.have.length(r.insertedCount); // Set up the listeners - client.on('commandStarted', filterOutCommands('endSessions', monitoringResults.starts)); - client.on('commandFailed', filterOutCommands('endSessions', monitoringResults.failures)); + client.on( + 'commandStarted', + filterOutCommands(['ismaster', 'endSessions'], monitoringResults.starts) + ); + client.on( + 'commandFailed', + filterOutCommands(['ismaster', 'endSessions'], monitoringResults.failures) + ); client.on( 'commandSucceeded', - filterOutCommands('endSessions', monitoringResults.successes) + filterOutCommands(['ismaster', 'endSessions'], monitoringResults.successes) ); // Unpack the operation From 4d78b89e52dc111d4320c6a5c1b7cc0428d392df Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 07:19:35 -0400 Subject: [PATCH 19/40] test(config): ensure that `dbOptions` is at least an empty object --- test/config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/config.js b/test/config.js index 5b7a4b3ab0d..68e8bd53bdd 100644 --- a/test/config.js +++ b/test/config.js @@ -53,6 +53,7 @@ class NativeConfiguration extends ConfigurationBase { return new this.mongo.MongoClient(dbOptions, serverOptions); } + dbOptions = dbOptions || {}; serverOptions = Object.assign({}, { haInterval: 100 }, serverOptions); // Override implementation From 15e45939e3820066eccac1e4daa5bd5e7aba19de Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 09:50:29 -0400 Subject: [PATCH 20/40] test(change-streams): support other events before `invalidate` In version 4.0+ of the server, there are additional events before an `invalidate` change type is sent (e.g. `drop`, `rename`). Our tests should accommodate other types, while eventually expecting an `invalidate` change. --- test/functional/change_stream_tests.js | 69 ++++++++++++++++---------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/test/functional/change_stream_tests.js b/test/functional/change_stream_tests.js index 9cd0357ce14..65fa9e0cce2 100644 --- a/test/functional/change_stream_tests.js +++ b/test/functional/change_stream_tests.js @@ -519,12 +519,11 @@ describe('Change Streams', function() { ); // Attach second event listener - changeStream.once('change', function(change) { - // Check the cursor invalidation has occured - assert.equal(change.operationType, 'invalidate'); - - // now expect the server to close the stream - changeStream.once('close', () => client.close(done)); + changeStream.on('change', function(change) { + if (change.operationType === 'invalidate') { + // now expect the server to close the stream + changeStream.once('close', () => client.close(done)); + } }); // Trigger the second database event @@ -534,7 +533,7 @@ describe('Change Streams', function() { .rename('renamedDocs', { dropTarget: true }, function(err) { assert.ifError(err); }); - }); + }, 250); }); // Trigger the first database event @@ -574,18 +573,28 @@ describe('Change Streams', function() { database.dropDatabase(function(err) { assert.ifError(err); - changeStream.next(function(err, change) { - assert.ifError(err); - - // Check the cursor invalidation has occured - assert.equal(change.operationType, 'invalidate'); - + function completeStream() { changeStream.hasNext(function(err, hasNext) { assert.equal(hasNext, false); assert.equal(changeStream.isClosed(), true); client.close(done); }); - }); + } + + function checkInvalidate() { + changeStream.next(function(err, change) { + assert.ifError(err); + + // Check the cursor invalidation has occured + if (change.operationType === 'invalidate') { + return completeStream(); + } + + checkInvalidate(); + }); + } + + checkInvalidate(); }); }); }); @@ -600,6 +609,16 @@ describe('Change Streams', function() { var configuration = this.configuration; const client = configuration.newClient(); + function checkInvalidate(changeStream) { + return changeStream.next().then(change => { + if (change.operationType === 'invalidate') { + return Promise.resolve(); + } + + return checkInvalidate(changeStream); + }); + } + client.connect(function(err, client) { assert.ifError(err); var database = client.db('integration_tests'); @@ -613,21 +632,16 @@ describe('Change Streams', function() { .then(function() { return delay(200); }); - }); + }, 200); + return changeStream .next() .then(function(change) { assert.equal(change.operationType, 'insert'); return database.dropCollection('invalidateCollectionDropPromises'); }) - .then(function() { - return changeStream.next(); - }) - .then(function(change) { - // Check the cursor invalidation has occured - assert.equal(change.operationType, 'invalidate'); - return changeStream.hasNext(); - }) + .then(() => checkInvalidate(changeStream)) + .then(() => changeStream.hasNext()) .then(function(hasNext) { assert.equal(hasNext, false); assert.equal(changeStream.isClosed(), true); @@ -1602,11 +1616,11 @@ describe('Change Streams', function() { validateOptions: true }; - const client = configuration.newClient(`mongodb://${server.uri()}`, connectOptions); let getMoreCounter = 0; let aggregateCounter = 0; let changeStream; let server; + let client; let finish = err => { finish = () => {}; @@ -1624,9 +1638,9 @@ describe('Change Streams', function() { return request.reply(makeIsMaster(server)); } else if (doc.aggregate) { if (aggregateCounter++ > 0) { - expect(doc) - .to.have.nested.property('pipeline[0].$changeStream.startAtOperationTime') - .that.deep.equals(OPERATION_TIME); + expect(doc).to.have.nested.property('pipeline[0].$changeStream.startAtOperationTime'); + expect(doc.pipeline[0].$changeStream.startAtOperationTime.equals(OPERATION_TIME)).to + .be.ok; expect(doc).to.not.have.nested.property('pipeline[0].$changeStream.resumeAfter'); } else { expect(doc).to.not.have.nested.property( @@ -1653,6 +1667,7 @@ describe('Change Streams', function() { .createServer() .then(_server => (server = _server)) .then(() => server.setMessageHandler(primaryServerHandler)) + .then(() => (client = configuration.newClient(`mongodb://${server.uri()}`, connectOptions))) .then(() => client.connect()) .then(() => client.db(dbName)) .then(db => db.collection(collectionName)) From d633f68a5be8f01ae1761facba1a1169d3fc1d59 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 09:56:36 -0400 Subject: [PATCH 21/40] test(parallel-collection-scan): don't run these tests on mdb 4.1+ --- test/functional/find_tests.js | 10 +++++----- test/functional/operation_example_tests.js | 2 +- test/functional/operation_generators_example_tests.js | 2 +- test/functional/operation_promises_example_tests.js | 2 +- test/functional/readconcern_tests.js | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/functional/find_tests.js b/test/functional/find_tests.js index bc4d0738c1c..cc57da1e72f 100644 --- a/test/functional/find_tests.js +++ b/test/functional/find_tests.js @@ -2413,7 +2413,7 @@ describe('Find', function() { it('Should correctly execute parallelCollectionScan with multiple cursors using each', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { @@ -2478,7 +2478,7 @@ describe('Find', function() { it('Should correctly execute parallelCollectionScan with multiple cursors using next', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { @@ -2536,7 +2536,7 @@ describe('Find', function() { it('Should correctly execute parallelCollectionScan with single cursor and close', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { @@ -2580,7 +2580,7 @@ describe('Find', function() { it('Should correctly execute parallelCollectionScan with single cursor streaming', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { @@ -2754,7 +2754,7 @@ describe('Find', function() { { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { diff --git a/test/functional/operation_example_tests.js b/test/functional/operation_example_tests.js index 0e11f5e802b..c867b561aa7 100644 --- a/test/functional/operation_example_tests.js +++ b/test/functional/operation_example_tests.js @@ -2974,7 +2974,7 @@ describe('Operation Examples', function() { it('Should correctly execute parallelCollectionScan with multiple cursors using toArray', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } }, + metadata: { requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run test: function(done) { diff --git a/test/functional/operation_generators_example_tests.js b/test/functional/operation_generators_example_tests.js index 93765ed471e..63c8329cd98 100644 --- a/test/functional/operation_generators_example_tests.js +++ b/test/functional/operation_generators_example_tests.js @@ -2198,7 +2198,7 @@ describe('Operation (Generators)', function() { it('Should correctly execute parallelCollectionScan with multiple cursors with Generators', { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run - metadata: { requires: { generators: true, mongodb: '>2.5.5', topology: ['single'] } }, + metadata: { requires: { generators: true, mongodb: '>2.5.5 <=4.1.0', topology: ['single'] } }, // The actual test we wish to run test: function() { diff --git a/test/functional/operation_promises_example_tests.js b/test/functional/operation_promises_example_tests.js index 6c13b3a4d88..098b8bbdc49 100644 --- a/test/functional/operation_promises_example_tests.js +++ b/test/functional/operation_promises_example_tests.js @@ -2240,7 +2240,7 @@ describe('Operation (Promises)', function() { // Add a tag that our runner can trigger on // in this case we are setting that node needs to be higher than 0.10.X to run metadata: { - requires: { mongodb: '>2.5.5', topology: ['single', 'replicaset'] } + requires: { mongodb: '>2.5.5 <=4.1.0', topology: ['single', 'replicaset'] } }, // The actual test we wish to run diff --git a/test/functional/readconcern_tests.js b/test/functional/readconcern_tests.js index ed66fd75af7..45af86aaead 100644 --- a/test/functional/readconcern_tests.js +++ b/test/functional/readconcern_tests.js @@ -782,7 +782,7 @@ describe('ReadConcern', function() { }); it('Should set majority readConcern parallelCollectionScan command', { - metadata: { requires: { topology: 'replicaset', mongodb: '>= 3.2.0' } }, + metadata: { requires: { topology: 'replicaset', mongodb: '>= 3.2.0 <=4.1.0' } }, test: function(done) { var listener = require('../..').instrument(function(err) { From 2a19b16da81f4db2e22f328fb0917e84ecdc37c0 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 09:57:06 -0400 Subject: [PATCH 22/40] test(scram-sha): reject with an error, not just a string --- test/functional/scram_sha_256_tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/scram_sha_256_tests.js b/test/functional/scram_sha_256_tests.js index 02a2eb6c168..c10ebafd54a 100644 --- a/test/functional/scram_sha_256_tests.js +++ b/test/functional/scram_sha_256_tests.js @@ -178,7 +178,7 @@ describe('SCRAM-SHA-256 auth', function() { return withClient( this.configuration.newClient(options), - () => Promise.reject('This request should have failed to authenticate'), + () => Promise.reject(new Error('This request should have failed to authenticate')), err => expect(err).to.not.be.null ); } @@ -206,7 +206,7 @@ describe('SCRAM-SHA-256 auth', function() { const getErrorMsg = options => withClient( this.configuration.newClient(options), - () => Promise.reject('This request should have failed to authenticate'), + () => Promise.reject(new Error('This request should have failed to authenticate')), err => expect(err).to.be.an.instanceof(MongoError) ); From d34828a9fc90126dddef7fe316da394f55be7e69 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 09:57:46 -0400 Subject: [PATCH 23/40] test(transactions): pass configuration into main execute function --- test/functional/transactions_tests.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/functional/transactions_tests.js b/test/functional/transactions_tests.js index 50a3381db64..9d2e8d170df 100644 --- a/test/functional/transactions_tests.js +++ b/test/functional/transactions_tests.js @@ -121,7 +121,9 @@ describe('Transactions (spec)', function() { } // run the actual test - testPromise = testPromise.then(() => runTestSuiteTest(testData, testContext)); + testPromise = testPromise.then(() => + runTestSuiteTest(this.configuration, testData, testContext) + ); if (testData.failPoint) { testPromise = testPromise.then(() => @@ -178,7 +180,7 @@ function disableFailPoint(failPoint, testContext) { } let displayCommands = false; -function runTestSuiteTest(testData, context) { +function runTestSuiteTest(configuration, testData, context) { const commandEvents = []; const clientOptions = translateClientOptions( Object.assign({ monitorCommands: true }, testData.clientOptions) @@ -188,7 +190,7 @@ function runTestSuiteTest(testData, context) { clientOptions.autoReconnect = false; clientOptions.haInterval = 100; - const client = this.configuration.newClient(context.url, clientOptions); + const client = configuration.newClient(context.url, clientOptions); return client.connect().then(client => { context.testClient = client; client.on('commandStarted', event => { From af1311ef68c17517e016d1ce0fec909e941ef131 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 11:38:08 -0400 Subject: [PATCH 24/40] test(crud): check results after bulk write completes --- test/functional/crud_spec_tests.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/test/functional/crud_spec_tests.js b/test/functional/crud_spec_tests.js index ee60fc4a313..9889eeb7b55 100644 --- a/test/functional/crud_spec_tests.js +++ b/test/functional/crud_spec_tests.js @@ -227,17 +227,14 @@ describe('CRUD spec', function() { }); const options = Object.assign({}, args.options); - collection + return collection .bulkWrite(operations, options) .then(result => Object.keys(scenarioTest.outcome.result).forEach(resultName => test.deepEqual(result[resultName], scenarioTest.outcome.result[resultName]) ) - ); - - return collection - .find({}) - .toArray() + ) + .then(() => collection.find({}).toArray()) .then(results => test.deepEqual(results, scenarioTest.outcome.collection.data)); } From 2da67099248cb548a359cc3c92754c2656497610 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 11:44:43 -0400 Subject: [PATCH 25/40] test(*): don't run these tests against versions 4.1+ of the server NODE-1644 --- test/functional/find_tests.js | 2 +- test/functional/mapreduce_tests.js | 10 ++++++++-- test/functional/operation_example_tests.js | 15 ++++++++++++--- .../operation_generators_example_tests.js | 6 +++--- .../operation_promises_example_tests.js | 6 +++--- test/functional/readconcern_tests.js | 2 +- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/test/functional/find_tests.js b/test/functional/find_tests.js index cc57da1e72f..cae428f64e7 100644 --- a/test/functional/find_tests.js +++ b/test/functional/find_tests.js @@ -2628,7 +2628,7 @@ describe('Find', function() { it('Should not use a session when using parallelCollectionScan', { metadata: { requires: { - mongodb: '>=3.6.0', + mongodb: '>=3.6.0 <= 4.1.0', topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } }, diff --git a/test/functional/mapreduce_tests.js b/test/functional/mapreduce_tests.js index e70076e3051..c3797f4ecff 100644 --- a/test/functional/mapreduce_tests.js +++ b/test/functional/mapreduce_tests.js @@ -12,7 +12,10 @@ describe('MapReduce', function() { */ it('shouldCorrectlyExecuteGroupFunctionWithFinalizeFunction', { metadata: { - requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } + requires: { + mongodb: '<=4.1.0', + topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] + } }, // The actual test we wish to run @@ -414,7 +417,10 @@ describe('MapReduce', function() { */ it('shouldCorrectlyReturnNestedKeys', { metadata: { - requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } + requires: { + mongodb: '<=4.1.0', // Because of use of `group` command + topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] + } }, // The actual test we wish to run diff --git a/test/functional/operation_example_tests.js b/test/functional/operation_example_tests.js index c867b561aa7..bed7887fe43 100644 --- a/test/functional/operation_example_tests.js +++ b/test/functional/operation_example_tests.js @@ -1805,7 +1805,10 @@ describe('Operation Examples', function() { */ it('shouldCorrectlyExecuteGroupFunction', { metadata: { - requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } + requires: { + mongodb: '<=4.1.0', + topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] + } }, // The actual test we wish to run @@ -3850,7 +3853,10 @@ describe('Operation Examples', function() { */ it('shouldCorrectlyExecuteEvalFunctions', { metadata: { - requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } + requires: { + topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'], + mongodb: '<=4.1.0' + } }, // The actual test we wish to run @@ -3976,7 +3982,10 @@ describe('Operation Examples', function() { */ it('shouldCorrectlyDefineSystemLevelFunctionAndExecuteFunction', { metadata: { - requires: { topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] } + requires: { + mongodb: '<=4.1.0', + topology: ['single', 'replicaset', 'sharded', 'ssl', 'heap', 'wiredtiger'] + } }, // The actual test we wish to run diff --git a/test/functional/operation_generators_example_tests.js b/test/functional/operation_generators_example_tests.js index 63c8329cd98..4ab9ec265ff 100644 --- a/test/functional/operation_generators_example_tests.js +++ b/test/functional/operation_generators_example_tests.js @@ -1126,7 +1126,7 @@ describe('Operation (Generators)', function() { * @ignore */ it('shouldCorrectlyExecuteGroupFunctionWithGenerators', { - metadata: { requires: { generators: true, topology: ['single'] } }, + metadata: { requires: { generators: true, topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { @@ -2979,7 +2979,7 @@ describe('Operation (Generators)', function() { * @ignore */ it('shouldCorrectlyExecuteEvalFunctionsWithGenerators', { - metadata: { requires: { generators: true, topology: ['single'] } }, + metadata: { requires: { generators: true, topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { @@ -3090,7 +3090,7 @@ describe('Operation (Generators)', function() { * @ignore */ it('shouldCorrectlyDefineSystemLevelFunctionAndExecuteFunctionWithGenerators', { - metadata: { requires: { generators: true, topology: ['single'] } }, + metadata: { requires: { generators: true, topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { diff --git a/test/functional/operation_promises_example_tests.js b/test/functional/operation_promises_example_tests.js index 098b8bbdc49..0d9d995fc33 100644 --- a/test/functional/operation_promises_example_tests.js +++ b/test/functional/operation_promises_example_tests.js @@ -1148,7 +1148,7 @@ describe('Operation (Promises)', function() { * @ignore */ it('shouldCorrectlyExecuteGroupFunctionWithPromises', { - metadata: { requires: { topology: ['single'] } }, + metadata: { requires: { topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { @@ -3047,7 +3047,7 @@ describe('Operation (Promises)', function() { * @ignore */ it('shouldCorrectlyExecuteEvalFunctionsWithPromises', { - metadata: { requires: { topology: ['single'] } }, + metadata: { requires: { topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { @@ -3157,7 +3157,7 @@ describe('Operation (Promises)', function() { * @ignore */ it('shouldCorrectlyDefineSystemLevelFunctionAndExecuteFunctionWithPromises', { - metadata: { requires: { topology: ['single'] } }, + metadata: { requires: { topology: ['single'], mongodb: '<=4.1.0' } }, // The actual test we wish to run test: function() { diff --git a/test/functional/readconcern_tests.js b/test/functional/readconcern_tests.js index 45af86aaead..4fa25436e66 100644 --- a/test/functional/readconcern_tests.js +++ b/test/functional/readconcern_tests.js @@ -709,7 +709,7 @@ describe('ReadConcern', function() { }); it('Should set majority readConcern group command', { - metadata: { requires: { topology: 'replicaset', mongodb: '>= 3.2.0' } }, + metadata: { requires: { topology: 'replicaset', mongodb: '>=3.2.0 <=4.1.0' } }, test: function(done) { var listener = require('../..').instrument(function(err) { From a1842033337f9924d37bbeb90a67b9e8a5a3b7b4 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 11:47:08 -0400 Subject: [PATCH 26/40] test(mongo-client): ensure we are testing the correct client --- test/functional/mongo_client_tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/mongo_client_tests.js b/test/functional/mongo_client_tests.js index cb324536be3..5de99c9c112 100644 --- a/test/functional/mongo_client_tests.js +++ b/test/functional/mongo_client_tests.js @@ -345,7 +345,7 @@ describe('MongoClient', function() { secondClient.connect(function(err) { test.equal(null, err); - test.ok(client.topology.connections().length >= 1); + test.ok(secondClient.topology.connections().length >= 1); var connections = secondClient.topology.connections(); From 7d4036addcdd17b51ad1b29be8ca717d33f9c8a6 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 13:03:34 -0400 Subject: [PATCH 27/40] test(sdam): ensure we wait for close to check SDAM events --- test/functional/sdam_tests.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/functional/sdam_tests.js b/test/functional/sdam_tests.js index b3b22f0f386..3fb56faadbd 100644 --- a/test/functional/sdam_tests.js +++ b/test/functional/sdam_tests.js @@ -44,12 +44,13 @@ describe('SDAM', function() { client.connect(function(err) { test.equal(null, err); - client.close(true); - for (var name in operations) { - test.ok(operations[name].length > 0); - } + client.close(true, function() { + for (var name in operations) { + test.ok(operations[name].length > 0); + } - done(); + done(); + }); }); } }); From 090404f5bc6d6063c613c8fa2927d112fd0e76be Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 15:28:23 -0400 Subject: [PATCH 28/40] test(scram-sha-256): use correct form for passing auth to client --- test/functional/scram_sha_256_tests.js | 46 ++++++++++++++++---------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/test/functional/scram_sha_256_tests.js b/test/functional/scram_sha_256_tests.js index c10ebafd54a..b33925db425 100644 --- a/test/functional/scram_sha_256_tests.js +++ b/test/functional/scram_sha_256_tests.js @@ -81,13 +81,15 @@ describe('SCRAM-SHA-256 auth', function() { metadata: { requires: { mongodb: '>=3.7.3' } }, test: function() { const options = { - user: user.username, - password: user.password, + auth: { + user: user.username, + password: user.password + }, authMechanism: mechanism, authSource: this.configuration.db }; - return withClient(this.configuration.newClient(options), client => { + return withClient(this.configuration.newClient({}, options), client => { return client.db(this.configuration.db).stats(); }); } @@ -118,12 +120,14 @@ describe('SCRAM-SHA-256 auth', function() { metadata: { requires: { mongodb: '>=3.7.3' } }, test: function() { const options = { - user: user.username, - password: user.password, + auth: { + user: user.username, + password: user.password, + }, authSource: this.configuration.db }; - return withClient(this.configuration.newClient(options), client => { + return withClient(this.configuration.newClient({}, options), client => { return client.db(this.configuration.db).stats(); }); } @@ -151,14 +155,16 @@ describe('SCRAM-SHA-256 auth', function() { metadata: { requires: { mongodb: '>=3.7.3' } }, test: function() { const options = { - user: userMap.both.username, - password: userMap.both.password, + auth: { + user: userMap.both.username, + password: userMap.both.password + }, authSource: this.configuration.db }; test.sandbox.spy(ScramSHA256.prototype, 'auth'); - return withClient(this.configuration.newClient(options), () => { + return withClient(this.configuration.newClient({}, options), () => { expect(ScramSHA256.prototype.auth.calledOnce).to.equal(true); }); } @@ -170,14 +176,16 @@ describe('SCRAM-SHA-256 auth', function() { metadata: { requires: { mongodb: '>=3.7.3' } }, test: function() { const options = { - user: userMap.sha256.username, - password: userMap.sha256.password, + auth: { + user: userMap.sha256.username, + password: userMap.sha256.password + }, authSource: this.configuration.db, authMechanism: 'SCRAM-SHA-1' }; return withClient( - this.configuration.newClient(options), + this.configuration.newClient({}, options), () => Promise.reject(new Error('This request should have failed to authenticate')), err => expect(err).to.not.be.null ); @@ -192,20 +200,24 @@ describe('SCRAM-SHA-256 auth', function() { metadata: { requires: { mongodb: '>=3.7.3' } }, test: function() { const noUsernameOptions = { - user: 'roth', - password: 'pencil', + auth: { + user: 'roth', + password: 'pencil', + }, authSource: 'admin' }; const badPasswordOptions = { - user: 'both', - password: 'pencil', + auth: { + user: 'both', + password: 'pencil', + }, authSource: 'admin' }; const getErrorMsg = options => withClient( - this.configuration.newClient(options), + this.configuration.newClient({}, options), () => Promise.reject(new Error('This request should have failed to authenticate')), err => expect(err).to.be.an.instanceof(MongoError) ); From c7c10f7a5e38fff8231a6f6388cbab4d8dbe8850 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:01:21 -0400 Subject: [PATCH 29/40] test(sdam): add a wait for sdam events to come in --- test/functional/sdam_tests.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/functional/sdam_tests.js b/test/functional/sdam_tests.js index 3fb56faadbd..c72aa745f3a 100644 --- a/test/functional/sdam_tests.js +++ b/test/functional/sdam_tests.js @@ -45,11 +45,13 @@ describe('SDAM', function() { test.equal(null, err); client.close(true, function() { - for (var name in operations) { - test.ok(operations[name].length > 0); - } + setTimeout(() => { + for (var name in operations) { + test.ok(operations[name].length > 0); + } - done(); + done(); + }, 1000); }); }); } From 862fb7c84ab01cb56cc6ab0547cf22bd18cd4cdd Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:01:46 -0400 Subject: [PATCH 30/40] test(scram-sha-256): correct linting issues recently introduced --- test/functional/scram_sha_256_tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/functional/scram_sha_256_tests.js b/test/functional/scram_sha_256_tests.js index b33925db425..5ed6e39c7cc 100644 --- a/test/functional/scram_sha_256_tests.js +++ b/test/functional/scram_sha_256_tests.js @@ -122,7 +122,7 @@ describe('SCRAM-SHA-256 auth', function() { const options = { auth: { user: user.username, - password: user.password, + password: user.password }, authSource: this.configuration.db }; @@ -202,7 +202,7 @@ describe('SCRAM-SHA-256 auth', function() { const noUsernameOptions = { auth: { user: 'roth', - password: 'pencil', + password: 'pencil' }, authSource: 'admin' }; @@ -210,7 +210,7 @@ describe('SCRAM-SHA-256 auth', function() { const badPasswordOptions = { auth: { user: 'both', - password: 'pencil', + password: 'pencil' }, authSource: 'admin' }; From 0bae00fb4433ceb764d9c90c479166c4d80c5a59 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:26:43 -0400 Subject: [PATCH 31/40] test(change-streams): const consistency --- test/functional/change_stream_tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/functional/change_stream_tests.js b/test/functional/change_stream_tests.js index 65fa9e0cce2..b3dc38b9525 100644 --- a/test/functional/change_stream_tests.js +++ b/test/functional/change_stream_tests.js @@ -39,7 +39,7 @@ describe('Change Streams', function() { // The actual test we wish to run test: function(done) { var configuration = this.configuration; - var client = configuration.newClient(); + const client = configuration.newClient(); client.connect(function(err, client) { assert.ifError(err); @@ -712,7 +712,7 @@ describe('Change Streams', function() { }); const mockServerURL = 'mongodb://localhost:32000/'; - var client = configuration.newClient(mockServerURL); + const client = configuration.newClient(mockServerURL); client.connect(function(err, client) { assert.ifError(err); @@ -1441,7 +1441,7 @@ describe('Change Streams', function() { test: function(done) { var configuration = this.configuration; var crypto = require('crypto'); - var client = configuration.newClient(configuration.url(), { + const client = configuration.newClient(configuration.url(), { poolSize: 1, autoReconnect: false }); From 62336bf9ee517566ab927b1e91d3a6fed222fc19 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:27:00 -0400 Subject: [PATCH 32/40] test(find-and-modify): reintroduce missing client options --- test/functional/find_and_modify_tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/find_and_modify_tests.js b/test/functional/find_and_modify_tests.js index 20308868fae..2b5774119e3 100644 --- a/test/functional/find_and_modify_tests.js +++ b/test/functional/find_and_modify_tests.js @@ -166,7 +166,7 @@ describe('Find and Modify', function() { url = url.indexOf('?') !== -1 ? f('%s&%s', url, 'fsync=true') : f('%s?%s', url, 'fsync=true'); // Establish connection to db - const client = configuration.newClient(url); + const client = configuration.newClient(url, { sslValidate: false }); client.connect(function(err, client) { test.equal(null, err); var db = client.db(configuration.db); From 7b6ab57cce114b884a5bb0713c7fc8f526cb1c89 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:28:36 -0400 Subject: [PATCH 33/40] test(examples): remove duplicated documentation --- test/functional/operation_generators_example_tests.js | 3 --- test/functional/operation_promises_example_tests.js | 2 -- 2 files changed, 5 deletions(-) diff --git a/test/functional/operation_generators_example_tests.js b/test/functional/operation_generators_example_tests.js index 4ab9ec265ff..475edf7bc2f 100644 --- a/test/functional/operation_generators_example_tests.js +++ b/test/functional/operation_generators_example_tests.js @@ -45,9 +45,6 @@ describe('Operation (Generators)', function() { // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // LINE yield client.connect(); // LINE - // LINE const client = new MongoClient('mongodb://localhost:27017/test'); - // LINE yield client.connect(); - // LINE // LINE var db = client.db('test'); // REPLACE configuration.writeConcernMax() WITH {w:1} // BEGIN diff --git a/test/functional/operation_promises_example_tests.js b/test/functional/operation_promises_example_tests.js index 0d9d995fc33..22e2b6770fd 100644 --- a/test/functional/operation_promises_example_tests.js +++ b/test/functional/operation_promises_example_tests.js @@ -47,8 +47,6 @@ describe('Operation (Promises)', function() { // LINE test = require('assert'); // LINE const client = new MongoClient('mongodb://localhost:27017/test'); // LINE client.connect().then(() => { - // LINE const client = new MongoClient('mongodb://localhost:27017/test'); - // LINE client.connect().then(() => { // LINE var db = client.db('test); // REPLACE configuration.writeConcernMax() WITH {w:1} // REMOVE-LINE done(); From 1eef0234d330b5b8cdd295c1b4b70e4294baea72 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:28:59 -0400 Subject: [PATCH 34/40] test(replset): reintroduce missing client options --- test/functional/replset_connection_tests.js | 2 +- test/functional/replset_read_preference_tests.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/functional/replset_connection_tests.js b/test/functional/replset_connection_tests.js index 604fef54665..e05462ef1da 100644 --- a/test/functional/replset_connection_tests.js +++ b/test/functional/replset_connection_tests.js @@ -67,7 +67,7 @@ describe.skip('ReplSet (Connection)', function() { CoreConnection.enableConnectionAccounting(); var client = configuration.newClient( - 'mongodb://localhost:28390,localhost:28391,localhost:38392/test?replicaSet=rs', + 'mongodb://localhost:28390,localhost:28391,localhost:28392/test?replicaSet=rs', { w: 0 } ); client.connect(function(err) { diff --git a/test/functional/replset_read_preference_tests.js b/test/functional/replset_read_preference_tests.js index f5255c3d75c..98a9a755065 100644 --- a/test/functional/replset_read_preference_tests.js +++ b/test/functional/replset_read_preference_tests.js @@ -823,6 +823,7 @@ describe.skip('ReplSet (ReadPreference)', function() { {}, { w: 0, + debug: true, readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED) } ); @@ -860,6 +861,7 @@ describe.skip('ReplSet (ReadPreference)', function() { const client = configuration.newClient({ w: 'majority', wtimeout: 10000, + debug: true, readPreference: ReadPreference.NEAREST }); From a12aa15ac3eaae3ad5c4166ea1423aec4560f155 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Fri, 24 Aug 2018 16:56:40 -0400 Subject: [PATCH 35/40] tets(sdam): death to flakey tests! --- test/functional/sdam_tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/sdam_tests.js b/test/functional/sdam_tests.js index c72aa745f3a..6cc981fe2fd 100644 --- a/test/functional/sdam_tests.js +++ b/test/functional/sdam_tests.js @@ -2,7 +2,7 @@ var test = require('./shared').assert; var setupDatabase = require('./shared').setupDatabase; -describe('SDAM', function() { +describe.skip('SDAM', function() { before(function() { return setupDatabase(this.configuration); }); From a4741589921074bdb94dee1f12792fbe13b17dbe Mon Sep 17 00:00:00 2001 From: Jordan Date: Fri, 24 Aug 2018 13:41:15 -0700 Subject: [PATCH 36/40] fix(cursor): remove deprecated notice on forEach --- lib/cursor.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/cursor.js b/lib/cursor.js index d7cd06493fe..69293213ec0 100644 --- a/lib/cursor.js +++ b/lib/cursor.js @@ -729,8 +729,14 @@ Cursor.prototype.each = deprecate(function(callback) { * @return {Promise} if no callback supplied */ Cursor.prototype.forEach = function(iterator, callback) { + // Rewind cursor state + this.rewind(); + + // Set current cursor to INIT + this.s.state = Cursor.INIT; + if (typeof callback === 'function') { - this.each((err, doc) => { + each(this, (err, doc) => { if (err) { callback(err); return false; @@ -748,7 +754,7 @@ Cursor.prototype.forEach = function(iterator, callback) { }); } else { return new this.s.promiseLibrary((fulfill, reject) => { - this.each((err, doc) => { + each(this, (err, doc) => { if (err) { reject(err); return false; From 49406dfadb7264a949244cb4e1ee2566ba9ab02d Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Sat, 25 Aug 2018 12:19:15 -0400 Subject: [PATCH 37/40] chore(pkg): commit yarn and npm lock files --- package-lock.json | 5676 +++++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 3693 +++++++++++++++++++++++++++++ 2 files changed, 9369 insertions(+) create mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000000..4b15768ee82 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5676 @@ +{ + "name": "mongodb", + "version": "3.1.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, + "JSONStream": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.4.tgz", + "integrity": "sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "acorn": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ampersand-events": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ampersand-events/-/ampersand-events-2.0.2.tgz", + "integrity": "sha1-9AK8LhgwX6vZldvc07cFe73X00c=", + "dev": true, + "requires": { + "ampersand-version": "^1.0.2", + "lodash": "^4.6.1" + } + }, + "ampersand-state": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/ampersand-state/-/ampersand-state-5.0.3.tgz", + "integrity": "sha512-sr904K5zvw6mkGjFHhTcfBIdpoJ6mn/HrFg7OleRmBpw3apLb3Z0gVrgRTb7kK1wOLI34vs4S+IXqNHUeqWCzw==", + "dev": true, + "requires": { + "ampersand-events": "^2.0.1", + "ampersand-version": "^1.0.0", + "array-next": "~0.0.1", + "key-tree-store": "^1.3.0", + "lodash": "^4.12.0" + } + }, + "ampersand-version": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ampersand-version/-/ampersand-version-1.0.2.tgz", + "integrity": "sha1-/489TOrE0yzNg/a9Zpc5f3tZ4sA=", + "dev": true, + "requires": { + "find-root": "^0.1.1", + "through2": "^0.6.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-next": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-next/-/array-next-0.0.1.tgz", + "integrity": "sha1-5eRmCkwn/agVH/d2QnXQCQAGK+E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "bson": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==" + }, + "buffer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", + "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "dev": true, + "requires": { + "base64-js": "0.0.8", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "~0.3.0" + } + }, + "caw": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", + "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", + "dev": true, + "requires": { + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + } + }, + "chai-subset": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/chai-subset/-/chai-subset-1.6.0.tgz", + "integrity": "sha1-pdDKFOMpp5WW7XAFi2ZGvWmIz+k=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "dev": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", + "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "conventional-changelog": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz", + "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^1.6.6", + "conventional-changelog-atom": "^0.2.8", + "conventional-changelog-codemirror": "^0.3.8", + "conventional-changelog-core": "^2.0.11", + "conventional-changelog-ember": "^0.3.12", + "conventional-changelog-eslint": "^1.0.9", + "conventional-changelog-express": "^0.3.6", + "conventional-changelog-jquery": "^0.1.0", + "conventional-changelog-jscs": "^0.1.0", + "conventional-changelog-jshint": "^0.3.8", + "conventional-changelog-preset-loader": "^1.1.8" + } + }, + "conventional-changelog-angular": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", + "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-atom": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz", + "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-cli": { + "version": "1.3.22", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz", + "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog": "^1.1.24", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "tempfile": "^1.1.1" + } + }, + "conventional-changelog-codemirror": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz", + "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz", + "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^3.0.9", + "conventional-commits-parser": "^2.1.7", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^1.3.6", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^1.3.6", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^1.1.0", + "read-pkg-up": "^1.0.1", + "through2": "^2.0.0" + } + }, + "conventional-changelog-ember": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz", + "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-eslint": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz", + "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-express": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz", + "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==", + "dev": true, + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jquery": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", + "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", + "dev": true, + "requires": { + "q": "^1.4.1" + } + }, + "conventional-changelog-jscs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", + "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", + "dev": true, + "requires": { + "q": "^1.4.1" + } + }, + "conventional-changelog-jshint": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz", + "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-preset-loader": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz", + "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz", + "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^1.1.6", + "dateformat": "^3.0.0", + "handlebars": "^4.0.2", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "semver": "^5.5.0", + "split": "^1.0.0", + "through2": "^2.0.0" + } + }, + "conventional-commits-filter": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", + "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", + "dev": true, + "requires": { + "is-subset": "^0.1.1", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0", + "trim-off-newlines": "^1.0.0" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "coveralls": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", + "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", + "dev": true, + "requires": { + "js-yaml": "3.6.1", + "lcov-parse": "0.0.10", + "log-driver": "1.2.5", + "minimist": "1.2.0", + "request": "2.79.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "dev": true, + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dev": true, + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "dev": true + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dev": true, + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "dev": true, + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "docopt": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", + "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "downcache": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/downcache/-/downcache-0.0.9.tgz", + "integrity": "sha1-eQuwQkaJE2EVzpPyqhWUbG2AbQ4=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "graceful-fs": "^4.1.3", + "limiter": "^1.1.0", + "mkdirp": "^0.5.1", + "npmlog": "^2.0.3", + "request": "^2.69.0", + "rimraf": "^2.5.2" + }, + "dependencies": { + "gauge": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", + "dev": true, + "requires": { + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" + } + }, + "npmlog": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", + "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", + "dev": true, + "requires": { + "ansi": "~0.3.1", + "are-we-there-yet": "~1.1.2", + "gauge": "~1.2.5" + } + } + } + }, + "download": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", + "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", + "dev": true, + "requires": { + "caw": "^2.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.0.0", + "ext-name": "^5.0.0", + "file-type": "5.2.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^7.0.0", + "make-dir": "^1.0.0", + "p-event": "^1.0.0", + "pify": "^3.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz", + "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==", + "dev": true, + "requires": { + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-template": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz", + "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==", + "dev": true + }, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "requires": { + "mime-db": "^1.28.0" + } + }, + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "requires": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "dev": true + }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "dev": true + }, + "filenamify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", + "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "find-root": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", + "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-mongodb-version": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-mongodb-version/-/get-mongodb-version-1.0.0.tgz", + "integrity": "sha1-pSTTu1Ph6Ff84Jt0DSQB5HVWKqM=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "lodash.startswith": "^4.2.1", + "minimist": "^1.1.1", + "mongodb": "^2.0.39", + "which": "^1.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "get-proxy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", + "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", + "dev": true, + "requires": { + "npm-conf": "^1.1.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "git-raw-commits": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", + "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^5.5.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz", + "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", + "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdoc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", + "dev": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", + "taffydb": "2.6.2", + "underscore": "~1.8.3" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, + "kerberos": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-1.0.0.tgz", + "integrity": "sha512-iYA/5PICH3BD18kgkjH/UjLroxTilNqrEuADFNzPqbwiJn79E+lP0U8LfHqqMGqW0qSi4YaMhwLWowKh0dSn4A==", + "dev": true, + "requires": { + "bindings": "^1.3.0", + "nan": "^2.10.0", + "prebuild-install": "^5.0.0" + } + }, + "key-tree-store": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/key-tree-store/-/key-tree-store-1.3.0.tgz", + "integrity": "sha1-XqKa/CUppCWThDfWlVtxTOapeR8=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lcov-parse": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", + "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "limiter": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", + "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", + "dev": true + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true + }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=", + "dev": true + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", + "dev": true + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + }, + "log-driver": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "dev": true + }, + "lolex": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.1.tgz", + "integrity": "sha512-Oo2Si3RMKV3+lV5MsSWplDQFoTClz/24S0MMHYcgGWWmFXr6TMlqcqk/l1GtH+d5wLBwNRiqGnwDRMirtFalJw==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "metamocha": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/metamocha/-/metamocha-1.3.2.tgz", + "integrity": "sha512-GQj+vxauCtP5o9hxGJm7tZIwwCpDJUW7KLBqqLJyhnpKdxDWxfUTwjgbMfLdGs/BQiFvVP2b3JmGobBkUQPvtg==", + "dev": true, + "requires": { + "mocha": "^3.5.3" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "mocha-sinon": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mocha-sinon/-/mocha-sinon-2.1.0.tgz", + "integrity": "sha512-E+rqBhoCQlvo+Kn9SY9qvoO/TWqJFnmxG70dyVYdFc6LGZAq08dr+pV2yUP4sBeMMYGYABB8T7NHNsG+4scy/A==", + "dev": true + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "mongodb": { + "version": "2.2.36", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.36.tgz", + "integrity": "sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA==", + "dev": true, + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.20", + "readable-stream": "2.2.7" + }, + "dependencies": { + "bson": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", + "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==", + "dev": true + }, + "mongodb-core": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz", + "integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==", + "dev": true, + "requires": { + "bson": "~1.0.4", + "require_optional": "~1.0.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "mongodb-core": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.2.tgz", + "integrity": "sha512-R2XxGzsmhlUeOK2jKATj1TWn3q3qNcJpKrSh0rhaBSHxJmV7WZ+ikjocdY8VdJxUkKqOxM8rxMqOAEzeJ3p1ww==", + "requires": { + "bson": "^1.1.0", + "require_optional": "^1.0.1", + "saslprep": "^1.0.0" + } + }, + "mongodb-download-url": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/mongodb-download-url/-/mongodb-download-url-0.3.3.tgz", + "integrity": "sha1-46ilSPE+sg9aDN+GPLwGNCGjk0w=", + "dev": true, + "requires": { + "async": "^2.1.2", + "debug": "^2.2.0", + "lodash.defaults": "^4.0.0", + "minimist": "^1.2.0", + "mongodb-version-list": "^1.0.0", + "request": "^2.65.0", + "semver": "^5.0.3" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "mongodb-extjson": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mongodb-extjson/-/mongodb-extjson-2.1.4.tgz", + "integrity": "sha512-AYGhTnrMoPW3JXdtY2QkP3kPBNrUqcTW4tQaW1rQ/JO41QCiMqIq5RWf5e3lhs4McGx9rIXHKPYGDH6TDp8RHg==", + "dev": true, + "requires": { + "bson": "^2.0.7" + }, + "dependencies": { + "bson": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/bson/-/bson-2.0.8.tgz", + "integrity": "sha512-0F0T3gHeOwJzHWcN60BZomqj5hCBDRk4b3fANuruvDTnyJJ8sggABKSaePM2F34THNZZSIlB2P1mk2nQWgBr9w==", + "dev": true + } + } + }, + "mongodb-mock-server": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mongodb-mock-server/-/mongodb-mock-server-1.0.0.tgz", + "integrity": "sha1-bewhLSLMEWz9IlfI+b4/pN00Ej0=", + "dev": true, + "requires": { + "snappy": "^6.0.1" + } + }, + "mongodb-test-runner": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mongodb-test-runner/-/mongodb-test-runner-1.3.4.tgz", + "integrity": "sha512-Ubfi6nfhEHFCaF0cIg7e8jZBYbjpjTa7GhOS5dWkYTwtVcNMmL0TeQAaea4i3dVl85VdoI5I4WNFpDpu8Ye58Q==", + "dev": true, + "requires": { + "metamocha": "^1.2.5", + "mongodb-topology-manager": "^2.0.0", + "mongodb-version-manager": "^1.0.7", + "semver": "^5.4.1", + "yargs": "^8.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + } + } + }, + "mongodb-topology-manager": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mongodb-topology-manager/-/mongodb-topology-manager-2.1.0.tgz", + "integrity": "sha512-s2PelP303LsyJIsReIDUyHhdGPN1xoBY5RynfDKpgT2Wz/D0vaQZN+x0AK6lzj7ro7c8hPFzvHyGA5bJ7JWUug==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "co": "^4.6.0", + "kerberos": "^1.0.0", + "mkdirp": "^0.5.1", + "mongodb-core": "^3.1.2", + "rimraf": "^2.6.2" + }, + "dependencies": { + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + } + } + }, + "mongodb-version-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mongodb-version-list/-/mongodb-version-list-1.0.0.tgz", + "integrity": "sha1-8lAxz83W8UWx3o/OKk6+wCiLtKQ=", + "dev": true, + "requires": { + "cheerio": "^0.22.0", + "debug": "^2.2.0", + "downcache": "^0.0.9", + "fs-extra": "^1.0.0", + "minimist": "^1.1.1", + "semver": "^5.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "mongodb-version-manager": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mongodb-version-manager/-/mongodb-version-manager-1.1.3.tgz", + "integrity": "sha512-EInfE8Uu4umFHnFr1+kjvxaC8n0v2HR9WEJ659FxOITStOMzzvFvKw88j4m//rK85rAKk6aZ+Kx29tRTcatrkA==", + "dev": true, + "requires": { + "ampersand-state": "^5.0.1", + "async": "^2.1.2", + "chalk": "^2.1.0", + "debug": "^3.0.1", + "docopt": "^0.6.2", + "download": "^6.2.5", + "figures": "^2.0.0", + "fs-extra": "^4.0.2", + "get-mongodb-version": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.1.1", + "mongodb-download-url": "^0.3.3", + "mongodb-version-list": "^1.0.0", + "semver": "^5.3.0", + "tildify": "^1.2.0", + "untildify": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nise": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.3.tgz", + "integrity": "sha512-cg44dkGHutAY+VmftgB1gHvLWxFl2vwYdF8WpbceYicQwylESRJiAAKgCRJntdoEbMiUzywkZEUzjoDWH0JwKA==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" + } + }, + "node-abi": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.3.tgz", + "integrity": "sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", + "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "dev": true, + "requires": { + "p-timeout": "^1.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "prebuild-install": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.0.0.tgz", + "integrity": "sha512-AvcPLFqNz/hDd6o7qLj8i9xB479P9jSjA/p6m4927CRfY3tsmPfyFmD7RKXtdp6I2d1BAIVBgJoj5mxRJDZL4w==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-abi": "^2.2.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.2.7", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "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.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "requires": { + "underscore": "~1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "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=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "samsam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "dev": true + }, + "saslprep": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.1.tgz", + "integrity": "sha512-ntN6SbE3hRqd45PKKadRPgA+xHPWg5lPSj2JWJdJvjTwXDDfkPVtXWvP8jJojvnm+rAsZ2b299C5NwZqq818EA==", + "optional": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "dev": true, + "requires": { + "commander": "~2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "sinon": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", + "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "sinon-chai": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.2.0.tgz", + "integrity": "sha512-Z72B4a0l0IQe5uWi9yzcqX/Ml6K9e1Hp03NmkjJnRG3gDsKTX7KvLFZsVUmCaz0eqeXLLK089mwTsP1P1W+DUQ==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snappy": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/snappy/-/snappy-6.0.4.tgz", + "integrity": "sha512-+MjETxi/G7fLtiLFWW9n9VLzpJvOVqRRohJ7kTgaU4bUJ37rsoWwxhZzO91BOB7sCgOILtKsGtCUviUo3REIfQ==", + "dev": true, + "requires": { + "bindings": "^1.3.0", + "nan": "^2.10.0" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "dev": true, + "requires": { + "sort-keys": "^1.0.0" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dev": true, + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz", + "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.0", + "xtend": "^4.0.0" + } + }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "dev": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "text-extensions": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.7.0.tgz", + "integrity": "sha512-AKXZeDq230UaSzaO5s3qQUZOaC7iKbzq0jOFL614R7d9R593HLqAOL0cYoqLdkNrjBSOdmoQI06yigq1TSBXAg==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "unbzip2-stream": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz", + "integrity": "sha512-izD3jxT8xkzwtXRUZjtmRwKnZoeECrfZ8ra/ketwOcusbZEp4mjULMnJOCfTDZBgGQAAY1AJ/IgxcwkavcX9Og==", + "dev": true, + "requires": { + "buffer": "^3.0.1", + "through": "^2.3.6" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000000..f939a5d546f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,3693 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@sinonjs/formatio@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" + dependencies: + samsam "1.3.0" + +JSONStream@^1.0.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.4.tgz#615bb2adb0cd34c8f4c447b5f6512fa1d8f16a2e" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ampersand-events@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ampersand-events/-/ampersand-events-2.0.2.tgz#f402bc2e18305fabd995dbdcd3b7057bbdd7d347" + dependencies: + ampersand-version "^1.0.2" + lodash "^4.6.1" + +ampersand-state@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/ampersand-state/-/ampersand-state-5.0.3.tgz#33402ea604375af64a249f664a0312c1160da475" + dependencies: + ampersand-events "^2.0.1" + ampersand-version "^1.0.0" + array-next "~0.0.1" + key-tree-store "^1.3.0" + lodash "^4.12.0" + +ampersand-version@^1.0.0, ampersand-version@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ampersand-version/-/ampersand-version-1.0.2.tgz#ff8f3d4ceac4d32ccd83f6bd6697397f7b59e2c0" + dependencies: + find-root "^0.1.1" + through2 "^0.6.3" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi@^0.3.0, ansi@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + +array-next@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-next/-/array-next-0.0.1.tgz#e5e4660a4c27fda8151ff7764275d00900062be1" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assertion-error@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + +async@1.x, async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babylon@7.0.0-beta.19: + version "7.0.0-beta.19" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + dependencies: + tweetnacl "^0.14.3" + +bindings@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bluebird@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +bluebird@^3.5.1, bluebird@~3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +bson@^1.0.4, bson@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.0.tgz#bee57d1fb6a87713471af4e32bcae36de814b5b0" + +bson@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/bson/-/bson-2.0.8.tgz#e3bcc115e486bdcb222de7568c43b0b43292761e" + +bson@~1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + dependencies: + base64-js "0.0.8" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +catharsis@~0.8.9: + version "0.8.9" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b" + dependencies: + underscore-contrib "~0.3.0" + +caw@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai-subset@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/chai-subset/-/chai-subset-1.6.0.tgz#a5d0ca14e329a79596ed70058b6646bd6988cfe9" + +chai@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" + dependencies: + assertion-error "^1.0.1" + check-error "^1.0.1" + deep-eql "^3.0.0" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +check-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +cheerio@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash.assignin "^4.0.9" + lodash.bind "^4.1.4" + lodash.defaults "^4.0.1" + lodash.filter "^4.4.0" + lodash.flatten "^4.2.0" + lodash.foreach "^4.3.0" + lodash.map "^4.4.0" + lodash.merge "^4.4.0" + lodash.pick "^4.2.1" + lodash.reduce "^4.4.0" + lodash.reject "^4.4.0" + lodash.some "^4.4.0" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +co@4.6.0, co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + dependencies: + color-name "1.1.1" + +color-name@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@^2.9.0: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +compare-func@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +content-disposition@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +conventional-changelog-angular@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-atom@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" + dependencies: + q "^1.5.1" + +conventional-changelog-cli@^1.3.5: + version "1.3.22" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" + dependencies: + add-stream "^1.0.0" + conventional-changelog "^1.1.24" + lodash "^4.2.1" + meow "^4.0.0" + tempfile "^1.1.1" + +conventional-changelog-codemirror@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" + dependencies: + q "^1.5.1" + +conventional-changelog-core@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" + dependencies: + conventional-changelog-writer "^3.0.9" + conventional-commits-parser "^2.1.7" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "^1.3.6" + git-remote-origin-url "^2.0.0" + git-semver-tags "^1.3.6" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^1.1.0" + read-pkg-up "^1.0.1" + through2 "^2.0.0" + +conventional-changelog-ember@^0.3.12: + version "0.3.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" + dependencies: + q "^1.5.1" + +conventional-changelog-express@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" + dependencies: + q "^1.5.1" + +conventional-changelog-jquery@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" + dependencies: + q "^1.4.1" + +conventional-changelog-jscs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" + dependencies: + q "^1.4.1" + +conventional-changelog-jshint@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-preset-loader@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" + +conventional-changelog-writer@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^1.1.6" + dateformat "^3.0.0" + handlebars "^4.0.2" + json-stringify-safe "^5.0.1" + lodash "^4.2.1" + meow "^4.0.0" + semver "^5.5.0" + split "^1.0.0" + through2 "^2.0.0" + +conventional-changelog@^1.1.24: + version "1.1.24" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" + dependencies: + conventional-changelog-angular "^1.6.6" + conventional-changelog-atom "^0.2.8" + conventional-changelog-codemirror "^0.3.8" + conventional-changelog-core "^2.0.11" + conventional-changelog-ember "^0.3.12" + conventional-changelog-eslint "^1.0.9" + conventional-changelog-express "^0.3.6" + conventional-changelog-jquery "^0.1.0" + conventional-changelog-jscs "^0.1.0" + conventional-changelog-jshint "^0.3.8" + conventional-changelog-preset-loader "^1.1.8" + +conventional-commits-filter@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" + dependencies: + is-subset "^0.1.1" + modify-values "^1.0.0" + +conventional-commits-parser@^2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.0" + lodash "^4.2.1" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + trim-off-newlines "^1.0.0" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +coveralls@^2.11.6: + version "2.13.3" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.13.3.tgz#9ad7c2ae527417f361e8b626483f48ee92dd2bc7" + dependencies: + js-yaml "3.6.1" + lcov-parse "0.0.10" + log-driver "1.2.5" + minimist "1.2.0" + request "2.79.0" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.0.1, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-eql@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +diff@^3.1.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +docopt@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +downcache@^0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/downcache/-/downcache-0.0.9.tgz#790bb0424689136115ce93f2aa15946c6d806d0e" + dependencies: + extend "^3.0.0" + graceful-fs "^4.1.3" + limiter "^1.1.0" + mkdirp "^0.5.1" + npmlog "^2.0.3" + request "^2.69.0" + rimraf "^2.5.2" + +download@^6.2.5: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + dependencies: + is-arrayish "^0.2.1" + +es6-promise@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +eslint-plugin-prettier@^2.2.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad" + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.5.0: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-template@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-diff@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + dependencies: + pend "~1.2.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +find-root@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-0.1.2.tgz#98d2267cff1916ccaf2743b3a0eea81d79d7dcd1" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" + dependencies: + ansi "^0.3.0" + has-unicode "^2.0.0" + lodash.pad "^4.1.0" + lodash.padend "^4.1.0" + lodash.padstart "^4.1.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + +get-mongodb-version@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-mongodb-version/-/get-mongodb-version-1.0.0.tgz#a524d3bb53e1e857fce09b740d2401e475562aa3" + dependencies: + debug "^2.2.0" + lodash.startswith "^4.2.1" + minimist "^1.1.1" + mongodb "^2.0.39" + which "^1.1.1" + +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +git-raw-commits@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" + dependencies: + meow "^4.0.0" + semver "^5.5.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + dependencies: + ini "^1.3.2" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +handlebars@^4.0.1, handlebars@^4.0.2: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + +htmlparser2@^3.9.1: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@^0.4.17: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + +ignore@^3.3.3: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + +is-my-json-valid@^2.12.4: + version "2.19.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + +is-text-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + dependencies: + text-extensions "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +js-yaml@3.x, js-yaml@^3.9.1: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js2xmlparser@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" + dependencies: + xmlcreate "^1.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsdoc@3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.5.tgz#484521b126e81904d632ff83ec9aaa096708fa4d" + dependencies: + babylon "7.0.0-beta.19" + bluebird "~3.5.0" + catharsis "~0.8.9" + escape-string-regexp "~1.0.5" + js2xmlparser "~3.0.0" + klaw "~2.0.0" + marked "~0.3.6" + mkdirp "~0.5.1" + requizzle "~0.2.1" + strip-json-comments "~2.0.1" + taffydb "2.6.2" + underscore "~1.8.3" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +just-extend@^1.1.27: + version "1.1.27" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905" + +kerberos@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/kerberos/-/kerberos-1.0.0.tgz#b8e490349a30ccd5f2dc675f1fae7c681cf3c495" + dependencies: + bindings "^1.3.0" + nan "^2.10.0" + prebuild-install "^5.0.0" + +key-tree-store@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/key-tree-store/-/key-tree-store-1.3.0.tgz#5ea29afc2529a425938437d6955b714ce6a9791f" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +klaw@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" + dependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +lcov-parse@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +limiter@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash.assignin@^4.0.9: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + +lodash.bind@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.defaults@^4.0.0, lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.difference@^4.1.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + +lodash.filter@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.foreach@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.map@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + +lodash.merge@^4.4.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + +lodash.pad@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + +lodash.padend@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + +lodash.padstart@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + +lodash.reduce@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" + +lodash.reject@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" + +lodash.some@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" + +lodash.startswith@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.startswith/-/lodash.startswith-4.2.1.tgz#c598c4adce188a27e53145731cdc6c0e7177600c" + +lodash.template@^4.0.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + +lodash@^4.12.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +log-driver@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" + +lolex@^2.2.0, lolex@^2.3.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.1.tgz#e40a8c4d1f14b536aa03e42a537c7adbaf0c20be" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + +lru-cache@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + dependencies: + pify "^3.0.0" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + +marked@~0.3.6: + version "0.3.19" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +metamocha@^1.2.5: + version "1.3.2" + resolved "https://registry.yarnpkg.com/metamocha/-/metamocha-1.3.2.tgz#13703deafd53c1ad77e1bfad37f2196cc3cecac0" + dependencies: + mocha "^3.5.3" + +mime-db@^1.28.0: + version "1.36.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + +mime-db@~1.35.0: + version "1.35.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.7: + version "2.1.19" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" + dependencies: + mime-db "~1.35.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha-sinon@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mocha-sinon/-/mocha-sinon-2.1.0.tgz#61e92727e577bee44cac6f32162dcec33c1301e5" + +mocha@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.8" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + he "1.1.1" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + +mongodb-core@2.1.20: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.20.tgz#fece8dd76b59ee7d7f2d313b65322c160492d8f1" + dependencies: + bson "~1.0.4" + require_optional "~1.0.0" + +mongodb-core@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.2.tgz#c85055a2691ac3661951e557a0d6482796ad5c42" + dependencies: + bson "^1.1.0" + require_optional "^1.0.1" + optionalDependencies: + saslprep "^1.0.0" + +mongodb-core@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.3.tgz#b036bce5290b383fe507238965bef748dd8adb75" + dependencies: + bson "^1.1.0" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" + +mongodb-download-url@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/mongodb-download-url/-/mongodb-download-url-0.3.3.tgz#e3a8a548f13eb20f5a0cdf863cbc063421a3934c" + dependencies: + async "^2.1.2" + debug "^2.2.0" + lodash.defaults "^4.0.0" + minimist "^1.2.0" + mongodb-version-list "^1.0.0" + request "^2.65.0" + semver "^5.0.3" + +mongodb-extjson@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/mongodb-extjson/-/mongodb-extjson-2.1.4.tgz#c7eae23bbeea9646b8f2c302764aa9540c20fe56" + dependencies: + bson "^2.0.7" + +mongodb-mock-server@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mongodb-mock-server/-/mongodb-mock-server-1.0.0.tgz#6dec212d22cc116cfd2257c8f9be3fa4dd34123d" + dependencies: + snappy "^6.0.1" + +mongodb-test-runner@^1.1.18: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mongodb-test-runner/-/mongodb-test-runner-1.3.4.tgz#63dfdaa357499f07f5087570d0fdc6ef305126b4" + dependencies: + metamocha "^1.2.5" + mongodb-topology-manager "^2.0.0" + mongodb-version-manager "^1.0.7" + semver "^5.4.1" + yargs "^8.0.2" + +mongodb-topology-manager@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mongodb-topology-manager/-/mongodb-topology-manager-2.1.0.tgz#5dee0d517d1474f3003d96cc20c7a41ea9d263e9" + dependencies: + bluebird "^3.5.1" + co "^4.6.0" + kerberos "^1.0.0" + mkdirp "^0.5.1" + mongodb-core "^3.1.2" + rimraf "^2.6.2" + +mongodb-version-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mongodb-version-list/-/mongodb-version-list-1.0.0.tgz#f25031cfcdd6f145b1de8fce2a4ebec0288bb4a4" + dependencies: + cheerio "^0.22.0" + debug "^2.2.0" + downcache "^0.0.9" + fs-extra "^1.0.0" + minimist "^1.1.1" + semver "^5.0.1" + +mongodb-version-manager@^1.0.7: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mongodb-version-manager/-/mongodb-version-manager-1.1.3.tgz#7cf543a9b33b663d09cf6f8ca91264b408418209" + dependencies: + ampersand-state "^5.0.1" + async "^2.1.2" + chalk "^2.1.0" + debug "^3.0.1" + docopt "^0.6.2" + download "^6.2.5" + figures "^2.0.0" + fs-extra "^4.0.2" + get-mongodb-version "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.1.1" + mongodb-download-url "^0.3.3" + mongodb-version-list "^1.0.0" + semver "^5.3.0" + tildify "^1.2.0" + untildify "^3.0.2" + +mongodb@^2.0.39: + version "2.2.36" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.36.tgz#1c573680b2849fb0f47acbba3dc5fa228de975f5" + dependencies: + es6-promise "3.2.1" + mongodb-core "2.1.20" + readable-stream "2.2.7" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.10.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +nise@^1.2.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.3.tgz#d1996e8d15256ceff1a0a1596e0c72bff370e37c" + dependencies: + "@sinonjs/formatio" "^2.0.0" + just-extend "^1.1.27" + lolex "^2.3.2" + path-to-regexp "^1.7.0" + text-encoding "^0.6.4" + +node-abi@^2.2.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.3.tgz#43666b7b17e57863e572409edbb82115ac7af28b" + dependencies: + semver "^5.4.1" + +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" + dependencies: + ansi "~0.3.1" + are-we-there-yet "~1.1.2" + gauge "~1.2.5" + +npmlog@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + dependencies: + p-timeout "^1.1.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +prebuild-install@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.0.0.tgz#bc1a24636beaf0af7945c0a84d4b9249bf191b6b" + dependencies: + detect-libc "^1.0.3" + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.2.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^2.0.1" + rc "^1.2.7" + simple-get "^2.7.0" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +prettier@~1.12.0: + version "1.12.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.4.1, q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0, read-pkg@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +request@^2.65.0, request@^2.69.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +require_optional@^1.0.1, require_optional@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +requizzle@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde" + dependencies: + underscore "~1.6.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +samsam@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" + +saslprep@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.1.tgz#b644e0ba25b156b652f3cb90df7542f896049ba6" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" + dependencies: + commander "~2.8.1" + +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sinon-chai@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.2.0.tgz#ed995e13a8a3cfccec18f218d9b767edc47e0715" + +sinon@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-4.5.0.tgz#427ae312a337d3c516804ce2754e8c0d5028cb04" + dependencies: + "@sinonjs/formatio" "^2.0.0" + diff "^3.1.0" + lodash.get "^4.4.2" + lolex "^2.2.0" + nise "^1.2.0" + supports-color "^5.1.0" + type-detect "^4.0.5" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +snappy@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/snappy/-/snappy-6.0.4.tgz#8914f84a273270868828f3e2f10f61631aceabe5" + dependencies: + bindings "^1.3.0" + nan "^2.10.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + dependencies: + through2 "^2.0.2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + safer-buffer "^2.0.2" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.6" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + dependencies: + escape-string-regexp "^1.0.2" + +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +taffydb@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + +tar-fs@^1.13.0: + version "1.16.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-stream@^1.1.2, tar-stream@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + +tempfile@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + dependencies: + os-tmpdir "^1.0.0" + uuid "^2.0.1" + +text-encoding@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through2@^0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, "through@>=2.2.7 <3", through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tildify@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-buffer@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + dependencies: + escape-string-regexp "^1.0.2" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +unbzip2-stream@^1.0.9: + version "1.2.5" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" + dependencies: + buffer "^3.0.1" + through "^2.3.6" + +underscore-contrib@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" + dependencies: + underscore "1.6.0" + +underscore@1.6.0, underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +underscore@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + +untildify@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + +which@^1.1.1, which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +worker-farm@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xmlcreate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From 875b925ab13694a6665bc9686ddf12d9855bc369 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Sat, 25 Aug 2018 12:20:18 -0400 Subject: [PATCH 38/40] chore(pkg): use `standard-version` for release management --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b6e95ad52fb..4a4b9ef1f32 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "chai": "^4.1.1", "chai-subset": "^1.6.0", "co": "4.6.0", - "conventional-changelog-cli": "^1.3.5", "coveralls": "^2.11.6", "eslint": "^4.5.0", "eslint-plugin-prettier": "^2.2.0", @@ -37,6 +36,7 @@ "semver": "^5.5.0", "sinon": "^4.3.0", "sinon-chai": "^3.2.0", + "standard-version": "^4.4.0", "worker-farm": "^1.5.0" }, "author": "Christian Kvalheim", @@ -52,9 +52,9 @@ "coverage": "istanbul cover mongodb-test-runner -- -t 60000 test/unit test/functional", "lint": "eslint lib test", "format": "prettier --print-width 100 --tab-width 2 --single-quote --write 'test/**/*.js' 'lib/**/*.js'", - "changelog": "conventional-changelog -p angular -i HISTORY.md -s", "bench": "node test/driverBench/", - "generate-evergreen": "node .evergreen/generate_evergreen_tasks.js" + "generate-evergreen": "node .evergreen/generate_evergreen_tasks.js", + "release": "standard-version -i HISTORY.md" }, "homepage": "https://github.com/mongodb/node-mongodb-native" } From a0290479871d9fbfec2e5dcc2f94dcb0d27d806c Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Sat, 25 Aug 2018 12:20:40 -0400 Subject: [PATCH 39/40] feat(core): update mongodb-core to 3.1.3 --- package-lock.json | 309 ++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- yarn.lock | 103 +++++++++------- 3 files changed, 331 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b15768ee82..fd3d42e1191 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,12 +52,6 @@ } } }, - "add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=", - "dev": true - }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -786,19 +780,6 @@ "q": "^1.5.1" } }, - "conventional-changelog-cli": { - "version": "1.3.22", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz", - "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==", - "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog": "^1.1.24", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "tempfile": "^1.1.1" - } - }, "conventional-changelog-codemirror": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz", @@ -933,6 +914,103 @@ "trim-off-newlines": "^1.0.0" } }, + "conventional-recommended-bump": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz", + "integrity": "sha512-oJjG6DkRgtnr/t/VrPdzmf4XZv8c4xKVJrVT4zrSHd92KEL+EYxSbYoKq8lQ7U5yLMw7130wrcQTLRjM/T+d4w==", + "dev": true, + "requires": { + "concat-stream": "^1.4.10", + "conventional-commits-filter": "^1.1.1", + "conventional-commits-parser": "^2.1.1", + "git-raw-commits": "^1.3.0", + "git-semver-tags": "^1.3.0", + "meow": "^3.3.0", + "object-assign": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1353,6 +1431,16 @@ "is-obj": "^1.0.0" } }, + "dotgitignore": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-1.0.3.tgz", + "integrity": "sha512-eu5XjSstm0WXQsARgo6kPjkINYZlOUW+z/KtAAIBjHa5mUpMPrxJytbPIndWz6GubBuuuH5ljtVcXKnVnH5q8w==", + "dev": true, + "requires": { + "find-up": "^2.1.0", + "minimatch": "^3.0.4" + } + }, "downcache": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/downcache/-/downcache-0.0.9.tgz", @@ -1868,6 +1956,15 @@ "mime-types": "^2.1.12" } }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -3547,12 +3644,13 @@ } }, "mongodb-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.2.tgz", - "integrity": "sha512-R2XxGzsmhlUeOK2jKATj1TWn3q3qNcJpKrSh0rhaBSHxJmV7WZ+ikjocdY8VdJxUkKqOxM8rxMqOAEzeJ3p1ww==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.3.tgz", + "integrity": "sha512-dISiV3zHGJTwZpg0xDhi9zCqFGMhA5kDPByHlcaEp09NSKfzHJ7XQbqVrL7qhki1U9PZHsmRfbFzco+6b1h2wA==", "requires": { "bson": "^1.1.0", "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", "saslprep": "^1.0.0" } }, @@ -4014,6 +4112,12 @@ "boolbase": "~1.0.0" } }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -5053,6 +5157,151 @@ } } }, + "standard-version": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-4.4.0.tgz", + "integrity": "sha512-jJ8FZhnmh9xJRQLnaXiGRLaAUNItIH29lOQZGpL5fd4+jUHto9Ij6SPCYN86h6ZNNXkYq2TYiIVVF7gVyC+pcQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "conventional-changelog": "^1.1.0", + "conventional-recommended-bump": "^1.0.0", + "dotgitignore": "^1.0.3", + "figures": "^1.5.0", + "fs-access": "^1.0.0", + "semver": "^5.1.0", + "yargs": "^8.0.1" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + } + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -5242,16 +5491,6 @@ "xtend": "^4.0.0" } }, - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "uuid": "^2.0.1" - } - }, "text-encoding": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", @@ -5474,12 +5713,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 4a4b9ef1f32..eb054db4dcb 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "official" ], "dependencies": { - "mongodb-core": "3.1.2", + "mongodb-core": "3.1.3", "safe-buffer": "^5.1.2" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index f939a5d546f..37db1a41e37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,10 +37,6 @@ acorn@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -534,7 +530,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.6.0: +concat-stream@^1.4.10, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -571,16 +567,6 @@ conventional-changelog-atom@^0.2.8: dependencies: q "^1.5.1" -conventional-changelog-cli@^1.3.5: - version "1.3.22" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" - dependencies: - add-stream "^1.0.0" - conventional-changelog "^1.1.24" - lodash "^4.2.1" - meow "^4.0.0" - tempfile "^1.1.1" - conventional-changelog-codemirror@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" @@ -661,7 +647,7 @@ conventional-changelog-writer@^3.0.9: split "^1.0.0" through2 "^2.0.0" -conventional-changelog@^1.1.24: +conventional-changelog@^1.1.0: version "1.1.24" resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" dependencies: @@ -677,14 +663,14 @@ conventional-changelog@^1.1.24: conventional-changelog-jshint "^0.3.8" conventional-changelog-preset-loader "^1.1.8" -conventional-commits-filter@^1.1.6: +conventional-commits-filter@^1.1.1, conventional-commits-filter@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" dependencies: is-subset "^0.1.1" modify-values "^1.0.0" -conventional-commits-parser@^2.1.7: +conventional-commits-parser@^2.1.1, conventional-commits-parser@^2.1.7: version "2.1.7" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" dependencies: @@ -696,6 +682,18 @@ conventional-commits-parser@^2.1.7: through2 "^2.0.0" trim-off-newlines "^1.0.0" +conventional-recommended-bump@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz#1b7137efb5091f99fe009e2fe9ddb7cc490e9375" + dependencies: + concat-stream "^1.4.10" + conventional-commits-filter "^1.1.1" + conventional-commits-parser "^2.1.1" + git-raw-commits "^1.3.0" + git-semver-tags "^1.3.0" + meow "^3.3.0" + object-assign "^4.0.1" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -939,6 +937,13 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +dotgitignore@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dotgitignore/-/dotgitignore-1.0.3.tgz#a442cbde7dc20dff51cdb849e4c5a64568c07923" + dependencies: + find-up "^2.1.0" + minimatch "^3.0.4" + downcache@^0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/downcache/-/downcache-0.0.9.tgz#790bb0424689136115ce93f2aa15946c6d806d0e" @@ -1190,6 +1195,13 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figures@^1.5.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -1238,7 +1250,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: @@ -1273,6 +1285,12 @@ form-data@~2.3.2: combined-stream "1.0.6" mime-types "^2.1.12" +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -1389,7 +1407,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-raw-commits@^1.3.6: +git-raw-commits@^1.3.0, git-raw-commits@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" dependencies: @@ -1406,7 +1424,7 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^1.3.6: +git-semver-tags@^1.3.0, git-semver-tags@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" dependencies: @@ -2343,16 +2361,7 @@ mongodb-core@2.1.20: bson "~1.0.4" require_optional "~1.0.0" -mongodb-core@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.2.tgz#c85055a2691ac3661951e557a0d6482796ad5c42" - dependencies: - bson "^1.1.0" - require_optional "^1.0.1" - optionalDependencies: - saslprep "^1.0.0" - -mongodb-core@^3.1.2: +mongodb-core@3.1.3, mongodb-core@^3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.3.tgz#b036bce5290b383fe507238965bef748dd8adb75" dependencies: @@ -2534,6 +2543,10 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -2592,7 +2605,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3237,6 +3250,19 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +standard-version@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-4.4.0.tgz#99de7a0709e6cafddf9c5984dd342c8cfe66e79f" + dependencies: + chalk "^1.1.3" + conventional-changelog "^1.1.0" + conventional-recommended-bump "^1.0.0" + dotgitignore "^1.0.3" + figures "^1.5.0" + fs-access "^1.0.0" + semver "^5.1.0" + yargs "^8.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -3382,13 +3408,6 @@ tar-stream@^1.1.2, tar-stream@^1.5.2: to-buffer "^1.1.0" xtend "^4.0.0" -tempfile@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" - dependencies: - os-tmpdir "^1.0.0" - uuid "^2.0.1" - text-encoding@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -3554,10 +3573,6 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -uuid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - uuid@^3.0.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -3658,7 +3673,7 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs@^8.0.2: +yargs@^8.0.1, yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" dependencies: From 2bbcf538b9cc0d3c336b486217e4eec4e6fcd79b Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Sat, 25 Aug 2018 12:21:55 -0400 Subject: [PATCH 40/40] chore(release): 3.1.4 --- HISTORY.md | 25 +++++++++++++++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 4cfa71c1fce..367d10c2b60 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,28 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +## [3.1.4](https://github.com/mongodb/node-mongodb-native/compare/v3.1.3...v3.1.4) (2018-08-25) + + +### Bug Fixes + +* **buffer:** use safe-buffer polyfill to maintain compatibility ([327da95](https://github.com/mongodb/node-mongodb-native/commit/327da95)) +* **change-stream:** properly support resumablity in stream mode ([c43a34b](https://github.com/mongodb/node-mongodb-native/commit/c43a34b)) +* **connect:** correct replacement of topology on connect callback ([918a1e0](https://github.com/mongodb/node-mongodb-native/commit/918a1e0)) +* **cursor:** remove deprecated notice on forEach ([a474158](https://github.com/mongodb/node-mongodb-native/commit/a474158)) +* **url-parser:** bail early on validation when using domain socket ([3cb3da3](https://github.com/mongodb/node-mongodb-native/commit/3cb3da3)) + + +### Features + +* **client-ops:** allow bypassing creation of topologies on connect ([fe39b93](https://github.com/mongodb/node-mongodb-native/commit/fe39b93)) +* **core:** update mongodb-core to 3.1.3 ([a029047](https://github.com/mongodb/node-mongodb-native/commit/a029047)) +* **test:** use connection strings for all calls to `newClient` ([1dac18f](https://github.com/mongodb/node-mongodb-native/commit/1dac18f)) + + + ## [3.1.3](https://github.com/mongodb/node-mongodb-native/compare/v3.1.2...v3.1.3) (2018-08-13) diff --git a/package-lock.json b/package-lock.json index fd3d42e1191..b85063e01ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mongodb", - "version": "3.1.3", + "version": "3.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index eb054db4dcb..c882063ed43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mongodb", - "version": "3.1.3", + "version": "3.1.4", "description": "The official MongoDB driver for Node.js", "main": "index.js", "repository": {