From fd6664d0c66513f0a84f275915ba5312a1ef3f57 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Wed, 14 Sep 2016 16:44:10 -0700 Subject: [PATCH 01/22] chore(dependencies): update bson dep vers (#19) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ecc4124..c19e8a1 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "mout": "1.0.0" }, "peerDependencies": { - "bson": "^0.4.x || ^0.3.x", + "bson": ">=0.3.x", "js-data": "^3.0.0-rc.4", "mongodb": ">=1.3.x" }, From d14bd42378de01cbb87de7e8cb0c41258070279b Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 19 Sep 2016 18:31:25 -0700 Subject: [PATCH 02/22] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 83 ++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 17 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2e8d87f..0a661cb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,37 +1,86 @@ # Contributing to js-data-mongodb -[Read the general Contributing Guide](http://js-data.io/docs/contributing). +Dear contributor, +**Thank you!** Projects like this are successful because of you! + +## Getting started + +1. Read the the general [JSData Contributing Guide](http://js-data.io/docs/contributing) +1. To report a bug or request a feature, please [open an issue](https://github.com/js-data/js-data-mongodb/issues/new) + * Be sure to search the existing issues to prevent duplication + * Give your issue a short but descriptive title + * For bug reports, please include all steps to reproduce the error + * For feature requests, please include details of your use case +1. To improve to the JSData + MongoDB tutorial, go to [js-data.io/v3.0/docs/js-data-mongodb](http://www.js-data.io/v3.0/docs/js-data-mongodb) and click "Suggest Edits" +1. To improve the API Reference Documentation, write a test, fix a bug, or add a feature: + 1. Create a fork of github.com/js-data/js-data-mongodb. [Click here](https://github.com/js-data/js-data-mongodb#fork-destination-box) to do so now. + 1. Clone your fork: + + ``` + git clone git@github.com:YOUR_USERNAME/js-data-mongodb.git + ``` + 1. Change directory to `js-data-mongodb`: + + ``` + cd js-data-mongodb + ``` + 1. Install development dependencies + + ``` + npm install js-data@rc bson mongodb + npm install + ``` +1. To just update API Reference Documentation, make changes to the [JSDoc](http://usejsdoc.org/) comments in the source code. To regenerate the API documentation: + + ``` + npm run doc + ``` + + You can find the regenerated API Reference Documentation in the `doc/` folder. +1. To write a test, fix a bug, or add a feature, make your changes to files in the `src/` and `test/` folders. +1. To run the tests, first make sure MongoDB is running in another terminal window: + + ``` + mongod --config /path/to/mongod.conf + ``` +1. Now run the tests: + + ``` + npm test + ``` + ## Project structure +* `coverage/` - Code coverage report produced by `npm test` * `dist/` - Contains final build files for distribution * `doc/` - Output folder for JSDocs * `src/` - Project source code * `test/` - Project tests -## Clone, build & test - -1. `clone git@github.com:js-data/js-data-mongodb.git` -1. `cd js-data-mongodb` -1. `npm install` -1. `npm run build` - Lint and build distribution files -1. `npm run mocha` - Run tests (RethinkDB must be running) - ## To cut a release -1. Checkout master +1. `git checkout master` 1. Bump version in `package.json` appropriately 1. Update `CHANGELOG.md` appropriately -1. Run `npm run release` -1. Commit and push changes -1. Checkout `release`, merge `master` into `release` -1. Run `npm run release` again -1. Commit and push changes -1. Make a GitHub release +1. `npm run release` +1. Commit and push changes (message should be something like "Prepare for VERSION") +1. `git checkout release` +1. `git merge master` +1. `npm run release` +1. Commit and push changes (message should be something like "VERSION") +1. [Make a new GitHub release](https://github.com/js-data/js-data-mongodb/releases/new) - tag from `release` branch - set tag name to version - set release name to version - set release body to changelog entry for the version 1. `npm publish .` +1. `git checkout gh-pages` +1. `cp -r doc/js-data-mongodb/VERSION VERSION` +1. `cp -r doc/js-data-mongodb/VERSION latest` +1. `git add -A` +1. `git commit -m "VERSION"` +1. `git push -u origin gh-pages` +1. `git checkout master` -See also [Community & Support](http://js-data.io/docs/community). +See also [JSData Community & Support](http://js-data.io/docs/community). From 50b5793826b1caee164d686b6bf598cbbd20aa8d Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 19 Sep 2016 18:33:03 -0700 Subject: [PATCH 03/22] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 0a661cb..f754082 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -49,7 +49,9 @@ Dear contributor, ``` npm test ``` - + +1. Commit your changes, submit a Pull Request, and wait for review! + ## Project structure * `coverage/` - Code coverage report produced by `npm test` From a7ba7f7605c282c90eb0958217fe097574320ea9 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Mon, 19 Sep 2016 18:53:19 -0700 Subject: [PATCH 04/22] Update docs. --- .github/ISSUE_TEMPLATE.md | 8 ++- .github/PULL_REQUEST_TEMPLATE.md | 6 +-- README.md | 90 ++++++++++++++++++-------------- 3 files changed, 58 insertions(+), 46 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index b66d610..3669fd4 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,5 +1,9 @@ -(delete this line) Find out how to get help here: http://js-data.io/docs/community. +## Description - + + +## Steps to reproduce + + Thanks! diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4a12cfd..618e220 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,4 @@ Fixes # (it's a good idea to open an issue first for discussion) -- [ ] - `npm test` succeeds -- [ ] - Code coverage does not decrease (if any source code was changed) -- [ ] - Appropriate JSDoc comments were updated in source code (if applicable) -- [ ] - Approprate changes to js-data.io docs have been suggested ("Suggest Edits" button) +- [ ] - If applicable, appropriate JSDoc comments were updated in source code +- [ ] - If applicable, approprate changes to js-data.io docs have been suggested ("Suggest Edits" button) diff --git a/README.md b/README.md index 2a4408f..b968dc6 100644 --- a/README.md +++ b/README.md @@ -2,43 +2,53 @@ # js-data-mongodb -[![Slack Status][sl_b]][sl_l] -[![npm version][npm_b]][npm_l] -[![Circle CI][circle_b]][circle_l] -[![npm downloads][dn_b]][dn_l] -[![Coverage Status][cov_b]][cov_l] - -MongoDB adapter for [js-data](http://www.js-data.io/). - -To get started, visit __[http://js-data.io](http://www.js-data.io/docs/js-data-mongodb)__. - -## Links - -* [Quick start](http://www.js-data.io/docs/home#quick-start) - Get started in 5 minutes -* [Guides and Tutorials](http://www.js-data.io/docs/home) - Learn how to use JSData -* [`MongoDBAdapter` Guide](http://www.js-data.io/docs/js-data-mongodb) - Learn how to use `MongoDBAdapter` -* [API Reference Docs](http://api.js-data.io) - Explore components, methods, options, etc. -* [Community & Support](http://js-data.io/docs/community) - Find solutions and chat with the community -* [General Contributing Guide](http://js-data.io/docs/contributing) - Give back and move the project forward - * [Contributing to js-data-mongodb](https://github.com/js-data/js-data-mongodb/blob/master/.github/CONTRIBUTING.md) - -## License - -The MIT License (MIT) - -Copyright (c) 2014-2016 js-data-mongodb project authors - -* [LICENSE](https://github.com/js-data/js-data-mongodb/blob/master/LICENSE) -* [AUTHORS](https://github.com/js-data/js-data-mongodb/blob/master/AUTHORS) -* [CONTRIBUTORS](https://github.com/js-data/js-data-mongodb/blob/master/CONTRIBUTORS) - -[sl_b]: http://slack.js-data.io/badge.svg -[sl_l]: http://slack.js-data.io -[npm_b]: https://img.shields.io/npm/v/js-data-mongodb.svg?style=flat -[npm_l]: https://www.npmjs.org/package/js-data-mongodb -[circle_b]: https://img.shields.io/circleci/project/js-data/js-data-mongodb.svg?style=flat -[circle_l]: https://circleci.com/gh/js-data/js-data-mongodb -[dn_b]: https://img.shields.io/npm/dm/js-data-mongodb.svg?style=flat -[dn_l]: https://www.npmjs.org/package/js-data-mongodb -[cov_b]: https://img.shields.io/codecov/c/github/js-data/js-data-mongodb.svg?style=flat -[cov_l]: https://codecov.io/github/js-data/js-data-mongodb +[![Slack][1]][2] +[![NPM][3]][4] +[![Tests][5]][6] +[![Downloads][7]][8] +[![Coverage][9]][10] + +A MongoDB adapter for the [JSData Node.js ORM][11]. + +### Just getting started? + +Start with the [JSData + MongoDB tutorial][12] or checkout the [API Reference Documentation][13]. + +### Need help? + +Please [post a question][14] on Stack Overflow. **This is the preferred method.** + +You can also chat with folks on the [Slack Channel][15]. If you end up getting +your question answered, please still consider consider posting your question to +Stack Overflow (then possibly answering it yourself). Thanks! + +### Want to contribute? + +Awesome! You can get started over at the [Contributing guide][16]. + +Thank you! + +### License + +[The MIT License (MIT)][17] + +Copyright (c) 2014-2016 [js-data-mongodb project authors][18] + +[1]: http://slack.js-data.io/badge.svg +[2]: http://slack.js-data.io +[3]: https://img.shields.io/npm/v/js-data-mongodb.svg?style=flat +[4]: https://www.npmjs.org/package/js-data-mongodb +[5]: https://img.shields.io/circleci/project/js-data/js-data-mongodb.svg?style=flat +[6]: https://circleci.com/gh/js-data/js-data-mongodb +[7]: https://img.shields.io/npm/dm/js-data-mongodb.svg?style=flat +[8]: https://www.npmjs.org/package/js-data-mongodb +[9]: https://img.shields.io/codecov/c/github/js-data/js-data-mongodb.svg?style=flat +[10]: https://codecov.io/github/js-data/js-data-mongodb +[11]: http://www.js-data.io/ +[12]: http://www.js-data.io/v3.0/docs/js-data-mongodb +[13]: http://api.js-data.io/js-data-mongodb +[14]: http://stackoverflow.com/questions/tagged/jsdata +[15]: http://slack.js-data.io/ +[16]: https://github.com/js-data/js-data-mongodb/blob/master/.github/CONTRIBUTING.md +[17]: https://github.com/js-data/js-data-mongodb/blob/master/LICENSE +[18]: https://github.com/js-data/js-data-mongodb/blob/master/AUTHORS From 675d4404e4568d343a9ac7c43056df22b300ca63 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Tue, 20 Sep 2016 22:54:08 -0700 Subject: [PATCH 05/22] add semantic-release package publishing (#23) * docs(.github/): add comments on semantic-release to PR template .md * chore(build-steps): add semantic-release package and circle.yml configs for auto npm publish --- .github/PULL_REQUEST_TEMPLATE.md | 7 ++++++- circle.yml | 3 ++- package.json | 12 +++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 618e220..468731b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,9 @@ Fixes # (it's a good idea to open an issue first for discussion) +> Note: This project uses `semantic-release` to auto publish npm packages on successful builds. +The commit messages must follow AngularJS Commit Msg Conventions: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.uyo6cb12dt6w + +- [ ] - My commit messages follow AngularJS Commit Msg Conventions - [ ] - If applicable, appropriate JSDoc comments were updated in source code -- [ ] - If applicable, approprate changes to js-data.io docs have been suggested ("Suggest Edits" button) +- [ ] - If applicable, appropriate changes to js-data.io docs have been suggested ("Suggest Edits" button) +- [ ] - Unit test coverage did not decrease & appropriate tests changes made diff --git a/circle.yml b/circle.yml index 7df1a71..74c6d46 100644 --- a/circle.yml +++ b/circle.yml @@ -4,7 +4,7 @@ general: - gh-pages machine: node: - version: 5.7.0 + version: 6 dependencies: pre: - npm install -g npm @@ -13,3 +13,4 @@ dependencies: test: post: - nyc report --reporter=lcov | codecov + - npm run semantic-release || true diff --git a/package.json b/package.json index c19e8a1..557275d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "1.0.0-rc.1", + "version": "0.0.0-semantic-release", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", @@ -55,7 +55,11 @@ "mocha": "mocha -t 20000 -R dot -r babel-core/register -r babel-polyfill mocha.start.js", "cover": "nyc --require babel-core/register --require babel-polyfill --cache mocha -t 20000 -R dot mocha.start.js && nyc report --reporter=html", "test": "npm run build && npm run cover", - "release": "npm test && npm run doc && repo-tools updates && repo-tools changelog && repo-tools authors" + "release": "npm test && npm run doc && repo-tools updates && repo-tools changelog && repo-tools authors", + "semantic-release": "semantic-release pre && npm publish && semantic-release post" + }, + "release": { + "verifyConditions": "condition-circle" }, "dependencies": { "js-data-adapter": "~0.8.2", @@ -67,6 +71,8 @@ "mongodb": ">=1.3.x" }, "devDependencies": { - "js-data-repo-tools": "0.5.6" + "condition-circle": "^1.5.0", + "js-data-repo-tools": "0.5.6", + "semantic-release": "^4.3.5" } } From 9457953cfb951de5ddbef3ec4b061ab33cbcfc67 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Tue, 20 Sep 2016 23:34:08 -0700 Subject: [PATCH 06/22] Build process - semantic-release npm publish (#24) * docs(.github/): add comments on semantic-release to PR template .md * chore(build-steps): add semantic-release package and circle.yml configs for auto npm publish * test(coverage): add tests to increase coverage --- mocha.start.js | 1 + test/find.test.js | 34 ++++++++++++++++++++++++++++++++++ test/update.test.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 test/update.test.js diff --git a/mocha.start.js b/mocha.start.js index 4667152..11ea0d7 100644 --- a/mocha.start.js +++ b/mocha.start.js @@ -41,6 +41,7 @@ JSDataAdapterTests.init({ }) require('./test/find.test') +require('./test/update.test') describe('exports', function () { it('should have exports', function () { diff --git a/test/find.test.js b/test/find.test.js index 24f571a..f5404c3 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -58,4 +58,38 @@ describe('MongoDBAdapter#find', function () { assert.objectsEqual(user, { _id: id, bsonField: ObjectID.toString() }) }) }) + + it('should use orderBy array', function () { + var id + + return adapter.findAll(User, { + name: 'John' + }).then(function (users) { + assert.equal(users.length, 0) + return adapter.create(User, { _id: '1', name: 'John' }) + }).then(function (user) { + id = user._id + assert.equal(typeof id, 'string') + return adapter.findAll(User, {where: {id: id}, orderBy: ['name', 'asc']}) + }).then(function (userList) { + assert.objectsEqual(userList, [{ _id: id, name: 'John' }]) + }) + }) + + it('should use orderBy string', function () { + var id + + return adapter.findAll(User, { + name: 'John' + }).then(function (users) { + assert.equal(users.length, 0) + return adapter.create(User, { _id: '1', name: 'John' }) + }).then(function (user) { + id = user._id + assert.equal(typeof id, 'string') + return adapter.findAll(User, {where: {id: id}, orderBy: 'name'}) + }).then(function (userList) { + assert.objectsEqual(userList, [{ _id: id, name: 'John' }]) + }) + }) }) diff --git a/test/update.test.js b/test/update.test.js new file mode 100644 index 0000000..0c07dc7 --- /dev/null +++ b/test/update.test.js @@ -0,0 +1,28 @@ +describe('MongoDBAdapter#find', function () { + var adapter + + // create a record to test update against + before(function () { + var id + + this.$$adapter.findAll(this.$$User, { + name: 'John' + }).then(function (users) { + assert.equal(users.length, 0) + return this.$$adapter.create(this.$$User, {name: 'John'}) + }).then(function (user) { + id = user._id + return this.$$adapter.find(this.$$User, id.toString()) + }).then(function (user) { + assert.objectsEqual(user, {_id: id, name: 'John'}) + }) + }) + + beforeEach(function () { + adapter = this.$$adapter + }) + + it('should not support updateMany', function () { + return assert.throws(adapter.updateMany) + }) +}) From 1936fd8a9004b699f9443c04c1f0f8fb5636e612 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Tue, 20 Sep 2016 23:52:38 -0700 Subject: [PATCH 07/22] Build process (#25) * docs(.github/): add comments on semantic-release to PR template .md * chore(build-steps): add semantic-release package and circle.yml configs for auto npm publish * test(coverage): add tests to increase coverage * test(): add missed return stmt * fix(test): demo fix testing semantic-release --- README.md | 2 ++ test/update.test.js | 28 ++++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b968dc6..d3a3aa2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) js-data logo # js-data-mongodb diff --git a/test/update.test.js b/test/update.test.js index 0c07dc7..3bc42ea 100644 --- a/test/update.test.js +++ b/test/update.test.js @@ -3,23 +3,27 @@ describe('MongoDBAdapter#find', function () { // create a record to test update against before(function () { - var id + // var id - this.$$adapter.findAll(this.$$User, { - name: 'John' - }).then(function (users) { - assert.equal(users.length, 0) - return this.$$adapter.create(this.$$User, {name: 'John'}) - }).then(function (user) { - id = user._id - return this.$$adapter.find(this.$$User, id.toString()) - }).then(function (user) { - assert.objectsEqual(user, {_id: id, name: 'John'}) - }) + // adapter = this.$$adapter + // User = this.$$user + + // return adapter.findAll(User, { + // name: 'John' + // }).then(function (users) { + // assert.equal(users.length, 0) + // return adapter.create(User, {name: 'John'}) + // }).then(function (user) { + // id = user._id + // return adapter.find(User, id.toString()) + // }).then(function (user) { + // assert.objectsEqual(user, {_id: id, name: 'John'}) + // }) }) beforeEach(function () { adapter = this.$$adapter + // User = this.$$user }) it('should not support updateMany', function () { From de461ee24af1ee3b95bb83e66945e16114f50361 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Tue, 20 Sep 2016 23:57:56 -0700 Subject: [PATCH 08/22] Build process (#26) * docs(.github/): add comments on semantic-release to PR template .md * chore(build-steps): add semantic-release package and circle.yml configs for auto npm publish * test(coverage): add tests to increase coverage * test(): add missed return stmt * fix(test): demo fix testing semantic-release * chore(build): add release branch to the semantic-release config --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 557275d..ba55d1e 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "semantic-release": "semantic-release pre && npm publish && semantic-release post" }, "release": { - "verifyConditions": "condition-circle" + "verifyConditions": "condition-circle", + "branch": "realease" }, "dependencies": { "js-data-adapter": "~0.8.2", From 1213d5c9a820d8fe2adc5013b1851c6ade341b00 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Mon, 26 Sep 2016 20:19:19 -0700 Subject: [PATCH 09/22] Js docs (#28) * fix(test): demo fix testing semantic-release * test(update.test.js): comment out unused code * docs(): small docs changes * test(): add custom mongodb query test --- src/index.js | 7 +++++-- test/find.test.js | 9 +++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 8e890b2..50ede48 100644 --- a/src/index.js +++ b/src/index.js @@ -17,7 +17,9 @@ const DEFAULTS = { */ translateId: true, /** - * Convert fields of record from databse that are ObjectIDs to strings + * Convert fields of record from database that are ObjectIDs to strings + * + * @name MongoDBAdapter#translateObjectIDs * @type {Boolean} * @default false */ @@ -78,6 +80,7 @@ const REMOVE_OPTS_DEFAULTS = {} * @param {boolean} [opts.raw=false] See {@link Adapter#raw}. * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}. * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}. + * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}. * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}. * @param {string} [opts.uri="mongodb://localhost:27017"] See {@link MongoDBAdapter#uri}. */ @@ -172,7 +175,7 @@ export function MongoDBAdapter (opts) { utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS) /** - * Default options to pass to collection#update. + * Default options to pass to collection#destroy. * * @name MongoDBAdapter#removeOpts * @type {object} diff --git a/test/find.test.js b/test/find.test.js index f5404c3..c72d9cc 100644 --- a/test/find.test.js +++ b/test/find.test.js @@ -92,4 +92,13 @@ describe('MongoDBAdapter#find', function () { assert.objectsEqual(userList, [{ _id: id, name: 'John' }]) }) }) + + it('should allow use of node-mongodb-native via adapter.client', function () { + return adapter.client.then((db) => { + assert.ok(db.collection('user')) + }) + .catch((err) => { + throw new Error(err) + }) + }) }) From f6805aa417b2dee873c51182ee3b5f7650bfcd0e Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Wed, 19 Oct 2016 17:01:34 -0700 Subject: [PATCH 10/22] revert: remove build-process semantic-release (#31) --- .github/PULL_REQUEST_TEMPLATE.md | 4 ---- README.md | 1 - circle.yml | 1 - package.json | 13 +++---------- 4 files changed, 3 insertions(+), 16 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 468731b..8a76ba5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,9 +1,5 @@ Fixes # (it's a good idea to open an issue first for discussion) -> Note: This project uses `semantic-release` to auto publish npm packages on successful builds. -The commit messages must follow AngularJS Commit Msg Conventions: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.uyo6cb12dt6w - -- [ ] - My commit messages follow AngularJS Commit Msg Conventions - [ ] - If applicable, appropriate JSDoc comments were updated in source code - [ ] - If applicable, appropriate changes to js-data.io docs have been suggested ("Suggest Edits" button) - [ ] - Unit test coverage did not decrease & appropriate tests changes made diff --git a/README.md b/README.md index d3a3aa2..52274ec 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) js-data logo # js-data-mongodb diff --git a/circle.yml b/circle.yml index 74c6d46..109a5c8 100644 --- a/circle.yml +++ b/circle.yml @@ -13,4 +13,3 @@ dependencies: test: post: - nyc report --reporter=lcov | codecov - - npm run semantic-release || true diff --git a/package.json b/package.json index ba55d1e..c19e8a1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "0.0.0-semantic-release", + "version": "1.0.0-rc.1", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", @@ -55,12 +55,7 @@ "mocha": "mocha -t 20000 -R dot -r babel-core/register -r babel-polyfill mocha.start.js", "cover": "nyc --require babel-core/register --require babel-polyfill --cache mocha -t 20000 -R dot mocha.start.js && nyc report --reporter=html", "test": "npm run build && npm run cover", - "release": "npm test && npm run doc && repo-tools updates && repo-tools changelog && repo-tools authors", - "semantic-release": "semantic-release pre && npm publish && semantic-release post" - }, - "release": { - "verifyConditions": "condition-circle", - "branch": "realease" + "release": "npm test && npm run doc && repo-tools updates && repo-tools changelog && repo-tools authors" }, "dependencies": { "js-data-adapter": "~0.8.2", @@ -72,8 +67,6 @@ "mongodb": ">=1.3.x" }, "devDependencies": { - "condition-circle": "^1.5.0", - "js-data-repo-tools": "0.5.6", - "semantic-release": "^4.3.5" + "js-data-repo-tools": "0.5.6" } } From 4a1aadbe42bb1d05c7d94bedd71442c894378150 Mon Sep 17 00:00:00 2001 From: Cory Robinson Date: Tue, 23 May 2017 22:54:12 -0700 Subject: [PATCH 11/22] feat(): add adapter option mongoDriverOpts, add default option ignoreUndefined (#32) --- src/index.js | 15 +++++++++++-- test/update.test.js | 51 +++++++++++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/index.js b/src/index.js index 50ede48..7ffed98 100644 --- a/src/index.js +++ b/src/index.js @@ -32,7 +32,18 @@ const DEFAULTS = { * @type {string} * @default mongodb://localhost:27017 */ - uri: 'mongodb://localhost:27017' + uri: 'mongodb://localhost:27017', + + /** + * MongoDB Driver options + * + * @name MongoDBAdapter#mongoDriverOpts + * @type {object} + * @default { ignoreUndefined: true } + */ + mongoDriverOpts: { + ignoreUndefined: true + } } const COUNT_OPTS_DEFAULTS = {} @@ -185,7 +196,7 @@ export function MongoDBAdapter (opts) { utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS) this.client = new utils.Promise((resolve, reject) => { - MongoClient.connect(opts.uri, (err, db) => { + MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => { if (err) { return reject(err) } diff --git a/test/update.test.js b/test/update.test.js index 3bc42ea..d802916 100644 --- a/test/update.test.js +++ b/test/update.test.js @@ -1,26 +1,8 @@ +import * as JSData from 'js-data' + describe('MongoDBAdapter#find', function () { var adapter - // create a record to test update against - before(function () { - // var id - - // adapter = this.$$adapter - // User = this.$$user - - // return adapter.findAll(User, { - // name: 'John' - // }).then(function (users) { - // assert.equal(users.length, 0) - // return adapter.create(User, {name: 'John'}) - // }).then(function (user) { - // id = user._id - // return adapter.find(User, id.toString()) - // }).then(function (user) { - // assert.objectsEqual(user, {_id: id, name: 'John'}) - // }) - }) - beforeEach(function () { adapter = this.$$adapter // User = this.$$user @@ -29,4 +11,33 @@ describe('MongoDBAdapter#find', function () { it('should not support updateMany', function () { return assert.throws(adapter.updateMany) }) + + it('should ignore undefined when resource has schema', function () { + var id + + const schema = new JSData.Schema({ + 'type': 'object', + 'properties': { + 'name': { + 'type': 'string' + }, + 'b': { + 'type': 'string' + } + } + }) + const User = this.$$store.defineMapper('user', { schema: schema }) + + return adapter.findAll(User, { + name: 'John' + }).then(function (users) { + assert.equal(users.length, 0) + return adapter.create(User, {name: 'John'}) + }).then(function (user) { + id = user._id + return adapter.find(User, id.toString()) + }).then(function (user) { + assert.objectsEqual(user, {_id: id, name: 'John'}) + }) + }) }) From 0d0edac5df9efde843e00967e2439370d7c1e736 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 25 May 2017 06:59:25 -0700 Subject: [PATCH 12/22] Prepare for 1.0.0-rc.2 release. --- .babelrc | 9 + CONTRIBUTORS | 5 +- mocha.start.js | 2 +- package.json | 32 +- rollup.config.js | 14 +- yarn.lock | 4096 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 4141 insertions(+), 17 deletions(-) create mode 100644 .babelrc create mode 100644 yarn.lock diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..c3b590c --- /dev/null +++ b/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": [ + "es2015" + ], + "plugins": [ + "syntax-async-functions", + "transform-regenerator" + ] +} \ No newline at end of file diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2813981..f97d70e 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -4,5 +4,6 @@ # # Names should be added to this file as: # [commit count] Name - 26 Jason Dobry - 1 John Grogg + 9 Cory Robinson + 42 Jason Dobry + 1 John Grogg diff --git a/mocha.start.js b/mocha.start.js index 11ea0d7..8578f77 100644 --- a/mocha.start.js +++ b/mocha.start.js @@ -1,4 +1,4 @@ -/*global assert:true */ +/* global assert:true */ 'use strict' // prepare environment for js-data-adapter-tests diff --git a/package.json b/package.json index c19e8a1..df4d3c2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", @@ -41,16 +41,10 @@ "dist/" ] }, - "babel": { - "presets": [ - "es2015" - ] - }, "scripts": { - "lint": "repo-tools lint \"**/*.js\"", - "bundle": "rollup -c rollup.config.js -f cjs -o dist/js-data-mongodb.js -m dist/js-data-mongodb.js.map src/index.js && repo-tools write-version dist/js-data-mongodb.js", + "lint": "standard '**/*.js'", + "bundle": "rollup src/index.js -c -o dist/js-data-mongodb.js -m dist/js-data-mongodb.js.map -f cjs && repo-tools write-version dist/js-data-mongodb.js", "doc": "jsdoc -c conf.json src node_modules/js-data-adapter/src", - "watch": "watch \"npm run bundle\" src/", "build": "npm run lint && npm run bundle", "mocha": "mocha -t 20000 -R dot -r babel-core/register -r babel-polyfill mocha.start.js", "cover": "nyc --require babel-core/register --require babel-polyfill --cache mocha -t 20000 -R dot mocha.start.js && nyc report --reporter=html", @@ -63,10 +57,26 @@ }, "peerDependencies": { "bson": ">=0.3.x", - "js-data": "^3.0.0-rc.4", + "js-data": "^3.0.0-rc.9", "mongodb": ">=1.3.x" }, "devDependencies": { - "js-data-repo-tools": "0.5.6" + "babel-core": "6.24.1", + "babel-eslint": "7.2.3", + "babel-plugin-external-helpers": "6.22.0", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-plugin-transform-regenerator": "6.24.1", + "babel-polyfill": "6.23.0", + "babel-preset-es2015": "6.24.1", + "chai": "3.5.0", + "ink-docstrap": "git+https://github.com/js-data/docstrap.git#cfbe45fa313e1628c493076d5e15d2b855dfbf2c", + "js-data-repo-tools": "1.0.0", + "jsdoc": "3.4.3", + "mocha": "3.4.2", + "nyc": "10.3.2", + "rollup": "0.41.6", + "rollup-plugin-babel": "2.7.1", + "sinon": "2.3.1", + "standard": "10.0.2" } } diff --git a/rollup.config.js b/rollup.config.js index a41b2c5..c4da68f 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,6 +1,6 @@ -var babel = require('rollup-plugin-babel') +import babel from 'rollup-plugin-babel' -module.exports = { +export default { external: [ 'mongodb', 'bson', @@ -11,8 +11,16 @@ module.exports = { plugins: [ babel({ babelrc: false, + plugins: [ + 'external-helpers' + ], presets: [ - 'es2015-rollup' + [ + 'es2015', + { + modules: false + } + ] ], exclude: 'node_modules/**' }) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..963825b --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4096 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1, abbrev@~1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4, acorn@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + +ajv-keywords@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.7.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + +ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3, aproba@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +archy@^1.0.0, archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + +array-index@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-index/-/array-index-1.0.0.tgz#ec56a749ee103e4e08c790b9c353df16055b97f9" + dependencies: + debug "^2.2.0" + es6-symbol "^3.0.2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array.prototype.find@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@^2.0.0, asap@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assertion-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@6, babel-core@6.24.1, babel-core@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.24.1" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-eslint@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.1.1.tgz#8a6a884f085aa7060af69cfc77341c2f99370fb2" + dependencies: + babel-code-frame "^6.16.0" + babel-traverse "^6.15.0" + babel-types "^6.15.0" + babylon "^6.13.0" + lodash.pickby "^4.6.0" + +babel-eslint@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-generator@^6.18.0, babel-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-external-helpers@6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-regenerator@6.24.1, babel-plugin-transform-regenerator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-es2015@6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.16.0, babel-template@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.15.0, babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babylon "^6.15.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0: + version "6.17.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +bl@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" + dependencies: + readable-stream "~2.0.5" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.3, bluebird@~3.4.6: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +bson@>=0.3.x, bson@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.4.tgz#93c10d39eaa5b58415cbc4052f3e53e562b0b72c" + +buffer-shims@^1.0.0, buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtins@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +caching-transform@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" + dependencies: + md5-hex "^1.2.0" + mkdirp "^0.5.1" + write-file-atomic "^1.1.4" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +catharsis@~0.8.8: + version "0.8.8" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.8.tgz#693479f43aac549d806bd73e924cd0d944951a06" + dependencies: + underscore-contrib "~0.3.0" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@3.5.0, chai@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" + dependencies: + assertion-error "^1.0.1" + deep-eql "^0.1.3" + type-detect "^1.0.0" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chownr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +cint@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/cint/-/cint-8.2.1.tgz#70386b1b48e2773d0d63166a55aff94ef4456a12" + +circular-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +cmd-shim@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.9.0, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.4.6, concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@~1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +convert-source-map@^1.1.0, convert-source-map@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +debug-log@^1.0.0, debug-log@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + +debug@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.6.0, debug@^2.1.1, debug@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +debug@^2.6.3: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + +decamelize@^1.0.0, decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +deglob@^2.0.0, deglob@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a" + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +dezalgo@^1.0.0, dezalgo@^1.0.1, dezalgo@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + dependencies: + asap "^2.0.0" + wrappy "1" + +diff@3.2.0, diff@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + +doctrine@1.5.0, doctrine@^1.2.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + dependencies: + domelementtype "1" + +domutils@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +editor@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.21" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.21.tgz#19a725f9e51d0300bbc1e8e821109fd9daf55925" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.0.2, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-standard-jsx@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz#c240e26ed919a11a42aa4de8059472b38268d620" + +eslint-config-standard-jsx@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642" + +eslint-config-standard@10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" + +eslint-config-standard@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" + +eslint-import-resolver-node@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" + dependencies: + debug "^2.2.0" + object-assign "^4.0.1" + resolve "^1.1.6" + +eslint-module-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz#a6f8c21d901358759cdc35dbac1982ae1ee58bce" + dependencies: + debug "2.2.0" + pkg-dir "^1.0.0" + +eslint-plugin-import@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz#72ba306fad305d67c4816348a4699a4229ac8b4e" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.2.0" + doctrine "1.5.0" + eslint-import-resolver-node "^0.2.0" + eslint-module-utils "^2.0.0" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + pkg-up "^1.0.0" + +eslint-plugin-node@~4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-4.2.2.tgz#82959ca9aed79fcbd28bb1b188d05cac04fb3363" + dependencies: + ignore "^3.0.11" + minimatch "^3.0.2" + object-assign "^4.0.1" + resolve "^1.1.7" + semver "5.3.0" + +eslint-plugin-promise@~3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz#1be2793eafe2d18b5b123b8136c269f804fe7122" + +eslint-plugin-promise@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-react@~6.10.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" + dependencies: + array.prototype.find "^2.0.1" + doctrine "^1.2.2" + has "^1.0.1" + jsx-ast-utils "^1.3.4" + object.assign "^4.0.4" + +eslint-plugin-react@~6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.7.1.tgz#1af96aea545856825157d97c1b50d5a8fb64a5a7" + dependencies: + doctrine "^1.2.2" + jsx-ast-utils "^1.3.3" + +eslint-plugin-standard@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3" + +eslint-plugin-standard@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint@~3.10.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.10.2.tgz#c9a10e8bf6e9d65651204778c503341f1eac3ce7" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.4.6" + debug "^2.1.1" + doctrine "^1.2.2" + escope "^3.6.0" + espree "^3.3.1" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.2.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~1.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +eslint@~3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.3.1, espree@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" + dependencies: + acorn "^5.0.1" + acorn-jsx "^3.0.0" + +espree@~3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.1.7.tgz#fd5deec76a97a5120a9cd3a7cb1177a0923b11d2" + dependencies: + acorn "^3.3.0" + acorn-jsx "^3.0.0" + +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-diff@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.1.tgz#0aea0e4e605b6a2189f0e936d4b7fbaf1b7cfd9b" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-root@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" + +find-up@1.1.2, find-up@^1.0.0, find-up@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +foreground-child@^1.3.3, foreground-child@^1.5.3: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.11" + +formatio@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" + dependencies: + samsam "~1.1" + +formatio@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" + dependencies: + samsam "1.x" + +fs-vacuum@~1.2.9: + version "1.2.10" + resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + +fs-write-stream-atomic@~1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fstream-ignore@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream-npm@~1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/fstream-npm/-/fstream-npm-1.2.1.tgz#08c4a452f789dcbac4c89a4563c902b2c862fd5b" + dependencies: + fstream-ignore "^1.0.0" + inherits "2" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gauge@~2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gauge@~2.7.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0, globals@^9.14.0, globals@^9.2.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +handlebars@^4.0.3: + version "4.0.10" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0, has-unicode@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" + +htmlparser2@^3.9.0: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iferr@^0.1.5, iferr@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore@^3.0.11, ignore@^3.0.9, ignore@^3.2.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4, inflight@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.1, inherits@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +init-package-json@~1.9.4: + version "1.9.6" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.9.6.tgz#789fc2b74466a4952b9ea77c0575bc78ebd60a61" + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +"ink-docstrap@git+https://github.com/js-data/docstrap.git#cfbe45fa313e1628c493076d5e15d2b855dfbf2c": + version "1.1.4" + resolved "git+https://github.com/js-data/docstrap.git#cfbe45fa313e1628c493076d5e15d2b855dfbf2c" + dependencies: + moment "^2.13.0" + sanitize-html "^1.11.4" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-lib-coverage@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#caca19decaef3525b5d6331d701f3f3b7ad48528" + +istanbul-lib-hook@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.6.tgz#c0866d1e81cf2d5319249510131fc16dee49231f" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.1.tgz#169e31bc62c778851a99439dd99c3cc12184d360" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.13.0" + istanbul-lib-coverage "^1.1.0" + semver "^5.3.0" + +istanbul-lib-report@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.0.tgz#444c4ecca9afa93cf584f56b10f195bf768c0770" + dependencies: + istanbul-lib-coverage "^1.1.0" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.0.tgz#8c7706d497e26feeb6af3e0c28fd5b0669598d0e" + dependencies: + debug "^2.6.3" + istanbul-lib-coverage "^1.1.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.0.tgz#1ef3b795889219cfb5fad16365f6ce108d5f8c66" + dependencies: + handlebars "^4.0.3" + +jju@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.3.0.tgz#dadd9ef01924bc728b03f2f7979bdbd62f7a2aaa" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-data-adapter@~0.8.2: + version "0.8.3" + resolved "https://registry.yarnpkg.com/js-data-adapter/-/js-data-adapter-0.8.3.tgz#0ed7a0eac3003201a9958f00093bd0430168f7c3" + dependencies: + chai "^3.5.0" + mocha "^3.1.2" + sinon "^1.17.6" + +js-data-repo-tools@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/js-data-repo-tools/-/js-data-repo-tools-1.0.0.tgz#0c57831d288d93e1d320c939e2049d57e9e54951" + dependencies: + babel-eslint "7.1.1" + commander "2.9.0" + lodash "4.17.4" + npm-check-updates "2.8.9" + standard "8.6.0" + +js-data@^3.0.0-rc.9: + version "3.0.0-rc.9" + resolved "https://registry.yarnpkg.com/js-data/-/js-data-3.0.0-rc.9.tgz#d447382444416d66daef845f1916fd0280bb7590" + +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + +js-yaml@^3.5.1: + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +js2xmlparser@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-1.0.0.tgz#5a170f2e8d6476ce45405e04823242513782fe30" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsdoc@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.4.3.tgz#e5740d6145c681f6679e6c17783a88dbdd97ccd3" + dependencies: + bluebird "~3.4.6" + catharsis "~0.8.8" + escape-string-regexp "~1.0.5" + espree "~3.1.7" + js2xmlparser "~1.0.0" + klaw "~1.3.0" + marked "~0.3.6" + mkdirp "~0.5.1" + requizzle "~0.2.1" + strip-json-comments "~2.0.1" + taffydb "2.6.2" + underscore "~1.8.3" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-parse-helpfulerror@^1.0.2, json-parse-helpfulerror@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + dependencies: + jju "^1.1.0" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jsx-ast-utils@^1.3.3, jsx-ast-utils@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +klaw@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lockfile@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.clonedeep@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.pickby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + +lodash.union@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + +lodash.uniq@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash.without@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + +lodash@4.17.4, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.2.0, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lolex@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" + +lolex@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +marked@~0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +md5-hex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" + dependencies: + md5-o-matic "^0.1.1" + +md5-o-matic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + +merge-source-map@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf" + dependencies: + source-map "^0.5.3" + +micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-types@^2.1.11, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@3.4.2, mocha@^3.1.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.0" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + +moment@^2.13.0: + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + +mongodb-core@2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.11.tgz#1c38776ceb174997a99c28860eed9028da9b3e1a" + dependencies: + bson "~1.0.4" + require_optional "~1.0.0" + +mongodb@>=1.3.x: + version "2.2.27" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.27.tgz#34122034db66d983bcf6ab5adb26a24a70fef6e6" + dependencies: + es6-promise "3.2.1" + mongodb-core "2.1.11" + readable-stream "2.2.7" + +mout@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mout/-/mout-1.0.0.tgz#9bdf1d4af57d66d47cb353a6335a3281098e1501" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.5, mute-stream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +native-promise-only@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +node-alias@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/node-alias/-/node-alias-1.0.4.tgz#1f1b916b56b9ea241c0135f97ced6940f556f292" + dependencies: + chalk "^1.1.1" + lodash "^4.2.0" + +node-gyp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.4.0.tgz#dda558393b3ecbbe24c9e6b8703c71194c63fa36" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3" + osenv "0" + path-array "^1.0.0" + request "2" + rimraf "2" + semver "2.x || 3.x || 4 || 5" + tar "^2.0.0" + which "1" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +node-uuid@~1.4.7: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +"nopt@2 || 3", nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-git-url@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + 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" + +normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + +npm-check-updates@2.8.9: + version "2.8.9" + resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-2.8.9.tgz#c084b087a08ecf9292352e2cd591de903f8129c3" + dependencies: + bluebird "^3.4.3" + chalk "^1.1.3" + cint "^8.2.1" + cli-table "^0.3.1" + commander "^2.9.0" + fast-diff "^1.0.1" + find-up "1.1.2" + get-stdin "^5.0.1" + json-parse-helpfulerror "^1.0.3" + lodash "^4.15.0" + node-alias "^1.0.4" + npm "^3.10.6" + npmi "^2.0.1" + require-dir "^0.3.0" + semver "^5.3.0" + semver-utils "^1.1.1" + spawn-please "^0.2.0" + update-notifier "^1.0.2" + +npm-install-checks@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" + dependencies: + semver "^2.3.0 || 3.x || 4 || 5" + +"npm-package-arg@^3.0.0 || ^4.0.0", "npm-package-arg@^4.0.0 || ^5.0.0", npm-package-arg@^4.1.1, npm-package-arg@~4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" + dependencies: + hosted-git-info "^2.1.5" + semver "^5.1.0" + +npm-registry-client@~7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.2.1.tgz#c792266b088cc313f8525e7e35248626c723db75" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + optionalDependencies: + npmlog "~2.0.0 || ~3.1.0" + +npm-user-validate@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b" + +npm@^3, npm@^3.10.6: + version "3.10.10" + resolved "https://registry.yarnpkg.com/npm/-/npm-3.10.10.tgz#5b1d577e4c8869d6c8603bc89e9cd1637303e46e" + dependencies: + abbrev "~1.0.9" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + aproba "~1.0.4" + archy "~1.0.0" + asap "~2.0.5" + chownr "~1.0.1" + cmd-shim "~2.0.2" + columnify "~1.5.4" + config-chain "~1.1.11" + dezalgo "~1.0.3" + editor "~1.0.0" + fs-vacuum "~1.2.9" + fs-write-stream-atomic "~1.0.8" + fstream "~1.0.10" + fstream-npm "~1.2.0" + glob "~7.1.0" + graceful-fs "~4.1.9" + has-unicode "~2.0.1" + hosted-git-info "~2.1.5" + iferr "~0.1.5" + inflight "~1.0.5" + inherits "~2.0.3" + ini "~1.3.4" + init-package-json "~1.9.4" + lockfile "~1.0.2" + lodash._baseuniq "~4.6.0" + lodash.clonedeep "~4.5.0" + lodash.union "~4.6.0" + lodash.uniq "~4.5.0" + lodash.without "~4.4.0" + mkdirp "~0.5.1" + node-gyp "~3.4.0" + nopt "~3.0.6" + normalize-git-url "~3.0.2" + normalize-package-data "~2.3.5" + npm-cache-filename "~1.0.2" + npm-install-checks "~3.0.0" + npm-package-arg "~4.2.0" + npm-registry-client "~7.2.1" + npm-user-validate "~0.1.5" + npmlog "~4.0.0" + once "~1.4.0" + opener "~1.4.2" + osenv "~0.1.3" + path-is-inside "~1.0.2" + read "~1.0.7" + read-cmd-shim "~1.0.1" + read-installed "~4.0.3" + read-package-json "~2.0.4" + read-package-tree "~5.1.5" + readable-stream "~2.1.5" + realize-package-specifier "~3.0.3" + request "~2.75.0" + retry "~0.10.0" + rimraf "~2.5.4" + semver "~5.3.0" + sha "~2.0.1" + slide "~1.1.6" + sorted-object "~2.0.1" + strip-ansi "~3.0.1" + tar "~2.2.1" + text-table "~0.2.0" + uid-number "0.0.6" + umask "~1.1.0" + unique-filename "~1.1.0" + unpipe "~1.0.0" + validate-npm-package-name "~2.2.2" + which "~1.2.11" + wrappy "~1.0.2" + write-file-atomic "~1.2.0" + +npmi@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npmi/-/npmi-2.0.1.tgz#32607657e1bd47ca857ab4e9d98f0a0cff96bcea" + dependencies: + npm "^3" + semver "^4.1.0" + +"npmlog@0 || 1 || 2 || 3", "npmlog@~2.0.0 || ~3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.6.0" + set-blocking "~2.0.0" + +npmlog@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.1" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +nyc@10.3.2: + version "10.3.2" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.3.2.tgz#f27f4d91f2a9db36c24f574ff5c6efff0233de46" + dependencies: + archy "^1.0.0" + arrify "^1.0.1" + caching-transform "^1.0.0" + convert-source-map "^1.3.0" + debug-log "^1.0.1" + default-require-extensions "^1.0.0" + find-cache-dir "^0.1.1" + find-up "^1.1.2" + foreground-child "^1.5.3" + glob "^7.0.6" + istanbul-lib-coverage "^1.1.0" + istanbul-lib-hook "^1.0.6" + istanbul-lib-instrument "^1.7.1" + istanbul-lib-report "^1.1.0" + istanbul-lib-source-maps "^1.2.0" + istanbul-reports "^1.1.0" + md5-hex "^1.2.0" + merge-source-map "^1.0.2" + micromatch "^2.3.11" + mkdirp "^0.5.0" + resolve-from "^2.0.0" + rimraf "^2.5.4" + signal-exit "^3.0.1" + spawn-wrap "1.2.4" + test-exclude "^4.1.0" + yargs "^7.1.0" + yargs-parser "^5.0.0" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-keys@^1.0.10, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.assign@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + object-keys "^1.0.10" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@^1.3.0, once@^1.3.3, once@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +opener@~1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.0, osenv@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-array@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-array/-/path-array-1.0.1.tgz#7e2f0f35f07a2015122b868b7eac0eb2c4fec271" + dependencies: + array-index "^1.0.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-conf@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" + dependencies: + find-up "^2.0.0" + load-json-file "^2.0.0" + +pkg-config@^1.0.1, pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-up@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +private@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@~6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +rc@^1.0.1, rc@^1.1.6: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-cmd-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@~2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.5.tgz#f93a64e641529df68a08c64de46389e8a3f88845" + dependencies: + glob "^7.1.1" + json-parse-helpfulerror "^1.0.2" + normalize-package-data "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@~5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.1.5.tgz#ace7e6381c7684f970aaa98fc7c5d2b666addab6" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + once "^1.3.0" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read@1, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + 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" + +readable-stream@~2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + 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" + +readdir-scoped-modules@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +realize-package-specifier@~3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/realize-package-specifier/-/realize-package-specifier-3.0.3.tgz#d0def882952b8de3f67eba5e91199661271f41f4" + dependencies: + dezalgo "^1.0.1" + npm-package-arg "^4.1.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexp-quote@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/regexp-quote/-/regexp-quote-0.0.0.tgz#1e0f4650c862dcbfed54fd42b148e9bb1721fcf2" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2, request@^2.74.0, request@~2.75.0: + version "2.75.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + bl "~1.1.2" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.0.0" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.2.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + +require-dir@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.1.tgz#b5a8e28bae0343bb0d0cc38ab1f531e1931b264a" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +require_optional@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.0.tgz#52a86137a849728eb60a55533617f8f914f59abf" + dependencies: + resolve-from "^2.0.0" + semver "^5.1.0" + +requizzle@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde" + dependencies: + underscore "~1.6.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +retry@^0.10.0, retry@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +rollup-plugin-babel@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" + dependencies: + babel-core "6" + babel-plugin-transform-es2015-classes "^6.9.0" + object-assign "^4.1.0" + rollup-pluginutils "^1.5.0" + +rollup-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + +rollup@0.41.6: + version "0.41.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" + dependencies: + source-map-support "^0.4.0" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +run-parallel@^1.1.2: + version "1.1.6" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +samsam@1.1.2, samsam@~1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" + +samsam@1.x, samsam@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" + +sanitize-html@^1.11.4: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.14.1.tgz#730ffa2249bdf18333effe45b286173c9c5ad0b8" + dependencies: + htmlparser2 "^3.9.0" + regexp-quote "0.0.0" + xtend "^4.0.0" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.1.tgz#27d92fec34d27cfa42707d3b40d025ae9855f2df" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.3.0, "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +sha@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + dependencies: + graceful-fs "^4.1.2" + readable-stream "^2.0.2" + +shelljs@^0.7.5: + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564" + +signal-exit@^3.0.0, signal-exit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sinon@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.1.tgz#48c9c758b4d0bb86327486833f1c4298919ce9ee" + dependencies: + diff "^3.1.0" + formatio "1.2.0" + lolex "^1.6.0" + native-promise-only "^0.8.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" + +sinon@^1.17.6: + version "1.17.7" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" + dependencies: + formatio "1.1.1" + lolex "1.3.2" + samsam "1.1.2" + util ">=0.10.3 <1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.3, slide@^1.1.5, slide@~1.1.3, slide@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sorted-object@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + +source-map-support@^0.4.0, source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +spawn-please@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.2.0.tgz#bdd85991b80409f9c0dac709bc44a0a318a9760d" + +spawn-wrap@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40" + dependencies: + foreground-child "^1.3.3" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.3.3" + signal-exit "^2.0.0" + which "^1.2.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +standard-engine@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-5.2.0.tgz#400660ae5acce8afd4db60ff2214a9190ad790a3" + dependencies: + deglob "^2.0.0" + find-root "^1.0.0" + get-stdin "^5.0.1" + home-or-tmp "^2.0.0" + minimist "^1.1.0" + pkg-config "^1.0.1" + +standard-engine@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-7.0.0.tgz#ebb77b9c8fc2c8165ffa353bd91ba0dff41af690" + dependencies: + deglob "^2.1.0" + get-stdin "^5.0.1" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +standard@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/standard/-/standard-10.0.2.tgz#974c1c53cc865b075a4b576e78441e1695daaf7b" + dependencies: + eslint "~3.19.0" + eslint-config-standard "10.2.1" + eslint-config-standard-jsx "4.0.1" + eslint-plugin-import "~2.2.0" + eslint-plugin-node "~4.2.2" + eslint-plugin-promise "~3.5.0" + eslint-plugin-react "~6.10.0" + eslint-plugin-standard "~3.0.1" + standard-engine "~7.0.0" + +standard@8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/standard/-/standard-8.6.0.tgz#635132be7bfb567c2921005f30f9e350e4752aad" + dependencies: + eslint "~3.10.2" + eslint-config-standard "6.2.1" + eslint-config-standard-jsx "3.2.0" + eslint-plugin-promise "~3.4.0" + eslint-plugin-react "~6.7.1" + eslint-plugin-standard "~2.0.1" + standard-engine "~5.2.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" + dependencies: + safe-buffer "^5.0.1" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-json-comments@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@3.1.2, supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +taffydb@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" + +tar@^2.0.0, tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +test-exclude@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.0.tgz#04ca70b7390dd38c98d4a003a173806ca7991c91" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +text-encoding@0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +to-fast-properties@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +type-detect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" + +type-detect@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.6: + version "2.8.27" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.27.tgz#47787f912b0f242e5b984343be8e35e95f694c9c" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +umask@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + +underscore-contrib@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7" + dependencies: + underscore "1.6.0" + +underscore@1.6.0, underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +underscore@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +unique-filename@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + +"util@>=0.10.3 <1": + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + +validate-npm-package-name@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-2.2.2.tgz#f65695b22f7324442019a3c7fa39a6e7fd299085" + dependencies: + builtins "0.0.7" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@1, which@^1.2.4, which@^1.2.9, which@~1.2.11: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1, wrappy@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.2, write-file-atomic@^1.1.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-file-atomic@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.2.0.tgz#14c66d4e4cb3ca0565c28cf3b7a6f3e4d5938fab" + dependencies: + graceful-fs "^4.1.2" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xtend@^4.0.0, xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From 58634f91fe78d93ca9ab06827fcd4a3a2676eec2 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 25 May 2017 07:00:49 -0700 Subject: [PATCH 13/22] 1.0.0-rc.2 --- dist/js-data-mongodb.js | 46 +++++++++++++++++++------------------ dist/js-data-mongodb.js.map | 2 +- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/dist/js-data-mongodb.js b/dist/js-data-mongodb.js index c655654..f1ee1bd 100644 --- a/dist/js-data-mongodb.js +++ b/dist/js-data-mongodb.js @@ -10,12 +10,6 @@ var jsData = require('js-data'); var jsDataAdapter = require('js-data-adapter'); var underscore = _interopDefault(require('mout/string/underscore')); -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; -} : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; -}; - var defineProperty = function (obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { @@ -41,7 +35,9 @@ var DEFAULTS = { */ translateId: true, /** - * Convert fields of record from databse that are ObjectIDs to strings + * Convert fields of record from database that are ObjectIDs to strings + * + * @name MongoDBAdapter#translateObjectIDs * @type {Boolean} * @default false */ @@ -54,7 +50,18 @@ var DEFAULTS = { * @type {string} * @default mongodb://localhost:27017 */ - uri: 'mongodb://localhost:27017' + uri: 'mongodb://localhost:27017', + + /** + * MongoDB Driver options + * + * @name MongoDBAdapter#mongoDriverOpts + * @type {object} + * @default { ignoreUndefined: true } + */ + mongoDriverOpts: { + ignoreUndefined: true + } }; var COUNT_OPTS_DEFAULTS = {}; @@ -102,6 +109,7 @@ var REMOVE_OPTS_DEFAULTS = {}; * @param {boolean} [opts.raw=false] See {@link Adapter#raw}. * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}. * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}. + * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}. * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}. * @param {string} [opts.uri="mongodb://localhost:27017"] See {@link MongoDBAdapter#uri}. */ @@ -198,7 +206,7 @@ function MongoDBAdapter(opts) { jsData.utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS); /** - * Default options to pass to collection#update. + * Default options to pass to collection#destroy. * * @name MongoDBAdapter#removeOpts * @type {object} @@ -208,7 +216,7 @@ function MongoDBAdapter(opts) { jsData.utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS); this.client = new jsData.utils.Promise(function (resolve, reject) { - mongodb.MongoClient.connect(opts.uri, function (err, db) { + mongodb.MongoClient.connect(opts.uri, opts.mongoDriverOpts, function (err, db) { if (err) { return reject(err); } @@ -636,17 +644,11 @@ jsDataAdapter.Adapter.extend({ if (jsData.utils.isString(opts.fields)) { opts.fields = defineProperty({}, opts.fields, 1); } else if (jsData.utils.isArray(opts.fields)) { - var _ret = function () { - var fields = {}; - opts.fields.forEach(function (field) { - fields[field] = 1; - }); - return { - v: fields - }; - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + var fields = {}; + opts.fields.forEach(function (field) { + fields[field] = 1; + }); + return fields; } return opts.fields; }, @@ -1052,7 +1054,7 @@ jsDataAdapter.Adapter.extend({ * otherwise `false` if the current version is not beta. */ var version = { - full: '1.0.0-rc.1', + full: '1.0.0-rc.2', major: 1, minor: 0, patch: 0 diff --git a/dist/js-data-mongodb.js.map b/dist/js-data-mongodb.js.map index bc0199a..bc193c4 100644 --- a/dist/js-data-mongodb.js.map +++ b/dist/js-data-mongodb.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport underscore from 'mout/string/underscore'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from databse that are ObjectIDs to strings\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017'\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import {Container} from 'js-data'\n * import MongoDBAdapter from 'js-data-mongodb'\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * })\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter()\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true })\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user')\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || underscore(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import {version} from 'js-data-mongodb'\n * console.log(version.full)\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb@rc js-data@rc mongodb bson\n *\n * @example Load via CommonJS\n * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter\n * var adapter = new MongoDBAdapter()\n *\n * @example Load via ES2015 Modules\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @module js-data-mongodb\n */\n\n /**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'\n * const JSDataMongoDB = require('js-data-mongodb')\n * const { MongoDBAdapter } = JSDataMongoDB\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full)\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar' }\n * static beep () { return 'boop' }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass()\n * console.log(customMongoDBAdapter.foo())\n * console.log(CustomMongoDBAdapterClass.beep())\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass()\n * console.log(otherMongoDBAdapter.foo())\n * console.log(OtherMongoDBAdapterClass.beep())\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this)\n * this.created_at = new Date().getTime()\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass()\n * console.log(anotherMongoDBAdapter.created_at)\n * console.log(anotherMongoDBAdapter.foo())\n * console.log(AnotherMongoDBAdapterClass.beep())\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["utils","Adapter","reserved","ObjectID"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"js-data-mongodb.js","sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport underscore from 'mout/string/underscore'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from database that are ObjectIDs to strings\n *\n * @name MongoDBAdapter#translateObjectIDs\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017',\n\n /**\n * MongoDB Driver options\n *\n * @name MongoDBAdapter#mongoDriverOpts\n * @type {object}\n * @default { ignoreUndefined: true }\n */\n mongoDriverOpts: {\n ignoreUndefined: true\n }\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import {Container} from 'js-data'\n * import MongoDBAdapter from 'js-data-mongodb'\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * })\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter()\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true })\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user')\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#destroy.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || underscore(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import {version} from 'js-data-mongodb'\n * console.log(version.full)\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb@rc js-data@rc mongodb bson\n *\n * @example Load via CommonJS\n * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter\n * var adapter = new MongoDBAdapter()\n *\n * @example Load via ES2015 Modules\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @module js-data-mongodb\n */\n\n /**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'\n * const JSDataMongoDB = require('js-data-mongodb')\n * const { MongoDBAdapter } = JSDataMongoDB\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full)\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar' }\n * static beep () { return 'boop' }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass()\n * console.log(customMongoDBAdapter.foo())\n * console.log(CustomMongoDBAdapterClass.beep())\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass()\n * console.log(otherMongoDBAdapter.foo())\n * console.log(OtherMongoDBAdapterClass.beep())\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this)\n * this.created_at = new Date().getTime()\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass()\n * console.log(anotherMongoDBAdapter.created_at)\n * console.log(anotherMongoDBAdapter.foo())\n * console.log(AnotherMongoDBAdapterClass.beep())\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["DEFAULTS","COUNT_OPTS_DEFAULTS","FIND_OPTS_DEFAULTS","FIND_ONE_OPTS_DEFAULTS","INSERT_OPTS_DEFAULTS","INSERT_MANY_OPTS_DEFAULTS","UPDATE_OPTS_DEFAULTS","REMOVE_OPTS_DEFAULTS","MongoDBAdapter","opts","classCallCheck","utils","isString","uri","fillIn","defineProperties","undefined","call","countOpts","findOpts","findOneOpts","insertOpts","insertManyOpts","updateOpts","removeOpts","client","Promise","resolve","reject","connect","mongoDriverOpts","err","db","_db","Adapter","extend","r","getOpt","_translateFieldObjectIDs","_translateId","isArray","forEach","_r","__id","_id","toString","isObject","_checkFields","field","_bsontype","mapper","query","_run","success","failure","collectionId","_getCollectionId","getQueryOptions","mongoQuery","getQuery","collection","count","props","handler","cursor","plainCopy","insertOne","insert","then","record","ops","_translateObjectIDs","connection","insertMany","records","id","idAttribute","toObjectID","deleteOne","remove","deleteMany","with","fields","_getFields","findOne","find","toArray","table","underscore","name","cb","getClient","_find","raw","result","Error","updateOne","$set","update","ids","_findAll","multi","queryOptions","map","updateMany","where","forOwn","config","keyword","reserved","indexOf","Object","keys","length","criteria","v","op","$ne","$gt","$gte","$lt","$lte","$in","$nin","$or","orEqQuery","push","orNeQuery","orGtQuery","orGteQuery","orLtQuery","orLteQuery","orInQuery","orNinQuery","orderBy","sort","skip","offset","i","limit","ObjectID","isValid","def","getRelation","prototype","makeBelongsToForeignKey","relatedMapper","localKeys","makeHasManyLocalKeys","key","version"],"mappings":"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"} \ No newline at end of file From 9b824e76fc64202756b08e2dddf47b14f868d414 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 21:46:52 -0700 Subject: [PATCH 14/22] 1.0.0 --- CHANGELOG.md | 4 + CONTRIBUTORS | 2 +- LICENSE | 2 +- README.md | 24 +- circle.yml | 25 +- conf.json | 2 +- package-lock.json | 7373 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 35 +- src/index.js | 6 +- yarn.lock | 668 ++-- 10 files changed, 7878 insertions(+), 263 deletions(-) create mode 100644 package-lock.json diff --git a/CHANGELOG.md b/CHANGELOG.md index fa582ca..b798849 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +##### 1.0.0 - 17 August 2017 + +Stable 1.0.0 release + ##### 1.0.0-rc.1 - 23 August 2016 ###### Backwards compatible changes diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f97d70e..4787cf8 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -5,5 +5,5 @@ # Names should be added to this file as: # [commit count] Name 9 Cory Robinson - 42 Jason Dobry + 43 Jason Dobry 1 John Grogg diff --git a/LICENSE b/LICENSE index cbb516e..f6afefe 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2016 js-data-mongodb project authors +Copyright (c) 2014-2017 js-data-mongodb project authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 52274ec..aa39e1e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,27 @@ A MongoDB adapter for the [JSData Node.js ORM][11]. -### Just getting started? +### Installation + + npm install --save js-data js-data-mongodb bson mongodb + +### Usage + +```js +import { MongoDBAdapter } from 'js-data-mongodb'; + +// Create an instance of MongoDBAdapter +const adapter = new MongoDBAdapter({ + uri: 'mongodb://localhost:27017' +}); + +// Other JSData setup hidden + +// Register the adapter instance +store.registerAdapter('mongodb', adapter, { default: true }); +``` + +### JSData + MongoDB Tutorial Start with the [JSData + MongoDB tutorial][12] or checkout the [API Reference Documentation][13]. @@ -33,7 +53,7 @@ Thank you! [The MIT License (MIT)][17] -Copyright (c) 2014-2016 [js-data-mongodb project authors][18] +Copyright (c) 2014-2017 [js-data-mongodb project authors][18] [1]: http://slack.js-data.io/badge.svg [2]: http://slack.js-data.io diff --git a/circle.yml b/circle.yml index 109a5c8..ea53167 100644 --- a/circle.yml +++ b/circle.yml @@ -1,15 +1,26 @@ +# Adjust the behavior of the virtual machine (VM) +machine: + node: + version: 6.11.2 + +# Use for broader build-related configuration general: branches: ignore: - gh-pages -machine: - node: - version: 6 + +# Install your project's language-specific dependencies dependencies: pre: - - npm install -g npm - - npm install -g codecov nyc - - npm install js-data@^3.0.0-rc.4 mongodb bson@^0.4.x + - yarn global add nyc codecov + override: + - yarn + cache_directories: + - ~/.cache/yarn + +# Run your tests test: + override: + - yarn test post: - - nyc report --reporter=lcov | codecov + - nyc report --reporter=lcov > coverage.lcov && codecov diff --git a/conf.json b/conf.json index a3bce71..4d4edca 100644 --- a/conf.json +++ b/conf.json @@ -14,7 +14,7 @@ "templates": { "theme": "jsdata", "systemName": "js-data-mongodb", - "copyright": "js-data-mongodb Copyright © 2014-2016 js-data-mongodb project authors", + "copyright": "js-data-mongodb Copyright © 2014-2017 js-data-mongodb project authors", "outputSourceFiles": true, "linenums": true, "footer": "", diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7275330 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7373 @@ +{ + "name": "js-data-mongodb", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array.prototype.find": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", + "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.8.0" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "lodash": "4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "6.26.0", + "babel-helper-function-name": "6.24.1", + "babel-helper-optimise-call-expression": "6.24.1", + "babel-helper-replace-supers": "6.24.1", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "6.24.1", + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "6.24.1", + "babel-helper-get-function-arity": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "6.26.0", + "babel-runtime": "6.26.0", + "regexpu-core": "2.0.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "0.10.1" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", + "babel-plugin-transform-es2015-block-scoping": "6.26.0", + "babel-plugin-transform-es2015-classes": "6.24.1", + "babel-plugin-transform-es2015-computed-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", + "babel-plugin-transform-es2015-for-of": "6.23.0", + "babel-plugin-transform-es2015-function-name": "6.24.1", + "babel-plugin-transform-es2015-literals": "6.22.0", + "babel-plugin-transform-es2015-modules-amd": "6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", + "babel-plugin-transform-es2015-modules-umd": "6.24.1", + "babel-plugin-transform-es2015-object-super": "6.24.1", + "babel-plugin-transform-es2015-parameters": "6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", + "babel-plugin-transform-es2015-spread": "6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "6.24.1", + "babel-plugin-transform-es2015-template-literals": "6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.0", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.16" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.0", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "dev": true, + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" + }, + "bson": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", + "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, + "chai": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", + "integrity": "sha1-ZuISeebzxkFf+CMYeCJ5AOIXGzk=", + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "2.0.2", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "cint": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz", + "integrity": "sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.2.7", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "dev": true, + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "core-js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", + "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", + "dev": true + }, + "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=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.27" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "dev": true + }, + "deep-eql": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", + "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", + "requires": { + "type-detect": "3.0.0" + }, + "dependencies": { + "type-detect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", + "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=" + } + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "deglob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", + "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", + "dev": true, + "requires": { + "find-root": "1.1.0", + "glob": "7.1.1", + "ignore": "3.3.3", + "pkg-config": "1.1.1", + "run-parallel": "1.1.6", + "uniq": "1.0.1" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "2.2.7" + } + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.0.tgz", + "integrity": "sha512-Cf9/h5MrXtExM20gSS55YFrGKCyPrRBjIVBtVyy8vmlsDfe0NPKMWj65tPLgzyfPuapWxh5whpXCtW4+AW5mRg==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.0", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.27", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.27.tgz", + "integrity": "sha512-3KXJRYzKXTd7xfFy5uZsJCXue55fAYQ035PRjyYk2PicllxIwcW9l3AbM/eGaw3vgVAUW4tl4xg9AXDEI6yw0w==", + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "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=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.10.2.tgz", + "integrity": "sha1-yaEOi/bp1lZRIEd4xQM0Hx6sPOc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "1.5.0", + "escope": "3.6.0", + "espree": "3.5.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.1", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.9.1", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "1.0.4", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "eslint-config-standard": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz", + "integrity": "sha1-06aKr8cZFjnn7kQec0hzkCY1QpI=", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz", + "integrity": "sha1-wkDibtkZoRpCqk3oBZRys4Jo1iA=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", + "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "dev": true, + "requires": { + "debug": "2.6.8", + "object-assign": "4.1.1", + "resolve": "1.4.0" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.8", + "pkg-dir": "1.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", + "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.2.3", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "pkg-up": "1.0.0" + } + }, + "eslint-plugin-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz", + "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==", + "dev": true, + "requires": { + "ignore": "3.3.3", + "minimatch": "3.0.4", + "object-assign": "4.1.1", + "resolve": "1.4.0", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz", + "integrity": "sha1-G+J5Pq/i0YtbEjuBNsJp+AT+cSI=", + "dev": true + }, + "eslint-plugin-react": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.7.1.tgz", + "integrity": "sha1-Gvlq6lRYVoJRV9l8G1DVqPtkpac=", + "dev": true, + "requires": { + "doctrine": "1.5.0", + "jsx-ast-utils": "1.4.1" + } + }, + "eslint-plugin-standard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz", + "integrity": "sha1-NYlpn/nJF/LCX3apFmh/ZBw2n/M=", + "dev": true + }, + "espree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", + "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "dev": true, + "requires": { + "acorn": "5.1.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.27" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "fast-diff": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", + "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } + }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", + "dev": true + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "requires": { + "samsam": "1.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "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" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.2.7", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.2.7" + } + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "ink-docstrap": { + "version": "git+https://github.com/js-data/docstrap.git#cfbe45fa313e1628c493076d5e15d2b855dfbf2c", + "dev": true, + "requires": { + "moment": "2.18.1", + "sanitize-html": "1.14.1" + } + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.1.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "jju": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz", + "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", + "dev": true + }, + "js-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js-data/-/js-data-3.0.0.tgz", + "integrity": "sha512-iMS5IoBib9p92+5Q9uEbbwd6GFCP6bY2HJL8cAGqY3X8si48s98gI2kT88JlqtlwvaHHkrONnZSwkvRQ9yYGJw==" + }, + "js-data-adapter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-data-adapter/-/js-data-adapter-1.0.0.tgz", + "integrity": "sha512-UsDk1Iz2R0JCzdHIIp2PdQurfG/6/V7o5nBS/GpDWZcHWkbSoX/zS8RCuaQ1Chq/fZIyOsRTU2u1lJGbnBbuGQ==", + "requires": { + "chai": "4.1.1", + "js-data": "3.0.0", + "mocha": "3.5.0", + "sinon": "2.4.1" + }, + "dependencies": { + "sinon": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", + "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + } + } + } + }, + "js-data-repo-tools": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-data-repo-tools/-/js-data-repo-tools-1.0.0.tgz", + "integrity": "sha1-DFeDHSiNk+HTIMk54gSdV+nlSVE=", + "dev": true, + "requires": { + "babel-eslint": "7.1.1", + "commander": "2.9.0", + "lodash": "4.17.4", + "npm-check-updates": "2.8.9", + "standard": "8.6.0" + }, + "dependencies": { + "babel-eslint": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.1.1.tgz", + "integrity": "sha1-imqITwhapwYK9pz8dzQcL5k3D7I=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash.pickby": "4.6.0" + } + }, + "standard": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/standard/-/standard-8.6.0.tgz", + "integrity": "sha1-Y1Eyvnv7VnwpIQBfMPnjUOR1Kq0=", + "dev": true, + "requires": { + "eslint": "3.10.2", + "eslint-config-standard": "6.2.1", + "eslint-config-standard-jsx": "3.2.0", + "eslint-plugin-promise": "3.4.2", + "eslint-plugin-react": "6.7.1", + "eslint-plugin-standard": "2.0.1", + "standard-engine": "5.2.0" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", + "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "1.0.2" + } + }, + "jsdoc": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.4.tgz", + "integrity": "sha512-VmTw0J+2L16IxAe0JSDSAcH0F+DbZxaj8wN1AjHtKMQU/hO0ciIl5ZE93XqrrFIbknobuqHKJCXZj6+Hk57MjA==", + "dev": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "3.5.0", + "catharsis": "0.8.9", + "escape-string-regexp": "1.0.5", + "js2xmlparser": "3.0.0", + "klaw": "2.0.0", + "marked": "0.3.6", + "mkdirp": "0.5.1", + "requizzle": "0.2.1", + "strip-json-comments": "2.0.1", + "taffydb": "2.6.2", + "underscore": "1.8.3" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "dev": true, + "requires": { + "jju": "1.3.0" + } + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "dev": true + }, + "just-extend": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.22.tgz", + "integrity": "sha1-MzCvdWyralQnAMZLLk5KoGLVL/8=", + "dev": true + }, + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "dev": true, + "requires": { + "package-json": "2.4.0" + } + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=" + }, + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=" + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "marked": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", + "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=", + "dev": true + }, + "mongodb": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.31.tgz", + "integrity": "sha1-GUBEXGYeGSF7s7+CRdmFSq71SNs=", + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.15", + "readable-stream": "2.2.7" + } + }, + "mongodb-core": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.15.tgz", + "integrity": "sha1-hB9TuH//9MdFgYnDXIroJ+EWl2Q=", + "requires": { + "bson": "1.0.4", + "require_optional": "1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.0.1.tgz", + "integrity": "sha1-DakrEKhU6XwPSW9sKEWjASgLPu8=", + "dev": true, + "requires": { + "formatio": "1.2.0", + "just-extend": "1.1.22", + "lolex": "1.6.0", + "path-to-regexp": "1.7.0" + } + }, + "node-alias": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-alias/-/node-alias-1.0.4.tgz", + "integrity": "sha1-HxuRa1a56iQcATX5fO1pQPVW8pI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "lodash": "4.17.4" + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, + "npm": { + "version": "3.10.10", + "resolved": "https://registry.npmjs.org/npm/-/npm-3.10.10.tgz", + "integrity": "sha1-Wx1XfkyIadbIYDvInpzRY3MD5G4=", + "dev": true, + "requires": { + "abbrev": "1.0.9", + "ansi-regex": "2.0.0", + "ansicolors": "0.3.2", + "ansistyles": "0.1.3", + "aproba": "1.0.4", + "archy": "1.0.0", + "asap": "2.0.5", + "chownr": "1.0.1", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "config-chain": "1.1.11", + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "editor": "1.0.0", + "fs-vacuum": "1.2.9", + "fs-write-stream-atomic": "1.0.8", + "fstream": "1.0.10", + "fstream-npm": "1.2.0", + "glob": "7.1.0", + "graceful-fs": "4.1.9", + "has-unicode": "2.0.1", + "hosted-git-info": "2.1.5", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "inflight": "1.0.5", + "inherits": "2.0.3", + "ini": "1.3.4", + "init-package-json": "1.9.4", + "lockfile": "1.0.2", + "lodash._baseindexof": "3.1.0", + "lodash._baseuniq": "4.6.0", + "lodash._bindcallback": "3.0.1", + "lodash._cacheindexof": "3.0.2", + "lodash._createcache": "3.1.2", + "lodash._getnative": "3.9.1", + "lodash.clonedeep": "4.5.0", + "lodash.restparam": "3.6.1", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "lodash.without": "4.4.0", + "mkdirp": "0.5.1", + "node-gyp": "3.4.0", + "nopt": "3.0.6", + "normalize-git-url": "3.0.2", + "normalize-package-data": "2.3.5", + "npm-cache-filename": "1.0.2", + "npm-install-checks": "3.0.0", + "npm-package-arg": "4.2.0", + "npm-registry-client": "7.2.1", + "npm-user-validate": "0.1.5", + "npmlog": "4.0.0", + "once": "1.4.0", + "opener": "1.4.2", + "osenv": "0.1.3", + "path-is-inside": "1.0.2", + "read": "1.0.7", + "read-cmd-shim": "1.0.1", + "read-installed": "4.0.3", + "read-package-json": "2.0.4", + "read-package-tree": "5.1.5", + "readable-stream": "2.1.5", + "readdir-scoped-modules": "1.0.2", + "realize-package-specifier": "3.0.3", + "request": "2.75.0", + "retry": "0.10.0", + "rimraf": "2.5.4", + "semver": "5.3.0", + "sha": "2.0.1", + "slide": "1.1.6", + "sorted-object": "2.0.1", + "strip-ansi": "3.0.1", + "tar": "2.2.1", + "text-table": "0.2.0", + "uid-number": "0.0.6", + "umask": "1.1.0", + "unique-filename": "1.1.0", + "unpipe": "1.0.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "2.2.2", + "which": "1.2.11", + "wrappy": "1.0.2", + "write-file-atomic": "1.2.0" + }, + "dependencies": { + "abbrev": { + "version": "1.0.9", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asap": { + "version": "2.0.5", + "bundled": true, + "dev": true + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "mkdirp": "0.5.1" + } + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.0" + }, + "dependencies": { + "wcwidth": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "defaults": "1.0.3" + }, + "dependencies": { + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + } + } + } + } + }, + "config-chain": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "ini": "1.3.4", + "proto-list": "1.2.4" + }, + "dependencies": { + "proto-list": { + "version": "1.2.4", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "2.0.5", + "wrappy": "1.0.2" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fs-vacuum": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "path-is-inside": "1.0.2", + "rimraf": "2.5.4" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.8", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.1.5" + } + }, + "fstream": { + "version": "1.0.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.5.4" + } + }, + "fstream-npm": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "fstream-ignore": "1.0.5", + "inherits": "2.0.3" + }, + "dependencies": { + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "fstream": "1.0.10", + "inherits": "2.0.3", + "minimatch": "3.0.3" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + } + } + } + } + } + } + } + } + }, + "glob": { + "version": "7.1.0", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.9", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.1.5", + "bundled": true, + "dev": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "1.9.4", + "bundled": true, + "dev": true, + "requires": { + "glob": "6.0.4", + "npm-package-arg": "4.2.0", + "promzard": "0.3.0", + "read": "1.0.7", + "read-package-json": "2.0.4", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1", + "validate-npm-package-name": "2.2.2" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "bundled": true, + "dev": true, + "requires": { + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "read": "1.0.7" + } + } + } + }, + "lockfile": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "requires": { + "lodash._createset": "4.0.3", + "lodash._root": "3.0.1" + }, + "dependencies": { + "lodash._createset": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true, + "dev": true + } + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "lodash._getnative": "3.9.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true, + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true, + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + } + } + }, + "node-gyp": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "requires": { + "fstream": "1.0.10", + "glob": "7.1.0", + "graceful-fs": "4.1.9", + "minimatch": "3.0.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "3.1.2", + "osenv": "0.1.3", + "path-array": "1.0.1", + "request": "2.75.0", + "rimraf": "2.5.4", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.11" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + } + } + } + } + }, + "npmlog": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "1.1.2", + "console-control-strings": "1.1.0", + "gauge": "2.6.0", + "set-blocking": "2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.1.5" + }, + "dependencies": { + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "2.6.0", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.0.4", + "console-control-strings": "1.1.0", + "has-color": "0.1.7", + "has-unicode": "2.0.1", + "object-assign": "4.1.0", + "signal-exit": "3.0.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.0" + }, + "dependencies": { + "has-color": { + "version": "0.1.7", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.0.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "path-array": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "array-index": "1.0.0" + }, + "dependencies": { + "array-index": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.2.0", + "es6-symbol": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "bundled": true, + "dev": true + } + } + }, + "es6-symbol": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.12" + }, + "dependencies": { + "d": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "es5-ext": "0.10.12" + } + }, + "es5-ext": { + "version": "0.10.12", + "bundled": true, + "dev": true, + "requires": { + "es6-iterator": "2.0.0", + "es6-symbol": "3.1.0" + }, + "dependencies": { + "es6-iterator": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.12", + "es6-symbol": "3.1.0" + } + } + } + } + } + } + } + } + } + } + } + }, + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1.0.9" + } + }, + "normalize-git-url": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.1.5", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + }, + "dependencies": { + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + }, + "dependencies": { + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + } + } + } + } + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "npm-install-checks": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "5.3.0" + } + }, + "npm-package-arg": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.1.5", + "semver": "5.3.0" + } + }, + "npm-registry-client": { + "version": "7.2.1", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "1.5.2", + "graceful-fs": "4.1.9", + "normalize-package-data": "2.3.5", + "npm-package-arg": "4.2.0", + "npmlog": "3.1.2", + "once": "1.4.0", + "request": "2.75.0", + "retry": "0.10.0", + "semver": "5.3.0", + "slide": "1.1.6" + }, + "dependencies": { + "concat-stream": { + "version": "1.5.2", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "typedarray": { + "version": "0.0.6", + "bundled": true, + "dev": true + } + } + }, + "npmlog": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.2", + "console-control-strings": "1.1.0", + "gauge": "2.6.0", + "set-blocking": "2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.1.5" + }, + "dependencies": { + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "2.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.0.4", + "console-control-strings": "1.1.0", + "has-color": "0.1.7", + "has-unicode": "2.0.1", + "object-assign": "4.1.0", + "signal-exit": "3.0.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.0" + }, + "dependencies": { + "has-color": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.0.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "retry": { + "version": "0.10.0", + "bundled": true, + "dev": true + } + } + }, + "npm-user-validate": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "npmlog": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "1.1.2", + "console-control-strings": "1.1.0", + "gauge": "2.6.0", + "set-blocking": "2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.1.5" + }, + "dependencies": { + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "2.6.0", + "bundled": true, + "dev": true, + "requires": { + "aproba": "1.0.4", + "console-control-strings": "1.1.0", + "has-color": "0.1.7", + "has-unicode": "2.0.1", + "object-assign": "4.1.0", + "signal-exit": "3.0.0", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.0" + }, + "dependencies": { + "has-color": { + "version": "0.1.7", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.0.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "code-point-at": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.0" + }, + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "wide-align": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "opener": { + "version": "1.4.2", + "bundled": true, + "dev": true + }, + "osenv": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "1.0.1", + "os-tmpdir": "1.0.1" + }, + "dependencies": { + "os-homedir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "os-tmpdir": { + "version": "1.0.1", + "bundled": true, + "dev": true + } + } + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "mute-stream": "0.0.5" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "bundled": true, + "dev": true + } + } + }, + "read-cmd-shim": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "graceful-fs": "4.1.9", + "read-package-json": "2.0.4", + "readdir-scoped-modules": "1.0.2", + "semver": "5.3.0", + "slide": "1.1.6", + "util-extend": "1.0.3" + }, + "dependencies": { + "util-extend": { + "version": "1.0.3", + "bundled": true, + "dev": true + } + } + }, + "read-package-json": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob": "6.0.4", + "graceful-fs": "4.1.9", + "json-parse-helpfulerror": "1.0.3", + "normalize-package-data": "2.3.5" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "bundled": true, + "dev": true, + "requires": { + "inflight": "1.0.5", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.6" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "jju": "1.3.0" + }, + "dependencies": { + "jju": { + "version": "1.3.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "read-package-tree": { + "version": "5.1.5", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "once": "1.4.0", + "read-package-json": "2.0.4", + "readdir-scoped-modules": "1.0.2" + } + }, + "readable-stream": { + "version": "2.1.5", + "bundled": true, + "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" + }, + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "1.0.1", + "dezalgo": "1.0.3", + "graceful-fs": "4.1.9", + "once": "1.4.0" + } + }, + "realize-package-specifier": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "dezalgo": "1.0.3", + "npm-package-arg": "4.2.0" + } + }, + "request": { + "version": "2.75.0", + "bundled": true, + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.4.1", + "bl": "1.1.2", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", + "forever-agent": "0.6.1", + "form-data": "2.0.0", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.12", + "node-uuid": "1.4.7", + "oauth-sign": "0.8.2", + "qs": "6.2.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.1", + "tunnel-agent": "0.4.3" + }, + "dependencies": { + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, + "bl": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + }, + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + } + } + }, + "extend": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "form-data": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.12" + }, + "dependencies": { + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + } + } + }, + "har-validator": { + "version": "2.0.6", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.15.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "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" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + }, + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "bundled": true, + "dev": true + } + } + }, + "is-my-json-valid": { + "version": "2.15.0", + "bundled": true, + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.0", + "xtend": "4.0.1" + }, + "dependencies": { + "generate-function": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-property": "1.0.2" + }, + "dependencies": { + "is-property": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "jsonpointer": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true + } + } + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + }, + "dependencies": { + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + } + } + } + } + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + }, + "dependencies": { + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + } + } + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.3.1", + "sshpk": "1.10.1" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "requires": { + "extsprintf": "1.0.2" + } + } + } + }, + "sshpk": { + "version": "1.10.1", + "bundled": true, + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.0", + "dashdash": "1.14.0", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.6", + "jodid25519": "1.0.2", + "jsbn": "0.1.0", + "tweetnacl": "0.14.3" + }, + "dependencies": { + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.3" + } + }, + "dashdash": { + "version": "1.14.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "getpass": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.0" + } + }, + "jsbn": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "tweetnacl": { + "version": "0.14.3", + "bundled": true, + "dev": true, + "optional": true + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.12", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.24.0" + }, + "dependencies": { + "mime-db": { + "version": "1.24.0", + "bundled": true, + "dev": true + } + } + }, + "node-uuid": { + "version": "1.4.7", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true + }, + "qs": { + "version": "6.2.1", + "bundled": true, + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true + }, + "tough-cookie": { + "version": "2.3.1", + "bundled": true, + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "bundled": true, + "dev": true + } + } + }, + "retry": { + "version": "0.10.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.5.4", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.0" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "readable-stream": "2.1.5" + } + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.0.0" + } + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.8", + "fstream": "1.0.10", + "inherits": "2.0.3" + }, + "dependencies": { + "block-stream": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "umask": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "2.0.0" + }, + "dependencies": { + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + } + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.2" + }, + "dependencies": { + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.0" + }, + "dependencies": { + "spdx-license-ids": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "spdx-expression-parse": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "1.0.4", + "spdx-license-ids": "1.2.0" + }, + "dependencies": { + "spdx-exceptions": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "validate-npm-package-name": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "builtins": "0.0.7" + }, + "dependencies": { + "builtins": { + "version": "0.0.7", + "bundled": true, + "dev": true + } + } + }, + "which": { + "version": "1.2.11", + "bundled": true, + "dev": true, + "requires": { + "isexe": "1.1.2" + }, + "dependencies": { + "isexe": { + "version": "1.1.2", + "bundled": true, + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.9", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } + } + }, + "npm-check-updates": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-2.8.9.tgz", + "integrity": "sha1-wISwh6COz5KSNS4s1ZHekD+BKcM=", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "chalk": "1.1.3", + "cint": "8.2.1", + "cli-table": "0.3.1", + "commander": "2.9.0", + "fast-diff": "1.1.1", + "find-up": "1.1.2", + "get-stdin": "5.0.1", + "json-parse-helpfulerror": "1.0.3", + "lodash": "4.17.4", + "node-alias": "1.0.4", + "npm": "3.10.10", + "npmi": "2.0.1", + "require-dir": "0.3.2", + "semver": "5.4.1", + "semver-utils": "1.1.1", + "spawn-please": "0.2.0", + "update-notifier": "1.0.3" + } + }, + "npmi": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npmi/-/npmi-2.0.1.tgz", + "integrity": "sha1-MmB2V+G9R8qFerTp2Y8KDP+WvOo=", + "dev": true, + "requires": { + "npm": "3.10.10", + "semver": "4.3.6" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + } + } + }, + "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 + }, + "nyc": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.1.0.tgz", + "integrity": "sha1-1rPF4WiSolr2MTi6SEZ2qooi7ac=", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.0", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.7.4", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.1", + "md5-hex": "1.3.0", + "merge-source-map": "1.0.4", + "micromatch": "2.3.11", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.1", + "signal-exit": "3.0.2", + "spawn-wrap": "1.3.8", + "test-exclude": "4.1.1", + "yargs": "8.0.2", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-generator": { + "version": "6.25.0", + "bundled": true, + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0" + } + }, + "babel-runtime": { + "version": "6.23.0", + "bundled": true, + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.25.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.25.0", + "bundled": true, + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.23.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.25.0", + "bundled": true, + "dev": true, + "requires": { + "babel-runtime": "6.23.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.17.4", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "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" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "bundled": true, + "dev": true + }, + "core-js": { + "version": "2.4.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "which": "1.2.14" + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "get-stream": "2.3.1", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "2.3.1", + "bundled": true, + "dev": true, + "requires": { + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "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" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true, + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.10", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invariant": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.7.4", + "bundled": true, + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.6.8", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + } + }, + "istanbul-reports": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.10" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "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" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true, + "dev": true + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge-source-map": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.5.1", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true, + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.5.6", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.3.8", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.1", + "signal-exit": "3.0.2", + "which": "1.2.14" + } + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "which": { + "version": "1.2.14", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "8.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.0.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.0", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "yargs-parser": { + "version": "7.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object.assign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", + "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.0", + "object-keys": "1.0.11" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "dev": true, + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.4.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "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=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-conf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", + "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "load-json-file": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "dev": true, + "requires": { + "debug-log": "1.0.1", + "find-root": "1.1.0", + "xtend": "4.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "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=" + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.2.7" + } + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "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" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.4.0" + } + }, + "regenerate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "private": "0.1.7" + } + }, + "regexp-quote": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz", + "integrity": "sha1-Hg9GUMhi3L/tVP1CsUjpuxch/PI=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "1.3.2", + "regjsgen": "0.2.0", + "regjsparser": "0.1.5" + } + }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "dev": true, + "requires": { + "rc": "1.2.1", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.1" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.4.1" + } + }, + "require-dir": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-0.3.2.tgz", + "integrity": "sha1-wdXHXp+//eny5rM+OD209ZS1pqk=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.1" + } + }, + "rollup": { + "version": "0.47.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.47.6.tgz", + "integrity": "sha512-bH3eWh7MzbiKTQcHQN7Ievqbs/yY7T+ZcJYboBYkp7BkRlAr2DXHPfiqlvlEH/M95giEBpinHEi/s9CVIgYT6w==", + "dev": true + }, + "rollup-plugin-babel": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.2.tgz", + "integrity": "sha512-ALGPBFtwJZcYHsNPM6RGJlEncTzAARPvZOGjNPZgDe5hS5t6sJGjiOWibEFVEz5LQN7S7spvCBILaS4N1Cql2w==", + "dev": true, + "requires": { + "rollup-pluginutils": "1.5.2" + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "run-parallel": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz", + "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=", + "dev": true + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "samsam": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", + "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=" + }, + "sanitize-html": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.14.1.tgz", + "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=", + "dev": true, + "requires": { + "htmlparser2": "3.9.2", + "regexp-quote": "0.0.0", + "xtend": "4.0.1" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.4.1" + } + }, + "semver-utils": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.1.tgz", + "integrity": "sha1-J9kv7DTSfPpCcH07QNAlrphV8t8=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.1", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } + }, + "sinon": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.2.1.tgz", + "integrity": "sha512-KY3OLOWpek/I4NGAMHetuutVgS2aRgMR5g5/1LSYvPJ3qo2BopIvk3esFztPxF40RWf/NNNJzdFPriSkXUVK3A==", + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "2.1.2", + "native-promise-only": "0.8.1", + "nise": "1.0.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + }, + "dependencies": { + "lolex": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.1.2.tgz", + "integrity": "sha1-JpS5U8nqTQE+W4v7qJHJkQJbJik=", + "dev": true + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", + "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "spawn-please": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-0.2.0.tgz", + "integrity": "sha1-vdhZkbgECfnA2scJvESgoxipdg0=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "standard": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz", + "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==", + "dev": true, + "requires": { + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-config-standard-jsx": "4.0.2", + "eslint-plugin-import": "2.2.0", + "eslint-plugin-node": "4.2.3", + "eslint-plugin-promise": "3.5.0", + "eslint-plugin-react": "6.10.3", + "eslint-plugin-standard": "3.0.1", + "standard-engine": "7.0.0" + }, + "dependencies": { + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.5.0", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.1", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.9.1", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", + "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", + "dev": true + }, + "eslint-plugin-promise": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", + "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", + "dev": true + }, + "eslint-plugin-react": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", + "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "dev": true, + "requires": { + "array.prototype.find": "2.0.4", + "doctrine": "1.5.0", + "has": "1.0.1", + "jsx-ast-utils": "1.4.1", + "object.assign": "4.0.4" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "standard-engine": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz", + "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=", + "dev": true, + "requires": { + "deglob": "2.1.0", + "get-stdin": "5.0.1", + "minimist": "1.2.0", + "pkg-conf": "2.0.0" + } + } + } + }, + "standard-engine": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-5.2.0.tgz", + "integrity": "sha1-QAZgrlrM6K/U22D/IhSpGQrXkKM=", + "dev": true, + "requires": { + "deglob": "2.1.0", + "find-root": "1.1.0", + "get-stdin": "5.0.1", + "home-or-tmp": "2.0.0", + "minimist": "1.2.0", + "pkg-config": "1.1.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "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==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "requires": { + "has-flag": "1.0.0" + } + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "dev": true, + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } +} diff --git a/package.json b/package.json index df4d3c2..166ef5b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "1.0.0-rc.2", + "version": "1.0.0", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", @@ -49,34 +49,37 @@ "mocha": "mocha -t 20000 -R dot -r babel-core/register -r babel-polyfill mocha.start.js", "cover": "nyc --require babel-core/register --require babel-polyfill --cache mocha -t 20000 -R dot mocha.start.js && nyc report --reporter=html", "test": "npm run build && npm run cover", - "release": "npm test && npm run doc && repo-tools updates && repo-tools changelog && repo-tools authors" + "release": "npm test && npm run doc && repo-tools changelog && repo-tools authors" }, "dependencies": { - "js-data-adapter": "~0.8.2", - "mout": "1.0.0" + "bson": ">=0.3.x", + "js-data": ">=3.0.0", + "js-data-adapter": "1.0.0", + "lodash.snakecase": "4.1.1", + "mongodb": ">=1.3.x" }, "peerDependencies": { "bson": ">=0.3.x", - "js-data": "^3.0.0-rc.9", + "js-data": ">=3.0.0", "mongodb": ">=1.3.x" }, "devDependencies": { - "babel-core": "6.24.1", + "babel-core": "6.26.0", "babel-eslint": "7.2.3", "babel-plugin-external-helpers": "6.22.0", "babel-plugin-syntax-async-functions": "6.13.0", - "babel-plugin-transform-regenerator": "6.24.1", - "babel-polyfill": "6.23.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-polyfill": "6.26.0", "babel-preset-es2015": "6.24.1", - "chai": "3.5.0", + "chai": "4.1.1", "ink-docstrap": "git+https://github.com/js-data/docstrap.git#cfbe45fa313e1628c493076d5e15d2b855dfbf2c", "js-data-repo-tools": "1.0.0", - "jsdoc": "3.4.3", - "mocha": "3.4.2", - "nyc": "10.3.2", - "rollup": "0.41.6", - "rollup-plugin-babel": "2.7.1", - "sinon": "2.3.1", - "standard": "10.0.2" + "jsdoc": "3.5.4", + "mocha": "3.5.0", + "nyc": "11.1.0", + "rollup": "0.47.6", + "rollup-plugin-babel": "3.0.2", + "sinon": "3.2.1", + "standard": "10.0.3" } } diff --git a/src/index.js b/src/index.js index 7ffed98..0f46771 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ import { Adapter, reserved } from 'js-data-adapter' -import underscore from 'mout/string/underscore' +import snakeCase from 'lodash.snakecase' const DEFAULTS = { /** @@ -543,6 +543,8 @@ Adapter.extend({ }).then((record) => { if (record) { this._translateObjectIDs(record, opts) + } else { + record = undefined } return [record, {}] }) @@ -597,7 +599,7 @@ Adapter.extend({ _getCollectionId (mapper, opts) { opts || (opts = {}) - return opts.table || opts.collection || mapper.table || mapper.collection || underscore(mapper.name) + return opts.table || opts.collection || mapper.table || mapper.collection || snakeCase(mapper.name) }, _getFields (mapper, opts) { diff --git a/yarn.lock b/yarn.lock index 963825b..cc01af3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,7 +12,7 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn@^3.0.4, acorn@^3.3.0: +acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" @@ -182,29 +182,37 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@6, babel-core@6.24.1, babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.24.1" + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@6.26.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" babel-helpers "^6.24.1" babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" slash "^1.0.0" - source-map "^0.5.0" + source-map "^0.5.6" babel-eslint@7.1.1: version "7.1.1" @@ -225,7 +233,7 @@ babel-eslint@7.2.3: babel-types "^6.23.0" babylon "^6.17.0" -babel-generator@^6.18.0, babel-generator@^6.24.1: +babel-generator@^6.18.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" dependencies: @@ -238,6 +246,19 @@ babel-generator@^6.18.0, babel-generator@^6.24.1: source-map "^0.5.0" trim-right "^1.0.1" +babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" @@ -357,7 +378,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: +babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -503,7 +524,13 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-regenerator@6.24.1, babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-regenerator@6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-regenerator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" dependencies: @@ -516,13 +543,13 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" +babel-polyfill@6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" babel-preset-es2015@6.24.1: version "6.24.1" @@ -553,17 +580,17 @@ babel-preset-es2015@6.24.1: babel-plugin-transform-es2015-unicode-regex "^6.24.1" babel-plugin-transform-regenerator "^6.24.1" -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" home-or-tmp "^2.0.0" - lodash "^4.2.0" + lodash "^4.17.4" mkdirp "^0.5.1" - source-map-support "^0.4.2" + source-map-support "^0.4.15" babel-runtime@^6.18.0, babel-runtime@^6.22.0: version "6.23.0" @@ -572,6 +599,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-template@^6.16.0, babel-template@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" @@ -582,6 +616,16 @@ babel-template@^6.16.0, babel-template@^6.24.1: babylon "^6.11.0" lodash "^4.2.0" +babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + babel-traverse@^6.15.0, babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" @@ -596,6 +640,20 @@ babel-traverse@^6.15.0, babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-tr invariant "^2.2.0" lodash "^4.2.0" +babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" @@ -605,10 +663,27 @@ babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23 lodash "^4.2.0" to-fast-properties "^1.0.1" +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0: version "6.17.1" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" +babylon@^6.17.4, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +babylon@~7.0.0-beta.19: + version "7.0.0-beta.19" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.19.tgz#e928c7e807e970e0536b078ab3e0c48f9e052503" + balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -631,10 +706,14 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.4.3, bluebird@~3.4.6: +bluebird@^3.4.3: version "3.4.7" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" +bluebird@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -724,6 +803,10 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -732,9 +815,9 @@ caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" -catharsis@~0.8.8: - version "0.8.8" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.8.tgz#693479f43aac549d806bd73e924cd0d944951a06" +catharsis@~0.8.9: + version "0.8.9" + resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.9.tgz#98cc890ca652dd2ef0e70b37925310ff9e90fc8b" dependencies: underscore-contrib "~0.3.0" @@ -745,13 +828,16 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chai@3.5.0, chai@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" +chai@4.1.1, chai@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.1.tgz#66e21279e6f3c6415ff8231878227900e2171b39" dependencies: assertion-error "^1.0.1" - deep-eql "^0.1.3" - type-detect "^1.0.0" + check-error "^1.0.1" + deep-eql "^2.0.1" + get-func-name "^2.0.0" + pathval "^1.0.0" + type-detect "^4.0.0" chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" @@ -763,6 +849,10 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +check-error@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + chownr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" @@ -898,7 +988,7 @@ contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" -convert-source-map@^1.1.0, convert-source-map@^1.3.0: +convert-source-map@^1.3.0, convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -906,6 +996,10 @@ core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" +core-js@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086" + core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -923,6 +1017,14 @@ cross-spawn@^4: lru-cache "^4.0.1" which "^1.2.9" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -951,18 +1053,18 @@ debug@2.2.0: dependencies: ms "0.7.1" -debug@2.6.0, debug@^2.1.1, debug@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@^2.6.3: +debug@2.6.8, debug@^2.6.3, debug@^2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" +debug@^2.1.1, debug@^2.2.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -971,11 +1073,11 @@ decamelize@^1.0.0, decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" +deep-eql@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" dependencies: - type-detect "0.1.1" + type-detect "^3.0.0" deep-extend@~0.4.0: version "0.4.2" @@ -1216,9 +1318,9 @@ eslint-config-standard-jsx@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz#c240e26ed919a11a42aa4de8059472b38268d620" -eslint-config-standard-jsx@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.1.tgz#cd4e463d0268e2d9e707f61f42f73f5b3333c642" +eslint-config-standard-jsx@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1" eslint-config-standard@10.2.1: version "10.2.1" @@ -1387,13 +1489,6 @@ espree@^3.3.1, espree@^3.4.0: acorn "^5.0.1" acorn-jsx "^3.0.0" -espree@~3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.1.7.tgz#fd5deec76a97a5120a9cd3a7cb1177a0923b11d2" - dependencies: - acorn "^3.3.0" - acorn-jsx "^3.0.0" - esprima@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -1434,6 +1529,18 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -1516,14 +1623,14 @@ find-root@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" -find-up@1.1.2, find-up@^1.0.0, find-up@^1.1.2: +find-up@1.1.2, find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: @@ -1552,7 +1659,7 @@ foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" -foreground-child@^1.3.3, foreground-child@^1.5.3: +foreground-child@^1.5.3, foreground-child@^1.5.6: version "1.5.6" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" dependencies: @@ -1571,13 +1678,7 @@ form-data@~2.0.0: combined-stream "^1.0.5" mime-types "^2.1.11" -formatio@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" - dependencies: - samsam "~1.1" - -formatio@1.2.0: +formatio@1.2.0, formatio@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" dependencies: @@ -1673,10 +1774,18 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1711,6 +1820,10 @@ globals@^9.0.0, globals@^9.14.0, globals@^9.2.0: version "9.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -1859,7 +1972,7 @@ inflight@^1.0.4, inflight@~1.0.5: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.1, inherits@^2.0.1: +inherits@2, inherits@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" @@ -1913,7 +2026,7 @@ interpret@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" -invariant@^2.2.0: +invariant@^2.2.0, invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" dependencies: @@ -2056,7 +2169,7 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-stream@^1.0.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2094,50 +2207,50 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-lib-coverage@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#caca19decaef3525b5d6331d701f3f3b7ad48528" +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.6.tgz#c0866d1e81cf2d5319249510131fc16dee49231f" +istanbul-lib-hook@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.1.tgz#169e31bc62c778851a99439dd99c3cc12184d360" +istanbul-lib-instrument@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz#e9fd920e4767f3d19edc765e2d6b3f5ccbd0eea8" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" - babylon "^6.13.0" - istanbul-lib-coverage "^1.1.0" + babylon "^6.17.4" + istanbul-lib-coverage "^1.1.1" semver "^5.3.0" -istanbul-lib-report@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.0.tgz#444c4ecca9afa93cf584f56b10f195bf768c0770" +istanbul-lib-report@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" dependencies: - istanbul-lib-coverage "^1.1.0" + istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.0.tgz#8c7706d497e26feeb6af3e0c28fd5b0669598d0e" +istanbul-lib-source-maps@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" dependencies: debug "^2.6.3" - istanbul-lib-coverage "^1.1.0" + istanbul-lib-coverage "^1.1.1" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.0.tgz#1ef3b795889219cfb5fad16365f6ce108d5f8c66" +istanbul-reports@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" dependencies: handlebars "^4.0.3" @@ -2151,13 +2264,14 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -js-data-adapter@~0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/js-data-adapter/-/js-data-adapter-0.8.3.tgz#0ed7a0eac3003201a9958f00093bd0430168f7c3" +js-data-adapter@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/js-data-adapter/-/js-data-adapter-1.0.0.tgz#11c8a6b916015c06277c5b0d439a848f242575f8" dependencies: - chai "^3.5.0" - mocha "^3.1.2" - sinon "^1.17.6" + chai "^4.0.2" + js-data ">= 3.0.0" + mocha "^3.4.2" + sinon "^2.3.6" js-data-repo-tools@1.0.0: version "1.0.0" @@ -2169,14 +2283,18 @@ js-data-repo-tools@1.0.0: npm-check-updates "2.8.9" standard "8.6.0" -js-data@^3.0.0-rc.9: - version "3.0.0-rc.9" - resolved "https://registry.yarnpkg.com/js-data/-/js-data-3.0.0-rc.9.tgz#d447382444416d66daef845f1916fd0280bb7590" +"js-data@>= 3.0.0", js-data@>=3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/js-data/-/js-data-3.0.0.tgz#59628af903fac61cec99a7dad2db6a076f51c6ef" js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + js-yaml@^3.5.1: version "3.8.4" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" @@ -2184,24 +2302,26 @@ js-yaml@^3.5.1: argparse "^1.0.7" esprima "^3.1.1" -js2xmlparser@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-1.0.0.tgz#5a170f2e8d6476ce45405e04823242513782fe30" +js2xmlparser@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-3.0.0.tgz#3fb60eaa089c5440f9319f51760ccd07e2499733" + dependencies: + xmlcreate "^1.0.1" jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdoc@3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.4.3.tgz#e5740d6145c681f6679e6c17783a88dbdd97ccd3" +jsdoc@3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.5.4.tgz#ceeef7c4bac4335cb10ff41e3a0f58939a534428" dependencies: - bluebird "~3.4.6" - catharsis "~0.8.8" + babylon "~7.0.0-beta.19" + bluebird "~3.5.0" + catharsis "~0.8.9" escape-string-regexp "~1.0.5" - espree "~3.1.7" - js2xmlparser "~1.0.0" - klaw "~1.3.0" + js2xmlparser "~3.0.0" + klaw "~2.0.0" marked "~0.3.6" mkdirp "~0.5.1" requizzle "~0.2.1" @@ -2241,7 +2361,7 @@ json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -json5@^0.5.0: +json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -2266,16 +2386,20 @@ jsx-ast-utils@^1.3.3, jsx-ast-utils@^1.3.4: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" +just-extend@^1.1.22: + version "1.1.22" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.22.tgz#3330af756cab6a542700c64b2e4e4aa062d52fff" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: is-buffer "^1.1.5" -klaw@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: +klaw@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-2.0.0.tgz#59c128e0dc5ce410201151194eeb9cbf858650f6" + dependencies: graceful-fs "^4.1.9" latest-version@^2.0.0: @@ -2409,6 +2533,10 @@ lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + lodash.union@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -2421,18 +2549,18 @@ lodash.without@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" -lodash@4.17.4, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.2.0, lodash@^4.3.0: +lodash@4.17.4, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lolex@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" - lolex@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" +lolex@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.1.2.tgz#2694b953c9ea4d013e5b8bfba891c991025b2629" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -2468,6 +2596,12 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + merge-source-map@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf" @@ -2502,7 +2636,11 @@ mime-types@^2.1.11, mime-types@~2.1.7: dependencies: mime-db "~1.27.0" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2522,13 +2660,13 @@ mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd dependencies: minimist "0.0.8" -mocha@3.4.2, mocha@^3.1.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" +mocha@3.5.0, mocha@^3.4.2: + version "3.5.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.0.tgz#1328567d2717f997030f8006234bce9b8cd72465" dependencies: browser-stdout "1.3.0" commander "2.9.0" - debug "2.6.0" + debug "2.6.8" diff "3.2.0" escape-string-regexp "1.0.5" glob "7.1.1" @@ -2557,10 +2695,6 @@ mongodb@>=1.3.x: mongodb-core "2.1.11" readable-stream "2.2.7" -mout@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mout/-/mout-1.0.0.tgz#9bdf1d4af57d66d47cb353a6335a3281098e1501" - ms@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" @@ -2585,6 +2719,15 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +nise@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.0.1.tgz#0da92b10a854e97c0f496f6c2845a301280b3eef" + dependencies: + formatio "^1.2.0" + just-extend "^1.1.22" + lolex "^1.6.0" + path-to-regexp "^1.7.0" + node-alias@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/node-alias/-/node-alias-1.0.4.tgz#1f1b916b56b9ea241c0135f97ced6940f556f292" @@ -2700,6 +2843,12 @@ npm-registry-client@~7.2.1: optionalDependencies: npmlog "~2.0.0 || ~3.1.0" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + npm-user-validate@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b" @@ -2809,9 +2958,9 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nyc@10.3.2: - version "10.3.2" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.3.2.tgz#f27f4d91f2a9db36c24f574ff5c6efff0233de46" +nyc@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.1.0.tgz#d6b3c5e16892a25af63138ba484676aa8a22eda7" dependencies: archy "^1.0.0" arrify "^1.0.1" @@ -2820,15 +2969,15 @@ nyc@10.3.2: debug-log "^1.0.1" default-require-extensions "^1.0.0" find-cache-dir "^0.1.1" - find-up "^1.1.2" + find-up "^2.1.0" foreground-child "^1.5.3" glob "^7.0.6" - istanbul-lib-coverage "^1.1.0" - istanbul-lib-hook "^1.0.6" - istanbul-lib-instrument "^1.7.1" - istanbul-lib-report "^1.1.0" - istanbul-lib-source-maps "^1.2.0" - istanbul-reports "^1.1.0" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.0.7" + istanbul-lib-instrument "^1.7.4" + istanbul-lib-report "^1.1.1" + istanbul-lib-source-maps "^1.2.1" + istanbul-reports "^1.1.1" md5-hex "^1.2.0" merge-source-map "^1.0.2" micromatch "^2.3.11" @@ -2836,9 +2985,9 @@ nyc@10.3.2: resolve-from "^2.0.0" rimraf "^2.5.4" signal-exit "^3.0.1" - spawn-wrap "1.2.4" - test-exclude "^4.1.0" - yargs "^7.1.0" + spawn-wrap "^1.3.8" + test-exclude "^4.1.1" + yargs "^8.0.1" yargs-parser "^5.0.0" oauth-sign@~0.8.1: @@ -2904,11 +3053,13 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" dependencies: + execa "^0.7.0" lcid "^1.0.0" + mem "^1.1.0" os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" @@ -2921,6 +3072,10 @@ osenv@0, osenv@^0.1.0, osenv@~0.1.3: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + p-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" @@ -2971,7 +3126,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2979,6 +3134,10 @@ path-is-inside@^1.0.1, path-is-inside@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -2997,6 +3156,16 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pathval@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3054,7 +3223,7 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -private@^0.1.6: +private@^0.1.6, private@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -3157,6 +3326,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -3165,6 +3341,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read@1, read@~1.0.1, read@~1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" @@ -3252,10 +3436,14 @@ regenerate@^1.2.1: version "1.3.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" -regenerator-runtime@^0.10.0: +regenerator-runtime@^0.10.0, regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-transform@0.9.11: version "0.9.11" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" @@ -3264,6 +3452,14 @@ regenerator-transform@0.9.11: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -3425,13 +3621,10 @@ rimraf@~2.5.4: dependencies: glob "^7.0.5" -rollup-plugin-babel@2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz#16528197b0f938a1536f44683c7a93d573182f57" +rollup-plugin-babel@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.2.tgz#a2765dea0eaa8aece351c983573300d17497495b" dependencies: - babel-core "6" - babel-plugin-transform-es2015-classes "^6.9.0" - object-assign "^4.1.0" rollup-pluginutils "^1.5.0" rollup-pluginutils@^1.5.0: @@ -3441,11 +3634,9 @@ rollup-pluginutils@^1.5.0: estree-walker "^0.2.1" minimatch "^3.0.2" -rollup@0.41.6: - version "0.41.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" - dependencies: - source-map-support "^0.4.0" +rollup@0.47.6: + version "0.47.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.47.6.tgz#83b90a1890dd3321a3f8d0b2bd216e88483f33de" run-async@^0.1.0: version "0.1.0" @@ -3465,10 +3656,6 @@ safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" -samsam@1.1.2, samsam@~1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" - samsam@1.x, samsam@^1.1.3: version "1.2.1" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" @@ -3510,6 +3697,16 @@ sha@~2.0.1: graceful-fs "^4.1.2" readable-stream "^2.0.2" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + shelljs@^0.7.5: version "0.7.7" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" @@ -3518,35 +3715,36 @@ shelljs@^0.7.5: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564" - -signal-exit@^3.0.0, signal-exit@^3.0.1: +signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.1.tgz#48c9c758b4d0bb86327486833f1c4298919ce9ee" +sinon@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-3.2.1.tgz#d8adabd900730fd497788a027049c64b08be91c2" dependencies: diff "^3.1.0" formatio "1.2.0" - lolex "^1.6.0" + lolex "^2.1.2" native-promise-only "^0.8.1" + nise "^1.0.1" path-to-regexp "^1.7.0" samsam "^1.1.3" text-encoding "0.6.4" type-detect "^4.0.0" -sinon@^1.17.6: - version "1.17.7" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" +sinon@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.4.1.tgz#021fd64b54cb77d9d2fb0d43cdedfae7629c3a36" dependencies: - formatio "1.1.1" - lolex "1.3.2" - samsam "1.1.2" - util ">=0.10.3 <1" + diff "^3.1.0" + formatio "1.2.0" + lolex "^1.6.0" + native-promise-only "^0.8.1" + path-to-regexp "^1.7.0" + samsam "^1.1.3" + text-encoding "0.6.4" + type-detect "^4.0.0" slash@^1.0.0: version "1.0.0" @@ -3570,9 +3768,9 @@ sorted-object@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" -source-map-support@^0.4.0, source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" +source-map-support@^0.4.15: + version "0.4.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" dependencies: source-map "^0.5.6" @@ -3590,15 +3788,15 @@ spawn-please@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.2.0.tgz#bdd85991b80409f9c0dac709bc44a0a318a9760d" -spawn-wrap@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40" +spawn-wrap@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31" dependencies: - foreground-child "^1.3.3" + foreground-child "^1.5.6" mkdirp "^0.5.0" os-homedir "^1.0.1" rimraf "^2.3.3" - signal-exit "^2.0.0" + signal-exit "^3.0.2" which "^1.2.4" spdx-correct@~1.0.0: @@ -3654,13 +3852,13 @@ standard-engine@~7.0.0: minimist "^1.1.0" pkg-conf "^2.0.0" -standard@10.0.2: - version "10.0.2" - resolved "https://registry.yarnpkg.com/standard/-/standard-10.0.2.tgz#974c1c53cc865b075a4b576e78441e1695daaf7b" +standard@10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/standard/-/standard-10.0.3.tgz#7869bcbf422bdeeaab689a1ffb1fea9677dd50ea" dependencies: eslint "~3.19.0" eslint-config-standard "10.2.1" - eslint-config-standard-jsx "4.0.1" + eslint-config-standard-jsx "4.0.2" eslint-plugin-import "~2.2.0" eslint-plugin-node "~4.2.2" eslint-plugin-promise "~3.5.0" @@ -3725,6 +3923,10 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-json-comments@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" @@ -3766,9 +3968,9 @@ tar@^2.0.0, tar@~2.2.1: fstream "^1.0.2" inherits "2" -test-exclude@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.0.tgz#04ca70b7390dd38c98d4a003a173806ca7991c91" +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -3792,7 +3994,7 @@ timed-out@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" -to-fast-properties@^1.0.1: +to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -3824,13 +4026,9 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - -type-detect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" +type-detect@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55" type-detect@^4.0.0: version "4.0.3" @@ -3932,12 +4130,6 @@ util-extend@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" -"util@>=0.10.3 <1": - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" @@ -3973,9 +4165,9 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" which@1, which@^1.2.4, which@^1.2.9, which@~1.2.11: version "1.2.14" @@ -4050,6 +4242,10 @@ xdg-basedir@^2.0.0: dependencies: os-homedir "^1.0.0" +xmlcreate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-1.0.2.tgz#fa6bf762a60a413fb3dd8f4b03c5b269238d308f" + xtend@^4.0.0, xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4068,23 +4264,29 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" + +yargs@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" cliui "^3.2.0" decamelize "^1.1.1" get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" + string-width "^2.0.0" + which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^5.0.0" + yargs-parser "^7.0.0" yargs@~3.10.0: version "3.10.0" From f83bfea50146fd869b9b51cfcdc0ee3c4d1c937c Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 21:47:42 -0700 Subject: [PATCH 15/22] 1.0.0 release --- dist/js-data-mongodb.js | 8 +++++--- dist/js-data-mongodb.js.map | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dist/js-data-mongodb.js b/dist/js-data-mongodb.js index f1ee1bd..4d40930 100644 --- a/dist/js-data-mongodb.js +++ b/dist/js-data-mongodb.js @@ -8,7 +8,7 @@ var mongodb = require('mongodb'); var bson = require('bson'); var jsData = require('js-data'); var jsDataAdapter = require('js-data-adapter'); -var underscore = _interopDefault(require('mout/string/underscore')); +var snakeCase = _interopDefault(require('lodash.snakecase')); var defineProperty = function (obj, key, value) { if (key in obj) { @@ -581,6 +581,8 @@ jsDataAdapter.Adapter.extend({ }).then(function (record) { if (record) { _this7._translateObjectIDs(record, opts); + } else { + record = undefined; } return [record, {}]; }); @@ -637,7 +639,7 @@ jsDataAdapter.Adapter.extend({ }, _getCollectionId: function _getCollectionId(mapper, opts) { opts || (opts = {}); - return opts.table || opts.collection || mapper.table || mapper.collection || underscore(mapper.name); + return opts.table || opts.collection || mapper.table || mapper.collection || snakeCase(mapper.name); }, _getFields: function _getFields(mapper, opts) { opts || (opts = {}); @@ -1054,7 +1056,7 @@ jsDataAdapter.Adapter.extend({ * otherwise `false` if the current version is not beta. */ var version = { - full: '1.0.0-rc.2', + full: '1.0.0', major: 1, minor: 0, patch: 0 diff --git a/dist/js-data-mongodb.js.map b/dist/js-data-mongodb.js.map index bc193c4..c38b54b 100644 --- a/dist/js-data-mongodb.js.map +++ b/dist/js-data-mongodb.js.map @@ -1 +1 @@ -{"version":3,"file":"js-data-mongodb.js","sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport underscore from 'mout/string/underscore'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from database that are ObjectIDs to strings\n *\n * @name MongoDBAdapter#translateObjectIDs\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017',\n\n /**\n * MongoDB Driver options\n *\n * @name MongoDBAdapter#mongoDriverOpts\n * @type {object}\n * @default { ignoreUndefined: true }\n */\n mongoDriverOpts: {\n ignoreUndefined: true\n }\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import {Container} from 'js-data'\n * import MongoDBAdapter from 'js-data-mongodb'\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * })\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter()\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true })\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user')\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#destroy.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || underscore(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import {version} from 'js-data-mongodb'\n * console.log(version.full)\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb@rc js-data@rc mongodb bson\n *\n * @example Load via CommonJS\n * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter\n * var adapter = new MongoDBAdapter()\n *\n * @example Load via ES2015 Modules\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @module js-data-mongodb\n */\n\n /**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'\n * const JSDataMongoDB = require('js-data-mongodb')\n * const { MongoDBAdapter } = JSDataMongoDB\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full)\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar' }\n * static beep () { return 'boop' }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass()\n * console.log(customMongoDBAdapter.foo())\n * console.log(CustomMongoDBAdapterClass.beep())\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass()\n * console.log(otherMongoDBAdapter.foo())\n * console.log(OtherMongoDBAdapterClass.beep())\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this)\n * this.created_at = new Date().getTime()\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass()\n * console.log(anotherMongoDBAdapter.created_at)\n * console.log(anotherMongoDBAdapter.foo())\n * console.log(AnotherMongoDBAdapterClass.beep())\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["DEFAULTS","COUNT_OPTS_DEFAULTS","FIND_OPTS_DEFAULTS","FIND_ONE_OPTS_DEFAULTS","INSERT_OPTS_DEFAULTS","INSERT_MANY_OPTS_DEFAULTS","UPDATE_OPTS_DEFAULTS","REMOVE_OPTS_DEFAULTS","MongoDBAdapter","opts","classCallCheck","utils","isString","uri","fillIn","defineProperties","undefined","call","countOpts","findOpts","findOneOpts","insertOpts","insertManyOpts","updateOpts","removeOpts","client","Promise","resolve","reject","connect","mongoDriverOpts","err","db","_db","Adapter","extend","r","getOpt","_translateFieldObjectIDs","_translateId","isArray","forEach","_r","__id","_id","toString","isObject","_checkFields","field","_bsontype","mapper","query","_run","success","failure","collectionId","_getCollectionId","getQueryOptions","mongoQuery","getQuery","collection","count","props","handler","cursor","plainCopy","insertOne","insert","then","record","ops","_translateObjectIDs","connection","insertMany","records","id","idAttribute","toObjectID","deleteOne","remove","deleteMany","with","fields","_getFields","findOne","find","toArray","table","underscore","name","cb","getClient","_find","raw","result","Error","updateOne","$set","update","ids","_findAll","multi","queryOptions","map","updateMany","where","forOwn","config","keyword","reserved","indexOf","Object","keys","length","criteria","v","op","$ne","$gt","$gte","$lt","$lte","$in","$nin","$or","orEqQuery","push","orNeQuery","orGtQuery","orGteQuery","orLtQuery","orLteQuery","orInQuery","orNinQuery","orderBy","sort","skip","offset","i","limit","ObjectID","isValid","def","getRelation","prototype","makeBelongsToForeignKey","relatedMapper","localKeys","makeHasManyLocalKeys","key","version"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"js-data-mongodb.js","sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport snakeCase from 'lodash.snakecase'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from database that are ObjectIDs to strings\n *\n * @name MongoDBAdapter#translateObjectIDs\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017',\n\n /**\n * MongoDB Driver options\n *\n * @name MongoDBAdapter#mongoDriverOpts\n * @type {object}\n * @default { ignoreUndefined: true }\n */\n mongoDriverOpts: {\n ignoreUndefined: true\n }\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import {Container} from 'js-data'\n * import MongoDBAdapter from 'js-data-mongodb'\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * })\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter()\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true })\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user')\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#destroy.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n } else {\n record = undefined\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || snakeCase(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import {version} from 'js-data-mongodb'\n * console.log(version.full)\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb@rc js-data@rc mongodb bson\n *\n * @example Load via CommonJS\n * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter\n * var adapter = new MongoDBAdapter()\n *\n * @example Load via ES2015 Modules\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @module js-data-mongodb\n */\n\n /**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'\n * const JSDataMongoDB = require('js-data-mongodb')\n * const { MongoDBAdapter } = JSDataMongoDB\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full)\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar' }\n * static beep () { return 'boop' }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass()\n * console.log(customMongoDBAdapter.foo())\n * console.log(CustomMongoDBAdapterClass.beep())\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass()\n * console.log(otherMongoDBAdapter.foo())\n * console.log(OtherMongoDBAdapterClass.beep())\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this)\n * this.created_at = new Date().getTime()\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass()\n * console.log(anotherMongoDBAdapter.created_at)\n * console.log(anotherMongoDBAdapter.foo())\n * console.log(AnotherMongoDBAdapterClass.beep())\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["DEFAULTS","COUNT_OPTS_DEFAULTS","FIND_OPTS_DEFAULTS","FIND_ONE_OPTS_DEFAULTS","INSERT_OPTS_DEFAULTS","INSERT_MANY_OPTS_DEFAULTS","UPDATE_OPTS_DEFAULTS","REMOVE_OPTS_DEFAULTS","MongoDBAdapter","opts","classCallCheck","utils","isString","uri","fillIn","defineProperties","undefined","call","countOpts","findOpts","findOneOpts","insertOpts","insertManyOpts","updateOpts","removeOpts","client","Promise","resolve","reject","connect","mongoDriverOpts","err","db","_db","Adapter","extend","r","getOpt","_translateFieldObjectIDs","_translateId","isArray","forEach","_r","__id","_id","toString","isObject","_checkFields","field","_bsontype","mapper","query","_run","success","failure","collectionId","_getCollectionId","getQueryOptions","mongoQuery","getQuery","collection","count","props","handler","cursor","plainCopy","insertOne","insert","then","record","ops","_translateObjectIDs","connection","insertMany","records","id","idAttribute","toObjectID","deleteOne","remove","deleteMany","with","fields","_getFields","findOne","find","toArray","table","snakeCase","name","cb","getClient","_find","raw","result","Error","updateOne","$set","update","ids","_findAll","multi","queryOptions","map","updateMany","where","forOwn","config","keyword","reserved","indexOf","Object","keys","length","criteria","v","op","$ne","$gt","$gte","$lt","$lte","$in","$nin","$or","orEqQuery","push","orNeQuery","orGtQuery","orGteQuery","orLtQuery","orLteQuery","orInQuery","orNinQuery","orderBy","sort","skip","offset","i","limit","ObjectID","isValid","def","getRelation","prototype","makeBelongsToForeignKey","relatedMapper","localKeys","makeHasManyLocalKeys","key","version"],"mappings":"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"} \ No newline at end of file From 96bf741b1b4310f0ae180f5e4b01d25189a1b186 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 22:02:39 -0700 Subject: [PATCH 16/22] Trigger rebuild --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa39e1e..fe9a024 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ A MongoDB adapter for the [JSData Node.js ORM][11]. ### Installation - npm install --save js-data js-data-mongodb bson mongodb + npm install --save js-data js-data-mongodb mongodb bson ### Usage From c5e98d43123787bb31bdde90c70ac8d786ba0b21 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 22:10:16 -0700 Subject: [PATCH 17/22] Update contributors. --- CONTRIBUTORS | 2 -- 1 file changed, 2 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4787cf8..55e11a0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,7 +1,5 @@ # People who have contributed to the js-data-mongodb project. # -# This file is controlled by scripts/authors.js -# # Names should be added to this file as: # [commit count] Name 9 Cory Robinson From ec7dc731044266c91006aecbdfe815ea5056f825 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 22:34:41 -0700 Subject: [PATCH 18/22] Update link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe9a024..c89cee7 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Copyright (c) 2014-2017 [js-data-mongodb project authors][18] [9]: https://img.shields.io/codecov/c/github/js-data/js-data-mongodb.svg?style=flat [10]: https://codecov.io/github/js-data/js-data-mongodb [11]: http://www.js-data.io/ -[12]: http://www.js-data.io/v3.0/docs/js-data-mongodb +[12]: http://www.js-data.io/docs/js-data-mongodb [13]: http://api.js-data.io/js-data-mongodb [14]: http://stackoverflow.com/questions/tagged/jsdata [15]: http://slack.js-data.io/ From 7259f8985a24fc01164e55338f653949da0d7dfe Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 22:49:10 -0700 Subject: [PATCH 19/22] Prepare for 1.0.1 release. --- CHANGELOG.md | 5 +++++ package.json | 2 +- rollup.config.js | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b798849..86461aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +##### 1.0.1 - 17 August 2017 + +###### Bug fixes +- Fix Rollup config + ##### 1.0.0 - 17 August 2017 Stable 1.0.0 release diff --git a/package.json b/package.json index 166ef5b..b0c57b4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "1.0.0", + "version": "1.0.1", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", diff --git a/rollup.config.js b/rollup.config.js index c4da68f..2bb63a2 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -6,7 +6,7 @@ export default { 'bson', 'js-data', 'js-data-adapter', - 'mout/string/underscore' + 'lodash.snakecase' ], plugins: [ babel({ From 68e4aef6d22ce0dbe7f206aba6fb15dd06b1f894 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Thu, 17 Aug 2017 22:49:57 -0700 Subject: [PATCH 20/22] 1.0.1 --- dist/js-data-mongodb.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/js-data-mongodb.js b/dist/js-data-mongodb.js index 4d40930..623a3a0 100644 --- a/dist/js-data-mongodb.js +++ b/dist/js-data-mongodb.js @@ -1056,10 +1056,10 @@ jsDataAdapter.Adapter.extend({ * otherwise `false` if the current version is not beta. */ var version = { - full: '1.0.0', + full: '1.0.1', major: 1, minor: 0, - patch: 0 + patch: 1 }; /** From 7f93d8c84dcda72e432ef8187e2ff6fa042a3160 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 18 Aug 2017 00:17:18 -0700 Subject: [PATCH 21/22] Prepare for 1.0.2 release. --- CHANGELOG.md | 5 ++++ package.json | 2 +- src/index.js | 80 ++++++++++++++++++++++++++-------------------------- 3 files changed, 46 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86461aa..8ba9775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +##### 1.0.2 - 18 August 2017 + +###### Other +- Update JSDoc comments + ##### 1.0.1 - 17 August 2017 ###### Bug fixes diff --git a/package.json b/package.json index b0c57b4..f7dd9b6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "js-data-mongodb", "description": "MongoDB adapter for js-data.", - "version": "1.0.1", + "version": "1.0.2", "homepage": "https://github.com/js-data/js-data-mongodb", "repository": { "type": "git", diff --git a/src/index.js b/src/index.js index 0f46771..237c7de 100644 --- a/src/index.js +++ b/src/index.js @@ -59,8 +59,8 @@ const REMOVE_OPTS_DEFAULTS = {} * * @example * // Use Container instead of DataStore on the server - * import {Container} from 'js-data' - * import MongoDBAdapter from 'js-data-mongodb' + * import { Container } from 'js-data'; + * import MongoDBAdapter from 'js-data-mongodb'; * * // Create a store to hold your Mappers * const store = new Container({ @@ -68,16 +68,16 @@ const REMOVE_OPTS_DEFAULTS = {} * // MongoDB uses "_id" as the primary key * idAttribute: '_id' * } - * }) + * }); * * // Create an instance of MongoDBAdapter with default settings - * const adapter = new MongoDBAdapter() + * const adapter = new MongoDBAdapter(); * * // Mappers in "store" will use the MongoDB adapter by default - * store.registerAdapter('mongodb', adapter, { default: true }) + * store.registerAdapter('mongodb', adapter, { default: true }); * * // Create a Mapper that maps to a "user" collection - * store.defineMapper('user') + * store.defineMapper('user'); * * @class MongoDBAdapter * @extends Adapter @@ -991,8 +991,8 @@ Adapter.extend({ * Details of the current version of the `js-data-mongodb` module. * * @example - * import {version} from 'js-data-mongodb' - * console.log(version.full) + * import { version } from 'js-data-mongodb'; + * console.log(version.full); * * @name module:js-data-mongodb.version * @type {object} @@ -1011,8 +1011,8 @@ export const version = '<%= version %>' * {@link MongoDBAdapter} class. * * @example - * import {MongoDBAdapter} from 'js-data-mongodb' - * const adapter = new MongoDBAdapter() + * import { MongoDBAdapter } from 'js-data-mongodb'; + * const adapter = new MongoDBAdapter(); * * @name module:js-data-mongodb.MongoDBAdapter * @see MongoDBAdapter @@ -1023,61 +1023,61 @@ export const version = '<%= version %>' * Registered as `js-data-mongodb` in NPM. * * @example Install from NPM - * npm i --save js-data-mongodb@rc js-data@rc mongodb bson + * npm i --save js-data-mongodb js-data mongodb bson * * @example Load via CommonJS - * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter - * var adapter = new MongoDBAdapter() + * const MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter; + * const adapter = new MongoDBAdapter(); * * @example Load via ES2015 Modules - * import {MongoDBAdapter} from 'js-data-mongodb' - * const adapter = new MongoDBAdapter() + * import { MongoDBAdapter } from 'js-data-mongodb'; + * const adapter = new MongoDBAdapter(); * * @module js-data-mongodb */ - /** +/** * Create a subclass of this MongoDBAdapter: * @example MongoDBAdapter.extend - * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb' - * const JSDataMongoDB = require('js-data-mongodb') - * const { MongoDBAdapter } = JSDataMongoDB - * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full) + * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'; + * const JSDataMongoDB = require('js-data-mongodb'); + * const { MongoDBAdapter } = JSDataMongoDB; + * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full); * * // Extend the class using ES2015 class syntax. * class CustomMongoDBAdapterClass extends MongoDBAdapter { - * foo () { return 'bar' } - * static beep () { return 'boop' } + * foo () { return 'bar'; } + * static beep () { return 'boop'; } * } - * const customMongoDBAdapter = new CustomMongoDBAdapterClass() - * console.log(customMongoDBAdapter.foo()) - * console.log(CustomMongoDBAdapterClass.beep()) + * const customMongoDBAdapter = new CustomMongoDBAdapterClass(); + * console.log(customMongoDBAdapter.foo()); + * console.log(CustomMongoDBAdapterClass.beep()); * * // Extend the class using alternate method. * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({ - * foo () { return 'bar' } + * foo () { return 'bar'; } * }, { - * beep () { return 'boop' } - * }) - * const otherMongoDBAdapter = new OtherMongoDBAdapterClass() - * console.log(otherMongoDBAdapter.foo()) - * console.log(OtherMongoDBAdapterClass.beep()) + * beep () { return 'boop'; } + * }); + * const otherMongoDBAdapter = new OtherMongoDBAdapterClass(); + * console.log(otherMongoDBAdapter.foo()); + * console.log(OtherMongoDBAdapterClass.beep()); * * // Extend the class, providing a custom constructor. * function AnotherMongoDBAdapterClass () { - * MongoDBAdapter.call(this) - * this.created_at = new Date().getTime() + * MongoDBAdapter.call(this); + * this.created_at = new Date().getTime(); * } * MongoDBAdapter.extend({ * constructor: AnotherMongoDBAdapterClass, - * foo () { return 'bar' } + * foo () { return 'bar'; } * }, { - * beep () { return 'boop' } - * }) - * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass() - * console.log(anotherMongoDBAdapter.created_at) - * console.log(anotherMongoDBAdapter.foo()) - * console.log(AnotherMongoDBAdapterClass.beep()) + * beep () { return 'boop'; } + * }); + * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass(); + * console.log(anotherMongoDBAdapter.created_at); + * console.log(anotherMongoDBAdapter.foo()); + * console.log(AnotherMongoDBAdapterClass.beep()); * * @method MongoDBAdapter.extend * @param {object} [props={}] Properties to add to the prototype of the From 40150e22afd79a569aba9e3906447b5fc22d46c2 Mon Sep 17 00:00:00 2001 From: Jason Dobry Date: Fri, 18 Aug 2017 00:20:11 -0700 Subject: [PATCH 22/22] 1.0.2 --- dist/js-data-mongodb.js | 136 ++++++++++++++++++------------------ dist/js-data-mongodb.js.map | 2 +- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/dist/js-data-mongodb.js b/dist/js-data-mongodb.js index 623a3a0..d1d7a30 100644 --- a/dist/js-data-mongodb.js +++ b/dist/js-data-mongodb.js @@ -77,8 +77,8 @@ var REMOVE_OPTS_DEFAULTS = {}; * * @example * // Use Container instead of DataStore on the server - * import {Container} from 'js-data' - * import MongoDBAdapter from 'js-data-mongodb' + * import { Container } from 'js-data'; + * import MongoDBAdapter from 'js-data-mongodb'; * * // Create a store to hold your Mappers * const store = new Container({ @@ -86,16 +86,16 @@ var REMOVE_OPTS_DEFAULTS = {}; * // MongoDB uses "_id" as the primary key * idAttribute: '_id' * } - * }) + * }); * * // Create an instance of MongoDBAdapter with default settings - * const adapter = new MongoDBAdapter() + * const adapter = new MongoDBAdapter(); * * // Mappers in "store" will use the MongoDB adapter by default - * store.registerAdapter('mongodb', adapter, { default: true }) + * store.registerAdapter('mongodb', adapter, { default: true }); * * // Create a Mapper that maps to a "user" collection - * store.defineMapper('user') + * store.defineMapper('user'); * * @class MongoDBAdapter * @extends Adapter @@ -1041,8 +1041,8 @@ jsDataAdapter.Adapter.extend({ * Details of the current version of the `js-data-mongodb` module. * * @example - * import {version} from 'js-data-mongodb' - * console.log(version.full) + * import { version } from 'js-data-mongodb'; + * console.log(version.full); * * @name module:js-data-mongodb.version * @type {object} @@ -1056,18 +1056,18 @@ jsDataAdapter.Adapter.extend({ * otherwise `false` if the current version is not beta. */ var version = { - full: '1.0.1', + full: '1.0.2', major: 1, minor: 0, - patch: 1 + patch: 2 }; /** * {@link MongoDBAdapter} class. * * @example - * import {MongoDBAdapter} from 'js-data-mongodb' - * const adapter = new MongoDBAdapter() + * import { MongoDBAdapter } from 'js-data-mongodb'; + * const adapter = new MongoDBAdapter(); * * @name module:js-data-mongodb.MongoDBAdapter * @see MongoDBAdapter @@ -1078,71 +1078,71 @@ var version = { * Registered as `js-data-mongodb` in NPM. * * @example Install from NPM - * npm i --save js-data-mongodb@rc js-data@rc mongodb bson + * npm i --save js-data-mongodb js-data mongodb bson * * @example Load via CommonJS - * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter - * var adapter = new MongoDBAdapter() + * const MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter; + * const adapter = new MongoDBAdapter(); * * @example Load via ES2015 Modules - * import {MongoDBAdapter} from 'js-data-mongodb' - * const adapter = new MongoDBAdapter() + * import { MongoDBAdapter } from 'js-data-mongodb'; + * const adapter = new MongoDBAdapter(); * * @module js-data-mongodb */ /** -* Create a subclass of this MongoDBAdapter: -* @example MongoDBAdapter.extend -* // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb' -* const JSDataMongoDB = require('js-data-mongodb') -* const { MongoDBAdapter } = JSDataMongoDB -* console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full) -* -* // Extend the class using ES2015 class syntax. -* class CustomMongoDBAdapterClass extends MongoDBAdapter { -* foo () { return 'bar' } -* static beep () { return 'boop' } -* } -* const customMongoDBAdapter = new CustomMongoDBAdapterClass() -* console.log(customMongoDBAdapter.foo()) -* console.log(CustomMongoDBAdapterClass.beep()) -* -* // Extend the class using alternate method. -* const OtherMongoDBAdapterClass = MongoDBAdapter.extend({ -* foo () { return 'bar' } -* }, { -* beep () { return 'boop' } -* }) -* const otherMongoDBAdapter = new OtherMongoDBAdapterClass() -* console.log(otherMongoDBAdapter.foo()) -* console.log(OtherMongoDBAdapterClass.beep()) -* -* // Extend the class, providing a custom constructor. -* function AnotherMongoDBAdapterClass () { -* MongoDBAdapter.call(this) -* this.created_at = new Date().getTime() -* } -* MongoDBAdapter.extend({ -* constructor: AnotherMongoDBAdapterClass, -* foo () { return 'bar' } -* }, { -* beep () { return 'boop' } -* }) -* const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass() -* console.log(anotherMongoDBAdapter.created_at) -* console.log(anotherMongoDBAdapter.foo()) -* console.log(AnotherMongoDBAdapterClass.beep()) -* -* @method MongoDBAdapter.extend -* @param {object} [props={}] Properties to add to the prototype of the -* subclass. -* @param {object} [props.constructor] Provide a custom constructor function -* to be used as the subclass itself. -* @param {object} [classProps={}] Static properties to add to the subclass. -* @returns {Constructor} Subclass of this MongoDBAdapter class. -* @since 3.0.0 -*/ + * Create a subclass of this MongoDBAdapter: + * @example MongoDBAdapter.extend + * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'; + * const JSDataMongoDB = require('js-data-mongodb'); + * const { MongoDBAdapter } = JSDataMongoDB; + * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full); + * + * // Extend the class using ES2015 class syntax. + * class CustomMongoDBAdapterClass extends MongoDBAdapter { + * foo () { return 'bar'; } + * static beep () { return 'boop'; } + * } + * const customMongoDBAdapter = new CustomMongoDBAdapterClass(); + * console.log(customMongoDBAdapter.foo()); + * console.log(CustomMongoDBAdapterClass.beep()); + * + * // Extend the class using alternate method. + * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({ + * foo () { return 'bar'; } + * }, { + * beep () { return 'boop'; } + * }); + * const otherMongoDBAdapter = new OtherMongoDBAdapterClass(); + * console.log(otherMongoDBAdapter.foo()); + * console.log(OtherMongoDBAdapterClass.beep()); + * + * // Extend the class, providing a custom constructor. + * function AnotherMongoDBAdapterClass () { + * MongoDBAdapter.call(this); + * this.created_at = new Date().getTime(); + * } + * MongoDBAdapter.extend({ + * constructor: AnotherMongoDBAdapterClass, + * foo () { return 'bar'; } + * }, { + * beep () { return 'boop'; } + * }); + * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass(); + * console.log(anotherMongoDBAdapter.created_at); + * console.log(anotherMongoDBAdapter.foo()); + * console.log(AnotherMongoDBAdapterClass.beep()); + * + * @method MongoDBAdapter.extend + * @param {object} [props={}] Properties to add to the prototype of the + * subclass. + * @param {object} [props.constructor] Provide a custom constructor function + * to be used as the subclass itself. + * @param {object} [classProps={}] Static properties to add to the subclass. + * @returns {Constructor} Subclass of this MongoDBAdapter class. + * @since 3.0.0 + */ exports.MongoDBAdapter = MongoDBAdapter; exports.version = version; diff --git a/dist/js-data-mongodb.js.map b/dist/js-data-mongodb.js.map index c38b54b..badd373 100644 --- a/dist/js-data-mongodb.js.map +++ b/dist/js-data-mongodb.js.map @@ -1 +1 @@ -{"version":3,"file":"js-data-mongodb.js","sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport snakeCase from 'lodash.snakecase'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from database that are ObjectIDs to strings\n *\n * @name MongoDBAdapter#translateObjectIDs\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017',\n\n /**\n * MongoDB Driver options\n *\n * @name MongoDBAdapter#mongoDriverOpts\n * @type {object}\n * @default { ignoreUndefined: true }\n */\n mongoDriverOpts: {\n ignoreUndefined: true\n }\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import {Container} from 'js-data'\n * import MongoDBAdapter from 'js-data-mongodb'\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * })\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter()\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true })\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user')\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#destroy.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n } else {\n record = undefined\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || snakeCase(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import {version} from 'js-data-mongodb'\n * console.log(version.full)\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb@rc js-data@rc mongodb bson\n *\n * @example Load via CommonJS\n * var MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter\n * var adapter = new MongoDBAdapter()\n *\n * @example Load via ES2015 Modules\n * import {MongoDBAdapter} from 'js-data-mongodb'\n * const adapter = new MongoDBAdapter()\n *\n * @module js-data-mongodb\n */\n\n /**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb'\n * const JSDataMongoDB = require('js-data-mongodb')\n * const { MongoDBAdapter } = JSDataMongoDB\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full)\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar' }\n * static beep () { return 'boop' }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass()\n * console.log(customMongoDBAdapter.foo())\n * console.log(CustomMongoDBAdapterClass.beep())\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass()\n * console.log(otherMongoDBAdapter.foo())\n * console.log(OtherMongoDBAdapterClass.beep())\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this)\n * this.created_at = new Date().getTime()\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar' }\n * }, {\n * beep () { return 'boop' }\n * })\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass()\n * console.log(anotherMongoDBAdapter.created_at)\n * console.log(anotherMongoDBAdapter.foo())\n * console.log(AnotherMongoDBAdapterClass.beep())\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["DEFAULTS","COUNT_OPTS_DEFAULTS","FIND_OPTS_DEFAULTS","FIND_ONE_OPTS_DEFAULTS","INSERT_OPTS_DEFAULTS","INSERT_MANY_OPTS_DEFAULTS","UPDATE_OPTS_DEFAULTS","REMOVE_OPTS_DEFAULTS","MongoDBAdapter","opts","classCallCheck","utils","isString","uri","fillIn","defineProperties","undefined","call","countOpts","findOpts","findOneOpts","insertOpts","insertManyOpts","updateOpts","removeOpts","client","Promise","resolve","reject","connect","mongoDriverOpts","err","db","_db","Adapter","extend","r","getOpt","_translateFieldObjectIDs","_translateId","isArray","forEach","_r","__id","_id","toString","isObject","_checkFields","field","_bsontype","mapper","query","_run","success","failure","collectionId","_getCollectionId","getQueryOptions","mongoQuery","getQuery","collection","count","props","handler","cursor","plainCopy","insertOne","insert","then","record","ops","_translateObjectIDs","connection","insertMany","records","id","idAttribute","toObjectID","deleteOne","remove","deleteMany","with","fields","_getFields","findOne","find","toArray","table","snakeCase","name","cb","getClient","_find","raw","result","Error","updateOne","$set","update","ids","_findAll","multi","queryOptions","map","updateMany","where","forOwn","config","keyword","reserved","indexOf","Object","keys","length","criteria","v","op","$ne","$gt","$gte","$lt","$lte","$in","$nin","$or","orEqQuery","push","orNeQuery","orGtQuery","orGteQuery","orLtQuery","orLteQuery","orInQuery","orNinQuery","orderBy","sort","skip","offset","i","limit","ObjectID","isValid","def","getRelation","prototype","makeBelongsToForeignKey","relatedMapper","localKeys","makeHasManyLocalKeys","key","version"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"js-data-mongodb.js","sources":["../src/index.js"],"sourcesContent":["import {MongoClient} from 'mongodb'\nimport {ObjectID} from 'bson'\nimport {utils} from 'js-data'\nimport {\n Adapter,\n reserved\n} from 'js-data-adapter'\nimport snakeCase from 'lodash.snakecase'\n\nconst DEFAULTS = {\n /**\n * Convert ObjectIDs to strings when pulling records out of the database.\n *\n * @name MongoDBAdapter#translateId\n * @type {boolean}\n * @default true\n */\n translateId: true,\n /**\n * Convert fields of record from database that are ObjectIDs to strings\n *\n * @name MongoDBAdapter#translateObjectIDs\n * @type {Boolean}\n * @default false\n */\n translateObjectIDs: false,\n\n /**\n * MongoDB URI.\n *\n * @name MongoDBAdapter#uri\n * @type {string}\n * @default mongodb://localhost:27017\n */\n uri: 'mongodb://localhost:27017',\n\n /**\n * MongoDB Driver options\n *\n * @name MongoDBAdapter#mongoDriverOpts\n * @type {object}\n * @default { ignoreUndefined: true }\n */\n mongoDriverOpts: {\n ignoreUndefined: true\n }\n}\n\nconst COUNT_OPTS_DEFAULTS = {}\nconst FIND_OPTS_DEFAULTS = {}\nconst FIND_ONE_OPTS_DEFAULTS = {}\nconst INSERT_OPTS_DEFAULTS = {}\nconst INSERT_MANY_OPTS_DEFAULTS = {}\nconst UPDATE_OPTS_DEFAULTS = {}\nconst REMOVE_OPTS_DEFAULTS = {}\n\n/**\n * MongoDBAdapter class.\n *\n * @example\n * // Use Container instead of DataStore on the server\n * import { Container } from 'js-data';\n * import MongoDBAdapter from 'js-data-mongodb';\n *\n * // Create a store to hold your Mappers\n * const store = new Container({\n * mapperDefaults: {\n * // MongoDB uses \"_id\" as the primary key\n * idAttribute: '_id'\n * }\n * });\n *\n * // Create an instance of MongoDBAdapter with default settings\n * const adapter = new MongoDBAdapter();\n *\n * // Mappers in \"store\" will use the MongoDB adapter by default\n * store.registerAdapter('mongodb', adapter, { default: true });\n *\n * // Create a Mapper that maps to a \"user\" collection\n * store.defineMapper('user');\n *\n * @class MongoDBAdapter\n * @extends Adapter\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.debug=false] See {@link Adapter#debug}.\n * @param {object} [opts.countOpts] See {@link MongoDBAdapter#countOpts}.\n * @param {object} [opts.findOpts] See {@link MongoDBAdapter#findOpts}.\n * @param {object} [opts.findOneOpts] See {@link MongoDBAdapter#findOneOpts}.\n * @param {object} [opts.insertOpts] See {@link MongoDBAdapter#insertOpts}.\n * @param {object} [opts.insertManyOpts] See {@link MongoDBAdapter#insertManyOpts}.\n * @param {boolean} [opts.raw=false] See {@link Adapter#raw}.\n * @param {object} [opts.removeOpts] See {@link MongoDBAdapter#removeOpts}.\n * @param {boolean} [opts.translateId=true] See {@link MongoDBAdapter#translateId}.\n * @param {boolean} [opts.translateObjectIDs=false] See {@link MongoDBAdapter#translateObjectIDs}.\n * @param {object} [opts.updateOpts] See {@link MongoDBAdapter#updateOpts}.\n * @param {string} [opts.uri=\"mongodb://localhost:27017\"] See {@link MongoDBAdapter#uri}.\n */\nexport function MongoDBAdapter (opts) {\n utils.classCallCheck(this, MongoDBAdapter)\n opts || (opts = {})\n if (utils.isString(opts)) {\n opts = { uri: opts }\n }\n utils.fillIn(opts, DEFAULTS)\n\n // Setup non-enumerable properties\n Object.defineProperties(this, {\n /**\n * A Promise that resolves to a reference to the MongoDB client being used by\n * this adapter.\n *\n * @name MongoDBAdapter#client\n * @type {Promise}\n */\n client: {\n writable: true,\n value: undefined\n },\n\n _db: {\n writable: true,\n value: undefined\n }\n })\n\n Adapter.call(this, opts)\n\n /**\n * Default options to pass to collection#count.\n *\n * @name MongoDBAdapter#countOpts\n * @type {object}\n * @default {}\n */\n this.countOpts || (this.countOpts = {})\n utils.fillIn(this.countOpts, COUNT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#find.\n *\n * @name MongoDBAdapter#findOpts\n * @type {object}\n * @default {}\n */\n this.findOpts || (this.findOpts = {})\n utils.fillIn(this.findOpts, FIND_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#findOne.\n *\n * @name MongoDBAdapter#findOneOpts\n * @type {object}\n * @default {}\n */\n this.findOneOpts || (this.findOneOpts = {})\n utils.fillIn(this.findOneOpts, FIND_ONE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insert.\n *\n * @name MongoDBAdapter#insertOpts\n * @type {object}\n * @default {}\n */\n this.insertOpts || (this.insertOpts = {})\n utils.fillIn(this.insertOpts, INSERT_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#insertMany.\n *\n * @name MongoDBAdapter#insertManyOpts\n * @type {object}\n * @default {}\n */\n this.insertManyOpts || (this.insertManyOpts = {})\n utils.fillIn(this.insertManyOpts, INSERT_MANY_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#update.\n *\n * @name MongoDBAdapter#updateOpts\n * @type {object}\n * @default {}\n */\n this.updateOpts || (this.updateOpts = {})\n utils.fillIn(this.updateOpts, UPDATE_OPTS_DEFAULTS)\n\n /**\n * Default options to pass to collection#destroy.\n *\n * @name MongoDBAdapter#removeOpts\n * @type {object}\n * @default {}\n */\n this.removeOpts || (this.removeOpts = {})\n utils.fillIn(this.removeOpts, REMOVE_OPTS_DEFAULTS)\n\n this.client = new utils.Promise((resolve, reject) => {\n MongoClient.connect(opts.uri, opts.mongoDriverOpts, (err, db) => {\n if (err) {\n return reject(err)\n }\n this._db = db\n resolve(db)\n })\n })\n}\n\nAdapter.extend({\n constructor: MongoDBAdapter,\n\n _translateObjectIDs (r, opts) {\n opts || (opts = {})\n if (this.getOpt('translateObjectIDs', opts)) {\n this._translateFieldObjectIDs(r)\n } else if (this.getOpt('translateId', opts)) {\n this._translateId(r)\n }\n return r\n },\n\n /**\n * Translate ObjectIDs to strings.\n *\n * @method MongoDBAdapter#_translateId\n * @return {*}\n */\n _translateId (r) {\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n const __id = _r._id ? _r._id.toString() : _r._id\n _r._id = typeof __id === 'string' ? __id : _r._id\n })\n } else if (utils.isObject(r)) {\n const __id = r._id ? r._id.toString() : r._id\n r._id = typeof __id === 'string' ? __id : r._id\n }\n return r\n },\n\n _translateFieldObjectIDs (r) {\n const _checkFields = (r) => {\n for (let field in r) {\n if (r[field]._bsontype === 'ObjectID') {\n r[field] = typeof r[field].toString() === 'string' ? r[field].toString() : r[field]\n }\n }\n }\n if (utils.isArray(r)) {\n r.forEach((_r) => {\n _checkFields(_r)\n })\n } else if (utils.isObject(r)) {\n _checkFields(r)\n }\n return r\n },\n\n /**\n * Retrieve the number of records that match the selection query.\n *\n * @method MongoDBAdapter#count\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.countOpts] Options to pass to collection#count.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#count.\n *\n * @method MongoDBAdapter#_count\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _count (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const countOpts = this.getOpt('countOpts', opts)\n utils.fillIn(countOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client\n .collection(collectionId)\n .count(mongoQuery, countOpts, (err, count) => err ? failure(err) : success([count, {}]))\n })\n },\n\n /**\n * Create a new record.\n *\n * @method MongoDBAdapter#create\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertOpts] Options to pass to collection#insert.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * @return {Promise}\n */\n\n /**\n * Create a new record. Internal method used by Adapter#create.\n *\n * @method MongoDBAdapter#_create\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The record to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _create (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertOpts = this.getOpt('insertOpts', opts)\n\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n props = utils.plainCopy(props)\n\n if (collection.insertOne) {\n collection\n .insertOne(props, insertOpts, handler)\n } else {\n collection\n .insert(props, insertOpts, handler)\n }\n }).then((cursor) => {\n let record\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n record = utils.isArray(r) ? r[0] : r\n cursor.connection = undefined\n return [record, cursor]\n })\n },\n\n /**\n * Create multiple records in a single batch.\n *\n * @method MongoDBAdapter#createMany\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @param {object} [opts.insertManyOpts] Options to pass to\n * collection#insertMany.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @return {Promise}\n */\n\n /**\n * Create multiple records in a single batch. Internal method used by\n * Adapter#createMany.\n *\n * @method MongoDBAdapter#_createMany\n * @private\n * @param {object} mapper The mapper.\n * @param {object} props The records to be created.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _createMany (mapper, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const insertManyOpts = this.getOpt('insertManyOpts', opts)\n props = utils.plainCopy(props)\n\n client.collection(collectionId)\n .insertMany(props, insertManyOpts, (err, cursor) => err ? failure(err) : success(cursor))\n }).then((cursor) => {\n let records = []\n let r = cursor.ops ? cursor.ops : cursor\n this._translateObjectIDs(r, opts)\n records = r\n cursor.connection = undefined\n return [records, cursor]\n })\n },\n\n /**\n * Destroy the record with the given primary key.\n *\n * @method MongoDBAdapter#destroy\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the record with the given primary key. Internal method used by\n * Adapter#destroy.\n *\n * @method MongoDBAdapter#_destroy\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to destroy.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroy (mapper, id, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteOne) {\n collection\n .deleteOne(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => [undefined, cursor])\n },\n\n /**\n * Destroy the records that match the selection query.\n *\n * @method MongoDBAdapter#destroyAll\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [query.where] Filtering criteria.\n * @param {string|Array} [query.orderBy] Sorting criteria.\n * @param {string|Array} [query.sort] Same as `query.sort`.\n * @param {number} [query.limit] Limit results.\n * @param {number} [query.skip] Offset results.\n * @param {number} [query.offset] Same as `query.skip`.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.removeOpts] Options to pass to collection#remove.\n * @return {Promise}\n */\n\n /**\n * Destroy the records that match the selection query. Internal method used by\n * Adapter#destroyAll.\n *\n * @method MongoDBAdapter#_destroyAll\n * @private\n * @param {object} mapper the mapper.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _destroyAll (mapper, query, opts) {\n query || (query = {})\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const removeOpts = this.getOpt('removeOpts', opts)\n utils.fillIn(removeOpts, this.getQueryOptions(mapper, query))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.deleteMany) {\n collection\n .deleteMany(mongoQuery, removeOpts, handler)\n } else {\n collection\n .remove(mongoQuery, removeOpts, handler)\n }\n }).then((cursor) => {\n cursor.connection = undefined\n return [undefined, cursor]\n })\n },\n\n /**\n * Retrieve the record with the given primary key.\n *\n * @method MongoDBAdapter#find\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOneOpts] Options to pass to collection#findOne.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the record with the given primary key. Internal method used by\n * Adapter#find.\n *\n * @method MongoDBAdapter#_find\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id Primary key of the record to retrieve.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _find (mapper, id, opts) {\n opts || (opts = {})\n opts.with || (opts.with = [])\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOneOpts = this.getOpt('findOneOpts', opts)\n findOneOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n\n client.collection(collectionId)\n .findOne(mongoQuery, findOneOpts, (err, record) => err ? failure(err) : success(record))\n }).then((record) => {\n if (record) {\n this._translateObjectIDs(record, opts)\n } else {\n record = undefined\n }\n return [record, {}]\n })\n },\n\n /**\n * Retrieve the records that match the selection query.\n *\n * @method MongoDBAdapter#findAll\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @param {object} [opts.findOpts] Options to pass to collection#find.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {string[]} [opts.with=[]] Relations to eager load.\n * @return {Promise}\n */\n\n /**\n * Retrieve the records that match the selection query. Internal method used\n * by Adapter#findAll.\n *\n * @method MongoDBAdapter#_findAll\n * @private\n * @param {object} mapper The mapper.\n * @param {object} query Selection query.\n * @param {object} [opts] Configuration options.\n * @param {string|string[]|object} [opts.fields] Select a subset of fields to be returned.\n * @return {Promise}\n */\n _findAll (mapper, query, opts) {\n opts || (opts = {})\n\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const findOpts = this.getOpt('findOpts', opts)\n utils.fillIn(findOpts, this.getQueryOptions(mapper, query))\n findOpts.fields = this._getFields(mapper, opts)\n\n const mongoQuery = this.getQuery(mapper, query)\n\n client.collection(collectionId)\n .find(mongoQuery, findOpts)\n .toArray((err, records) => err ? failure(err) : success(records))\n }).then((records) => {\n this._translateObjectIDs(records, opts)\n return [records, {}]\n })\n },\n\n _getCollectionId (mapper, opts) {\n opts || (opts = {})\n return opts.table || opts.collection || mapper.table || mapper.collection || snakeCase(mapper.name)\n },\n\n _getFields (mapper, opts) {\n opts || (opts = {})\n if (utils.isString(opts.fields)) {\n opts.fields = { [opts.fields]: 1 }\n } else if (utils.isArray(opts.fields)) {\n const fields = {}\n opts.fields.forEach((field) => {\n fields[field] = 1\n })\n return fields\n }\n return opts.fields\n },\n\n _run (cb) {\n if (this._db) {\n // Use the cached db object\n return new utils.Promise((resolve, reject) => {\n cb(this._db, resolve, reject)\n })\n }\n return this.getClient().then((client) => {\n return new utils.Promise((resolve, reject) => {\n cb(client, resolve, reject)\n })\n })\n },\n\n /**\n * Apply the given update to the record with the specified primary key.\n *\n * @method MongoDBAdapter#update\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to the record with the specified primary key.\n * Internal method used by Adapter#update.\n *\n * @method MongoDBAdapter#_update\n * @private\n * @param {object} mapper The mapper.\n * @param {(string|number)} id The primary key of the record to be updated.\n * @param {object} props The update to apply to the record.\n * @param {object} [opts] Configuration options.\n * @return {Promise}\n */\n _update (mapper, id, props, opts) {\n props || (props = {})\n opts || (opts = {})\n\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n if (!result[0]) {\n throw new Error('Not Found')\n }\n return this._run((client, success, failure) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n\n const mongoQuery = {\n [mapper.idAttribute]: this.toObjectID(mapper, id)\n }\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateOne) {\n collection\n .updateOne(mongoQuery, { $set: props }, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, { $set: props }, updateOpts, handler)\n }\n })\n })\n .then((cursor) => {\n return this._find(mapper, id, { raw: false })\n .then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Apply the given update to all records that match the selection query.\n *\n * @method MongoDBAdapter#updateAll\n * @param {object} mapper The mapper.\n * @param {object} props The update to apply to the selected records.\n * @param {object} [query] Selection query.\n * @param {object} [opts] Configuration options.\n * @param {boolean} [opts.raw=false] Whether to return a more detailed\n * response object.\n * @param {object} [opts.updateOpts] Options to pass to collection#update.\n * @return {Promise}\n */\n\n /**\n * Apply the given update to all records that match the selection query.\n * Internal method used by Adapter#updateAll.\n *\n * @method MongoDBAdapter#_updateAll\n * @private\n * @param {Object} mapper The mapper.\n * @param {Object} props The update to apply to the selected records.\n * @param {Object} [query] Selection query.\n * @param {Object} [opts] Configuration options.\n * @return {Promise}\n */\n _updateAll (mapper, props, query, opts) {\n props || (props = {})\n query || (query = {})\n opts || (opts = {})\n let ids\n\n return this._run((client, success, failure) => {\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n const collectionId = this._getCollectionId(mapper, opts)\n const updateOpts = this.getOpt('updateOpts', opts)\n updateOpts.multi = true\n\n const queryOptions = this.getQueryOptions(mapper, query)\n queryOptions.$set = props\n ids = result[0].map((record) => this.toObjectID(mapper, record[mapper.idAttribute]))\n\n const mongoQuery = this.getQuery(mapper, query)\n const collection = client.collection(collectionId)\n const handler = (err, cursor) => err ? failure(err) : success(cursor)\n\n if (collection.updateMany) {\n collection\n .updateMany(mongoQuery, queryOptions, updateOpts, handler)\n } else {\n collection\n .update(mongoQuery, queryOptions, updateOpts, handler)\n }\n })\n }).then((cursor) => {\n const query = {\n [mapper.idAttribute]: {\n 'in': ids\n }\n }\n return this._findAll(mapper, query, { raw: false }).then((result) => {\n cursor.connection = undefined\n return [result[0], cursor]\n })\n })\n },\n\n /**\n * Return a Promise that resolves to a reference to the MongoDB client being\n * used by this adapter.\n *\n * Useful when you need to do anything custom with the MongoDB client library.\n *\n * @method MongoDBAdapter#getClient\n * @return {object} MongoDB client.\n */\n getClient () {\n return this.client\n },\n\n /**\n * Map filtering params in a selection query to MongoDB a filtering object.\n *\n * Handles the following:\n *\n * - where\n * - and bunch of filtering operators\n *\n * @method MongoDBAdapter#getQuery\n * @return {object}\n */\n getQuery (mapper, query) {\n query = utils.plainCopy(query || {})\n query.where || (query.where = {})\n\n utils.forOwn(query, function (config, keyword) {\n if (reserved.indexOf(keyword) === -1) {\n if (utils.isObject(config)) {\n query.where[keyword] = config\n } else {\n query.where[keyword] = {\n '==': config\n }\n }\n delete query[keyword]\n }\n })\n\n let mongoQuery = {}\n\n if (Object.keys(query.where).length !== 0) {\n utils.forOwn(query.where, function (criteria, field) {\n if (!utils.isObject(criteria)) {\n query.where[field] = {\n '==': criteria\n }\n }\n utils.forOwn(criteria, function (v, op) {\n if (op === '==' || op === '===' || op === 'contains') {\n mongoQuery[field] = v\n } else if (op === '!=' || op === '!==' || op === 'notContains') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$ne = v\n } else if (op === '>') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gt = v\n } else if (op === '>=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$gte = v\n } else if (op === '<') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lt = v\n } else if (op === '<=') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$lte = v\n } else if (op === 'in') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$in = v\n } else if (op === 'notIn') {\n mongoQuery[field] = mongoQuery[field] || {}\n mongoQuery[field].$nin = v\n } else if (op === '|==' || op === '|===' || op === '|contains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orEqQuery = {}\n orEqQuery[field] = v\n mongoQuery.$or.push(orEqQuery)\n } else if (op === '|!=' || op === '|!==' || op === '|notContains') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNeQuery = {}\n orNeQuery[field] = {\n '$ne': v\n }\n mongoQuery.$or.push(orNeQuery)\n } else if (op === '|>') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGtQuery = {}\n orGtQuery[field] = {\n '$gt': v\n }\n mongoQuery.$or.push(orGtQuery)\n } else if (op === '|>=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orGteQuery = {}\n orGteQuery[field] = {\n '$gte': v\n }\n mongoQuery.$or.push(orGteQuery)\n } else if (op === '|<') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLtQuery = {}\n orLtQuery[field] = {\n '$lt': v\n }\n mongoQuery.$or.push(orLtQuery)\n } else if (op === '|<=') {\n mongoQuery.$or = mongoQuery.$or || []\n let orLteQuery = {}\n orLteQuery[field] = {\n '$lte': v\n }\n mongoQuery.$or.push(orLteQuery)\n } else if (op === '|in') {\n mongoQuery.$or = mongoQuery.$or || []\n let orInQuery = {}\n orInQuery[field] = {\n '$in': v\n }\n mongoQuery.$or.push(orInQuery)\n } else if (op === '|notIn') {\n mongoQuery.$or = mongoQuery.$or || []\n let orNinQuery = {}\n orNinQuery[field] = {\n '$nin': v\n }\n mongoQuery.$or.push(orNinQuery)\n }\n })\n })\n }\n\n return mongoQuery\n },\n\n /**\n * Map non-filtering params in a selection query to MongoDB query options.\n *\n * Handles the following:\n *\n * - limit\n * - skip/offset\n * - orderBy/sort\n *\n * @method MongoDBAdapter#getQueryOptions\n * @return {object}\n */\n getQueryOptions (mapper, query) {\n query = utils.plainCopy(query || {})\n query.orderBy = query.orderBy || query.sort\n query.skip = query.skip || query.offset\n\n let queryOptions = {}\n\n if (query.orderBy) {\n if (utils.isString(query.orderBy)) {\n query.orderBy = [\n [query.orderBy, 'asc']\n ]\n }\n for (var i = 0; i < query.orderBy.length; i++) {\n if (utils.isString(query.orderBy[i])) {\n query.orderBy[i] = [query.orderBy[i], 'asc']\n }\n }\n queryOptions.sort = query.orderBy\n }\n\n if (query.skip) {\n queryOptions.skip = +query.skip\n }\n\n if (query.limit) {\n queryOptions.limit = +query.limit\n }\n\n return queryOptions\n },\n\n /**\n * Turn an _id into an ObjectID if it isn't already an ObjectID.\n *\n * @method MongoDBAdapter#toObjectID\n * @return {*}\n */\n toObjectID (mapper, id) {\n if (id !== undefined && mapper.idAttribute === '_id' && typeof id === 'string' && ObjectID.isValid(id) && !(id instanceof ObjectID)) {\n return new ObjectID(id)\n }\n return id\n },\n\n /**\n * Return the foreignKey from the given record for the provided relationship.\n *\n * @method MongoDBAdapter#makeBelongsToForeignKey\n * @return {*}\n */\n makeBelongsToForeignKey (mapper, def, record) {\n return this.toObjectID(def.getRelation(), Adapter.prototype.makeBelongsToForeignKey.call(this, mapper, def, record))\n },\n\n /**\n * Return the localKeys from the given record for the provided relationship.\n *\n * Override with care.\n *\n * @method MongoDBAdapter#makeHasManyLocalKeys\n * @return {*}\n */\n makeHasManyLocalKeys (mapper, def, record) {\n const relatedMapper = def.getRelation()\n const localKeys = Adapter.prototype.makeHasManyLocalKeys.call(this, mapper, def, record)\n return localKeys.map((key) => this.toObjectID(relatedMapper, key))\n },\n\n /**\n * Not supported.\n *\n * @method MongoDBAdapter#updateMany\n */\n updateMany () {\n throw new Error('not supported!')\n }\n})\n\n/**\n * Details of the current version of the `js-data-mongodb` module.\n *\n * @example\n * import { version } from 'js-data-mongodb';\n * console.log(version.full);\n *\n * @name module:js-data-mongodb.version\n * @type {object}\n * @property {string} version.full The full semver value.\n * @property {number} version.major The major version number.\n * @property {number} version.minor The minor version number.\n * @property {number} version.patch The patch version number.\n * @property {(string|boolean)} version.alpha The alpha version value,\n * otherwise `false` if the current version is not alpha.\n * @property {(string|boolean)} version.beta The beta version value,\n * otherwise `false` if the current version is not beta.\n */\nexport const version = '<%= version %>'\n\n/**\n * {@link MongoDBAdapter} class.\n *\n * @example\n * import { MongoDBAdapter } from 'js-data-mongodb';\n * const adapter = new MongoDBAdapter();\n *\n * @name module:js-data-mongodb.MongoDBAdapter\n * @see MongoDBAdapter\n * @type {Constructor}\n */\n\n/**\n * Registered as `js-data-mongodb` in NPM.\n *\n * @example Install from NPM\n * npm i --save js-data-mongodb js-data mongodb bson\n *\n * @example Load via CommonJS\n * const MongoDBAdapter = require('js-data-mongodb').MongoDBAdapter;\n * const adapter = new MongoDBAdapter();\n *\n * @example Load via ES2015 Modules\n * import { MongoDBAdapter } from 'js-data-mongodb';\n * const adapter = new MongoDBAdapter();\n *\n * @module js-data-mongodb\n */\n\n/**\n * Create a subclass of this MongoDBAdapter:\n * @example MongoDBAdapter.extend\n * // Normally you would do: import { MongoDBAdapter } from 'js-data-mongodb';\n * const JSDataMongoDB = require('js-data-mongodb');\n * const { MongoDBAdapter } = JSDataMongoDB;\n * console.log('Using JSDataMongoDB v' + JSDataMongoDB.version.full);\n *\n * // Extend the class using ES2015 class syntax.\n * class CustomMongoDBAdapterClass extends MongoDBAdapter {\n * foo () { return 'bar'; }\n * static beep () { return 'boop'; }\n * }\n * const customMongoDBAdapter = new CustomMongoDBAdapterClass();\n * console.log(customMongoDBAdapter.foo());\n * console.log(CustomMongoDBAdapterClass.beep());\n *\n * // Extend the class using alternate method.\n * const OtherMongoDBAdapterClass = MongoDBAdapter.extend({\n * foo () { return 'bar'; }\n * }, {\n * beep () { return 'boop'; }\n * });\n * const otherMongoDBAdapter = new OtherMongoDBAdapterClass();\n * console.log(otherMongoDBAdapter.foo());\n * console.log(OtherMongoDBAdapterClass.beep());\n *\n * // Extend the class, providing a custom constructor.\n * function AnotherMongoDBAdapterClass () {\n * MongoDBAdapter.call(this);\n * this.created_at = new Date().getTime();\n * }\n * MongoDBAdapter.extend({\n * constructor: AnotherMongoDBAdapterClass,\n * foo () { return 'bar'; }\n * }, {\n * beep () { return 'boop'; }\n * });\n * const anotherMongoDBAdapter = new AnotherMongoDBAdapterClass();\n * console.log(anotherMongoDBAdapter.created_at);\n * console.log(anotherMongoDBAdapter.foo());\n * console.log(AnotherMongoDBAdapterClass.beep());\n *\n * @method MongoDBAdapter.extend\n * @param {object} [props={}] Properties to add to the prototype of the\n * subclass.\n * @param {object} [props.constructor] Provide a custom constructor function\n * to be used as the subclass itself.\n * @param {object} [classProps={}] Static properties to add to the subclass.\n * @returns {Constructor} Subclass of this MongoDBAdapter class.\n * @since 3.0.0\n */\n"],"names":["DEFAULTS","COUNT_OPTS_DEFAULTS","FIND_OPTS_DEFAULTS","FIND_ONE_OPTS_DEFAULTS","INSERT_OPTS_DEFAULTS","INSERT_MANY_OPTS_DEFAULTS","UPDATE_OPTS_DEFAULTS","REMOVE_OPTS_DEFAULTS","MongoDBAdapter","opts","classCallCheck","utils","isString","uri","fillIn","defineProperties","undefined","call","countOpts","findOpts","findOneOpts","insertOpts","insertManyOpts","updateOpts","removeOpts","client","Promise","resolve","reject","connect","mongoDriverOpts","err","db","_db","Adapter","extend","r","getOpt","_translateFieldObjectIDs","_translateId","isArray","forEach","_r","__id","_id","toString","isObject","_checkFields","field","_bsontype","mapper","query","_run","success","failure","collectionId","_getCollectionId","getQueryOptions","mongoQuery","getQuery","collection","count","props","handler","cursor","plainCopy","insertOne","insert","then","record","ops","_translateObjectIDs","connection","insertMany","records","id","idAttribute","toObjectID","deleteOne","remove","deleteMany","with","fields","_getFields","findOne","find","toArray","table","snakeCase","name","cb","getClient","_find","raw","result","Error","updateOne","$set","update","ids","_findAll","multi","queryOptions","map","updateMany","where","forOwn","config","keyword","reserved","indexOf","Object","keys","length","criteria","v","op","$ne","$gt","$gte","$lt","$lte","$in","$nin","$or","orEqQuery","push","orNeQuery","orGtQuery","orGteQuery","orLtQuery","orLteQuery","orInQuery","orNinQuery","orderBy","sort","skip","offset","i","limit","ObjectID","isValid","def","getRelation","prototype","makeBelongsToForeignKey","relatedMapper","localKeys","makeHasManyLocalKeys","key","version"],"mappings":"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"} \ No newline at end of file