diff --git a/README.md b/README.md index b0598d7..210cc0b 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ backup({ - `uri` - **String** [URI](http://mongodb.github.io/node-mongodb-native/2.0/tutorials/urls/) for MongoDb connection *(default "required")* - `root`- **String** Path where save data *(default "required")* + - `dbName`- **String** Name of the database *(default "required")* - `[parser]` - **String | Function** Data parser (bson, json) or custom *(default "bson")* - `[collections]` - **Array** Select which collections save *(default "disabled")* - `[callback]` - **Function** Callback when done *(default "disabled")* diff --git a/index.js b/index.js index 9d57b59..4b2cfb0 100644 --- a/index.js +++ b/index.js @@ -44,9 +44,7 @@ function error(err) { * @param {Function} next - callback */ function writeMetadata(collection, metadata, next) { - - return collection.indexes(function(err, indexes) { - + return collection.indexes(function (err, indexes) { if (err) { return next(err); } @@ -65,25 +63,25 @@ function writeMetadata(collection, metadata, next) { */ function makeDir(pathname, next) { - fs.stat(pathname, function(err, stats) { + fs.stat(pathname, function (err, stats) { if (err && err.code === 'ENOENT') { // no file or dir logger('make dir at ' + pathname); - return fs.mkdir(pathname, function(err) { + return fs.mkdir(pathname, function (err) { next(err, pathname); }); } else if (stats && stats.isDirectory() === false) { // pathname is a file logger('unlink file at ' + pathname); - return fs.unlink(pathname, function(err) { + return fs.unlink(pathname, function (err) { if (err) { // unlink fail. permission maybe return next(err); } logger('make dir at ' + pathname); - fs.mkdir(pathname, function(err) { + fs.mkdir(pathname, function (err) { next(err, pathname); }); @@ -104,9 +102,9 @@ function makeDir(pathname, next) { */ function rmDir(pathname, next) { - fs.readdirSync(pathname).forEach(function(first) { // database + fs.readdirSync(pathname).forEach(function (first) { // database - var database = pathname + first; + var database = pathname + path.sep + first; if (fs.statSync(database).isDirectory() === false) { return next(Error('path is not a Directory')); } @@ -119,14 +117,14 @@ function rmDir(pathname, next) { delete collections[collections.indexOf('.metadata')]; // undefined is not a dir } - collections.forEach(function(second) { // collection + collections.forEach(function (second) { // collection var collection = path.join(database, second); if (fs.statSync(collection).isDirectory() === false) { return; } - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document var document = path.join(collection, third); fs.unlinkSync(document); @@ -182,8 +180,7 @@ function toBsonAsync(doc, collectionPath) { * @param {Function} next - callback */ function allCollections(db, name, query, metadata, parser, next) { - - return db.collections(function(err, collections) { + return db.collections(function (err, collections) { if (err) { return next(err); @@ -194,27 +191,27 @@ function allCollections(db, name, query, metadata, parser, next) { return next(err); } - collections.forEach(function(collection) { + collections.forEach(function (collection) { - if (systemRegex.test(collection.collectionName) === true) { + if (systemRegex.test(collection.name) === true) { return last === ++index ? next(null) : null; } logger('select collection ' + collection.collectionName); - makeDir(name + collection.collectionName + path.sep, function(err, name) { + makeDir(name + collection.collectionName + path.sep, function (err, name) { if (err) { return last === ++index ? next(err) : error(err); } - meta(collection, metadata, function() { + meta(collection, metadata, function () { - var stream = collection.find(query).snapshot(true).stream(); + var stream = collection.find(query).stream(); - stream.once('end', function() { + stream.once('end', function () { return last === ++index ? next(null) : null; - }).on('data', function(doc) { + }).on('data', function (doc) { parser(doc, name); }); @@ -237,7 +234,7 @@ function allCollections(db, name, query, metadata, parser, next) { */ function allCollectionsScan(db, name, numCursors, metadata, parser, next) { - return db.collections(function(err, collections) { + return db.collections(function (err, collections) { if (err) { return next(err); @@ -248,24 +245,24 @@ function allCollectionsScan(db, name, numCursors, metadata, parser, next) { return next(null); } - collections.forEach(function(collection) { + collections.forEach(function (collection) { - if (systemRegex.test(collection.collectionName) === true) { + if (systemRegex.test(collection.name) === true) { return last === ++index ? next(null) : null; } - logger('select collection scan ' + collection.collectionName); - makeDir(name + collection.collectionName + path.sep, function(err, name) { + logger('select collection scan ' + collection.name); + makeDir(name + collection.name + path.sep, function (err, name) { if (err) { return last === ++index ? next(err) : error(err); } - meta(collection, metadata, function() { + meta(collection, metadata, function () { collection.parallelCollectionScan({ numCursors: numCursors - }, function(err, cursors) { + }, function (err, cursors) { if (err) { return last === ++index ? next(err) : error(err); @@ -278,13 +275,13 @@ function allCollectionsScan(db, name, numCursors, metadata, parser, next) { } for (var i = 0; i < ii; ++i) { - cursors[i].once('end', function() { + cursors[i].once('end', function () { // No more cursors let's ensure we got all results if (--cursorsDone === 0) { return last === ++index ? next(null) : null; } - }).on('data', function(doc) { + }).on('data', function (doc) { parser(doc, name); }); @@ -296,6 +293,20 @@ function allCollectionsScan(db, name, numCursors, metadata, parser, next) { }); } +function collectionExists(db, name, cb) { + db.listCollections({}, { strict: true }).toArray(function (err, collections) { + if (err) return cb(err); + + var collection = collections.find(c => c.name === name); + + if (!collection) { + return cb(new Error('Collection ' + name + ' does not exist')); + } + + cb(null, db.collection(name)) + }); +} + /** * get data from some collections * @@ -309,37 +320,33 @@ function allCollectionsScan(db, name, numCursors, metadata, parser, next) { * @param {Array} collections - selected collections */ function someCollections(db, name, query, metadata, parser, next, collections) { - var last = ~~collections.length, index = 0; if (last === 0) { return next(null); } - collections.forEach(function(collection) { - - db.collection(collection, { - strict: true - }, function(err, collection) { + collections.forEach(function (c) { + collectionExists(db, c, function (err, collection) { if (err) { // returns an error if the collection does not exist return last === ++index ? next(err) : error(err); } logger('select collection ' + collection.collectionName); - makeDir(name + collection.collectionName + path.sep, function(err, name) { + makeDir(name + collection.collectionName + path.sep, function (err, name) { if (err) { return last === ++index ? next(err) : error(err); } - meta(collection, metadata, function() { + meta(collection, metadata, function () { - var stream = collection.find(query).snapshot(true).stream(); + var stream = collection.find(query).stream(); - stream.once('end', function() { + stream.once('end', function () { return last === ++index ? next(null) : null; - }).on('data', function(doc) { + }).on('data', function (doc) { parser(doc, name); }); @@ -349,6 +356,62 @@ function someCollections(db, name, query, metadata, parser, next, collections) { }); } + +/** + * get data from some collections + * + * @function filterCollections + * @param {Object} db - database + * @param {String} name - path of dir + * @param {Object} query - find query + * @param {String} metadata - path of metadata + * @param {Function} parser - data parser + * @param {Function} next - callback + * @param {Array} skipCollections - excluded collections + */ +function filterCollections(db, name, query, metadata, parser, next, skipCollections) { + return db.collections(function (err, collections) { + + if (err) { + return next(err); + } + + var last = Math.max(~~collections.length - skipCollections.length, 0); + var index = 0; + if (last === 0) { // empty set + return next(err); + } + + collections + .filter(c => !skipCollections.find(cc => cc === c.collectionName)) + .forEach(function (collection) { + + if (systemRegex.test(collection.name) === true) { + return last === ++index ? next(null) : null; + } + + logger('select collection ' + collection.collectionName); + makeDir(name + collection.collectionName + path.sep, function (err, name) { + if (err) { + return last === ++index ? next(err) : error(err); + } + + meta(collection, metadata, function () { + + var stream = collection.find(query).stream(); + + stream.once('end', function () { + return last === ++index ? next(null) : null; + }).on('data', function (doc) { + + parser(doc, name); + }); + }); + }); + }); + }); +} + /** * get data from some collections without query (parallelCollectionScan) * @@ -362,35 +425,33 @@ function someCollections(db, name, query, metadata, parser, next, collections) { * @param {Array} collections - selected collections */ function someCollectionsScan(db, name, numCursors, metadata, parser, next, - collections) { + collections) { var last = ~~collections.length, index = 0; if (last === 0) { // empty set return next(null); } - collections.forEach(function(collection) { + collections.forEach(function (collection) { - db.collection(collection, { - strict: true - }, function(err, collection) { + collectionExists(db, collection, function (err, collection) { - if (err) { // returns an error if the collection does not exist + if (err) { // returns an error if the collection does not xist return last === ++index ? next(err) : error(err); } logger('select collection scan ' + collection.collectionName); - makeDir(name + collection.collectionName + path.sep, function(err, name) { + makeDir(name + collection.collectionName + path.sep, function (err, name) { if (err) { return last === ++index ? next(err) : error(err); } - meta(collection, metadata, function() { + meta(collection, metadata, function () { collection.parallelCollectionScan({ numCursors: numCursors - }, function(err, cursors) { + }, function (err, cursors) { if (err) { return last === ++index ? next(err) : error(err); @@ -403,13 +464,13 @@ function someCollectionsScan(db, name, numCursors, metadata, parser, next, } for (var i = 0; i < ii; ++i) { - cursors[i].once('end', function() { + cursors[i].once('end', function () { // No more cursors let's ensure we got all results if (--cursorsDone === 0) { return last === ++index ? next(null) : null; } - }).on('data', function(doc) { + }).on('data', function (doc) { parser(doc, name); }); @@ -436,7 +497,6 @@ function wrapper(my) { switch (my.parser.toLowerCase()) { case 'bson': BSON = require('bson'); - BSON = new BSON(); parser = toBsonAsync; break; case 'json': @@ -449,7 +509,9 @@ function wrapper(my) { } var discriminator = allCollections; - if (my.collections !== null) { + if (my.skipCollections !== null) { + discriminator = filterCollections; + } else if (my.collections !== null) { discriminator = someCollections; if (my.numCursors) { discriminator = someCollectionsScan; @@ -461,8 +523,7 @@ function wrapper(my) { } if (my.logger === null) { - logger = function() { - + logger = function (msg) { return; }; } else { @@ -479,7 +540,7 @@ function wrapper(my) { logger('backup start'); var log = require('mongodb').Logger; log.setLevel('info'); - log.setCurrentLogger(function(msg) { + log.setCurrentLogger(function (msg) { return logger(msg); }); @@ -489,7 +550,7 @@ function wrapper(my) { if (my.metadata === true) { meta = writeMetadata; } else { - meta = function(a, b, c) { + meta = function (a, b, c) { return c(); }; @@ -512,36 +573,32 @@ function wrapper(my) { } } - require('mongodb').MongoClient.connect(my.uri, my.options, function(err, db) { - + require('mongodb').MongoClient.connect(my.uri, my.options, function (err, client) { + var db = client.db(my.dbName); logger('db open'); if (err) { return callback(err); } var root = my.tar === null ? my.root : my.dir; - makeDir(root, function(err, name) { - + makeDir(root, function (err, name) { if (err) { return callback(err); } - - makeDir(name + db.databaseName + path.sep, function(err, name) { - + makeDir(name + db.databaseName + path.sep, function (err, name) { function go() { - // waiting for `db.fsyncLock()` on node driver return discriminator(db, name, my.query, metadata, parser, - function(err) { - + function (err) { logger('db close'); - db.close(); + client.close(); + if (err) { return callback(err); } if (my.tar) { - makeDir(my.root, function(e, name) { + makeDir(my.root, function (e, name) { if (err) { error(err); @@ -556,23 +613,25 @@ function wrapper(my) { dest = fs.createWriteStream(name + my.tar); } - var packer = require('tar').Pack().on('error', callback).on( - 'end', function() { + var tar = require('tar'); + const packer = tar.create({ + gzip: my.tar.indexOf('.tar.gz') !== -1, + }, + [root + db.databaseName]) + .on('error', callback) + .on('end', () => { rmDir(root); callback(null); }); - require('fstream').Reader({ - path: root + db.databaseName, - type: 'Directory' - }).on('error', callback).pipe(packer).pipe(dest); + packer.pipe(dest); }); } else { callback(null); } - }, my.collections); + }, my.collections || my.skipCollections); } if (err) { @@ -603,6 +662,9 @@ function backup(options) { if (!opt.uri) { throw new Error('missing uri option'); } + if (!opt.dbName) { + throw new Error('missing dbName option'); + } if (!opt.stream) { if (!opt.root) { throw new Error('missing root option'); @@ -614,11 +676,13 @@ function backup(options) { var my = { dir: path.join(__dirname, 'dump', path.sep), uri: String(opt.uri), + dbName: String(opt.dbName), root: path.resolve(String(opt.root || '')) + path.sep, stream: opt.stream || null, parser: opt.parser || 'bson', numCursors: ~~opt.numCursors, collections: Array.isArray(opt.collections) ? opt.collections : null, + skipCollections: Array.isArray(opt.skipCollections) ? opt.skipCollections : null, callback: typeof (opt.callback) == 'function' ? opt.callback : null, tar: typeof opt.tar === 'string' ? opt.tar : null, query: typeof opt.query === 'object' ? opt.query : {}, diff --git a/index.min.js b/index.min.js deleted file mode 100644 index 2dc56cf..0000000 --- a/index.min.js +++ /dev/null @@ -1,248 +0,0 @@ -"use strict"; - -var BSON, logger, meta, systemRegex = /^system\./, fs = require("graceful-fs"), path = require("path"); - -function error(err) { - err && logger(err.message); -} - -function writeMetadata(collection, metadata, next) { - return collection.indexes(function(err, indexes) { - if (err) return next(err); - fs.writeFile(metadata + collection.collectionName, JSON.stringify(indexes), next); - }); -} - -function makeDir(pathname, next) { - fs.stat(pathname, function(err, stats) { - return err && "ENOENT" === err.code ? (logger("make dir at " + pathname), fs.mkdir(pathname, function(err) { - next(err, pathname); - })) : stats && !1 === stats.isDirectory() ? (logger("unlink file at " + pathname), - fs.unlink(pathname, function(err) { - if (err) return next(err); - logger("make dir at " + pathname), fs.mkdir(pathname, function(err) { - next(err, pathname); - }); - })) : void next(null, pathname); - }); -} - -function rmDir(pathname, next) { - fs.readdirSync(pathname).forEach(function(first) { - var database = pathname + first; - if (!1 === fs.statSync(database).isDirectory()) return next(Error("path is not a Directory")); - var metadata = "", collections = fs.readdirSync(database), metadataPath = path.join(database, ".metadata"); - return !0 === fs.existsSync(metadataPath) && (metadata = metadataPath + path.sep, - delete collections[collections.indexOf(".metadata")]), collections.forEach(function(second) { - var collection = path.join(database, second); - !1 !== fs.statSync(collection).isDirectory() && (fs.readdirSync(collection).forEach(function(third) { - var document = path.join(collection, third); - return fs.unlinkSync(document), next ? next(null, document) : ""; - }), "" !== metadata && fs.unlinkSync(metadata + second), fs.rmdirSync(collection)); - }), "" !== metadata && fs.rmdirSync(metadata), fs.rmdirSync(database); - }); -} - -function toJsonAsync(doc, collectionPath) { - fs.writeFile(collectionPath + doc._id + ".json", JSON.stringify(doc)); -} - -function toBsonAsync(doc, collectionPath) { - fs.writeFile(collectionPath + doc._id + ".bson", BSON.serialize(doc)); -} - -function allCollections(db, name, query, metadata, parser, next) { - return db.collections(function(err, collections) { - if (err) return next(err); - var last = ~~collections.length, index = 0; - if (0 === last) return next(err); - collections.forEach(function(collection) { - if (!0 === systemRegex.test(collection.collectionName)) return last === ++index ? next(null) : null; - logger("select collection " + collection.collectionName), makeDir(name + collection.collectionName + path.sep, function(err, name) { - if (err) return last === ++index ? next(err) : error(err); - meta(collection, metadata, function() { - collection.find(query).snapshot(!0).stream().once("end", function() { - return last === ++index ? next(null) : null; - }).on("data", function(doc) { - parser(doc, name); - }); - }); - }); - }); - }); -} - -function allCollectionsScan(db, name, numCursors, metadata, parser, next) { - return db.collections(function(err, collections) { - if (err) return next(err); - var last = ~~collections.length, index = 0; - if (0 === last) return next(null); - collections.forEach(function(collection) { - if (!0 === systemRegex.test(collection.collectionName)) return last === ++index ? next(null) : null; - logger("select collection scan " + collection.collectionName), makeDir(name + collection.collectionName + path.sep, function(err, name) { - if (err) return last === ++index ? next(err) : error(err); - meta(collection, metadata, function() { - collection.parallelCollectionScan({ - numCursors: numCursors - }, function(err, cursors) { - if (err) return last === ++index ? next(err) : error(err); - var ii, cursorsDone; - if (0 === (ii = cursorsDone = ~~cursors.length)) return last === ++index ? next(null) : null; - for (var i = 0; i < ii; ++i) cursors[i].once("end", function() { - if (0 == --cursorsDone) return last === ++index ? next(null) : null; - }).on("data", function(doc) { - parser(doc, name); - }); - }); - }); - }); - }); - }); -} - -function someCollections(db, name, query, metadata, parser, next, collections) { - var last = ~~collections.length, index = 0; - if (0 === last) return next(null); - collections.forEach(function(collection) { - db.collection(collection, { - strict: !0 - }, function(err, collection) { - if (err) return last === ++index ? next(err) : error(err); - logger("select collection " + collection.collectionName), makeDir(name + collection.collectionName + path.sep, function(err, name) { - if (err) return last === ++index ? next(err) : error(err); - meta(collection, metadata, function() { - collection.find(query).snapshot(!0).stream().once("end", function() { - return last === ++index ? next(null) : null; - }).on("data", function(doc) { - parser(doc, name); - }); - }); - }); - }); - }); -} - -function someCollectionsScan(db, name, numCursors, metadata, parser, next, collections) { - var last = ~~collections.length, index = 0; - if (0 === last) return next(null); - collections.forEach(function(collection) { - db.collection(collection, { - strict: !0 - }, function(err, collection) { - if (err) return last === ++index ? next(err) : error(err); - logger("select collection scan " + collection.collectionName), makeDir(name + collection.collectionName + path.sep, function(err, name) { - if (err) return last === ++index ? next(err) : error(err); - meta(collection, metadata, function() { - collection.parallelCollectionScan({ - numCursors: numCursors - }, function(err, cursors) { - if (err) return last === ++index ? next(err) : error(err); - var ii, cursorsDone; - if (0 === (ii = cursorsDone = ~~cursors.length)) return last === ++index ? next(null) : null; - for (var i = 0; i < ii; ++i) cursors[i].once("end", function() { - if (0 == --cursorsDone) return last === ++index ? next(null) : null; - }).on("data", function(doc) { - parser(doc, name); - }); - }); - }); - }); - }); - }); -} - -function wrapper(my) { - var parser; - if ("function" == typeof my.parser) parser = my.parser; else switch (my.parser.toLowerCase()) { - case "bson": - BSON = new (BSON = require("bson"))(), parser = toBsonAsync; - break; - - case "json": - parser = toJsonAsync; - break; - - default: - throw new Error("missing parser option"); - } - var discriminator = allCollections; - if (null !== my.collections ? (discriminator = someCollections, my.numCursors && (discriminator = someCollectionsScan, - my.query = my.numCursors)) : my.numCursors && (discriminator = allCollectionsScan, - my.query = my.numCursors), null === my.logger) logger = function() {}; else { - (logger = require("logger-request")({ - filename: my.logger, - standalone: !0, - daily: !0, - winston: { - logger: "_mongo_b" + my.logger, - level: "info", - json: !1 - } - }))("backup start"); - var log = require("mongodb").Logger; - log.setLevel("info"), log.setCurrentLogger(function(msg) { - return logger(msg); - }); - } - var metadata = ""; - function callback(err) { - logger("backup stop"), null !== my.callback ? (logger("callback run"), my.callback(err)) : err && logger(err); - } - meta = !0 === my.metadata ? writeMetadata : function(a, b, c) { - return c(); - }, require("mongodb").MongoClient.connect(my.uri, my.options, function(err, db) { - if (logger("db open"), err) return callback(err); - var root = null === my.tar ? my.root : my.dir; - makeDir(root, function(err, name) { - if (err) return callback(err); - makeDir(name + db.databaseName + path.sep, function(err, name) { - function go() { - return discriminator(db, name, my.query, metadata, parser, function(err) { - if (logger("db close"), db.close(), err) return callback(err); - my.tar ? makeDir(my.root, function(e, name) { - var dest; - err && error(err), my.stream ? (logger("send tar file to stream"), dest = my.stream) : (logger("make tar file at " + name + my.tar), - dest = fs.createWriteStream(name + my.tar)); - var packer = require("tar").Pack().on("error", callback).on("end", function() { - rmDir(root), callback(null); - }); - require("fstream").Reader({ - path: root + db.databaseName, - type: "Directory" - }).on("error", callback).pipe(packer).pipe(dest); - }) : callback(null); - }, my.collections); - } - if (err) return callback(err); - !1 === my.metadata ? go() : makeDir(metadata = name + ".metadata" + path.sep, go); - }); - }); - }); -} - -function backup(options) { - var opt = options || Object.create(null); - if (!opt.uri) throw new Error("missing uri option"); - if (!opt.stream) { - if (!opt.root) throw new Error("missing root option"); - if (fs.existsSync(opt.root) && !fs.statSync(opt.root).isDirectory()) throw new Error("root option is not a directory"); - } - var my = { - dir: path.join(__dirname, "dump", path.sep), - uri: String(opt.uri), - root: path.resolve(String(opt.root || "")) + path.sep, - stream: opt.stream || null, - parser: opt.parser || "bson", - numCursors: ~~opt.numCursors, - collections: Array.isArray(opt.collections) ? opt.collections : null, - callback: "function" == typeof opt.callback ? opt.callback : null, - tar: "string" == typeof opt.tar ? opt.tar : null, - query: "object" == typeof opt.query ? opt.query : {}, - logger: "string" == typeof opt.logger ? path.resolve(opt.logger) : null, - options: "object" == typeof opt.options ? opt.options : {}, - metadata: Boolean(opt.metadata) - }; - return my.stream && (my.tar = !0), wrapper(my); -} - -module.exports = backup; diff --git a/local.test.js b/local.test.js new file mode 100644 index 0000000..e2d77a2 --- /dev/null +++ b/local.test.js @@ -0,0 +1,9 @@ +const backup = require('.'); + +backup({ + root: 'dump', + uri: 'mongodb://localhost:27017', + tar: 'dump.tar.gz', + dbName: 'manager', + skipCollections: ['sessions'] +}) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9a45843..03378eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,2825 @@ { - "name": "mongodb-backup", - "version": "1.6.9", - "lockfileVersion": 1, + "name": "@evops/mongodb-backup", + "version": "2.0.6", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "@evops/mongodb-backup", + "version": "2.0.6", + "license": "Apache-2.0", + "dependencies": { + "bson": "^4.6.3", + "fstream": "1.0.11", + "graceful-fs": "4.1.11", + "logger-request": "3.8.0", + "mongodb": "^4.6.0", + "tar": "6.1.11" + }, + "devDependencies": { + "grunt": "~1.0", + "grunt-contrib-jshint": "~1.1", + "grunt-contrib-uglify": "~3.3", + "grunt-endline": "~0.7", + "grunt-safer-regex": "~0.1", + "istanbul": "~0.4", + "mocha": "~4.1", + "mongodb-restore": "~1.6", + "supertest": "~3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@types/node": { + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.34.tgz", + "integrity": "sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA==" + }, + "node_modules/@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-authentication": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/basic-authentication/-/basic-authentication-1.9.0.tgz", + "integrity": "sha1-nMIYHaso20rMM2LKsYAzroYDObA=", + "dependencies": { + "setheaders": "0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "node_modules/browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "dependencies": { + "pako": "~0.2.0" + } + }, + "node_modules/bson": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.3.tgz", + "integrity": "sha512-rAqP5hcUVJhXP2MCSNVsf0oM2OGU1So6A9pVRDYayvJ5+hygXHQApf87wd5NlhPM1J9RJnbqxIG/f8QTzRoQ4A==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "dependencies": { + "exit": "0.1.2", + "glob": "^7.1.1" + }, + "engines": { + "node": ">=0.2.5" + } + }, + "node_modules/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, + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/cliui/node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/coffee-script": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)", + "dev": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "dependencies": { + "date-now": "^0.1.4" + } + }, + "node_modules/cookiejar": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", + "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/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, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "node_modules/dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + }, + "bin": { + "dateformat": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/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, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "dependencies": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "node_modules/domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "deprecated": "update to domelementtype@1.3.1", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "dependencies": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.12.0" + }, + "optionalDependencies": { + "source-map": "~0.2.0" + } + }, + "node_modules/escodegen/node_modules/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, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/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 + }, + "node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "dependencies": { + "glob": "~5.0.0" + }, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/findup-sync/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/growl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/grunt": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", + "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "dev": true, + "dependencies": { + "coffee-script": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~1.0.0", + "grunt-legacy-util": "~1.0.0", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.5.2", + "minimatch": "~3.0.0", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.2.8" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-contrib-jshint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz", + "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=", + "dev": true, + "dependencies": { + "chalk": "^1.1.1", + "hooker": "^0.2.3", + "jshint": "~2.9.4" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" + } + }, + "node_modules/grunt-contrib-uglify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.3.0.tgz", + "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==", + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "maxmin": "^1.1.0", + "uglify-js": "~3.3.0", + "uri-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-endline": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/grunt-endline/-/grunt-endline-0.7.0.tgz", + "integrity": "sha512-NP2ABzCRBpuNfKgteVSEOR26zsph0oEFPVvEmSldkvxBHeSpUPOpIVxvrDnRHyKoV9hBuszGvVjHovjnG3aUBw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/grunt-known-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt-legacy-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", + "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", + "dev": true, + "dependencies": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~3.10.1", + "underscore.string": "~3.2.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-log-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", + "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "dev": true, + "dependencies": { + "chalk": "~1.1.1", + "lodash": "~4.3.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-log-utils/node_modules/lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "node_modules/grunt-legacy-log/node_modules/colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/grunt-legacy-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", + "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "dev": true, + "dependencies": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.3.0", + "underscore.string": "~3.2.3", + "which": "~1.2.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-legacy-util/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/grunt-legacy-util/node_modules/lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + }, + "node_modules/grunt-safer-regex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/grunt-safer-regex/-/grunt-safer-regex-0.1.0.tgz", + "integrity": "sha512-kLLDEqliu6anbABm6lBZr8uAKP1fdrVzUzlYzQUOlrWrH/WpKlWeiowriM5fN0jXKViyPCh6S5oPA/C3Q91jzw==", + "dev": true, + "dependencies": { + "safer-regex": "0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/grunt/node_modules/glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/grunt/node_modules/grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "dependencies": { + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/grunt/node_modules/rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "dev": true, + "dependencies": { + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" + }, + "bin": { + "gzip-size": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "dependencies": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^2.6" + } + }, + "node_modules/handlebars/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/handlebars/node_modules/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, + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/handlebars/node_modules/uglify-js/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "dependencies": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "node_modules/htmlparser2/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/htmlparser2/node_modules/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 + }, + "node_modules/iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/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, + "optional": true + }, + "node_modules/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, + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", + "dev": true, + "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" + }, + "bin": { + "istanbul": "lib/cli.js" + } + }, + "node_modules/istanbul/node_modules/abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "node_modules/istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/istanbul/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/js-yaml": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", + "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "dev": true, + "dependencies": { + "argparse": "^1.0.2", + "esprima": "^2.6.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jshint": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", + "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", + "dev": true, + "dependencies": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "3.7.x", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "bin": { + "jshint": "bin/jshint" + } + }, + "node_modules/jshint/node_modules/lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", + "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", + "dev": true + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "node_modules/logger-request": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/logger-request/-/logger-request-3.8.0.tgz", + "integrity": "sha1-A6symboJR2w5oTta8pdInam7Zyk=", + "dependencies": { + "basic-authentication": "1.9.0", + "on-finished": "2.3.0", + "transfer-rate": "2.1.0", + "winston": "2.3.1", + "winston-daily-rotate-file": "1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "dependencies": { + "mime-db": "~1.30.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", + "dev": true, + "dependencies": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/mocha/node_modules/commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "dependencies": { + "has-flag": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mongodb": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", + "integrity": "sha512-1gsxVXmjFTPJ+CkMG9olE4bcVsyY8lBJN9m5B5vj+LZ7wkBqq3PO8RVmNX9GwCBOBz1KV0zM00vPviUearSv7A==", + "dependencies": { + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "socks": "^2.6.2" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-restore": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mongodb-restore/-/mongodb-restore-1.6.2.tgz", + "integrity": "sha1-iGMAf0+Esy0txVnleqdcRtwtlXg=", + "dev": true, + "dependencies": { + "bson": "1.0.1", + "graceful-fs": "4.1.11", + "logger-request": "3.7.3", + "mongodb": "2.2.16", + "tar": "2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mongodb-restore/node_modules/basic-authentication": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/basic-authentication/-/basic-authentication-1.7.0.tgz", + "integrity": "sha1-odDu+3x257O8cNrxO0WF2+qZZbE=", + "dev": true, + "dependencies": { + "setheaders": "0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/mongodb-restore/node_modules/bson": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.1.tgz", + "integrity": "sha1-OlrdsPL/iLw0NucI5L24Y3YC1y0=", + "deprecated": "Fixed a critical issue with BSON serialization documented in CVE-2019-2391, see https://bit.ly/2KcpXdo for more details", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/mongodb-restore/node_modules/logger-request": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/logger-request/-/logger-request-3.7.3.tgz", + "integrity": "sha1-sm8tGbn5msFvu/gXfg78h9rNmb0=", + "dev": true, + "dependencies": { + "basic-authentication": "1.7.0", + "on-finished": "2.3.0", + "transfer-rate": "1.2.0", + "winston": "2.3.0", + "winston-daily-rotate-file": "1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mongodb-restore/node_modules/mongodb": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.16.tgz", + "integrity": "sha1-4yupHPninzcfs4ugxKccOx9frnc=", + "deprecated": "Please upgrade to 2.2.19 or higher", + "dev": true, + "dependencies": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.2", + "readable-stream": "2.1.5" + }, + "engines": { + "node": ">=0.10.3" + } + }, + "node_modules/mongodb-restore/node_modules/mongodb-core": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.2.tgz", + "integrity": "sha1-oR23c9NIGcvrl3USQYJxN6tTWqs=", + "dev": true, + "dependencies": { + "bson": "~1.0.1", + "require_optional": "~1.0.0" + } + }, + "node_modules/mongodb-restore/node_modules/readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "dev": true, + "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": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mongodb-restore/node_modules/setheaders": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/setheaders/-/setheaders-0.1.7.tgz", + "integrity": "sha1-1nsGRDax+UbXpVeNpt8qOdL3LP0=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/mongodb-restore/node_modules/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 + }, + "node_modules/mongodb-restore/node_modules/tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "dev": true, + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "node_modules/mongodb-restore/node_modules/transfer-rate": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/transfer-rate/-/transfer-rate-1.2.0.tgz", + "integrity": "sha1-QoAJTeXCJmaMcS8pg+A7CAw7pJk=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/mongodb-restore/node_modules/winston": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.0.tgz", + "integrity": "sha1-IH+qq2/M8/5JN0PdKwPbr8fOt4w=", + "dev": true, + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/mongodb-restore/node_modules/winston-daily-rotate-file": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-1.4.0.tgz", + "integrity": "sha1-cQUvTDcrp8WuFjg0xbBD7dDAa+A=", + "dev": true, + "peerDependencies": { + "winston": "2.x" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/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, + "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" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "dependencies": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "node_modules/optimist/node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + }, + "bin": { + "pretty-bytes": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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 + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/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, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "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" + } + }, + "node_modules/redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "node_modules/resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/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, + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-regex": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/safer-regex/-/safer-regex-0.3.0.tgz", + "integrity": "sha512-ioiqZFoe9VTR3irkY19QyAJ+6J6l/v1RkHIuZFXMY4IYB2sFwi2wU3XG6BupkAS8XsOWI1lKx11grsWwkCbgrg==", + "dev": true, + "dependencies": { + "cli": "1.0.1", + "safe-regex": "1.1.0" + }, + "bin": { + "safer-regex": "bin/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/setheaders": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/setheaders/-/setheaders-0.3.0.tgz", + "integrity": "sha1-PnSfM3ou58GGwuDdB/RftHJIjhM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "dependencies": { + "spdx-license-ids": "^1.0.2" + } + }, + "node_modules/spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "node_modules/spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/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, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true, + "bin": { + "strip-json-comments": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/superagent": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", + "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", + "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "dev": true, + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/supertest": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", + "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", + "dev": true, + "dependencies": { + "methods": "~1.1.2", + "superagent": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/transfer-rate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/transfer-rate/-/transfer-rate-2.1.0.tgz", + "integrity": "sha1-4OZYV2rGUKT+H+qeFLQ49ScMo+Y=", + "dependencies": { + "on-finished": "2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.9.tgz", + "integrity": "sha512-J2t8B5tj9JdPTW4+sNZXmiIWHzTvcoITkaqzTiilu/biZF/9crqf/Fi7k5hqbOmVRh9/hVNxAxBYIMF7N6SqMQ==", + "dev": true, + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/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 + }, + "node_modules/underscore.string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", + "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "dependencies": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/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, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/winston": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.1.tgz", + "integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=", + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-1.4.6.tgz", + "integrity": "sha1-8gS2raGaU4b99S/pl9jhDkP/d4g=", + "peerDependencies": { + "winston": "2.x" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/yargs/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + } + }, "dependencies": { + "@types/node": { + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.34.tgz", + "integrity": "sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA==" + }, + "@types/webidl-conversions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" + }, + "@types/whatwg-url": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -15,10 +2831,11 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, + "optional": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -45,7 +2862,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "array-find-index": { @@ -70,6 +2887,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "basic-authentication": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/basic-authentication/-/basic-authentication-1.9.0.tgz", @@ -81,9 +2903,10 @@ "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "brace-expansion": { @@ -91,7 +2914,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -107,18 +2930,31 @@ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" } }, "bson": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", - "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.3.tgz", + "integrity": "sha512-rAqP5hcUVJhXP2MCSNVsf0oM2OGU1So6A9pVRDYayvJ5+hygXHQApf87wd5NlhPM1J9RJnbqxIG/f8QTzRoQ4A==", + "requires": { + "buffer": "^5.6.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true }, "builtin-modules": { "version": "1.1.1", @@ -138,8 +2974,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "center-align": { @@ -149,8 +2985,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -159,13 +2995,18 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "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" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, "cli": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", @@ -173,7 +3014,7 @@ "dev": true, "requires": { "exit": "0.1.2", - "glob": "7.1.2" + "glob": "^7.1.1" } }, "cliui": { @@ -183,8 +3024,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -214,7 +3055,7 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -240,9 +3081,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.2.7", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "console-browserify": { @@ -251,7 +3092,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "cookiejar": { @@ -263,7 +3104,8 @@ "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=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "currently-unhandled": { "version": "0.4.1", @@ -271,7 +3113,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "cycle": { @@ -291,8 +3133,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.3.0" } }, "debug": { @@ -322,6 +3164,11 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "denque": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" + }, "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", @@ -334,8 +3181,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -364,7 +3211,7 @@ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -373,8 +3220,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "ee-first": { @@ -394,13 +3241,14 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "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=" + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", @@ -414,11 +3262,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { "source-map": { @@ -428,7 +3276,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -486,8 +3334,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "find-up": { @@ -496,8 +3344,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "findup-sync": { @@ -506,7 +3354,7 @@ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, "requires": { - "glob": "5.0.15" + "glob": "~5.0.0" }, "dependencies": { "glob": { @@ -515,11 +3363,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -530,9 +3378,9 @@ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "formidable": { @@ -541,6 +3389,14 @@ "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=", "dev": true }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -551,10 +3407,10 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "get-stdin": { @@ -574,12 +3430,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "graceful-fs": { @@ -599,22 +3455,22 @@ "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", "dev": true, "requires": { - "coffee-script": "1.10.0", - "dateformat": "1.0.12", - "eventemitter2": "0.4.14", - "exit": "0.1.2", - "findup-sync": "0.3.0", - "glob": "7.0.6", - "grunt-cli": "1.2.0", - "grunt-known-options": "1.1.0", - "grunt-legacy-log": "1.0.0", - "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.19", - "js-yaml": "3.5.5", - "minimatch": "3.0.4", - "nopt": "3.0.6", - "path-is-absolute": "1.0.1", - "rimraf": "2.2.8" + "coffee-script": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~1.0.0", + "grunt-legacy-util": "~1.0.0", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.5.2", + "minimatch": "~3.0.0", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.2.8" }, "dependencies": { "glob": { @@ -623,12 +3479,12 @@ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "grunt-cli": { @@ -637,10 +3493,10 @@ "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", "dev": true, "requires": { - "findup-sync": "0.3.0", - "grunt-known-options": "1.1.0", - "nopt": "3.0.6", - "resolve": "1.1.7" + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" } }, "rimraf": { @@ -657,9 +3513,9 @@ "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=", "dev": true, "requires": { - "chalk": "1.1.3", - "hooker": "0.2.3", - "jshint": "2.9.5" + "chalk": "^1.1.1", + "hooker": "^0.2.3", + "jshint": "~2.9.4" } }, "grunt-contrib-uglify": { @@ -668,10 +3524,10 @@ "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==", "dev": true, "requires": { - "chalk": "1.1.3", - "maxmin": "1.1.0", - "uglify-js": "3.3.9", - "uri-path": "1.0.0" + "chalk": "^1.0.0", + "maxmin": "^1.1.0", + "uglify-js": "~3.3.0", + "uri-path": "^1.0.0" } }, "grunt-endline": { @@ -692,11 +3548,11 @@ "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", "dev": true, "requires": { - "colors": "1.1.2", - "grunt-legacy-log-utils": "1.0.0", - "hooker": "0.2.3", - "lodash": "3.10.1", - "underscore.string": "3.2.3" + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~3.10.1", + "underscore.string": "~3.2.3" }, "dependencies": { "colors": { @@ -713,8 +3569,8 @@ "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", "dev": true, "requires": { - "chalk": "1.1.3", - "lodash": "4.3.0" + "chalk": "~1.1.1", + "lodash": "~4.3.0" }, "dependencies": { "lodash": { @@ -731,13 +3587,13 @@ "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", "dev": true, "requires": { - "async": "1.5.2", - "exit": "0.1.2", - "getobject": "0.1.0", - "hooker": "0.2.3", - "lodash": "4.3.0", - "underscore.string": "3.2.3", - "which": "1.2.14" + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.3.0", + "underscore.string": "~3.2.3", + "which": "~1.2.1" }, "dependencies": { "async": { @@ -769,8 +3625,8 @@ "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", "dev": true, "requires": { - "browserify-zlib": "0.1.4", - "concat-stream": "1.6.0" + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" } }, "handlebars": { @@ -779,10 +3635,10 @@ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "async": { @@ -797,7 +3653,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "uglify-js": { @@ -807,9 +3663,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "source-map": { @@ -829,7 +3685,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -862,11 +3718,11 @@ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.3.0", - "domutils": "1.5.1", - "entities": "1.0.0", - "readable-stream": "1.1.14" + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" }, "dependencies": { "isarray": { @@ -881,10 +3737,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -901,13 +3757,18 @@ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "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.1" + "repeating": "^2.0.0" } }, "inflight": { @@ -915,8 +3776,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -924,6 +3785,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -934,7 +3800,8 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "dev": true, + "optional": true }, "is-builtin-module": { "version": "1.0.0", @@ -942,7 +3809,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-finite": { @@ -951,7 +3818,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-utf8": { @@ -963,7 +3830,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -982,20 +3850,20 @@ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { - "abbrev": "1.0.9", - "async": "1.0.0", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.11", - "js-yaml": "3.5.5", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.2.14", - "wordwrap": "1.0.0" + "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": { "abbrev": { @@ -1010,11 +3878,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "supports-color": { @@ -1023,7 +3891,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -1034,8 +3902,8 @@ "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" + "argparse": "^1.0.2", + "esprima": "^2.6.0" } }, "jshint": { @@ -1044,14 +3912,14 @@ "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", "dev": true, "requires": { - "cli": "1.0.1", - "console-browserify": "1.1.0", - "exit": "0.1.2", - "htmlparser2": "3.8.3", - "lodash": "3.7.0", - "minimatch": "3.0.4", - "shelljs": "0.3.0", - "strip-json-comments": "1.0.4" + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "3.7.x", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" }, "dependencies": { "lodash": { @@ -1067,8 +3935,9 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, + "optional": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -1084,8 +3953,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { @@ -1094,11 +3963,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "lodash": { @@ -1123,7 +3992,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "dev": true, + "optional": true }, "loud-rejection": { "version": "1.6.0", @@ -1131,8 +4001,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "map-obj": { @@ -1147,28 +4017,34 @@ "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", "dev": true, "requires": { - "chalk": "1.1.3", - "figures": "1.7.0", - "gzip-size": "1.0.0", - "pretty-bytes": "1.0.4" + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" } }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": 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.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "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" }, "dependencies": { "minimist": { @@ -1203,7 +4079,7 @@ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -1211,7 +4087,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1219,6 +4095,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -1263,28 +4156,30 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } }, "mongodb": { - "version": "2.2.31", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.31.tgz", - "integrity": "sha1-GUBEXGYeGSF7s7+CRdmFSq71SNs=", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", + "integrity": "sha512-1gsxVXmjFTPJ+CkMG9olE4bcVsyY8lBJN9m5B5vj+LZ7wkBqq3PO8RVmNX9GwCBOBz1KV0zM00vPviUearSv7A==", "requires": { - "es6-promise": "3.2.1", - "mongodb-core": "2.1.15", - "readable-stream": "2.2.7" + "bson": "^4.6.3", + "denque": "^2.0.1", + "mongodb-connection-string-url": "^2.5.2", + "saslprep": "^1.0.3", + "socks": "^2.6.2" } }, - "mongodb-core": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.15.tgz", - "integrity": "sha1-hB9TuH//9MdFgYnDXIroJ+EWl2Q=", + "mongodb-connection-string-url": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz", + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==", "requires": { - "bson": "1.0.4", - "require_optional": "1.0.1" + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" } }, "mongodb-restore": { @@ -1345,8 +4240,8 @@ "integrity": "sha1-oR23c9NIGcvrl3USQYJxN6tTWqs=", "dev": true, "requires": { - "bson": "1.0.1", - "require_optional": "1.0.1" + "bson": "~1.0.1", + "require_optional": "~1.0.0" } }, "readable-stream": { @@ -1355,13 +4250,13 @@ "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" + "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": "~0.10.x", + "util-deprecate": "~1.0.1" } }, "setheaders": { @@ -1376,6 +4271,17 @@ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, "transfer-rate": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/transfer-rate/-/transfer-rate-1.2.0.tgz", @@ -1388,19 +4294,20 @@ "integrity": "sha1-IH+qq2/M8/5JN0PdKwPbr8fOt4w=", "dev": true, "requires": { - "async": "1.0.0", - "colors": "1.0.3", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "stack-trace": "0.0.10" + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" } }, "winston-daily-rotate-file": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-1.4.0.tgz", "integrity": "sha1-cQUvTDcrp8WuFjg0xbBD7dDAa+A=", - "dev": true + "dev": true, + "requires": {} } } }, @@ -1416,7 +4323,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -1425,10 +4332,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "number-is-nan": { @@ -1456,7 +4363,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optimist": { @@ -1465,8 +4372,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "wordwrap": { @@ -1483,12 +4390,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "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" } }, "pako": { @@ -1503,7 +4410,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1512,7 +4419,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -1526,9 +4433,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -1549,7 +4456,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "prelude-ls": { @@ -1564,14 +4471,20 @@ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.1.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=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.5.1", @@ -1585,9 +4498,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -1596,22 +4509,23 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "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.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "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" } }, "redent": { @@ -1620,15 +4534,16 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "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 + "dev": true, + "optional": true }, "repeating": { "version": "2.0.1", @@ -1636,16 +4551,17 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "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==", + "dev": true, "requires": { - "resolve-from": "2.0.0", - "semver": "5.5.0" + "resolve-from": "^2.0.0", + "semver": "^5.1.0" } }, "resolve": { @@ -1657,7 +4573,8 @@ "resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true }, "ret": { "version": "0.1.15", @@ -1672,7 +4589,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -1680,13 +4597,14 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -1694,7 +4612,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-regex": { @@ -1707,10 +4625,20 @@ "safe-regex": "1.1.0" } }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true }, "setheaders": { "version": "0.3.0", @@ -1729,19 +4657,42 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.2.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -1771,8 +4722,9 @@ "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.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -1781,7 +4733,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -1790,7 +4742,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-indent": { @@ -1799,7 +4751,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -1814,16 +4766,16 @@ "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "cookiejar": "2.1.1", - "debug": "3.1.0", - "extend": "3.0.1", - "form-data": "2.3.1", - "formidable": "1.1.1", - "methods": "1.1.2", - "mime": "1.6.0", - "qs": "6.5.1", - "readable-stream": "2.2.7" + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.1.1", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.0.5" } }, "supertest": { @@ -1832,8 +4784,8 @@ "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", "dev": true, "requires": { - "methods": "1.1.2", - "superagent": "3.8.2" + "methods": "~1.1.2", + "superagent": "^3.0.0" } }, "supports-color": { @@ -1843,13 +4795,31 @@ "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" } }, "transfer-rate": { @@ -1872,7 +4842,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "typedarray": { @@ -1887,8 +4857,8 @@ "integrity": "sha512-J2t8B5tj9JdPTW4+sNZXmiIWHzTvcoITkaqzTiilu/biZF/9crqf/Fi7k5hqbOmVRh9/hVNxAxBYIMF7N6SqMQ==", "dev": true, "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "commander": "~2.13.0", + "source-map": "~0.6.1" } }, "uglify-to-browserify": { @@ -1913,7 +4883,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "validate-npm-package-license": { "version": "3.0.1", @@ -1921,8 +4892,22 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" } }, "which": { @@ -1931,7 +4916,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "window-size": { @@ -1946,18 +4931,19 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.1.tgz", "integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=", "requires": { - "async": "1.0.0", - "colors": "1.0.3", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "stack-trace": "0.0.10" + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" } }, "winston-daily-rotate-file": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-1.4.6.tgz", - "integrity": "sha1-8gS2raGaU4b99S/pl9jhDkP/d4g=" + "integrity": "sha1-8gS2raGaU4b99S/pl9jhDkP/d4g=", + "requires": {} }, "wordwrap": { "version": "1.0.0", @@ -1970,6 +4956,11 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", @@ -1977,9 +4968,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" }, "dependencies": { diff --git a/package.json b/package.json index 114f515..5c5891e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "version": "1.6.9", - "name": "mongodb-backup", + "version": "2.0.6", + "name": "@evops/mongodb-backup", "description": "backup for mongodb", "keywords": [ "mongodb", @@ -8,7 +8,7 @@ "dump" ], "preferGlobal": false, - "homepage": "https://github.com/hex7c0/mongodb-backup", + "homepage": "https://github.com/eu-evops/mongodb-backup", "author": { "name": "hex7c0", "email": "hex7c0@gmail.com", @@ -16,25 +16,25 @@ }, "repository": { "type": "git", - "url": "https://github.com/hex7c0/mongodb-backup.git" + "url": "https://github.com/eu-evops/mongodb-backup.git" }, "bugs": { - "url": "https://github.com/hex7c0/mongodb-backup/issues", + "url": "https://github.com/eu-evops/mongodb-backup/issues", "email": "hex7c0@gmail.com" }, - "main": "index.min.js", + "main": "index.js", "dependencies": { - "bson": "1.0.4", + "bson": "^4.6.3", "fstream": "1.0.11", "graceful-fs": "4.1.11", "logger-request": "3.8.0", - "mongodb": "2.2.31", - "tar": "2.2.1" + "mongodb": "^4.6.0", + "tar": "6.1.11" }, "devDependencies": { "grunt": "~1.0", - "grunt-contrib-uglify": "~3.3", "grunt-contrib-jshint": "~1.1", + "grunt-contrib-uglify": "~3.3", "grunt-endline": "~0.7", "grunt-safer-regex": "~0.1", "istanbul": "~0.4", @@ -47,9 +47,8 @@ }, "scripts": { "prepare": "npm prune", - "prepublishOnly": "grunt", "test": "mocha --bail --check-leaks --globals Promise --timeout 10000", "test-cov": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --timeout 10000" }, "license": "Apache-2.0" -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3476654 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1781 @@ +lockfileVersion: 5.3 + +specifiers: + bson: ^4.6.3 + fstream: 1.0.11 + graceful-fs: 4.1.11 + grunt: ~1.0 + grunt-contrib-jshint: ~1.1 + grunt-contrib-uglify: ~3.3 + grunt-endline: ~0.7 + grunt-safer-regex: ~0.1 + istanbul: ~0.4 + logger-request: 3.8.0 + mocha: ~4.1 + mongodb: ^4.6.0 + mongodb-restore: ~1.6 + supertest: ~3.0 + tar: 6.1.11 + +dependencies: + bson: 4.6.4 + fstream: 1.0.11 + graceful-fs: 4.1.11 + logger-request: 3.8.0 + mongodb: 4.6.0 + tar: 6.1.11 + +devDependencies: + grunt: 1.0.4 + grunt-contrib-jshint: 1.1.0_grunt@1.0.4 + grunt-contrib-uglify: 3.3.0 + grunt-endline: 0.7.0 + grunt-safer-regex: 0.1.0 + istanbul: 0.4.5 + mocha: 4.1.0 + mongodb-restore: 1.6.2 + supertest: 3.0.0 + +packages: + + /@types/node/17.0.35: + resolution: {integrity: sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==} + dev: false + + /@types/webidl-conversions/6.1.1: + resolution: {integrity: sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==} + dev: false + + /@types/whatwg-url/8.2.1: + resolution: {integrity: sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==} + dependencies: + '@types/node': 17.0.35 + '@types/webidl-conversions': 6.1.1 + dev: false + + /abbrev/1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + dev: true + + /amdefine/1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: true + optional: true + + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles/2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /array-find-index/1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + dev: true + + /async/1.0.0: + resolution: {integrity: sha512-5mO7DX4CbJzp9zjaFXusQQ4tzKJARjNB1Ih1pVBi8wkbmXy/xzIDgEMXxWePLzt2OdFwaxfneIlT1nCiXubrPQ==} + + /async/1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /basic-authentication/1.7.0: + resolution: {integrity: sha1-odDu+3x257O8cNrxO0WF2+qZZbE=} + engines: {node: '>=0.10'} + dependencies: + setheaders: 0.1.7 + dev: true + + /basic-authentication/1.9.0: + resolution: {integrity: sha1-nMIYHaso20rMM2LKsYAzroYDObA=} + engines: {node: '>=4'} + dependencies: + setheaders: 0.3.0 + dev: false + + /block-stream/0.0.9: + resolution: {integrity: sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==} + engines: {node: 0.4 || >=0.5.8} + dependencies: + inherits: 2.0.4 + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /browser-stdout/1.3.0: + resolution: {integrity: sha512-7Rfk377tpSM9TWBEeHs0FlDZGoAIei2V/4MdZJoFMBFAK6BqLpxAIUepGRHGdPFgGsLb02PXovC4qddyHvQqTg==} + dev: true + + /browserify-zlib/0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + dependencies: + pako: 0.2.9 + dev: true + + /bson/1.0.1: + resolution: {integrity: sha512-p3oeUToy0bUe0/l+GTsTzGuf4XoiyM44KwZR5VZ/Cbva7OSkyRLS49RfpAMItnzTTcsplDxcLpHaEaOnu1sriA==} + engines: {node: '>=0.6.19'} + deprecated: Fixed a critical issue with BSON serialization documented in CVE-2019-2391, see https://bit.ly/2KcpXdo for more details + dev: true + + /bson/4.6.4: + resolution: {integrity: sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==} + engines: {node: '>=6.9.0'} + dependencies: + buffer: 5.7.1 + dev: false + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-shims/1.0.0: + resolution: {integrity: sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==} + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + dev: true + + /camelcase-keys/2.1.0: + resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + dev: true + + /camelcase/2.1.1: + resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} + engines: {node: '>=0.10.0'} + dev: true + + /chalk/1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + + /cli/1.0.1: + resolution: {integrity: sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==} + engines: {node: '>=0.2.5'} + dependencies: + exit: 0.1.2 + glob: 7.2.3 + dev: true + + /coffeescript/1.10.0: + resolution: {integrity: sha1-56qDAZF+9iGzXYo580jc3R234z4=} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + dev: true + + /colors/1.0.3: + resolution: {integrity: sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=} + engines: {node: '>=0.1.90'} + + /colors/1.1.2: + resolution: {integrity: sha1-FopHAXVran9RoSzgyXv6KMCE7WM=} + engines: {node: '>=0.1.90'} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.11.0: + resolution: {integrity: sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==} + dev: true + + /commander/2.15.1: + resolution: {integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==} + dev: true + + /component-emitter/1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /console-browserify/1.1.0: + resolution: {integrity: sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=} + dependencies: + date-now: 0.1.4 + dev: true + + /cookiejar/2.1.3: + resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /currently-unhandled/0.4.1: + resolution: {integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o=} + engines: {node: '>=0.10.0'} + dependencies: + array-find-index: 1.0.2 + dev: true + + /cycle/1.0.3: + resolution: {integrity: sha1-IegLK+hYD5i0aPN5QwZisEbDStI=} + engines: {node: '>=0.4.0'} + + /date-now/0.1.4: + resolution: {integrity: sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=} + dev: true + + /dateformat/1.0.12: + resolution: {integrity: sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=} + hasBin: true + dependencies: + get-stdin: 4.0.1 + meow: 3.7.0 + dev: true + + /debug/3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + dependencies: + ms: 2.1.3 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + engines: {node: '>=0.10.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + engines: {node: '>=0.4.0'} + dev: true + + /denque/2.0.1: + resolution: {integrity: sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==} + engines: {node: '>=0.10'} + dev: false + + /diff/3.3.1: + resolution: {integrity: sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==} + engines: {node: '>=0.3.1'} + dev: true + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/2.3.0: + resolution: {integrity: sha1-LeWaCCLVAn+r/28DLCsloqir5zg=} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domutils/1.5.1: + resolution: {integrity: sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /ee-first/1.1.1: + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + + /entities/1.0.0: + resolution: {integrity: sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es6-promise/3.2.1: + resolution: {integrity: sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + dev: true + + /escodegen/1.8.1: + resolution: {integrity: sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=} + engines: {node: '>=0.12.0'} + hasBin: true + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + dev: true + + /esprima/2.7.3: + resolution: {integrity: sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /estraverse/1.9.3: + resolution: {integrity: sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=} + engines: {node: '>=0.10.0'} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /eventemitter2/0.4.14: + resolution: {integrity: sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=} + dev: true + + /exit/0.1.2: + resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + engines: {node: '>= 0.8.0'} + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /eyes/0.1.8: + resolution: {integrity: sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=} + engines: {node: '> 0.1.90'} + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + dev: true + + /figures/1.7.0: + resolution: {integrity: sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + dev: true + + /find-up/1.1.2: + resolution: {integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=} + engines: {node: '>=0.10.0'} + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + + /findup-sync/0.3.0: + resolution: {integrity: sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=} + engines: {node: '>= 0.6.0'} + dependencies: + glob: 5.0.15 + dev: true + + /form-data/2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formidable/1.2.6: + resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} + deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' + dev: true + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + dev: false + + /fs.realpath/1.0.0: + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + + /fstream/1.0.11: + resolution: {integrity: sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.1.11 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /get-intrinsic/1.1.1: + resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + + /get-stdin/4.0.1: + resolution: {integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=} + engines: {node: '>=0.10.0'} + dev: true + + /getobject/0.1.0: + resolution: {integrity: sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=} + engines: {node: '>= 0.8.0'} + dev: true + + /glob/5.0.15: + resolution: {integrity: sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.0.6: + resolution: {integrity: sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.8 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.1.2: + resolution: {integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /graceful-fs/4.1.11: + resolution: {integrity: sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=} + engines: {node: '>=0.4.0'} + + /growl/1.10.3: + resolution: {integrity: sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==} + engines: {node: '>=4.x'} + dev: true + + /grunt-cli/1.2.0: + resolution: {integrity: sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + findup-sync: 0.3.0 + grunt-known-options: 1.1.1 + nopt: 3.0.6 + resolve: 1.1.7 + dev: true + + /grunt-contrib-jshint/1.1.0_grunt@1.0.4: + resolution: {integrity: sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=} + engines: {node: '>=0.10.0'} + peerDependencies: + grunt: '>=0.4.0' + dependencies: + chalk: 1.1.3 + grunt: 1.0.4 + hooker: 0.2.3 + jshint: 2.9.7 + dev: true + + /grunt-contrib-uglify/3.3.0: + resolution: {integrity: sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==} + engines: {node: '>=0.10.0'} + dependencies: + chalk: 1.1.3 + maxmin: 1.1.0 + uglify-js: 3.3.28 + uri-path: 1.0.0 + dev: true + + /grunt-endline/0.7.0: + resolution: {integrity: sha512-NP2ABzCRBpuNfKgteVSEOR26zsph0oEFPVvEmSldkvxBHeSpUPOpIVxvrDnRHyKoV9hBuszGvVjHovjnG3aUBw==} + engines: {node: '>=4'} + dev: true + + /grunt-known-options/1.1.1: + resolution: {integrity: sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==} + engines: {node: '>=0.10.0'} + dev: true + + /grunt-legacy-log-utils/2.0.1: + resolution: {integrity: sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==} + engines: {node: '>=6'} + dependencies: + chalk: 2.4.2 + lodash: 4.17.21 + dev: true + + /grunt-legacy-log/2.0.0: + resolution: {integrity: sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==} + engines: {node: '>= 0.10.0'} + dependencies: + colors: 1.1.2 + grunt-legacy-log-utils: 2.0.1 + hooker: 0.2.3 + lodash: 4.17.21 + dev: true + + /grunt-legacy-util/1.1.1: + resolution: {integrity: sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==} + engines: {node: '>= 6'} + dependencies: + async: 1.5.2 + exit: 0.1.2 + getobject: 0.1.0 + hooker: 0.2.3 + lodash: 4.17.21 + underscore.string: 3.3.6 + which: 1.3.1 + dev: true + + /grunt-safer-regex/0.1.0: + resolution: {integrity: sha512-kLLDEqliu6anbABm6lBZr8uAKP1fdrVzUzlYzQUOlrWrH/WpKlWeiowriM5fN0jXKViyPCh6S5oPA/C3Q91jzw==} + engines: {node: '>=4'} + dependencies: + safer-regex: 0.3.0 + dev: true + + /grunt/1.0.4: + resolution: {integrity: sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + coffeescript: 1.10.0 + dateformat: 1.0.12 + eventemitter2: 0.4.14 + exit: 0.1.2 + findup-sync: 0.3.0 + glob: 7.0.6 + grunt-cli: 1.2.0 + grunt-known-options: 1.1.1 + grunt-legacy-log: 2.0.0 + grunt-legacy-util: 1.1.1 + iconv-lite: 0.4.24 + js-yaml: 3.13.1 + minimatch: 3.0.8 + mkdirp: 0.5.6 + nopt: 3.0.6 + path-is-absolute: 1.0.1 + rimraf: 2.6.3 + dev: true + + /gzip-size/1.0.0: + resolution: {integrity: sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + browserify-zlib: 0.1.4 + concat-stream: 1.6.2 + dev: true + + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.6 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.15.5 + dev: true + + /has-ansi/2.0.0: + resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-flag/1.0.0: + resolution: {integrity: sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag/2.0.0: + resolution: {integrity: sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + engines: {node: '>=4'} + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /he/1.1.1: + resolution: {integrity: sha1-k0EP0hsAlzUVH4howvJx80J+I/0=} + hasBin: true + dev: true + + /hooker/0.2.3: + resolution: {integrity: sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=} + dev: true + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /htmlparser2/3.8.3: + resolution: {integrity: sha1-mWwosZFRaovoZQGn15dX5ccMEGg=} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.3.0 + domutils: 1.5.1 + entities: 1.0.0 + readable-stream: 1.1.14 + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /indent-string/2.1.0: + resolution: {integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=} + engines: {node: '>=0.10.0'} + dependencies: + repeating: 2.0.1 + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ip/1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: false + + /is-arrayish/0.2.1: + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + dev: true + + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + dependencies: + has: 1.0.3 + dev: true + + /is-finite/1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + dev: true + + /is-utf8/0.2.1: + resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} + dev: true + + /isarray/0.0.1: + resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + dev: true + + /isarray/1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} + + /istanbul/0.4.5: + resolution: {integrity: sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=} + deprecated: |- + This module is no longer maintained, try this instead: + npm i nyc + Visit https://istanbul.js.org/integrations for other alternatives. + hasBin: true + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.7 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + dev: true + + /js-yaml/3.13.1: + resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jshint/2.9.7: + resolution: {integrity: sha512-Q8XN38hGsVQhdlM+4gd1Xl7OB1VieSuCJf+fEJjpo59JH99bVJhXRXAh26qQ15wfdd1VPMuDWNeSWoNl53T4YA==} + hasBin: true + dependencies: + cli: 1.0.1 + console-browserify: 1.1.0 + exit: 0.1.2 + htmlparser2: 3.8.3 + lodash: 4.17.21 + minimatch: 3.0.8 + shelljs: 0.3.0 + strip-json-comments: 1.0.4 + dev: true + + /levn/0.3.0: + resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /load-json-file/1.1.0: + resolution: {integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=} + engines: {node: '>=0.10.0'} + dependencies: + graceful-fs: 4.1.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /logger-request/3.7.3: + resolution: {integrity: sha1-sm8tGbn5msFvu/gXfg78h9rNmb0=} + engines: {node: '>=4'} + dependencies: + basic-authentication: 1.7.0 + on-finished: 2.3.0 + transfer-rate: 1.2.0 + winston: 2.3.0 + winston-daily-rotate-file: 1.4.0_winston@2.3.0 + dev: true + + /logger-request/3.8.0: + resolution: {integrity: sha1-A6symboJR2w5oTta8pdInam7Zyk=} + engines: {node: '>=4'} + dependencies: + basic-authentication: 1.9.0 + on-finished: 2.3.0 + transfer-rate: 2.1.0 + winston: 2.3.1 + winston-daily-rotate-file: 1.4.6_winston@2.3.1 + dev: false + + /loud-rejection/1.6.0: + resolution: {integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=} + engines: {node: '>=0.10.0'} + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} + engines: {node: '>=0.10.0'} + dev: true + + /maxmin/1.1.0: + resolution: {integrity: sha1-cTZehKmd2Piz99X94vANHn9zvmE=} + engines: {node: '>=0.10.0'} + dependencies: + chalk: 1.1.3 + figures: 1.7.0 + gzip-size: 1.0.0 + pretty-bytes: 1.0.4 + dev: true + + /memory-pager/1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + dev: false + optional: true + + /meow/3.7.0: + resolution: {integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=} + engines: {node: '>=0.10.0'} + dependencies: + camelcase-keys: 2.1.0 + decamelize: 1.2.0 + loud-rejection: 1.6.0 + map-obj: 1.0.1 + minimist: 1.2.6 + normalize-package-data: 2.5.0 + object-assign: 4.1.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + dev: true + + /methods/1.1.2: + resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} + engines: {node: '>= 0.6'} + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /minimatch/3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimist/0.0.8: + resolution: {integrity: sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=} + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + + /minipass/3.1.6: + resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.6 + yallist: 4.0.0 + dev: false + + /mkdirp/0.5.1: + resolution: {integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + hasBin: true + dependencies: + minimist: 0.0.8 + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.6 + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /mocha/4.1.0: + resolution: {integrity: sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==} + engines: {node: '>= 4.0.0'} + hasBin: true + dependencies: + browser-stdout: 1.3.0 + commander: 2.11.0 + debug: 3.1.0 + diff: 3.3.1 + escape-string-regexp: 1.0.5 + glob: 7.1.2 + growl: 1.10.3 + he: 1.1.1 + mkdirp: 0.5.1 + supports-color: 4.4.0 + dev: true + + /mongodb-connection-string-url/2.5.2: + resolution: {integrity: sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==} + dependencies: + '@types/whatwg-url': 8.2.1 + whatwg-url: 11.0.0 + dev: false + + /mongodb-core/2.1.2: + resolution: {integrity: sha1-oR23c9NIGcvrl3USQYJxN6tTWqs=} + dependencies: + bson: 1.0.1 + require_optional: 1.0.1 + dev: true + + /mongodb-restore/1.6.2: + resolution: {integrity: sha1-iGMAf0+Esy0txVnleqdcRtwtlXg=} + engines: {node: '>=4'} + dependencies: + bson: 1.0.1 + graceful-fs: 4.1.11 + logger-request: 3.7.3 + mongodb: 2.2.16 + tar: 2.2.1 + dev: true + + /mongodb/2.2.16: + resolution: {integrity: sha1-4yupHPninzcfs4ugxKccOx9frnc=} + engines: {node: '>=0.10.3'} + deprecated: Please upgrade to 2.2.19 or higher + dependencies: + es6-promise: 3.2.1 + mongodb-core: 2.1.2 + readable-stream: 2.1.5 + dev: true + + /mongodb/4.6.0: + resolution: {integrity: sha512-1gsxVXmjFTPJ+CkMG9olE4bcVsyY8lBJN9m5B5vj+LZ7wkBqq3PO8RVmNX9GwCBOBz1KV0zM00vPviUearSv7A==} + engines: {node: '>=12.9.0'} + dependencies: + bson: 4.6.4 + denque: 2.0.1 + mongodb-connection-string-url: 2.5.2 + socks: 2.6.2 + optionalDependencies: + saslprep: 1.0.3 + dev: false + + /ms/2.0.0: + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + dev: true + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nopt/3.0.6: + resolution: {integrity: sha1-xkZdvwirzU2zWTF/eaxopkayj/k=} + hasBin: true + dependencies: + abbrev: 1.0.9 + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect/1.12.0: + resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} + dev: true + + /on-finished/2.3.0: + resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /once/1.4.0: + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + dependencies: + wrappy: 1.0.2 + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /pako/0.2.9: + resolution: {integrity: sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=} + dev: true + + /parse-json/2.2.0: + resolution: {integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=} + engines: {node: '>=0.10.0'} + dependencies: + error-ex: 1.3.2 + dev: true + + /path-exists/2.1.0: + resolution: {integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=} + engines: {node: '>=0.10.0'} + dependencies: + pinkie-promise: 2.0.1 + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + engines: {node: '>=0.10.0'} + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type/1.1.0: + resolution: {integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=} + engines: {node: '>=0.10.0'} + dependencies: + graceful-fs: 4.1.11 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /pify/2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + engines: {node: '>=0.10.0'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=} + engines: {node: '>=0.10.0'} + dev: true + + /prelude-ls/1.1.2: + resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + engines: {node: '>= 0.8.0'} + dev: true + + /pretty-bytes/1.0.4: + resolution: {integrity: sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + get-stdin: 4.0.1 + meow: 3.7.0 + dev: true + + /process-nextick-args/1.0.7: + resolution: {integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=} + dev: true + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: false + + /qs/6.10.3: + resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /read-pkg-up/1.0.1: + resolution: {integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=} + engines: {node: '>=0.10.0'} + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + dev: true + + /read-pkg/1.1.0: + resolution: {integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=} + engines: {node: '>=0.10.0'} + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + dev: true + + /readable-stream/1.1.14: + resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream/2.1.5: + resolution: {integrity: sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=} + dependencies: + buffer-shims: 1.0.0 + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 1.0.7 + string_decoder: 0.10.31 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /redent/1.0.0: + resolution: {integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=} + engines: {node: '>=0.10.0'} + dependencies: + indent-string: 2.1.0 + strip-indent: 1.0.1 + dev: true + + /repeating/2.0.1: + resolution: {integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=} + engines: {node: '>=0.10.0'} + dependencies: + is-finite: 1.1.0 + dev: true + + /require_optional/1.0.1: + resolution: {integrity: sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==} + dependencies: + resolve-from: 2.0.0 + semver: 5.7.1 + dev: true + + /resolve-from/2.0.0: + resolution: {integrity: sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=} + engines: {node: '>=0.10.0'} + dev: true + + /resolve/1.1.7: + resolution: {integrity: sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=} + dev: true + + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /ret/0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /rimraf/2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-regex/1.1.0: + resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=} + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /safer-regex/0.3.0: + resolution: {integrity: sha512-ioiqZFoe9VTR3irkY19QyAJ+6J6l/v1RkHIuZFXMY4IYB2sFwi2wU3XG6BupkAS8XsOWI1lKx11grsWwkCbgrg==} + engines: {node: '>=4'} + hasBin: true + dependencies: + cli: 1.0.1 + safe-regex: 1.1.0 + dev: true + + /saslprep/1.0.3: + resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + sparse-bitfield: 3.0.3 + dev: false + optional: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /setheaders/0.1.7: + resolution: {integrity: sha1-1nsGRDax+UbXpVeNpt8qOdL3LP0=} + engines: {node: '>=0.10'} + dev: true + + /setheaders/0.3.0: + resolution: {integrity: sha1-PnSfM3ou58GGwuDdB/RftHJIjhM=} + engines: {node: '>=4'} + dev: false + + /shelljs/0.3.0: + resolution: {integrity: sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.1 + object-inspect: 1.12.0 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /smart-buffer/4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + + /socks/2.6.2: + resolution: {integrity: sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 1.1.8 + smart-buffer: 4.2.0 + dev: false + + /source-map/0.2.0: + resolution: {integrity: sha1-2rc/vPwrqBm03gO9b26qSBZLP50=} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + amdefine: 1.0.1 + dev: true + optional: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sparse-bitfield/3.0.3: + resolution: {integrity: sha1-/0rm5oZWBWuks+eSqzM004JzyhE=} + dependencies: + memory-pager: 1.5.0 + dev: false + optional: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + dev: true + + /sprintf-js/1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + dev: true + + /stack-trace/0.0.10: + resolution: {integrity: sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=} + + /string_decoder/0.10.31: + resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} + dev: true + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /strip-ansi/3.0.1: + resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-bom/2.0.0: + resolution: {integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-indent/1.0.1: + resolution: {integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + get-stdin: 4.0.1 + dev: true + + /strip-json-comments/1.0.4: + resolution: {integrity: sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=} + engines: {node: '>=0.8.0'} + hasBin: true + dev: true + + /superagent/3.8.3: + resolution: {integrity: sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==} + engines: {node: '>= 4.0'} + deprecated: Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at . + dependencies: + component-emitter: 1.3.0 + cookiejar: 2.1.3 + debug: 3.2.7 + extend: 3.0.2 + form-data: 2.5.1 + formidable: 1.2.6 + methods: 1.1.2 + mime: 1.6.0 + qs: 6.10.3 + readable-stream: 2.3.7 + dev: true + + /supertest/3.0.0: + resolution: {integrity: sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=} + engines: {node: '>=4.0.0'} + dependencies: + methods: 1.1.2 + superagent: 3.8.3 + dev: true + + /supports-color/2.0.0: + resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color/3.2.3: + resolution: {integrity: sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color/4.4.0: + resolution: {integrity: sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==} + engines: {node: '>=4'} + dependencies: + has-flag: 2.0.0 + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tar/2.2.1: + resolution: {integrity: sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=} + deprecated: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap. + dependencies: + block-stream: 0.0.9 + fstream: 1.0.11 + inherits: 2.0.4 + dev: true + + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.1.6 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + + /tr46/3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.1.1 + dev: false + + /transfer-rate/1.2.0: + resolution: {integrity: sha1-QoAJTeXCJmaMcS8pg+A7CAw7pJk=} + engines: {node: '>=0.10'} + dev: true + + /transfer-rate/2.1.0: + resolution: {integrity: sha1-4OZYV2rGUKT+H+qeFLQ49ScMo+Y=} + engines: {node: '>=4'} + dependencies: + on-finished: 2.3.0 + dev: false + + /trim-newlines/1.0.0: + resolution: {integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM=} + engines: {node: '>=0.10.0'} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /typedarray/0.0.6: + resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + dev: true + + /uglify-js/3.15.5: + resolution: {integrity: sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /uglify-js/3.3.28: + resolution: {integrity: sha512-68Rc/aA6cswiaQ5SrE979UJcXX+ADA1z33/ZsPd+fbAiVdjZ16OXdbtGO+rJUUBgK6qdf3SOPhQf3K/ybF5Miw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + commander: 2.15.1 + source-map: 0.6.1 + dev: true + + /underscore.string/3.3.6: + resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} + dependencies: + sprintf-js: 1.1.2 + util-deprecate: 1.0.2 + dev: true + + /uri-path/1.0.0: + resolution: {integrity: sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=} + engines: {node: '>= 0.10'} + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: false + + /whatwg-url/11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: false + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /winston-daily-rotate-file/1.4.0_winston@2.3.0: + resolution: {integrity: sha1-cQUvTDcrp8WuFjg0xbBD7dDAa+A=} + peerDependencies: + winston: 2.x + dependencies: + winston: 2.3.0 + dev: true + + /winston-daily-rotate-file/1.4.6_winston@2.3.1: + resolution: {integrity: sha1-8gS2raGaU4b99S/pl9jhDkP/d4g=} + peerDependencies: + winston: 2.x + dependencies: + winston: 2.3.1 + dev: false + + /winston/2.3.0: + resolution: {integrity: sha1-IH+qq2/M8/5JN0PdKwPbr8fOt4w=} + engines: {node: '>= 0.10.0'} + dependencies: + async: 1.0.0 + colors: 1.0.3 + cycle: 1.0.3 + eyes: 0.1.8 + isstream: 0.1.2 + stack-trace: 0.0.10 + dev: true + + /winston/2.3.1: + resolution: {integrity: sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=} + engines: {node: '>= 0.10.0'} + dependencies: + async: 1.0.0 + colors: 1.0.3 + cycle: 1.0.3 + eyes: 0.1.8 + isstream: 0.1.2 + stack-trace: 0.0.10 + dev: false + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap/1.0.0: + resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false diff --git a/test/data.js b/test/data.js index cb36d41..4785b8e 100644 --- a/test/data.js +++ b/test/data.js @@ -16,122 +16,232 @@ var backup = require('..'); var assert = require('assert'); var fs = require('fs'); var extname = require('path').extname; -var client = require('mongodb').MongoClient; +var MongoClient = require('mongodb').MongoClient; var BSON = require('bson'); -BSON = new BSON(); +// BSON = new BSON(); var URI = process.env.URI; +var ROOT = __dirname + '/dump'; +var DOCS = {}; /* * test module */ -describe('data', function() { +describe('data', function () { - var DOCS = {}; - var ROOT = __dirname + '/dump'; - describe('db query', function() { + describe('db query', function () { + it('should return data from "logins" collection', function (done) { + MongoClient.connect(URI, (err, client) => { + if (err) return done(err); - it('should return data from "logins" collection', function(done) { + var db = client.db('backup-tests'); - client.connect(URI, function(err, db) { + var collection = db.collection('logins'); + if (err) return done(err); - db.collection('logins', function(err, collection) { + collection.find({}) + .toArray() + .then(docs => { + collection.estimatedDocumentCount() + .then(numberOfDocs => { + assert.equal(numberOfDocs > 0, true, 'not empty collection'); + for (var i = 0, ii = docs.length; i < ii; i++) { + DOCS[docs[i]._id] = docs[i]; + } - collection.find({}).toArray(function(err, docs) { + client.close(); + done(); - assert.equal(docs.length > 0, true, 'not empty collection'); - for (var i = 0, ii = docs.length; i < ii; i++) { - DOCS[docs[i]._id] = docs[i]; + }) + }) + .catch(done); + }); + }); + }); +}); + +describe('query', function () { + + it('should build 1 directory and 1 file (*.json)', function (done) { + + backup({ + uri: URI, + root: ROOT, + dbName: 'backup-tests', + collections: ['logins'], + parser: 'json', + metadata: true, + query: { + _id: DOCS[Object.keys(DOCS)[0]]._id + }, + callback: function (err) { + + assert.ifError(err); + setTimeout(function () { + + fs.readdirSync(ROOT).forEach(function (first) { // database + + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[1], 'logins'); + fs.unlinkSync(database + '/.metadata/' + second[1]); + var collection = database + '/' + second[1]; + if (fs.statSync(collection).isDirectory() === false) { + return; } - db.close(); - done(); + var docs = fs.readdirSync(collection); + assert.equal(docs.length, 1, 'forget?'); + var third = docs[0]; + var document = collection + '/' + third; + assert.equal(extname(third), '.json'); + var _id = third.split('.json')[0]; + var data = require(document); + // JSON error on id and Date + assert.equal(data._id, DOCS[_id]._id); + assert.equal(data._id, DOCS[Object.keys(DOCS)[0]]._id); + fs.unlinkSync(document); + fs.rmdirSync(collection); + fs.rmdirSync(database + '/.metadata/'); + fs.rmdirSync(database); }); - }); - }); + done(); + }, 500); + } }); }); + it('should build 1 directory and 1 file (*.bson)', function (done) { + + backup({ + uri: URI, + root: ROOT, + dbName: 'backup-tests', + collections: ['logins'], + parser: 'bson', + metadata: true, + query: { + _id: DOCS[Object.keys(DOCS)[0]]._id + }, + callback: function (err) { + + assert.ifError(err); + setTimeout(function () { + + fs.readdirSync(ROOT).forEach(function (first) { // database + + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[1], 'logins'); + fs.unlinkSync(database + '/.metadata/' + second[1]); + var collection = database + '/' + second[1]; + if (fs.statSync(collection).isDirectory() === false) { + return; + } + var docs = fs.readdirSync(collection); + assert.equal(docs.length, 1, 'forget?'); + var third = docs[0]; + var document = collection + '/' + third; + assert.equal(extname(third), '.bson'); + var _id = third.split('.bson')[0]; + var data = BSON.deserialize(fs.readFileSync(document, { + encoding: null + })); + assert.deepEqual(data, DOCS[_id]); + assert.equal(String(data._id), DOCS[Object.keys(DOCS)[0]]._id); + fs.unlinkSync(document); + fs.rmdirSync(collection); + fs.rmdirSync(database + '/.metadata/'); + fs.rmdirSync(database); + }); + done(); + }, 500); + } + }); + }); +}); + +describe('collections', function () { + + it('should build 1 directory (*.json)', function (done) { + + backup({ + uri: URI, + root: ROOT, + dbName: 'backup-tests', + collections: ['logins'], + parser: 'json', + metadata: true, + callback: function (err) { + + assert.ifError(err); + setTimeout(function () { + + fs.readdirSync(ROOT).forEach(function (first) { // database + + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[1], 'logins'); + fs.unlinkSync(database + '/.metadata/' + second[1]); + var collection = database + '/' + second[1]; + if (fs.statSync(collection).isDirectory() === false) { + return; + } + var docs = fs.readdirSync(collection); + assert.equal(docs.length, Object.keys(DOCS).length, 'forget?'); + docs.forEach(function (third) { // document - describe('query', function() { - - it('should build 1 directory and 1 file (*.json)', function(done) { - - backup({ - uri: URI, - root: ROOT, - collections: [ 'logins' ], - parser: 'json', - metadata: true, - query: { - _id: DOCS[Object.keys(DOCS)[0]]._id - }, - callback: function(err) { - - assert.ifError(err); - setTimeout(function() { - - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[1], 'logins'); - fs.unlinkSync(database + '/.metadata/' + second[1]); - var collection = database + '/' + second[1]; - if (fs.statSync(collection).isDirectory() === false) { - return; - } - var docs = fs.readdirSync(collection); - assert.equal(docs.length, 1, 'forget?'); - var third = docs[0]; var document = collection + '/' + third; assert.equal(extname(third), '.json'); var _id = third.split('.json')[0]; var data = require(document); // JSON error on id and Date assert.equal(data._id, DOCS[_id]._id); - assert.equal(data._id, DOCS[Object.keys(DOCS)[0]]._id); fs.unlinkSync(document); - fs.rmdirSync(collection); - fs.rmdirSync(database + '/.metadata/'); - fs.rmdirSync(database); }); - done(); - }, 500); - } - }); + fs.rmdirSync(collection); + fs.rmdirSync(database + '/.metadata/'); + fs.rmdirSync(database); + }); + done(); + }, 500); + } }); - it('should build 1 directory and 1 file (*.bson)', function(done) { - - backup({ - uri: URI, - root: ROOT, - collections: [ 'logins' ], - parser: 'bson', - metadata: true, - query: { - _id: DOCS[Object.keys(DOCS)[0]]._id - }, - callback: function(err) { - - assert.ifError(err); - setTimeout(function() { - - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[1], 'logins'); - fs.unlinkSync(database + '/.metadata/' + second[1]); - var collection = database + '/' + second[1]; - if (fs.statSync(collection).isDirectory() === false) { - return; - } - var docs = fs.readdirSync(collection); - assert.equal(docs.length, 1, 'forget?'); - var third = docs[0]; + }); + it('should build 1 directory (*.bson)', function (done) { + + backup({ + uri: URI, + root: ROOT, + dbName: 'backup-tests', + collections: ['logins'], + parser: 'bson', + metadata: true, + callback: function (err) { + + assert.ifError(err); + setTimeout(function () { + + fs.readdirSync(ROOT).forEach(function (first) { // database + + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[1], 'logins'); + fs.unlinkSync(database + '/.metadata/' + second[1]); + var collection = database + '/' + second[1]; + if (fs.statSync(collection).isDirectory() === false) { + return; + } + var docs = fs.readdirSync(collection); + assert.equal(docs.length, Object.keys(DOCS).length, 'forget?'); + docs.forEach(function (third) { // document + var document = collection + '/' + third; assert.equal(extname(third), '.bson'); var _id = third.split('.bson')[0]; @@ -139,113 +249,15 @@ describe('data', function() { encoding: null })); assert.deepEqual(data, DOCS[_id]); - assert.equal(String(data._id), DOCS[Object.keys(DOCS)[0]]._id); fs.unlinkSync(document); - fs.rmdirSync(collection); - fs.rmdirSync(database + '/.metadata/'); - fs.rmdirSync(database); - }); - done(); - }, 500); - } - }); - }); - }); - - describe('collections', function() { - - it('should build 1 directory (*.json)', function(done) { - - backup({ - uri: URI, - root: ROOT, - collections: [ 'logins' ], - parser: 'json', - metadata: true, - callback: function(err) { - - assert.ifError(err); - setTimeout(function() { - - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[1], 'logins'); - fs.unlinkSync(database + '/.metadata/' + second[1]); - var collection = database + '/' + second[1]; - if (fs.statSync(collection).isDirectory() === false) { - return; - } - var docs = fs.readdirSync(collection); - assert.equal(docs.length, Object.keys(DOCS).length, 'forget?'); - docs.forEach(function(third) { // document - - var document = collection + '/' + third; - assert.equal(extname(third), '.json'); - var _id = third.split('.json')[0]; - var data = require(document); - // JSON error on id and Date - assert.equal(data._id, DOCS[_id]._id); - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); - fs.rmdirSync(database + '/.metadata/'); - fs.rmdirSync(database); }); - done(); - }, 500); - } - }); - }); - it('should build 1 directory (*.bson)', function(done) { - - backup({ - uri: URI, - root: ROOT, - collections: [ 'logins' ], - parser: 'bson', - metadata: true, - callback: function(err) { - - assert.ifError(err); - setTimeout(function() { - - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[1], 'logins'); - fs.unlinkSync(database + '/.metadata/' + second[1]); - var collection = database + '/' + second[1]; - if (fs.statSync(collection).isDirectory() === false) { - return; - } - var docs = fs.readdirSync(collection); - assert.equal(docs.length, Object.keys(DOCS).length, 'forget?'); - docs.forEach(function(third) { // document - - var document = collection + '/' + third; - assert.equal(extname(third), '.bson'); - var _id = third.split('.bson')[0]; - var data = BSON.deserialize(fs.readFileSync(document, { - encoding: null - })); - assert.deepEqual(data, DOCS[_id]); - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); - fs.rmdirSync(database + '/.metadata/'); - fs.rmdirSync(database); - }); - done(); - }, 500); - } - }); + fs.rmdirSync(collection); + fs.rmdirSync(database + '/.metadata/'); + fs.rmdirSync(database); + }); + done(); + }, 500); + } }); }); }); diff --git a/test/error.js b/test/error.js index 6d4b2a1..67b6e49 100644 --- a/test/error.js +++ b/test/error.js @@ -17,20 +17,20 @@ var assert = require('assert'); /* * test module */ -describe('error', function() { +describe('error', function () { - it('should return missing uri', function(done) { + it('should return missing uri', function (done) { var mex = /missing uri option/; - assert.throws(function() { + assert.throws(function () { backup(); }, mex); - assert.throws(function() { + assert.throws(function () { backup({}); }, mex); - assert.throws(function() { + assert.throws(function () { backup({ root: 'ciao' @@ -38,64 +38,68 @@ describe('error', function() { }, mex); done(); }); - it('should return parser root', function(done) { + it('should return parser root', function (done) { var mex = /missing parser option/; - assert.throws(function() { + assert.throws(function () { backup({ uri: 'ciao', root: 'ciao', - parser: 'ciao' + parser: 'ciao', + dbName: 'ciao', }); }, mex); done(); }); - it('should return wrong uri', function(done) { - - var mex = /invalid schema, expected mongodb/; - assert.throws(function() { + it('should return wrong uri', function (done) { + var mex = /Invalid scheme, expected connection string to start with "mongodb:"/; + assert.rejects(function () { backup({ uri: 'ciao', - root: 'ciao' + root: 'ciao', + dbName: 'ciao', }); }, mex); done(); }); - describe('root', function() { + describe('root', function () { - it('should return missing root', function(done) { + it('should return missing root', function (done) { var mex = /missing root option/; - assert.throws(function() { + assert.throws(function () { backup({ - uri: 'ciao' + uri: 'ciao', + dbName: 'ciao', }); }, mex); done(); }); - it('should return different error message (exists)', function(done) { + it('should return different error message (exists)', function (done) { - var mex = /invalid schema, expected mongodb/; - assert.throws(function() { + var mex = /invalid scheme, expected mongodb/; + assert.rejects(function () { backup({ uri: 'ciao', + dbName: 'ciao', root: __dirname }); }, mex); done(); }); - it('should return different error message (not file)', function(done) { + it('should return different error message (not file)', function (done) { var mex = /root option is not a directory/; - assert.throws(function() { + assert.throws(function () { backup({ uri: 'ciao', + dbName: 'ciao', root: __dirname + '/error.js' }); }, mex); diff --git a/test/issue10.js b/test/issue10.js index f775474..499ccc5 100644 --- a/test/issue10.js +++ b/test/issue10.js @@ -16,12 +16,11 @@ var assert = require('assert'); var fs = require('fs'); var extname = require('path').extname; var mongodb = require('mongodb'); -var bson = require('bson'); +var BSON = require('bson'); -var client = mongodb.MongoClient; -var BSON = new bson.BSON(); +var MongoClient = mongodb.MongoClient; var MLong = mongodb.Long; -var BLong = bson.Long; +var BLong = BSON.Long; var Uri = process.env.URI; var Root = __dirname + '/dump'; var Collection = 'test_10'; @@ -29,13 +28,13 @@ var Collection = 'test_10'; /* * test module */ -describe('issue10', function() { +describe('issue10', function () { var NInt64, SInt64, NLong, SLong; - describe('create new collection', function() { + describe('create new collection', function () { - it('should create long number', function(done) { + it('should create long number', function (done) { var long1 = MLong.fromNumber(100); var long2 = BLong.fromNumber(100); @@ -51,18 +50,19 @@ describe('issue10', function() { done(); }); - it('should create "' + Collection + '" collection', function(done) { + it('should create "' + Collection + '" collection', function (done) { - client.connect(Uri, function(err, db) { + MongoClient.connect(Uri, function (err, client) { + var db = client.db('test'); assert.ifError(err); - db.createCollection(Collection, function(err, collection) { + db.createCollection(Collection, function (err, collection) { assert.ifError(err); - collection.remove({}, function(err, result) { // remove previous data + collection.deleteMany({}, function (err, result) { // remove previous data assert.ifError(err); - collection.insert([ { + collection.insertMany([{ _id: 'nint64', d: NInt64, t: 'foo1' @@ -78,12 +78,12 @@ describe('issue10', function() { _id: 'slong', d: SLong, t: 'foo4' - } ], function(err, result) { - + }], function (err, result) { + console.log(result); assert.ifError(err); - assert.equal(result.result.ok, 1); - assert.equal(result.result.n, 4); - db.close(); + assert.equal(result.acknowledged, true); + assert.equal(result.insertedCount, 4); + client.close(); done(); }); }); @@ -92,15 +92,16 @@ describe('issue10', function() { }); }); - describe('backup', function() { + describe('backup', function () { - it('should build 1 directory and 4 files', function(done) { + it('should build 1 directory and 4 files', function (done) { backup({ uri: Uri, + dbName: 'backup-tests', root: Root, - collections: [ Collection ], - callback: function(err) { + collections: [Collection], + callback: function (err) { assert.ifError(err); setTimeout(done, 500); @@ -109,12 +110,12 @@ describe('issue10', function() { }); }); - describe('deserialize', function() { + describe('deserialize', function () { var database, collection; var nint64_file, nlong_file, sint64_file, slong_file; - it('should find 2 files', function(done) { + it('should find 2 files', function (done) { var first = fs.readdirSync(Root); assert.equal(first.length, 1, 'database'); @@ -136,7 +137,7 @@ describe('issue10', function() { sint64_file = collection + '/' + docs[2]; slong_file = collection + '/' + docs[3]; - docs.forEach(function(file) { + docs.forEach(function (file) { var p = collection + '/' + file; assert.equal(fs.statSync(p).isFile(), true); @@ -145,7 +146,7 @@ describe('issue10', function() { done(); }); - it('should deserialize nint64 file', function(done) { + it('should deserialize nint64 file', function (done) { var data = BSON.deserialize(fs.readFileSync(nint64_file)); assert.strictEqual(data._id, 'nint64'); @@ -153,7 +154,7 @@ describe('issue10', function() { assert.strictEqual(data.t, 'foo1'); fs.unlink(nint64_file, done); }); - it('should deserialize sint64 file', function(done) { + it('should deserialize sint64 file', function (done) { var data = BSON.deserialize(fs.readFileSync(sint64_file)); assert.strictEqual(data._id, 'sint64'); @@ -161,7 +162,7 @@ describe('issue10', function() { assert.strictEqual(data.t, 'foo2'); fs.unlink(sint64_file, done); }); - it('should deserialize nlong file', function(done) { + it('should deserialize nlong file', function (done) { var data = BSON.deserialize(fs.readFileSync(nlong_file)); assert.strictEqual(data._id, 'nlong'); @@ -169,7 +170,7 @@ describe('issue10', function() { assert.strictEqual(data.t, 'foo3'); fs.unlink(nlong_file, done); }); - it('should deserialize slong file', function(done) { + it('should deserialize slong file', function (done) { var data = BSON.deserialize(fs.readFileSync(slong_file)); assert.strictEqual(data._id, 'slong'); @@ -177,7 +178,7 @@ describe('issue10', function() { assert.strictEqual(data.t, 'foo4'); fs.unlink(slong_file, done); }); - it('should remove dirs', function(done) { + it('should remove dirs', function (done) { fs.rmdirSync(collection); fs.rmdirSync(database); diff --git a/test/parser.js b/test/parser.js index 3f3cb16..69ebb0e 100644 --- a/test/parser.js +++ b/test/parser.js @@ -18,18 +18,19 @@ var URI = process.env.URI; /* * test module */ -describe('parser', function() { +describe('parser', function () { var ROOT = __dirname + '/dump'; - it('should check custom parser', function(done) { + it('should check custom parser', function (done) { var c = 0; backup({ uri: URI, + dbName: 'backup-tests', root: ROOT, - collections: [ 'logins' ], - parser: function(docs, name, next) { + collections: ['logins'], + parser: function (docs, name, next) { c++; assert.equal(Array.isArray(docs), false); @@ -37,7 +38,7 @@ describe('parser', function() { assert.equal(typeof next, 'undefined'); // next(); }, - callback: function(err) { + callback: function (err) { assert.ifError(err); assert.equal(c > 0, true); diff --git a/test/stream.js b/test/stream.js index c0f27c7..090857b 100644 --- a/test/stream.js +++ b/test/stream.js @@ -21,50 +21,51 @@ var URI = process.env.URI; /* * test module */ -describe('stream', function() { +describe('stream', function () { var ROOT = __dirname + '/dump'; - describe('tar', function() { + describe('tar', function () { var app; var path0 = ROOT + '/from_web.tar'; var path1 = ROOT + '/from_file.tar'; - describe('web', function() { + describe('web', function () { - it('should check that tar file not exist before test', function(done) { + it('should check that tar file not exist before test', function (done) { assert.equal(fs.existsSync(path0), false); done(); }); - it('should create a web application', function(done) { + it('should create a web application', function (done) { - app = http.createServer(function(req, res) { + app = http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'application/x-tar' }); backup({ - collections: [ 'logins', 'auths', 'wrong_name' ], + collections: ['logins', 'auths', 'wrong_name'], uri: URI, + dbName: 'backup-tests', stream: res }); }); done(); }); - it('should send a request to web and write a tar file', function(done) { + it('should send a request to web and write a tar file', function (done) { request(app).get('/').expect('Content-Type', /tar/).expect(200).end( - function(err, res) { + function (err, res) { assert.ifError(err); fs.writeFile(path0, res.text, done); }); }); - it('should check that buffer dir not exist', function(done) { + it('should check that buffer dir not exist', function (done) { var paths = __dirname + '/../dump'; assert.equal(fs.existsSync(paths), true); @@ -73,21 +74,22 @@ describe('stream', function() { }); }); - describe('file', function() { + describe('file', function () { - it('should check that tar file not exist before test', function(done) { + it('should check that tar file not exist before test', function (done) { assert.equal(fs.existsSync(path1), false); done(); }); - it('should make a tar file', function(done) { + it('should make a tar file', function (done) { backup({ - collections: [ 'logins', 'auths', 'wrong_name' ], + collections: ['logins', 'auths', 'wrong_name'], uri: URI, root: ROOT, + dbName: 'backup-tests', tar: 'from_file.tar', - callback: function(err) { + callback: function (err) { assert.ifError(err); assert.equal(fs.existsSync(path1), true); @@ -95,7 +97,7 @@ describe('stream', function() { } }); }); - it('should check that buffer dir not exist', function(done) { + it('should check that buffer dir not exist', function (done) { var paths = __dirname + '/../dump'; assert.equal(fs.existsSync(paths), true); @@ -104,9 +106,9 @@ describe('stream', function() { }); }); - describe('end', function() { + describe('end', function () { - it('should delete this 2 files', function(done) { + it('should delete this 2 files', function (done) { fs.unlinkSync(path0); fs.unlinkSync(path1); diff --git a/test/structure.js b/test/structure.js index 4f487eb..be4c5ee 100644 --- a/test/structure.js +++ b/test/structure.js @@ -17,7 +17,7 @@ var fs = require('fs'); var extname = require('path').extname; var URI = process.env.URI; -var pad = function(val, len) { +var pad = function (val, len) { var val = String(val); var len = len || 2; @@ -30,162 +30,172 @@ var pad = function(val, len) { /* * test module */ -describe('structure', function() { +describe('structure', function () { var ROOT = __dirname + '/dump'; - describe('with query', function() { + describe('with query', function () { - describe('errors', function() { + describe('errors', function () { it('should return error beacause collection does not exist', - function(done) { + function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'foobar' ], - callback: function(err) { + dbName: 'test', + collections: ['foobar'], + callback: function (err) { assert.notEqual(err, null); assert.ok(/does not exist/.test(err.message)); - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - fs.stat(database + '/foobar', function(err) { - - assert.notEqual(err, null); - // assert.ok(/no such file or directory/.test(err.message)); - done(); + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database + var database = ROOT + '/' + first; + fs.stat(database + '/foobar', function (err) { + assert.notEqual(err, null); + // assert.ok(/no such file or directory/.test(err.message)); + done(); + }); }); - }); } }); }); it('should return error beacause collections does not exist', - function(done) { + function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'foo', 'bar' ], - callback: function(err) { + dbName: 'test', + collections: ['foo', 'bar'], + callback: function (err) { assert.notEqual(err, null); assert.ok(/does not exist/.test(err.message)); - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database - var database = ROOT + '/' + first; - fs.stat(database + '/foo', function(err) { - - assert.notEqual(err, null); - // assert.ok(/no such file or directory/.test(err.message)); - fs.stat(database + '/bar', function(err) { + var database = ROOT + '/' + first; + fs.stat(database + '/foo', function (err) { assert.notEqual(err, null); // assert.ok(/no such file or directory/.test(err.message)); - done(); + fs.stat(database + '/bar', function (err) { + + assert.notEqual(err, null); + // assert.ok(/no such file or directory/.test(err.message)); + done(); + }); }); }); - }); } }); }); }); - describe('collections', function() { + describe('collections', function () { - it('should build 1 directory (*.json)', function(done) { + it('should build 1 directory (*.json)', function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'logins', 'auths' ], + dbName: 'test', + collections: ['logins', 'auths'], parser: 'json', - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[0], 'auths'); - assert.equal(second[1], 'logins'); + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[0], 'auths'); + assert.equal(second[1], 'logins'); - var collection = database + '/' + second[0]; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + var collection = database + '/' + second[0]; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document - assert.equal(extname(third), '.json'); - var document = collection + '/' + third; - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); + assert.equal(extname(third), '.json'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); - var collection = database + '/' + second[1]; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + var collection = database + '/' + second[1]; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document - assert.equal(extname(third), '.json'); - var document = collection + '/' + third; - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); + assert.equal(extname(third), '.json'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); - fs.rmdirSync(database); - }); + fs.rmdirSync(database); + }); done(); }, 500); } }); }); - it('should build 1 directory (*.bson)', function(done) { + it('should build 1 directory (*.bson)', function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'logins', 'auths' ], + dbName: 'test', + collections: ['logins', 'auths'], parser: 'bson', - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - var second = fs.readdirSync(database); - assert.equal(second.length, 2); - assert.equal(second[0], 'auths'); - assert.equal(second[1], 'logins'); + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + var second = fs.readdirSync(database); + assert.equal(second.length, 2); + assert.equal(second[0], 'auths'); + assert.equal(second[1], 'logins'); - var collection = database + '/' + second[0]; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + var collection = database + '/' + second[0]; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document - assert.equal(extname(third), '.bson'); - var document = collection + '/' + third; - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); + assert.equal(extname(third), '.bson'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); - var collection = database + '/' + second[1]; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + var collection = database + '/' + second[1]; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document - assert.equal(extname(third), '.bson'); - var document = collection + '/' + third; - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); + assert.equal(extname(third), '.bson'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); - fs.rmdirSync(database); - }); + fs.rmdirSync(database); + }); done(); }, 500); } @@ -193,71 +203,79 @@ describe('structure', function() { }); }); - describe('parser', function() { + describe('parser', function () { - it('should build any directories (*.json)', function(done) { + it('should build any directories (*.json)', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', parser: 'json', - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + fs.readdirSync(database).forEach(function (second) { // collection - var collection = database + '/' + second; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + var collection = database + '/' + second; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document - assert.equal(extname(third), '.json'); - var document = collection + '/' + third; - fs.unlinkSync(document); + assert.equal(extname(third), '.json'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); }); - fs.rmdirSync(collection); + fs.rmdirSync(database); }); - fs.rmdirSync(database); - }); done(); }, 500); } }); }); - it('should build any directories (*.bson)', function(done) { + it('should build any directories (*.bson)', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', parser: 'bson', - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { - - fs.readdirSync(ROOT).forEach(function(first) { // database - - var database = ROOT + '/' + first; - assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection - - var collection = database + '/' + second; - assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document - - assert.equal(extname(third), '.bson'); - var document = collection + '/' + third; - fs.unlinkSync(document); - }); - fs.rmdirSync(collection); + setTimeout(function () { + + fs.readdirSync(ROOT) + .filter(f => f === 'test') + .forEach(function (first) { // database + + var database = ROOT + '/' + first; + assert.equal(fs.statSync(database).isDirectory(), true); + fs.readdirSync(database) + .filter(f => f === 'test') + .forEach(function (second) { // collection + + var collection = database + '/' + second; + assert.ok(fs.statSync(collection).isDirectory()); + fs.readdirSync(collection).forEach(function (third) { // document + + assert.equal(extname(third), '.bson'); + var document = collection + '/' + third; + fs.unlinkSync(document); + }); + fs.rmdirSync(collection); + }); + fs.rmSync(database, { recursive: true }); }); - fs.rmdirSync(database); - }); done(); }, 500); } @@ -265,21 +283,22 @@ describe('structure', function() { }); }); - describe('tar', function() { + describe('tar', function () { var path = ROOT + '/t1.tar'; - it('should check that tar file not exist before test', function(done) { + it('should check that tar file not exist before test', function (done) { assert.equal(fs.existsSync(path), false); done(); }); - it('should make a tar file', function(done) { + it('should make a tar file', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', tar: 't1.tar', - callback: function(err) { + callback: function (err) { assert.ifError(err); assert.equal(fs.existsSync(path), true); @@ -287,7 +306,7 @@ describe('structure', function() { } }); }); - it('should check that buffer dir not exist', function(done) { + it('should check that buffer dir not exist', function (done) { var paths = __dirname + '/../dump'; assert.equal(fs.existsSync(paths), true); // stay alive @@ -296,27 +315,28 @@ describe('structure', function() { }); }); - describe('logger', function() { + describe('logger', function () { var l = 'l1.log'; var date = new Date(); var dailyF = date.getUTCFullYear() + '-' + pad(date.getUTCMonth() + 1) + '-' + pad(date.getUTCDate()) + '.' + l; - it('should check that log file not exist before test', function(done) { + it('should check that log file not exist before test', function (done) { assert.equal(fs.existsSync(l), false); assert.equal(fs.existsSync(dailyF), false); done(); }); - it('should make a log file', function(done) { + it('should make a log file', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', logger: l, - callback: function(err) { + callback: function (err) { - setTimeout(function() { + setTimeout(function () { assert.ifError(err); assert.equal(fs.existsSync(dailyF), true); @@ -325,17 +345,17 @@ describe('structure', function() { } }); }); - it('should remove dirs', function(done) { + it('should remove dirs', function (done) { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection + fs.readdirSync(database).forEach(function (second) { // collection var collection = database + '/' + second; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.bson'); var document = collection + '/' + third; @@ -350,26 +370,27 @@ describe('structure', function() { }); }); - describe('with parallelCollectionScan', function() { + describe('with parallelCollectionScan', function () { - describe('errors', function() { + describe('errors', function () { - it('should return error beacause collection does not exist', - function(done) { + it('should return error beacause collection does not exist when doing parallelScan', + function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'foobar' ], + dbName: 'test', + collections: ['foobar'], numCursors: 2, - callback: function(err) { + callback: function (err) { assert.notEqual(err, null); assert.ok(/does not exist/.test(err.message)); - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; - fs.stat(database + '/foobar', function(err) { + fs.stat(database + '/foobar', function (err) { assert.notEqual(err, null); // assert.ok(/no such file or directory/.test(err.message)); @@ -380,25 +401,26 @@ describe('structure', function() { }); }); it('should return error beacause collections does not exist', - function(done) { + function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'foo', 'bar' ], + dbName: 'test', + collections: ['foo', 'bar'], numCursors: 2, - callback: function(err) { + callback: function (err) { assert.notEqual(err, null); assert.ok(/does not exist/.test(err.message)); - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; - fs.stat(database + '/foo', function(err) { + fs.stat(database + '/foo', function (err) { assert.notEqual(err, null); // assert.ok(/no such file or directory/.test(err.message)); - fs.stat(database + '/bar', function(err) { + fs.stat(database + '/bar', function (err) { assert.notEqual(err, null); // assert.ok(/no such file or directory/.test(err.message)); @@ -411,22 +433,23 @@ describe('structure', function() { }); }); - describe('collections', function() { + describe('collections', function () { - it('should build 1 directory (*.json)', function(done) { + it('should build 1 directory (*.json)', function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'logins', 'auths' ], + dbName: 'test', + collections: ['logins', 'auths'], parser: 'json', numCursors: 2, - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); @@ -437,7 +460,7 @@ describe('structure', function() { var collection = database + '/' + second[0]; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.json'); var document = collection + '/' + third; @@ -447,7 +470,7 @@ describe('structure', function() { var collection = database + '/' + second[1]; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.json'); var document = collection + '/' + third; @@ -462,20 +485,21 @@ describe('structure', function() { } }); }); - it('should build 1 directory (*.bson)', function(done) { + it('should build 1 directory (*.bson)', function (done) { backup({ uri: URI, root: ROOT, - collections: [ 'logins', 'auths' ], + dbName: 'test', + collections: ['logins', 'auths'], parser: 'bson', numCursors: 2, - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); @@ -486,7 +510,7 @@ describe('structure', function() { var collection = database + '/' + second[0]; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.bson'); var document = collection + '/' + third; @@ -496,7 +520,7 @@ describe('structure', function() { var collection = database + '/' + second[1]; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.bson'); var document = collection + '/' + third; @@ -513,29 +537,30 @@ describe('structure', function() { }); }); - describe('parser', function() { + describe('parser', function () { - it('should build any directories (*.json)', function(done) { + it('should build any directories (*.json)', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', parser: 'json', numCursors: 2, - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection + fs.readdirSync(database).forEach(function (second) { // collection var collection = database + '/' + second; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.json'); var document = collection + '/' + third; @@ -550,27 +575,28 @@ describe('structure', function() { } }); }); - it('should build any directories (*.bson)', function(done) { + it('should build any directories (*.bson)', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', parser: 'bson', numCursors: 2, - callback: function(err) { + callback: function (err) { assert.ifError(err); - setTimeout(function() { + setTimeout(function () { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection + fs.readdirSync(database).forEach(function (second) { // collection var collection = database + '/' + second; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.bson'); var document = collection + '/' + third; @@ -587,22 +613,23 @@ describe('structure', function() { }); }); - describe('tar', function() { + describe('tar', function () { var path = ROOT + '/t2.tar'; - it('should check that tar file not exist before test', function(done) { + it('should check that tar file not exist before test', function (done) { assert.equal(fs.existsSync(path), false); done(); }); - it('should make a tar file', function(done) { + it('should make a tar file', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', tar: 't2.tar', numCursors: 2, - callback: function(err) { + callback: function (err) { assert.ifError(err); assert.equal(fs.existsSync(path), true); @@ -610,7 +637,7 @@ describe('structure', function() { } }); }); - it('should check that buffer dir not exist', function(done) { + it('should check that buffer dir not exist', function (done) { var paths = __dirname + '/../dump'; assert.equal(fs.existsSync(paths), true); // stay alive @@ -619,28 +646,29 @@ describe('structure', function() { }); }); - describe('logger', function() { + describe('logger', function () { var l = 'l2.log'; var date = new Date(); var dailyF = date.getUTCFullYear() + '-' + pad(date.getUTCMonth() + 1) + '-' + pad(date.getUTCDate()) + '.' + l; - it('should check that log file not exist before test', function(done) { + it('should check that log file not exist before test', function (done) { assert.equal(fs.existsSync(l), false); assert.equal(fs.existsSync(dailyF), false); done(); }); - it('should make a log file', function(done) { + it('should make a log file', function (done) { backup({ uri: URI, root: ROOT, + dbName: 'test', logger: l, numCursors: 2, - callback: function(err) { + callback: function (err) { - setTimeout(function() { + setTimeout(function () { assert.ifError(err); assert.equal(fs.existsSync(dailyF), true); @@ -649,17 +677,17 @@ describe('structure', function() { } }); }); - it('should remove dirs', function(done) { + it('should remove dirs', function (done) { - fs.readdirSync(ROOT).forEach(function(first) { // database + fs.readdirSync(ROOT).forEach(function (first) { // database var database = ROOT + '/' + first; assert.equal(fs.statSync(database).isDirectory(), true); - fs.readdirSync(database).forEach(function(second) { // collection + fs.readdirSync(database).forEach(function (second) { // collection var collection = database + '/' + second; assert.ok(fs.statSync(collection).isDirectory()); - fs.readdirSync(collection).forEach(function(third) { // document + fs.readdirSync(collection).forEach(function (third) { // document assert.equal(extname(third), '.bson'); var document = collection + '/' + third;