├── .editorconfig ├── .github ├── contributing.md ├── issue_template.md └── pull_request_template.md ├── .gitignore ├── .istanbul.yml ├── .npmignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── lib └── index.js ├── mocha.opts ├── package-lock.json ├── package.json └── test ├── config ├── custom-environment-variables.json ├── default.json └── testing.js └── index.test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.github/contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing to Feathers 2 | 3 | Thank you for contributing to Feathers! :heart: :tada: 4 | 5 | This repo is the main core and where most issues are reported. Feathers embraces modularity and is broken up across many repos. To make this easier to manage we currently use [Zenhub](https://www.zenhub.com/) for issue triage and visibility. They have a free browser plugin you can install so that you can see what is in flight at any time, but of course you also always see current issues in Github. 6 | 7 | ## Report a bug 8 | 9 | Before creating an issue please make sure you have checked out the docs, specifically the [FAQ](https://docs.feathersjs.com/help/faq.html) section. You might want to also try searching Github. It's pretty likely someone has already asked a similar question. 10 | 11 | If you haven't found your answer please feel free to join our [slack channel](http://slack.feathersjs.com), create an issue on Github, or post on [Stackoverflow](http://stackoverflow.com) using the `feathers` or `feathersjs` tag. We try our best to monitor Stackoverflow but you're likely to get more immediate responses in Slack and Github. 12 | 13 | Issues can be reported in the [issue tracker](https://github.com/feathersjs/feathers/issues). Since feathers combines many modules it can be hard for us to assess the root cause without knowing which modules are being used and what your configuration looks like, so **it helps us immensely if you can link to a simple example that reproduces your issue**. 14 | 15 | ## Report a Security Concern 16 | 17 | We take security very seriously at Feathers. We welcome any peer review of our 100% open source code to ensure nobody's Feathers app is ever compromised or hacked. As a web application developer you are responsible for any security breaches. We do our very best to make sure Feathers is as secure as possible by default. 18 | 19 | In order to give the community time to respond and upgrade we strongly urge you report all security issues to us. Send one of the core team members a PM in [Slack](http://slack.feathersjs.com) or email us at hello@feathersjs.com with details and we will respond ASAP. 20 | 21 | For full details refer to our [Security docs](https://docs.feathersjs.com/SECURITY.html). 22 | 23 | ## Pull Requests 24 | 25 | We :heart: pull requests and we're continually working to make it as easy as possible for people to contribute, including a [Plugin Generator](https://github.com/feathersjs/generator-feathers-plugin) and a [common test suite](https://github.com/feathersjs/feathers-service-tests) for database adapters. 26 | 27 | We prefer small pull requests with minimal code changes. The smaller they are the easier they are to review and merge. A core team member will pick up your PR and review it as soon as they can. They may ask for changes or reject your pull request. This is not a reflection of you as an engineer or a person. Please accept feedback graciously as we will also try to be sensitive when providing it. 28 | 29 | Although we generally accept many PRs they can be rejected for many reasons. We will be as transparent as possible but it may simply be that you do not have the same context or information regarding the roadmap that the core team members have. We value the time you take to put together any contributions so we pledge to always be respectful of that time and will try to be as open as possible so that you don't waste it. :smile: 30 | 31 | **All PRs (except documentation) should be accompanied with tests and pass the linting rules.** 32 | 33 | ### Code style 34 | 35 | Before running the tests from the `test/` folder `npm test` will run ESlint. You can check your code changes individually by running `npm run lint`. 36 | 37 | ### ES6 compilation 38 | 39 | Feathers uses [Babel](https://babeljs.io/) to leverage the latest developments of the JavaScript language. All code and samples are currently written in ES2015. To transpile the code in this repository run 40 | 41 | > npm run compile 42 | 43 | __Note:__ `npm test` will run the compilation automatically before the tests. 44 | 45 | ### Tests 46 | 47 | [Mocha](http://mochajs.org/) tests are located in the `test/` folder and can be run using the `npm run mocha` or `npm test` (with ESLint and code coverage) command. 48 | 49 | ### Documentation 50 | 51 | Feathers documentation is contained in Markdown files in the [feathers-docs](https://github.com/feathersjs/feathers-docs) repository. To change the documentation submit a pull request to that repo, referencing any other PR if applicable, and the docs will be updated with the next release. 52 | 53 | ## External Modules 54 | 55 | If you're written something awesome for Feathers, the Feathers ecosystem, or using Feathers please add it to the [showcase](https://docs.feathersjs.com/why/showcase.html). You also might want to check out the [Plugin Generator](https://github.com/feathersjs/generator-feathers-plugin) that can be used to scaffold plugins to be Feathers compliant from the start. 56 | 57 | If you think it would be a good core module then please contact one of the Feathers core team members in [Slack](http://slack.feathersjs.com) and we can discuss whether it belongs in core and how to get it there. :beers: 58 | 59 | ## Contributor Code of Conduct 60 | 61 | As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. 62 | 63 | We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. 64 | 65 | Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. 66 | 67 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team. 68 | 69 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. 70 | 71 | This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/) 72 | -------------------------------------------------------------------------------- /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | ### Steps to reproduce 2 | 3 | (First please check that this issue is not already solved as [described 4 | here](https://github.com/feathersjs/feathers/blob/master/.github/contributing.md#report-a-bug)) 5 | 6 | - [ ] Tell us what broke. The more detailed the better. 7 | - [ ] If you can, please create a simple example that reproduces the issue and link to a gist, jsbin, repo, etc. 8 | 9 | ### Expected behavior 10 | Tell us what should happen 11 | 12 | ### Actual behavior 13 | Tell us what happens instead 14 | 15 | ### System configuration 16 | 17 | Tell us about the applicable parts of your setup. 18 | 19 | **Module versions** (especially the part that's not working): 20 | 21 | **NodeJS version**: 22 | 23 | **Operating System**: 24 | 25 | **Browser Version**: 26 | 27 | **React Native Version**: 28 | 29 | **Module Loader**: -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### Summary 2 | 3 | (If you have not already please refer to the contributing guideline as [described 4 | here](https://github.com/feathersjs/feathers/blob/master/.github/contributing.md#pull-requests)) 5 | 6 | - [ ] Tell us about the problem your pull request is solving. 7 | - [ ] Are there any open issues that are related to this? 8 | - [ ] Is this PR dependent on PRs in other repos? 9 | 10 | If so, please mention them to keep the conversations linked together. 11 | 12 | ### Other Information 13 | 14 | If there's anything else that's important and relevant to your pull 15 | request, mention that information here. This could include 16 | benchmarks, or other information. 17 | 18 | Your PR will be reviewed by a core team member and they will work with you to get your changes merged in a timely manner. If merged your PR will automatically be added to the changelog in the next release. 19 | 20 | If your changes involve documentation updates please mention that and link the appropriate PR in [feathers-docs](https://github.com/feathersjs/feathers-docs). 21 | 22 | Thanks for contributing to Feathers! :heart: -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Logs 4 | logs 5 | *.log 6 | 7 | # Runtime data 8 | pids 9 | *.pid 10 | *.seed 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 19 | .grunt 20 | 21 | # Compiled binary addons (http://nodejs.org/api/addons.html) 22 | build/Release 23 | 24 | # Dependency directory 25 | # Commenting this out is preferred by some people, see 26 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 27 | node_modules 28 | 29 | # Users Environment Variables 30 | .lock-wscript 31 | 32 | dist/ 33 | -------------------------------------------------------------------------------- /.istanbul.yml: -------------------------------------------------------------------------------- 1 | verbose: false 2 | instrumentation: 3 | root: ./lib/ 4 | include-all-sources: true 5 | reporting: 6 | print: summary 7 | reports: 8 | - html 9 | - text 10 | - lcov 11 | watermarks: 12 | statements: [50, 80] 13 | lines: [50, 80] 14 | functions: [50, 80] 15 | branches: [50, 80] 16 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .editorconfig 2 | .jshintrc 3 | .travis.yml 4 | .istanbul.yml 5 | .babelrc 6 | .idea/ 7 | .vscode/ 8 | test/ 9 | coverage/ 10 | .github/ 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | install: npm install 3 | node_js: 4 | - node 5 | - '6' 6 | sudo: false 7 | before_script: 8 | - npm install -g codeclimate-test-reporter 9 | after_script: 10 | - codeclimate-test-reporter < coverage/lcov.info 11 | addons: 12 | code_climate: 13 | repo_token: 740faa053b40feb3e488294d03b405d9af40a604e424979fb78fb247e0de09d1 14 | notifications: 15 | email: false 16 | slack: 17 | rooms: 18 | secure: V4oZlUX3TM/pWJBAw0nUW3BOTzSCCg+eor/sGjNm+Y4iVgljD/fPcOKTavnWeYv0d+0StewxqwB0NwD8Ccg+U0LRKdu6eSHm9MvA7HPT1OK0WsTP/M+OXPh63V8ZnBnmRj/kPzsF8JXNOIQVEIN2yYV6id6w0PBVQNgAUEhCDDy6+AOb5wPq8DgGXBol1F5/u3/7yYdCjYEUmJoI6lOnMrIOCBj6im97aBRsqW4bZzPPvOD2MZIYNYVH/Yh+EwWSJIzDJWIZIX5DPckjAwKC6t9Nq4AJgN5Va0dOOl8k9AwdL21Rndi4BAqjtY2/XKJdmXfHAMIV4BIU/NGEgTH2M5tL9hvnvL9Go5lRpFY7LisRzK9ekisOwJVzid+AkENj/C88mVG4fc8rv4QIlcLibejRa09YZYM7v5Iw/h9AYTutI6FpDMvLYw7i4aXjvMMHYqdImpN9HXeX2Q/NktnFG1t2XPN9ISYQSSFnnwllQgaYHE/1esdtBhdxYJWybinr6bS7vKGtve12ARIU4POY3Lgw6j6nTq/YwemU25uQ8ESUnDcl+b4Awvv2jrqJe7T1feadndR1mrK7pQGfsJ09elOyBy2H7WfBeLXON9FVw3UVFEwbZQj39HGW42NT3BnSe/SsEoRAjFTFuASbxCp+pMA3HjxBin1eQQbUE20b4ZA= 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [v2.0.0](https://github.com/feathersjs/configuration/tree/v2.0.0) (2018-07-30) 4 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v1.0.2...v2.0.0) 5 | 6 | **Closed issues:** 7 | 8 | - Config adding a value of userName in runtime its overwritten to the OS name [\#58](https://github.com/feathersjs/configuration/issues/58) 9 | - Configuration Management [\#26](https://github.com/feathersjs/configuration/issues/26) 10 | 11 | **Merged pull requests:** 12 | 13 | - Update config to the latest version 🚀 [\#59](https://github.com/feathersjs/configuration/pull/59) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 14 | - misspelling [\#57](https://github.com/feathersjs/configuration/pull/57) ([chaintng](https://github.com/chaintng)) 15 | - Update mocha to the latest version 🚀 [\#56](https://github.com/feathersjs/configuration/pull/56) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 16 | 17 | ## [v1.0.2](https://github.com/feathersjs/configuration/tree/v1.0.2) (2018-01-02) 18 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v1.0.1...v1.0.2) 19 | 20 | **Merged pull requests:** 21 | 22 | - Remove example and update Readme to point directly to the Feathers docs [\#55](https://github.com/feathersjs/configuration/pull/55) ([daffl](https://github.com/daffl)) 23 | 24 | ## [v1.0.1](https://github.com/feathersjs/configuration/tree/v1.0.1) (2017-11-16) 25 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v1.0.0...v1.0.1) 26 | 27 | **Merged pull requests:** 28 | 29 | - Add default export for better ES module \(TypeScript\) compatibility [\#53](https://github.com/feathersjs/configuration/pull/53) ([daffl](https://github.com/daffl)) 30 | - Update nsp to the latest version 🚀 [\#52](https://github.com/feathersjs/configuration/pull/52) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 31 | 32 | ## [v1.0.0](https://github.com/feathersjs/configuration/tree/v1.0.0) (2017-11-01) 33 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v1.0.0-pre.1...v1.0.0) 34 | 35 | ## [v1.0.0-pre.1](https://github.com/feathersjs/configuration/tree/v1.0.0-pre.1) (2017-10-23) 36 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.4.2...v1.0.0-pre.1) 37 | 38 | **Closed issues:** 39 | 40 | - Move config options to app.config instead of the Express app object. [\#31](https://github.com/feathersjs/configuration/issues/31) 41 | 42 | **Merged pull requests:** 43 | 44 | - Update to new plugin infrastructure and npm scopes [\#51](https://github.com/feathersjs/configuration/pull/51) ([daffl](https://github.com/daffl)) 45 | 46 | ## [v0.4.2](https://github.com/feathersjs/configuration/tree/v0.4.2) (2017-10-15) 47 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.4.1...v0.4.2) 48 | 49 | **Closed issues:** 50 | 51 | - Missing TypeScript declaration file [\#48](https://github.com/feathersjs/configuration/issues/48) 52 | - Feathers writing in typescript fails to boot on configuration [\#47](https://github.com/feathersjs/configuration/issues/47) 53 | - Prevent automatic expansion of environment variables [\#42](https://github.com/feathersjs/configuration/issues/42) 54 | - Getting Env name [\#41](https://github.com/feathersjs/configuration/issues/41) 55 | - Nested configuration [\#38](https://github.com/feathersjs/configuration/issues/38) 56 | - Stuck in configuration loophole... [\#37](https://github.com/feathersjs/configuration/issues/37) 57 | - Docs are wrong [\#36](https://github.com/feathersjs/configuration/issues/36) 58 | - Why use "NODE\_ENV=development" with default.json? [\#33](https://github.com/feathersjs/configuration/issues/33) 59 | 60 | **Merged pull requests:** 61 | 62 | - Create TypeScript definitions [\#50](https://github.com/feathersjs/configuration/pull/50) ([jhanschoo](https://github.com/jhanschoo)) 63 | - Update mocha to the latest version 🚀 [\#49](https://github.com/feathersjs/configuration/pull/49) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 64 | - Update debug to the latest version 🚀 [\#46](https://github.com/feathersjs/configuration/pull/46) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 65 | - Update debug to the latest version 🚀 [\#45](https://github.com/feathersjs/configuration/pull/45) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 66 | - Grammatical change [\#44](https://github.com/feathersjs/configuration/pull/44) ([eugeniaguerrero](https://github.com/eugeniaguerrero)) 67 | - More documentation on using and escaping environment variables [\#43](https://github.com/feathersjs/configuration/pull/43) ([daffl](https://github.com/daffl)) 68 | - Update semistandard to the latest version 🚀 [\#40](https://github.com/feathersjs/configuration/pull/40) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 69 | - Update dependencies to enable Greenkeeper 🌴 [\#39](https://github.com/feathersjs/configuration/pull/39) ([greenkeeper[bot]](https://github.com/apps/greenkeeper)) 70 | - Fix first example [\#35](https://github.com/feathersjs/configuration/pull/35) ([elfey](https://github.com/elfey)) 71 | - 👻😱 Node.js 0.10 is unmaintained 😱👻 [\#30](https://github.com/feathersjs/configuration/pull/30) ([greenkeeperio-bot](https://github.com/greenkeeperio-bot)) 72 | 73 | ## [v0.4.1](https://github.com/feathersjs/configuration/tree/v0.4.1) (2016-10-24) 74 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.4.0...v0.4.1) 75 | 76 | **Closed issues:** 77 | 78 | - Investigate node-config [\#8](https://github.com/feathersjs/configuration/issues/8) 79 | 80 | **Merged pull requests:** 81 | 82 | - update readme [\#29](https://github.com/feathersjs/configuration/pull/29) ([slajax](https://github.com/slajax)) 83 | - jshint —\> semistandard [\#28](https://github.com/feathersjs/configuration/pull/28) ([corymsmith](https://github.com/corymsmith)) 84 | 85 | ## [v0.4.0](https://github.com/feathersjs/configuration/tree/v0.4.0) (2016-10-22) 86 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.3.3...v0.4.0) 87 | 88 | **Implemented enhancements:** 89 | 90 | - implement node-config [\#27](https://github.com/feathersjs/configuration/pull/27) ([slajax](https://github.com/slajax)) 91 | 92 | **Closed issues:** 93 | 94 | - Deprecate v1 in favour of node-config [\#25](https://github.com/feathersjs/configuration/issues/25) 95 | - Make this repo more about managing configuration [\#24](https://github.com/feathersjs/configuration/issues/24) 96 | 97 | ## [v0.3.3](https://github.com/feathersjs/configuration/tree/v0.3.3) (2016-09-12) 98 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.3.2...v0.3.3) 99 | 100 | ## [v0.3.2](https://github.com/feathersjs/configuration/tree/v0.3.2) (2016-09-12) 101 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.3.1...v0.3.2) 102 | 103 | **Closed issues:** 104 | 105 | - A way to have local override [\#20](https://github.com/feathersjs/configuration/issues/20) 106 | 107 | **Merged pull requests:** 108 | 109 | - Remove check for development mode [\#21](https://github.com/feathersjs/configuration/pull/21) ([daffl](https://github.com/daffl)) 110 | 111 | ## [v0.3.1](https://github.com/feathersjs/configuration/tree/v0.3.1) (2016-08-15) 112 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.3.0...v0.3.1) 113 | 114 | **Merged pull requests:** 115 | 116 | - Support `null` values [\#19](https://github.com/feathersjs/configuration/pull/19) ([KenanY](https://github.com/KenanY)) 117 | - Update mocha to version 3.0.0 🚀 [\#18](https://github.com/feathersjs/configuration/pull/18) ([greenkeeperio-bot](https://github.com/greenkeeperio-bot)) 118 | 119 | ## [v0.3.0](https://github.com/feathersjs/configuration/tree/v0.3.0) (2016-05-22) 120 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.2.3...v0.3.0) 121 | 122 | **Closed issues:** 123 | 124 | - \.json config need deep merge options [\#16](https://github.com/feathersjs/configuration/issues/16) 125 | 126 | **Merged pull requests:** 127 | 128 | - Add functionality for deeply extending configuration [\#17](https://github.com/feathersjs/configuration/pull/17) ([daffl](https://github.com/daffl)) 129 | 130 | ## [v0.2.3](https://github.com/feathersjs/configuration/tree/v0.2.3) (2016-04-24) 131 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.2.2...v0.2.3) 132 | 133 | **Closed issues:** 134 | 135 | - PR: Support modules in config [\#12](https://github.com/feathersjs/configuration/issues/12) 136 | 137 | **Merged pull requests:** 138 | 139 | - Support modules as configuration files. [\#13](https://github.com/feathersjs/configuration/pull/13) ([wkw](https://github.com/wkw)) 140 | - Update all dependencies 🌴 [\#10](https://github.com/feathersjs/configuration/pull/10) ([greenkeeperio-bot](https://github.com/greenkeeperio-bot)) 141 | 142 | ## [v0.2.2](https://github.com/feathersjs/configuration/tree/v0.2.2) (2016-03-27) 143 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.2.1...v0.2.2) 144 | 145 | **Merged pull requests:** 146 | 147 | - Expanding environment variables in \.json [\#9](https://github.com/feathersjs/configuration/pull/9) ([derek-watson](https://github.com/derek-watson)) 148 | 149 | ## [v0.2.1](https://github.com/feathersjs/configuration/tree/v0.2.1) (2016-03-12) 150 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.2.0...v0.2.1) 151 | 152 | **Merged pull requests:** 153 | 154 | - Makes sure that arrays get converted properly [\#7](https://github.com/feathersjs/configuration/pull/7) ([daffl](https://github.com/daffl)) 155 | 156 | ## [v0.2.0](https://github.com/feathersjs/configuration/tree/v0.2.0) (2016-03-09) 157 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.1.1...v0.2.0) 158 | 159 | **Closed issues:** 160 | 161 | - Needs an escape character [\#4](https://github.com/feathersjs/configuration/issues/4) 162 | 163 | **Merged pull requests:** 164 | 165 | - Implement an escape character [\#6](https://github.com/feathersjs/configuration/pull/6) ([daffl](https://github.com/daffl)) 166 | 167 | ## [v0.1.1](https://github.com/feathersjs/configuration/tree/v0.1.1) (2016-03-09) 168 | [Full Changelog](https://github.com/feathersjs/configuration/compare/v0.1.0...v0.1.1) 169 | 170 | **Closed issues:** 171 | 172 | - Configuration should recursively go through the values [\#2](https://github.com/feathersjs/configuration/issues/2) 173 | 174 | **Merged pull requests:** 175 | 176 | - Replace slashes in paths with the separator [\#5](https://github.com/feathersjs/configuration/pull/5) ([daffl](https://github.com/daffl)) 177 | - Allow to convert deeply nested environment variables [\#3](https://github.com/feathersjs/configuration/pull/3) ([daffl](https://github.com/daffl)) 178 | - Adding nsp check [\#1](https://github.com/feathersjs/configuration/pull/1) ([marshallswain](https://github.com/marshallswain)) 179 | 180 | ## [v0.1.0](https://github.com/feathersjs/configuration/tree/v0.1.0) (2015-11-14) 181 | 182 | 183 | \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Feathers 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @feathersjs/configuration 2 | 3 | 4 | > __Important:__ The code for this module has been moved into the main Feathers repository at [feathersjs/feathers](https://github.com/feathersjs/feathers) ([package direct link](https://github.com/feathersjs/feathers/tree/master/packages/configuration)). Please open issues and pull requests there. No changes in your existing Feathers applications are necessary. 5 | 6 | [![Build Status](https://travis-ci.org/feathersjs/configuration.png?branch=master)](https://travis-ci.org/feathersjs/configuration) 7 | 8 | A small configuration module for your Feathers application. 9 | 10 | ## About 11 | 12 | `@feathersjs/configuration` is a module that wraps [node-config](https://github.com/lorenwest/node-config) to configure your Feathers application. 13 | 14 | > npm install @feathersjs/configuration 15 | 16 | ```js 17 | const feathers = require('@feathersjs/feathers'); 18 | const configuration = require('@feathersjs/configuration'); 19 | 20 | // Use the application root and `config/` as the configuration folder 21 | let app = feathers().configure(configuration()) 22 | ``` 23 | 24 | See the [Feathers configuration docs](https://docs.feathersjs.com/api/configuration.html) for the full API usage. 25 | 26 | ## License 27 | 28 | Copyright (c) 2018 29 | 30 | Licensed under the [MIT license](LICENSE). 31 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | const makeDebug = require('debug'); 2 | const path = require('path'); 3 | 4 | const debug = makeDebug('@feathersjs/configuration'); 5 | const config = require('config'); 6 | const separator = path.sep; 7 | 8 | function init () { 9 | return function () { 10 | let app = this; 11 | 12 | const convert = current => { 13 | const result = Array.isArray(current) ? [] : {}; 14 | 15 | Object.keys(current).forEach(name => { 16 | let value = current[name]; 17 | 18 | if (typeof value === 'object' && value !== null) { 19 | value = convert(value); 20 | } 21 | 22 | if (typeof value === 'string') { 23 | if (value.indexOf('\\') === 0) { 24 | value = value.replace('\\', ''); 25 | } else { 26 | if (process.env[value]) { 27 | value = process.env[value]; 28 | } else if (value.indexOf('.') === 0 || value.indexOf('..') === 0) { 29 | // Make relative paths absolute 30 | value = path.resolve( 31 | path.join(config.util.getEnv('NODE_CONFIG_DIR')), 32 | value.replace(/\//g, separator) 33 | ); 34 | } 35 | } 36 | } 37 | 38 | result[name] = value; 39 | }); 40 | 41 | return result; 42 | }; 43 | 44 | const env = config.util.getEnv('NODE_ENV'); 45 | const conf = convert(config); 46 | 47 | debug(`Initializing configuration for ${env} environment`); 48 | 49 | if (!app || app === global) { 50 | return conf; 51 | } 52 | 53 | Object.keys(conf).forEach(name => { 54 | let value = conf[name]; 55 | debug(`Setting ${name} configuration value to`, value); 56 | app.set(name, value); 57 | }); 58 | }; 59 | } 60 | 61 | module.exports = init; 62 | module.exports.default = init; 63 | -------------------------------------------------------------------------------- /mocha.opts: -------------------------------------------------------------------------------- 1 | --recursive test/ 2 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@feathersjs/configuration", 3 | "version": "2.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@feathersjs/commons": { 8 | "version": "1.2.0", 9 | "resolved": "https://registry.npmjs.org/@feathersjs/commons/-/commons-1.2.0.tgz", 10 | "integrity": "sha512-YLXNmRVz04qKPCJhbpEHG8kXyeulg42aCJz9CFSbSoM6Vyn50UIt+iQe7lXXa8AjYgNXobSbnfPBaZj//M5dgQ==", 11 | "dev": true 12 | }, 13 | "@feathersjs/feathers": { 14 | "version": "3.0.0", 15 | "resolved": "https://registry.npmjs.org/@feathersjs/feathers/-/feathers-3.0.0.tgz", 16 | "integrity": "sha512-SHrWPqCxKueca0MvvwYUtUkKR5X6oVK/3Opplx6oKD9ft6rr3KgX5buk49C/gcvTgMFxy8OX7Apzefw3ELkFiQ==", 17 | "dev": true, 18 | "requires": { 19 | "@feathersjs/commons": "1.2.0", 20 | "debug": "3.1.0", 21 | "events": "1.1.1", 22 | "uberproto": "1.2.0" 23 | } 24 | }, 25 | "abbrev": { 26 | "version": "1.0.9", 27 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", 28 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", 29 | "dev": true 30 | }, 31 | "acorn": { 32 | "version": "5.3.0", 33 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", 34 | "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", 35 | "dev": true 36 | }, 37 | "acorn-jsx": { 38 | "version": "3.0.1", 39 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 40 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 41 | "dev": true, 42 | "requires": { 43 | "acorn": "3.3.0" 44 | }, 45 | "dependencies": { 46 | "acorn": { 47 | "version": "3.3.0", 48 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 49 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 50 | "dev": true 51 | } 52 | } 53 | }, 54 | "ajv": { 55 | "version": "5.5.2", 56 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 57 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 58 | "dev": true, 59 | "requires": { 60 | "co": "4.6.0", 61 | "fast-deep-equal": "1.0.0", 62 | "fast-json-stable-stringify": "2.0.0", 63 | "json-schema-traverse": "0.3.1" 64 | } 65 | }, 66 | "ajv-keywords": { 67 | "version": "2.1.1", 68 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", 69 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", 70 | "dev": true 71 | }, 72 | "align-text": { 73 | "version": "0.1.4", 74 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 75 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 76 | "dev": true, 77 | "requires": { 78 | "kind-of": "3.2.2", 79 | "longest": "1.0.1", 80 | "repeat-string": "1.6.1" 81 | } 82 | }, 83 | "amdefine": { 84 | "version": "1.0.1", 85 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 86 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", 87 | "dev": true 88 | }, 89 | "ansi-escapes": { 90 | "version": "3.0.0", 91 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", 92 | "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", 93 | "dev": true 94 | }, 95 | "ansi-regex": { 96 | "version": "2.1.1", 97 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 98 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 99 | "dev": true 100 | }, 101 | "ansi-styles": { 102 | "version": "2.2.1", 103 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 104 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 105 | "dev": true 106 | }, 107 | "append-transform": { 108 | "version": "0.4.0", 109 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", 110 | "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", 111 | "dev": true, 112 | "requires": { 113 | "default-require-extensions": "1.0.0" 114 | } 115 | }, 116 | "argparse": { 117 | "version": "1.0.9", 118 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 119 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 120 | "dev": true, 121 | "requires": { 122 | "sprintf-js": "1.0.3" 123 | } 124 | }, 125 | "array-includes": { 126 | "version": "3.0.3", 127 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", 128 | "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", 129 | "dev": true, 130 | "requires": { 131 | "define-properties": "1.1.2", 132 | "es-abstract": "1.10.0" 133 | } 134 | }, 135 | "array-union": { 136 | "version": "1.0.2", 137 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 138 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 139 | "dev": true, 140 | "requires": { 141 | "array-uniq": "1.0.3" 142 | } 143 | }, 144 | "array-uniq": { 145 | "version": "1.0.3", 146 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 147 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 148 | "dev": true 149 | }, 150 | "arrify": { 151 | "version": "1.0.1", 152 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 153 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 154 | "dev": true 155 | }, 156 | "asap": { 157 | "version": "2.0.6", 158 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 159 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", 160 | "dev": true 161 | }, 162 | "async": { 163 | "version": "1.5.2", 164 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 165 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 166 | "dev": true 167 | }, 168 | "babel-code-frame": { 169 | "version": "6.26.0", 170 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 171 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 172 | "dev": true, 173 | "requires": { 174 | "chalk": "1.1.3", 175 | "esutils": "2.0.2", 176 | "js-tokens": "3.0.2" 177 | } 178 | }, 179 | "babel-generator": { 180 | "version": "6.26.0", 181 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", 182 | "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", 183 | "dev": true, 184 | "requires": { 185 | "babel-messages": "6.23.0", 186 | "babel-runtime": "6.26.0", 187 | "babel-types": "6.26.0", 188 | "detect-indent": "4.0.0", 189 | "jsesc": "1.3.0", 190 | "lodash": "4.17.4", 191 | "source-map": "0.5.7", 192 | "trim-right": "1.0.1" 193 | } 194 | }, 195 | "babel-messages": { 196 | "version": "6.23.0", 197 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 198 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 199 | "dev": true, 200 | "requires": { 201 | "babel-runtime": "6.26.0" 202 | } 203 | }, 204 | "babel-runtime": { 205 | "version": "6.26.0", 206 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 207 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 208 | "dev": true, 209 | "requires": { 210 | "core-js": "2.5.1", 211 | "regenerator-runtime": "0.11.0" 212 | } 213 | }, 214 | "babel-template": { 215 | "version": "6.26.0", 216 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 217 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 218 | "dev": true, 219 | "requires": { 220 | "babel-runtime": "6.26.0", 221 | "babel-traverse": "6.26.0", 222 | "babel-types": "6.26.0", 223 | "babylon": "6.18.0", 224 | "lodash": "4.17.4" 225 | } 226 | }, 227 | "babel-traverse": { 228 | "version": "6.26.0", 229 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 230 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 231 | "dev": true, 232 | "requires": { 233 | "babel-code-frame": "6.26.0", 234 | "babel-messages": "6.23.0", 235 | "babel-runtime": "6.26.0", 236 | "babel-types": "6.26.0", 237 | "babylon": "6.18.0", 238 | "debug": "2.6.9", 239 | "globals": "9.18.0", 240 | "invariant": "2.2.2", 241 | "lodash": "4.17.4" 242 | }, 243 | "dependencies": { 244 | "debug": { 245 | "version": "2.6.9", 246 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 247 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 248 | "dev": true, 249 | "requires": { 250 | "ms": "2.0.0" 251 | } 252 | } 253 | } 254 | }, 255 | "babel-types": { 256 | "version": "6.26.0", 257 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 258 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 259 | "dev": true, 260 | "requires": { 261 | "babel-runtime": "6.26.0", 262 | "esutils": "2.0.2", 263 | "lodash": "4.17.4", 264 | "to-fast-properties": "1.0.3" 265 | } 266 | }, 267 | "babylon": { 268 | "version": "6.18.0", 269 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 270 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 271 | "dev": true 272 | }, 273 | "balanced-match": { 274 | "version": "1.0.0", 275 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 276 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 277 | "dev": true 278 | }, 279 | "brace-expansion": { 280 | "version": "1.1.8", 281 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 282 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 283 | "dev": true, 284 | "requires": { 285 | "balanced-match": "1.0.0", 286 | "concat-map": "0.0.1" 287 | } 288 | }, 289 | "browser-stdout": { 290 | "version": "1.3.0", 291 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 292 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 293 | "dev": true 294 | }, 295 | "builtin-modules": { 296 | "version": "1.1.1", 297 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 298 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 299 | "dev": true 300 | }, 301 | "caller-path": { 302 | "version": "0.1.0", 303 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 304 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 305 | "dev": true, 306 | "requires": { 307 | "callsites": "0.2.0" 308 | } 309 | }, 310 | "callsites": { 311 | "version": "0.2.0", 312 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 313 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 314 | "dev": true 315 | }, 316 | "camelcase": { 317 | "version": "1.2.1", 318 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 319 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 320 | "dev": true, 321 | "optional": true 322 | }, 323 | "center-align": { 324 | "version": "0.1.3", 325 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 326 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 327 | "dev": true, 328 | "optional": true, 329 | "requires": { 330 | "align-text": "0.1.4", 331 | "lazy-cache": "1.0.4" 332 | } 333 | }, 334 | "chalk": { 335 | "version": "1.1.3", 336 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 337 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 338 | "dev": true, 339 | "requires": { 340 | "ansi-styles": "2.2.1", 341 | "escape-string-regexp": "1.0.5", 342 | "has-ansi": "2.0.0", 343 | "strip-ansi": "3.0.1", 344 | "supports-color": "2.0.0" 345 | } 346 | }, 347 | "chardet": { 348 | "version": "0.4.2", 349 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 350 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", 351 | "dev": true 352 | }, 353 | "circular-json": { 354 | "version": "0.3.3", 355 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 356 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 357 | "dev": true 358 | }, 359 | "cli-cursor": { 360 | "version": "2.1.0", 361 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 362 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 363 | "dev": true, 364 | "requires": { 365 | "restore-cursor": "2.0.0" 366 | } 367 | }, 368 | "cli-width": { 369 | "version": "2.2.0", 370 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 371 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 372 | "dev": true 373 | }, 374 | "cliui": { 375 | "version": "2.1.0", 376 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 377 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 378 | "dev": true, 379 | "optional": true, 380 | "requires": { 381 | "center-align": "0.1.3", 382 | "right-align": "0.1.3", 383 | "wordwrap": "0.0.2" 384 | }, 385 | "dependencies": { 386 | "wordwrap": { 387 | "version": "0.0.2", 388 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 389 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 390 | "dev": true, 391 | "optional": true 392 | } 393 | } 394 | }, 395 | "co": { 396 | "version": "4.6.0", 397 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 398 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 399 | "dev": true 400 | }, 401 | "color-convert": { 402 | "version": "1.9.1", 403 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 404 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", 405 | "dev": true, 406 | "requires": { 407 | "color-name": "1.1.3" 408 | } 409 | }, 410 | "color-name": { 411 | "version": "1.1.3", 412 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 413 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 414 | "dev": true 415 | }, 416 | "commander": { 417 | "version": "2.11.0", 418 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 419 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 420 | "dev": true 421 | }, 422 | "concat-map": { 423 | "version": "0.0.1", 424 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 425 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 426 | "dev": true 427 | }, 428 | "concat-stream": { 429 | "version": "1.6.0", 430 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 431 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 432 | "dev": true, 433 | "requires": { 434 | "inherits": "2.0.3", 435 | "readable-stream": "2.3.3", 436 | "typedarray": "0.0.6" 437 | } 438 | }, 439 | "config": { 440 | "version": "1.27.0", 441 | "resolved": "https://registry.npmjs.org/config/-/config-1.27.0.tgz", 442 | "integrity": "sha1-OrMNAID/dvQHwvR6wTJq39kIr18=", 443 | "requires": { 444 | "json5": "0.4.0", 445 | "os-homedir": "1.0.2" 446 | } 447 | }, 448 | "contains-path": { 449 | "version": "0.1.0", 450 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 451 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 452 | "dev": true 453 | }, 454 | "core-js": { 455 | "version": "2.5.1", 456 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", 457 | "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", 458 | "dev": true 459 | }, 460 | "core-util-is": { 461 | "version": "1.0.2", 462 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 463 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 464 | "dev": true 465 | }, 466 | "cross-spawn": { 467 | "version": "5.1.0", 468 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 469 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 470 | "dev": true, 471 | "requires": { 472 | "lru-cache": "4.1.1", 473 | "shebang-command": "1.2.0", 474 | "which": "1.3.0" 475 | } 476 | }, 477 | "debug": { 478 | "version": "3.1.0", 479 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 480 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 481 | "requires": { 482 | "ms": "2.0.0" 483 | } 484 | }, 485 | "debug-log": { 486 | "version": "1.0.1", 487 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", 488 | "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", 489 | "dev": true 490 | }, 491 | "decamelize": { 492 | "version": "1.2.0", 493 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 494 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 495 | "dev": true, 496 | "optional": true 497 | }, 498 | "deep-is": { 499 | "version": "0.1.3", 500 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 501 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 502 | "dev": true 503 | }, 504 | "default-require-extensions": { 505 | "version": "1.0.0", 506 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", 507 | "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", 508 | "dev": true, 509 | "requires": { 510 | "strip-bom": "2.0.0" 511 | } 512 | }, 513 | "define-properties": { 514 | "version": "1.1.2", 515 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", 516 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", 517 | "dev": true, 518 | "requires": { 519 | "foreach": "2.0.5", 520 | "object-keys": "1.0.11" 521 | } 522 | }, 523 | "deglob": { 524 | "version": "2.1.0", 525 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", 526 | "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", 527 | "dev": true, 528 | "requires": { 529 | "find-root": "1.1.0", 530 | "glob": "7.1.2", 531 | "ignore": "3.3.7", 532 | "pkg-config": "1.1.1", 533 | "run-parallel": "1.1.6", 534 | "uniq": "1.0.1" 535 | } 536 | }, 537 | "del": { 538 | "version": "2.2.2", 539 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 540 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 541 | "dev": true, 542 | "requires": { 543 | "globby": "5.0.0", 544 | "is-path-cwd": "1.0.0", 545 | "is-path-in-cwd": "1.0.0", 546 | "object-assign": "4.1.1", 547 | "pify": "2.3.0", 548 | "pinkie-promise": "2.0.1", 549 | "rimraf": "2.6.2" 550 | } 551 | }, 552 | "detect-indent": { 553 | "version": "4.0.0", 554 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 555 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 556 | "dev": true, 557 | "requires": { 558 | "repeating": "2.0.1" 559 | } 560 | }, 561 | "diff": { 562 | "version": "3.3.1", 563 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", 564 | "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", 565 | "dev": true 566 | }, 567 | "doctrine": { 568 | "version": "2.0.2", 569 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", 570 | "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", 571 | "dev": true, 572 | "requires": { 573 | "esutils": "2.0.2" 574 | } 575 | }, 576 | "encoding": { 577 | "version": "0.1.12", 578 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", 579 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", 580 | "dev": true, 581 | "requires": { 582 | "iconv-lite": "0.4.19" 583 | } 584 | }, 585 | "error-ex": { 586 | "version": "1.3.1", 587 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 588 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 589 | "dev": true, 590 | "requires": { 591 | "is-arrayish": "0.2.1" 592 | } 593 | }, 594 | "es-abstract": { 595 | "version": "1.10.0", 596 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", 597 | "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", 598 | "dev": true, 599 | "requires": { 600 | "es-to-primitive": "1.1.1", 601 | "function-bind": "1.1.1", 602 | "has": "1.0.1", 603 | "is-callable": "1.1.3", 604 | "is-regex": "1.0.4" 605 | } 606 | }, 607 | "es-to-primitive": { 608 | "version": "1.1.1", 609 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", 610 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", 611 | "dev": true, 612 | "requires": { 613 | "is-callable": "1.1.3", 614 | "is-date-object": "1.0.1", 615 | "is-symbol": "1.0.1" 616 | } 617 | }, 618 | "escape-string-regexp": { 619 | "version": "1.0.5", 620 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 621 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 622 | "dev": true 623 | }, 624 | "eslint": { 625 | "version": "4.14.0", 626 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.14.0.tgz", 627 | "integrity": "sha512-Ul6CSGRjKscEyg0X/EeNs7o2XdnbTEOD1OM8cTjmx85RPcBJQrEhZLevhuJZNAE/vS2iVl5Uhgiqf3h5uLMCJQ==", 628 | "dev": true, 629 | "requires": { 630 | "ajv": "5.5.2", 631 | "babel-code-frame": "6.26.0", 632 | "chalk": "2.3.0", 633 | "concat-stream": "1.6.0", 634 | "cross-spawn": "5.1.0", 635 | "debug": "3.1.0", 636 | "doctrine": "2.0.2", 637 | "eslint-scope": "3.7.1", 638 | "eslint-visitor-keys": "1.0.0", 639 | "espree": "3.5.2", 640 | "esquery": "1.0.0", 641 | "esutils": "2.0.2", 642 | "file-entry-cache": "2.0.0", 643 | "functional-red-black-tree": "1.0.1", 644 | "glob": "7.1.2", 645 | "globals": "11.1.0", 646 | "ignore": "3.3.7", 647 | "imurmurhash": "0.1.4", 648 | "inquirer": "3.3.0", 649 | "is-resolvable": "1.0.1", 650 | "js-yaml": "3.10.0", 651 | "json-stable-stringify-without-jsonify": "1.0.1", 652 | "levn": "0.3.0", 653 | "lodash": "4.17.4", 654 | "minimatch": "3.0.4", 655 | "mkdirp": "0.5.1", 656 | "natural-compare": "1.4.0", 657 | "optionator": "0.8.2", 658 | "path-is-inside": "1.0.2", 659 | "pluralize": "7.0.0", 660 | "progress": "2.0.0", 661 | "require-uncached": "1.0.3", 662 | "semver": "5.4.1", 663 | "strip-ansi": "4.0.0", 664 | "strip-json-comments": "2.0.1", 665 | "table": "4.0.2", 666 | "text-table": "0.2.0" 667 | }, 668 | "dependencies": { 669 | "ansi-regex": { 670 | "version": "3.0.0", 671 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 672 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 673 | "dev": true 674 | }, 675 | "ansi-styles": { 676 | "version": "3.2.0", 677 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 678 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 679 | "dev": true, 680 | "requires": { 681 | "color-convert": "1.9.1" 682 | } 683 | }, 684 | "chalk": { 685 | "version": "2.3.0", 686 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 687 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 688 | "dev": true, 689 | "requires": { 690 | "ansi-styles": "3.2.0", 691 | "escape-string-regexp": "1.0.5", 692 | "supports-color": "4.5.0" 693 | } 694 | }, 695 | "globals": { 696 | "version": "11.1.0", 697 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.1.0.tgz", 698 | "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", 699 | "dev": true 700 | }, 701 | "has-flag": { 702 | "version": "2.0.0", 703 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 704 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 705 | "dev": true 706 | }, 707 | "strip-ansi": { 708 | "version": "4.0.0", 709 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 710 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 711 | "dev": true, 712 | "requires": { 713 | "ansi-regex": "3.0.0" 714 | } 715 | }, 716 | "supports-color": { 717 | "version": "4.5.0", 718 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 719 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 720 | "dev": true, 721 | "requires": { 722 | "has-flag": "2.0.0" 723 | } 724 | } 725 | } 726 | }, 727 | "eslint-config-semistandard": { 728 | "version": "12.0.0", 729 | "resolved": "https://registry.npmjs.org/eslint-config-semistandard/-/eslint-config-semistandard-12.0.0.tgz", 730 | "integrity": "sha512-Wc7+MV5E1S846Y5QvhCblUe7cFp3OyvZebZfzy8dF083yNNokE1XPmSwDJUX3gFA5kjctUaBvorNCdOwEBjKlA==", 731 | "dev": true 732 | }, 733 | "eslint-config-standard": { 734 | "version": "11.0.0-beta.0", 735 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0-beta.0.tgz", 736 | "integrity": "sha512-f+vs5HAHQo7NRZ3hVe+UVdT5DbebMNaFTWFp95orJ0LUdYPoWdM8xw/bMeO/IZMvHOPmIteGKGc2QOhSXd5nRg==", 737 | "dev": true 738 | }, 739 | "eslint-config-standard-jsx": { 740 | "version": "4.0.2", 741 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", 742 | "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", 743 | "dev": true 744 | }, 745 | "eslint-import-resolver-node": { 746 | "version": "0.3.1", 747 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", 748 | "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", 749 | "dev": true, 750 | "requires": { 751 | "debug": "2.6.9", 752 | "resolve": "1.5.0" 753 | }, 754 | "dependencies": { 755 | "debug": { 756 | "version": "2.6.9", 757 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 758 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 759 | "dev": true, 760 | "requires": { 761 | "ms": "2.0.0" 762 | } 763 | } 764 | } 765 | }, 766 | "eslint-module-utils": { 767 | "version": "2.1.1", 768 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", 769 | "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", 770 | "dev": true, 771 | "requires": { 772 | "debug": "2.6.9", 773 | "pkg-dir": "1.0.0" 774 | }, 775 | "dependencies": { 776 | "debug": { 777 | "version": "2.6.9", 778 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 779 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 780 | "dev": true, 781 | "requires": { 782 | "ms": "2.0.0" 783 | } 784 | } 785 | } 786 | }, 787 | "eslint-plugin-import": { 788 | "version": "2.8.0", 789 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", 790 | "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", 791 | "dev": true, 792 | "requires": { 793 | "builtin-modules": "1.1.1", 794 | "contains-path": "0.1.0", 795 | "debug": "2.6.9", 796 | "doctrine": "1.5.0", 797 | "eslint-import-resolver-node": "0.3.1", 798 | "eslint-module-utils": "2.1.1", 799 | "has": "1.0.1", 800 | "lodash.cond": "4.5.2", 801 | "minimatch": "3.0.4", 802 | "read-pkg-up": "2.0.0" 803 | }, 804 | "dependencies": { 805 | "debug": { 806 | "version": "2.6.9", 807 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 808 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 809 | "dev": true, 810 | "requires": { 811 | "ms": "2.0.0" 812 | } 813 | }, 814 | "doctrine": { 815 | "version": "1.5.0", 816 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 817 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 818 | "dev": true, 819 | "requires": { 820 | "esutils": "2.0.2", 821 | "isarray": "1.0.0" 822 | } 823 | } 824 | } 825 | }, 826 | "eslint-plugin-node": { 827 | "version": "5.2.1", 828 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", 829 | "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", 830 | "dev": true, 831 | "requires": { 832 | "ignore": "3.3.7", 833 | "minimatch": "3.0.4", 834 | "resolve": "1.5.0", 835 | "semver": "5.3.0" 836 | }, 837 | "dependencies": { 838 | "semver": { 839 | "version": "5.3.0", 840 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 841 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 842 | "dev": true 843 | } 844 | } 845 | }, 846 | "eslint-plugin-promise": { 847 | "version": "3.6.0", 848 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", 849 | "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", 850 | "dev": true 851 | }, 852 | "eslint-plugin-react": { 853 | "version": "7.5.1", 854 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz", 855 | "integrity": "sha512-YGSjB9Qu6QbVTroUZi66pYky3DfoIPLdHQ/wmrBGyBRnwxQsBXAov9j2rpXt/55i8nyMv6IRWJv2s4d4YnduzQ==", 856 | "dev": true, 857 | "requires": { 858 | "doctrine": "2.0.2", 859 | "has": "1.0.1", 860 | "jsx-ast-utils": "2.0.1", 861 | "prop-types": "15.6.0" 862 | } 863 | }, 864 | "eslint-plugin-standard": { 865 | "version": "3.0.1", 866 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", 867 | "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", 868 | "dev": true 869 | }, 870 | "eslint-scope": { 871 | "version": "3.7.1", 872 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 873 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 874 | "dev": true, 875 | "requires": { 876 | "esrecurse": "4.2.0", 877 | "estraverse": "4.2.0" 878 | } 879 | }, 880 | "eslint-visitor-keys": { 881 | "version": "1.0.0", 882 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 883 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 884 | "dev": true 885 | }, 886 | "espree": { 887 | "version": "3.5.2", 888 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", 889 | "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", 890 | "dev": true, 891 | "requires": { 892 | "acorn": "5.3.0", 893 | "acorn-jsx": "3.0.1" 894 | } 895 | }, 896 | "esprima": { 897 | "version": "4.0.0", 898 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 899 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 900 | "dev": true 901 | }, 902 | "esquery": { 903 | "version": "1.0.0", 904 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 905 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", 906 | "dev": true, 907 | "requires": { 908 | "estraverse": "4.2.0" 909 | } 910 | }, 911 | "esrecurse": { 912 | "version": "4.2.0", 913 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 914 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 915 | "dev": true, 916 | "requires": { 917 | "estraverse": "4.2.0", 918 | "object-assign": "4.1.1" 919 | } 920 | }, 921 | "estraverse": { 922 | "version": "4.2.0", 923 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 924 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 925 | "dev": true 926 | }, 927 | "esutils": { 928 | "version": "2.0.2", 929 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 930 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 931 | "dev": true 932 | }, 933 | "events": { 934 | "version": "1.1.1", 935 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 936 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", 937 | "dev": true 938 | }, 939 | "external-editor": { 940 | "version": "2.1.0", 941 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", 942 | "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", 943 | "dev": true, 944 | "requires": { 945 | "chardet": "0.4.2", 946 | "iconv-lite": "0.4.19", 947 | "tmp": "0.0.33" 948 | } 949 | }, 950 | "fast-deep-equal": { 951 | "version": "1.0.0", 952 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", 953 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", 954 | "dev": true 955 | }, 956 | "fast-json-stable-stringify": { 957 | "version": "2.0.0", 958 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 959 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 960 | "dev": true 961 | }, 962 | "fast-levenshtein": { 963 | "version": "2.0.6", 964 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 965 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 966 | "dev": true 967 | }, 968 | "fbjs": { 969 | "version": "0.8.16", 970 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", 971 | "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", 972 | "dev": true, 973 | "requires": { 974 | "core-js": "1.2.7", 975 | "isomorphic-fetch": "2.2.1", 976 | "loose-envify": "1.3.1", 977 | "object-assign": "4.1.1", 978 | "promise": "7.3.1", 979 | "setimmediate": "1.0.5", 980 | "ua-parser-js": "0.7.17" 981 | }, 982 | "dependencies": { 983 | "core-js": { 984 | "version": "1.2.7", 985 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", 986 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", 987 | "dev": true 988 | } 989 | } 990 | }, 991 | "figures": { 992 | "version": "2.0.0", 993 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 994 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 995 | "dev": true, 996 | "requires": { 997 | "escape-string-regexp": "1.0.5" 998 | } 999 | }, 1000 | "file-entry-cache": { 1001 | "version": "2.0.0", 1002 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1003 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 1004 | "dev": true, 1005 | "requires": { 1006 | "flat-cache": "1.3.0", 1007 | "object-assign": "4.1.1" 1008 | } 1009 | }, 1010 | "fileset": { 1011 | "version": "2.0.3", 1012 | "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", 1013 | "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", 1014 | "dev": true, 1015 | "requires": { 1016 | "glob": "7.1.2", 1017 | "minimatch": "3.0.4" 1018 | } 1019 | }, 1020 | "find-root": { 1021 | "version": "1.1.0", 1022 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 1023 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", 1024 | "dev": true 1025 | }, 1026 | "find-up": { 1027 | "version": "1.1.2", 1028 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 1029 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 1030 | "dev": true, 1031 | "requires": { 1032 | "path-exists": "2.1.0", 1033 | "pinkie-promise": "2.0.1" 1034 | } 1035 | }, 1036 | "flat-cache": { 1037 | "version": "1.3.0", 1038 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", 1039 | "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", 1040 | "dev": true, 1041 | "requires": { 1042 | "circular-json": "0.3.3", 1043 | "del": "2.2.2", 1044 | "graceful-fs": "4.1.11", 1045 | "write": "0.2.1" 1046 | } 1047 | }, 1048 | "foreach": { 1049 | "version": "2.0.5", 1050 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 1051 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 1052 | "dev": true 1053 | }, 1054 | "fs.realpath": { 1055 | "version": "1.0.0", 1056 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1057 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1058 | "dev": true 1059 | }, 1060 | "function-bind": { 1061 | "version": "1.1.1", 1062 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1063 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1064 | "dev": true 1065 | }, 1066 | "functional-red-black-tree": { 1067 | "version": "1.0.1", 1068 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1069 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1070 | "dev": true 1071 | }, 1072 | "get-stdin": { 1073 | "version": "5.0.1", 1074 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", 1075 | "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", 1076 | "dev": true 1077 | }, 1078 | "glob": { 1079 | "version": "7.1.2", 1080 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1081 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1082 | "dev": true, 1083 | "requires": { 1084 | "fs.realpath": "1.0.0", 1085 | "inflight": "1.0.6", 1086 | "inherits": "2.0.3", 1087 | "minimatch": "3.0.4", 1088 | "once": "1.4.0", 1089 | "path-is-absolute": "1.0.1" 1090 | } 1091 | }, 1092 | "globals": { 1093 | "version": "9.18.0", 1094 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1095 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1096 | "dev": true 1097 | }, 1098 | "globby": { 1099 | "version": "5.0.0", 1100 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 1101 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 1102 | "dev": true, 1103 | "requires": { 1104 | "array-union": "1.0.2", 1105 | "arrify": "1.0.1", 1106 | "glob": "7.1.2", 1107 | "object-assign": "4.1.1", 1108 | "pify": "2.3.0", 1109 | "pinkie-promise": "2.0.1" 1110 | } 1111 | }, 1112 | "graceful-fs": { 1113 | "version": "4.1.11", 1114 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1115 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1116 | "dev": true 1117 | }, 1118 | "growl": { 1119 | "version": "1.10.3", 1120 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", 1121 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", 1122 | "dev": true 1123 | }, 1124 | "handlebars": { 1125 | "version": "4.0.11", 1126 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", 1127 | "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", 1128 | "dev": true, 1129 | "requires": { 1130 | "async": "1.5.2", 1131 | "optimist": "0.6.1", 1132 | "source-map": "0.4.4", 1133 | "uglify-js": "2.8.29" 1134 | }, 1135 | "dependencies": { 1136 | "source-map": { 1137 | "version": "0.4.4", 1138 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 1139 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", 1140 | "dev": true, 1141 | "requires": { 1142 | "amdefine": "1.0.1" 1143 | } 1144 | } 1145 | } 1146 | }, 1147 | "has": { 1148 | "version": "1.0.1", 1149 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 1150 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 1151 | "dev": true, 1152 | "requires": { 1153 | "function-bind": "1.1.1" 1154 | } 1155 | }, 1156 | "has-ansi": { 1157 | "version": "2.0.0", 1158 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1159 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1160 | "dev": true, 1161 | "requires": { 1162 | "ansi-regex": "2.1.1" 1163 | } 1164 | }, 1165 | "has-flag": { 1166 | "version": "1.0.0", 1167 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 1168 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 1169 | "dev": true 1170 | }, 1171 | "he": { 1172 | "version": "1.1.1", 1173 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 1174 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 1175 | "dev": true 1176 | }, 1177 | "hosted-git-info": { 1178 | "version": "2.5.0", 1179 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 1180 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 1181 | "dev": true 1182 | }, 1183 | "iconv-lite": { 1184 | "version": "0.4.19", 1185 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 1186 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", 1187 | "dev": true 1188 | }, 1189 | "ignore": { 1190 | "version": "3.3.7", 1191 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", 1192 | "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", 1193 | "dev": true 1194 | }, 1195 | "imurmurhash": { 1196 | "version": "0.1.4", 1197 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1198 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1199 | "dev": true 1200 | }, 1201 | "inflight": { 1202 | "version": "1.0.6", 1203 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1204 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1205 | "dev": true, 1206 | "requires": { 1207 | "once": "1.4.0", 1208 | "wrappy": "1.0.2" 1209 | } 1210 | }, 1211 | "inherits": { 1212 | "version": "2.0.3", 1213 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1214 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1215 | "dev": true 1216 | }, 1217 | "inquirer": { 1218 | "version": "3.3.0", 1219 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", 1220 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", 1221 | "dev": true, 1222 | "requires": { 1223 | "ansi-escapes": "3.0.0", 1224 | "chalk": "2.3.0", 1225 | "cli-cursor": "2.1.0", 1226 | "cli-width": "2.2.0", 1227 | "external-editor": "2.1.0", 1228 | "figures": "2.0.0", 1229 | "lodash": "4.17.4", 1230 | "mute-stream": "0.0.7", 1231 | "run-async": "2.3.0", 1232 | "rx-lite": "4.0.8", 1233 | "rx-lite-aggregates": "4.0.8", 1234 | "string-width": "2.1.1", 1235 | "strip-ansi": "4.0.0", 1236 | "through": "2.3.8" 1237 | }, 1238 | "dependencies": { 1239 | "ansi-regex": { 1240 | "version": "3.0.0", 1241 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1242 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1243 | "dev": true 1244 | }, 1245 | "ansi-styles": { 1246 | "version": "3.2.0", 1247 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 1248 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 1249 | "dev": true, 1250 | "requires": { 1251 | "color-convert": "1.9.1" 1252 | } 1253 | }, 1254 | "chalk": { 1255 | "version": "2.3.0", 1256 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 1257 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 1258 | "dev": true, 1259 | "requires": { 1260 | "ansi-styles": "3.2.0", 1261 | "escape-string-regexp": "1.0.5", 1262 | "supports-color": "4.5.0" 1263 | } 1264 | }, 1265 | "has-flag": { 1266 | "version": "2.0.0", 1267 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1268 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 1269 | "dev": true 1270 | }, 1271 | "strip-ansi": { 1272 | "version": "4.0.0", 1273 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1274 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1275 | "dev": true, 1276 | "requires": { 1277 | "ansi-regex": "3.0.0" 1278 | } 1279 | }, 1280 | "supports-color": { 1281 | "version": "4.5.0", 1282 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 1283 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 1284 | "dev": true, 1285 | "requires": { 1286 | "has-flag": "2.0.0" 1287 | } 1288 | } 1289 | } 1290 | }, 1291 | "invariant": { 1292 | "version": "2.2.2", 1293 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 1294 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 1295 | "dev": true, 1296 | "requires": { 1297 | "loose-envify": "1.3.1" 1298 | } 1299 | }, 1300 | "is-arrayish": { 1301 | "version": "0.2.1", 1302 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1303 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1304 | "dev": true 1305 | }, 1306 | "is-buffer": { 1307 | "version": "1.1.6", 1308 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1309 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1310 | "dev": true 1311 | }, 1312 | "is-builtin-module": { 1313 | "version": "1.0.0", 1314 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 1315 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 1316 | "dev": true, 1317 | "requires": { 1318 | "builtin-modules": "1.1.1" 1319 | } 1320 | }, 1321 | "is-callable": { 1322 | "version": "1.1.3", 1323 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", 1324 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", 1325 | "dev": true 1326 | }, 1327 | "is-date-object": { 1328 | "version": "1.0.1", 1329 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1330 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1331 | "dev": true 1332 | }, 1333 | "is-finite": { 1334 | "version": "1.0.2", 1335 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1336 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1337 | "dev": true, 1338 | "requires": { 1339 | "number-is-nan": "1.0.1" 1340 | } 1341 | }, 1342 | "is-fullwidth-code-point": { 1343 | "version": "2.0.0", 1344 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1345 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1346 | "dev": true 1347 | }, 1348 | "is-path-cwd": { 1349 | "version": "1.0.0", 1350 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 1351 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 1352 | "dev": true 1353 | }, 1354 | "is-path-in-cwd": { 1355 | "version": "1.0.0", 1356 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 1357 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 1358 | "dev": true, 1359 | "requires": { 1360 | "is-path-inside": "1.0.1" 1361 | } 1362 | }, 1363 | "is-path-inside": { 1364 | "version": "1.0.1", 1365 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1366 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1367 | "dev": true, 1368 | "requires": { 1369 | "path-is-inside": "1.0.2" 1370 | } 1371 | }, 1372 | "is-promise": { 1373 | "version": "2.1.0", 1374 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1375 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1376 | "dev": true 1377 | }, 1378 | "is-regex": { 1379 | "version": "1.0.4", 1380 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1381 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1382 | "dev": true, 1383 | "requires": { 1384 | "has": "1.0.1" 1385 | } 1386 | }, 1387 | "is-resolvable": { 1388 | "version": "1.0.1", 1389 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", 1390 | "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", 1391 | "dev": true 1392 | }, 1393 | "is-stream": { 1394 | "version": "1.1.0", 1395 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1396 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1397 | "dev": true 1398 | }, 1399 | "is-symbol": { 1400 | "version": "1.0.1", 1401 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", 1402 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", 1403 | "dev": true 1404 | }, 1405 | "is-utf8": { 1406 | "version": "0.2.1", 1407 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1408 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1409 | "dev": true 1410 | }, 1411 | "isarray": { 1412 | "version": "1.0.0", 1413 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1414 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1415 | "dev": true 1416 | }, 1417 | "isexe": { 1418 | "version": "2.0.0", 1419 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1420 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1421 | "dev": true 1422 | }, 1423 | "isomorphic-fetch": { 1424 | "version": "2.2.1", 1425 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", 1426 | "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", 1427 | "dev": true, 1428 | "requires": { 1429 | "node-fetch": "1.7.3", 1430 | "whatwg-fetch": "2.0.3" 1431 | } 1432 | }, 1433 | "istanbul": { 1434 | "version": "1.1.0-alpha.1", 1435 | "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-1.1.0-alpha.1.tgz", 1436 | "integrity": "sha1-eBeVZWAYohdMX2DzZ+5dNhy1e3c=", 1437 | "dev": true, 1438 | "requires": { 1439 | "abbrev": "1.0.9", 1440 | "async": "1.5.2", 1441 | "istanbul-api": "1.2.1", 1442 | "js-yaml": "3.10.0", 1443 | "mkdirp": "0.5.1", 1444 | "nopt": "3.0.6", 1445 | "which": "1.3.0", 1446 | "wordwrap": "1.0.0" 1447 | } 1448 | }, 1449 | "istanbul-api": { 1450 | "version": "1.2.1", 1451 | "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", 1452 | "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", 1453 | "dev": true, 1454 | "requires": { 1455 | "async": "2.5.0", 1456 | "fileset": "2.0.3", 1457 | "istanbul-lib-coverage": "1.1.1", 1458 | "istanbul-lib-hook": "1.1.0", 1459 | "istanbul-lib-instrument": "1.9.1", 1460 | "istanbul-lib-report": "1.1.2", 1461 | "istanbul-lib-source-maps": "1.2.2", 1462 | "istanbul-reports": "1.1.3", 1463 | "js-yaml": "3.10.0", 1464 | "mkdirp": "0.5.1", 1465 | "once": "1.4.0" 1466 | }, 1467 | "dependencies": { 1468 | "async": { 1469 | "version": "2.5.0", 1470 | "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", 1471 | "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", 1472 | "dev": true, 1473 | "requires": { 1474 | "lodash": "4.17.4" 1475 | } 1476 | } 1477 | } 1478 | }, 1479 | "istanbul-lib-coverage": { 1480 | "version": "1.1.1", 1481 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", 1482 | "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", 1483 | "dev": true 1484 | }, 1485 | "istanbul-lib-hook": { 1486 | "version": "1.1.0", 1487 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", 1488 | "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", 1489 | "dev": true, 1490 | "requires": { 1491 | "append-transform": "0.4.0" 1492 | } 1493 | }, 1494 | "istanbul-lib-instrument": { 1495 | "version": "1.9.1", 1496 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", 1497 | "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", 1498 | "dev": true, 1499 | "requires": { 1500 | "babel-generator": "6.26.0", 1501 | "babel-template": "6.26.0", 1502 | "babel-traverse": "6.26.0", 1503 | "babel-types": "6.26.0", 1504 | "babylon": "6.18.0", 1505 | "istanbul-lib-coverage": "1.1.1", 1506 | "semver": "5.4.1" 1507 | } 1508 | }, 1509 | "istanbul-lib-report": { 1510 | "version": "1.1.2", 1511 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", 1512 | "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", 1513 | "dev": true, 1514 | "requires": { 1515 | "istanbul-lib-coverage": "1.1.1", 1516 | "mkdirp": "0.5.1", 1517 | "path-parse": "1.0.5", 1518 | "supports-color": "3.2.3" 1519 | }, 1520 | "dependencies": { 1521 | "supports-color": { 1522 | "version": "3.2.3", 1523 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 1524 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 1525 | "dev": true, 1526 | "requires": { 1527 | "has-flag": "1.0.0" 1528 | } 1529 | } 1530 | } 1531 | }, 1532 | "istanbul-lib-source-maps": { 1533 | "version": "1.2.2", 1534 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", 1535 | "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", 1536 | "dev": true, 1537 | "requires": { 1538 | "debug": "3.1.0", 1539 | "istanbul-lib-coverage": "1.1.1", 1540 | "mkdirp": "0.5.1", 1541 | "rimraf": "2.6.2", 1542 | "source-map": "0.5.7" 1543 | } 1544 | }, 1545 | "istanbul-reports": { 1546 | "version": "1.1.3", 1547 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", 1548 | "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", 1549 | "dev": true, 1550 | "requires": { 1551 | "handlebars": "4.0.11" 1552 | } 1553 | }, 1554 | "js-tokens": { 1555 | "version": "3.0.2", 1556 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1557 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1558 | "dev": true 1559 | }, 1560 | "js-yaml": { 1561 | "version": "3.10.0", 1562 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", 1563 | "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", 1564 | "dev": true, 1565 | "requires": { 1566 | "argparse": "1.0.9", 1567 | "esprima": "4.0.0" 1568 | } 1569 | }, 1570 | "jsesc": { 1571 | "version": "1.3.0", 1572 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 1573 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 1574 | "dev": true 1575 | }, 1576 | "json-parse-better-errors": { 1577 | "version": "1.0.1", 1578 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", 1579 | "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", 1580 | "dev": true 1581 | }, 1582 | "json-schema-traverse": { 1583 | "version": "0.3.1", 1584 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 1585 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 1586 | "dev": true 1587 | }, 1588 | "json-stable-stringify-without-jsonify": { 1589 | "version": "1.0.1", 1590 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1591 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1592 | "dev": true 1593 | }, 1594 | "json5": { 1595 | "version": "0.4.0", 1596 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", 1597 | "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=" 1598 | }, 1599 | "jsx-ast-utils": { 1600 | "version": "2.0.1", 1601 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", 1602 | "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", 1603 | "dev": true, 1604 | "requires": { 1605 | "array-includes": "3.0.3" 1606 | } 1607 | }, 1608 | "kind-of": { 1609 | "version": "3.2.2", 1610 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1611 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1612 | "dev": true, 1613 | "requires": { 1614 | "is-buffer": "1.1.6" 1615 | } 1616 | }, 1617 | "lazy-cache": { 1618 | "version": "1.0.4", 1619 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 1620 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 1621 | "dev": true, 1622 | "optional": true 1623 | }, 1624 | "levn": { 1625 | "version": "0.3.0", 1626 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1627 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1628 | "dev": true, 1629 | "requires": { 1630 | "prelude-ls": "1.1.2", 1631 | "type-check": "0.3.2" 1632 | } 1633 | }, 1634 | "load-json-file": { 1635 | "version": "2.0.0", 1636 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1637 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1638 | "dev": true, 1639 | "requires": { 1640 | "graceful-fs": "4.1.11", 1641 | "parse-json": "2.2.0", 1642 | "pify": "2.3.0", 1643 | "strip-bom": "3.0.0" 1644 | }, 1645 | "dependencies": { 1646 | "strip-bom": { 1647 | "version": "3.0.0", 1648 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1649 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1650 | "dev": true 1651 | } 1652 | } 1653 | }, 1654 | "locate-path": { 1655 | "version": "2.0.0", 1656 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1657 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1658 | "dev": true, 1659 | "requires": { 1660 | "p-locate": "2.0.0", 1661 | "path-exists": "3.0.0" 1662 | }, 1663 | "dependencies": { 1664 | "path-exists": { 1665 | "version": "3.0.0", 1666 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1667 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1668 | "dev": true 1669 | } 1670 | } 1671 | }, 1672 | "lodash": { 1673 | "version": "4.17.4", 1674 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 1675 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 1676 | "dev": true 1677 | }, 1678 | "lodash.cond": { 1679 | "version": "4.5.2", 1680 | "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", 1681 | "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", 1682 | "dev": true 1683 | }, 1684 | "longest": { 1685 | "version": "1.0.1", 1686 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 1687 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", 1688 | "dev": true 1689 | }, 1690 | "loose-envify": { 1691 | "version": "1.3.1", 1692 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 1693 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 1694 | "dev": true, 1695 | "requires": { 1696 | "js-tokens": "3.0.2" 1697 | } 1698 | }, 1699 | "lru-cache": { 1700 | "version": "4.1.1", 1701 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 1702 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", 1703 | "dev": true, 1704 | "requires": { 1705 | "pseudomap": "1.0.2", 1706 | "yallist": "2.1.2" 1707 | } 1708 | }, 1709 | "mimic-fn": { 1710 | "version": "1.1.0", 1711 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", 1712 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", 1713 | "dev": true 1714 | }, 1715 | "minimatch": { 1716 | "version": "3.0.4", 1717 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1718 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1719 | "dev": true, 1720 | "requires": { 1721 | "brace-expansion": "1.1.8" 1722 | } 1723 | }, 1724 | "minimist": { 1725 | "version": "0.0.8", 1726 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1727 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1728 | "dev": true 1729 | }, 1730 | "mkdirp": { 1731 | "version": "0.5.1", 1732 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1733 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1734 | "dev": true, 1735 | "requires": { 1736 | "minimist": "0.0.8" 1737 | } 1738 | }, 1739 | "mocha": { 1740 | "version": "4.0.1", 1741 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", 1742 | "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", 1743 | "dev": true, 1744 | "requires": { 1745 | "browser-stdout": "1.3.0", 1746 | "commander": "2.11.0", 1747 | "debug": "3.1.0", 1748 | "diff": "3.3.1", 1749 | "escape-string-regexp": "1.0.5", 1750 | "glob": "7.1.2", 1751 | "growl": "1.10.3", 1752 | "he": "1.1.1", 1753 | "mkdirp": "0.5.1", 1754 | "supports-color": "4.4.0" 1755 | }, 1756 | "dependencies": { 1757 | "has-flag": { 1758 | "version": "2.0.0", 1759 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1760 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 1761 | "dev": true 1762 | }, 1763 | "supports-color": { 1764 | "version": "4.4.0", 1765 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", 1766 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", 1767 | "dev": true, 1768 | "requires": { 1769 | "has-flag": "2.0.0" 1770 | } 1771 | } 1772 | } 1773 | }, 1774 | "ms": { 1775 | "version": "2.0.0", 1776 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1777 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1778 | }, 1779 | "mute-stream": { 1780 | "version": "0.0.7", 1781 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1782 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1783 | "dev": true 1784 | }, 1785 | "natural-compare": { 1786 | "version": "1.4.0", 1787 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1788 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1789 | "dev": true 1790 | }, 1791 | "node-fetch": { 1792 | "version": "1.7.3", 1793 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", 1794 | "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", 1795 | "dev": true, 1796 | "requires": { 1797 | "encoding": "0.1.12", 1798 | "is-stream": "1.1.0" 1799 | } 1800 | }, 1801 | "nopt": { 1802 | "version": "3.0.6", 1803 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 1804 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 1805 | "dev": true, 1806 | "requires": { 1807 | "abbrev": "1.0.9" 1808 | } 1809 | }, 1810 | "normalize-package-data": { 1811 | "version": "2.4.0", 1812 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 1813 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 1814 | "dev": true, 1815 | "requires": { 1816 | "hosted-git-info": "2.5.0", 1817 | "is-builtin-module": "1.0.0", 1818 | "semver": "5.4.1", 1819 | "validate-npm-package-license": "3.0.1" 1820 | } 1821 | }, 1822 | "number-is-nan": { 1823 | "version": "1.0.1", 1824 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1825 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1826 | "dev": true 1827 | }, 1828 | "object-assign": { 1829 | "version": "4.1.1", 1830 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1831 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1832 | "dev": true 1833 | }, 1834 | "object-keys": { 1835 | "version": "1.0.11", 1836 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 1837 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", 1838 | "dev": true 1839 | }, 1840 | "once": { 1841 | "version": "1.4.0", 1842 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1843 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1844 | "dev": true, 1845 | "requires": { 1846 | "wrappy": "1.0.2" 1847 | } 1848 | }, 1849 | "onetime": { 1850 | "version": "2.0.1", 1851 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1852 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1853 | "dev": true, 1854 | "requires": { 1855 | "mimic-fn": "1.1.0" 1856 | } 1857 | }, 1858 | "optimist": { 1859 | "version": "0.6.1", 1860 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 1861 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 1862 | "dev": true, 1863 | "requires": { 1864 | "minimist": "0.0.8", 1865 | "wordwrap": "0.0.3" 1866 | }, 1867 | "dependencies": { 1868 | "wordwrap": { 1869 | "version": "0.0.3", 1870 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 1871 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", 1872 | "dev": true 1873 | } 1874 | } 1875 | }, 1876 | "optionator": { 1877 | "version": "0.8.2", 1878 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 1879 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1880 | "dev": true, 1881 | "requires": { 1882 | "deep-is": "0.1.3", 1883 | "fast-levenshtein": "2.0.6", 1884 | "levn": "0.3.0", 1885 | "prelude-ls": "1.1.2", 1886 | "type-check": "0.3.2", 1887 | "wordwrap": "1.0.0" 1888 | } 1889 | }, 1890 | "os-homedir": { 1891 | "version": "1.0.2", 1892 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1893 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 1894 | }, 1895 | "os-tmpdir": { 1896 | "version": "1.0.2", 1897 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1898 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1899 | "dev": true 1900 | }, 1901 | "p-limit": { 1902 | "version": "1.1.0", 1903 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", 1904 | "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", 1905 | "dev": true 1906 | }, 1907 | "p-locate": { 1908 | "version": "2.0.0", 1909 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1910 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1911 | "dev": true, 1912 | "requires": { 1913 | "p-limit": "1.1.0" 1914 | } 1915 | }, 1916 | "parse-json": { 1917 | "version": "2.2.0", 1918 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1919 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1920 | "dev": true, 1921 | "requires": { 1922 | "error-ex": "1.3.1" 1923 | } 1924 | }, 1925 | "path-exists": { 1926 | "version": "2.1.0", 1927 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1928 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1929 | "dev": true, 1930 | "requires": { 1931 | "pinkie-promise": "2.0.1" 1932 | } 1933 | }, 1934 | "path-is-absolute": { 1935 | "version": "1.0.1", 1936 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1937 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1938 | "dev": true 1939 | }, 1940 | "path-is-inside": { 1941 | "version": "1.0.2", 1942 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1943 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1944 | "dev": true 1945 | }, 1946 | "path-parse": { 1947 | "version": "1.0.5", 1948 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1949 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1950 | "dev": true 1951 | }, 1952 | "path-type": { 1953 | "version": "2.0.0", 1954 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1955 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1956 | "dev": true, 1957 | "requires": { 1958 | "pify": "2.3.0" 1959 | } 1960 | }, 1961 | "pify": { 1962 | "version": "2.3.0", 1963 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1964 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1965 | "dev": true 1966 | }, 1967 | "pinkie": { 1968 | "version": "2.0.4", 1969 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1970 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1971 | "dev": true 1972 | }, 1973 | "pinkie-promise": { 1974 | "version": "2.0.1", 1975 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1976 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1977 | "dev": true, 1978 | "requires": { 1979 | "pinkie": "2.0.4" 1980 | } 1981 | }, 1982 | "pkg-conf": { 1983 | "version": "2.1.0", 1984 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", 1985 | "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", 1986 | "dev": true, 1987 | "requires": { 1988 | "find-up": "2.1.0", 1989 | "load-json-file": "4.0.0" 1990 | }, 1991 | "dependencies": { 1992 | "find-up": { 1993 | "version": "2.1.0", 1994 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1995 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1996 | "dev": true, 1997 | "requires": { 1998 | "locate-path": "2.0.0" 1999 | } 2000 | }, 2001 | "load-json-file": { 2002 | "version": "4.0.0", 2003 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 2004 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 2005 | "dev": true, 2006 | "requires": { 2007 | "graceful-fs": "4.1.11", 2008 | "parse-json": "4.0.0", 2009 | "pify": "3.0.0", 2010 | "strip-bom": "3.0.0" 2011 | } 2012 | }, 2013 | "parse-json": { 2014 | "version": "4.0.0", 2015 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2016 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 2017 | "dev": true, 2018 | "requires": { 2019 | "error-ex": "1.3.1", 2020 | "json-parse-better-errors": "1.0.1" 2021 | } 2022 | }, 2023 | "pify": { 2024 | "version": "3.0.0", 2025 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2026 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2027 | "dev": true 2028 | }, 2029 | "strip-bom": { 2030 | "version": "3.0.0", 2031 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2032 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2033 | "dev": true 2034 | } 2035 | } 2036 | }, 2037 | "pkg-config": { 2038 | "version": "1.1.1", 2039 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", 2040 | "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", 2041 | "dev": true, 2042 | "requires": { 2043 | "debug-log": "1.0.1", 2044 | "find-root": "1.1.0", 2045 | "xtend": "4.0.1" 2046 | } 2047 | }, 2048 | "pkg-dir": { 2049 | "version": "1.0.0", 2050 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 2051 | "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 2052 | "dev": true, 2053 | "requires": { 2054 | "find-up": "1.1.2" 2055 | } 2056 | }, 2057 | "pluralize": { 2058 | "version": "7.0.0", 2059 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 2060 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 2061 | "dev": true 2062 | }, 2063 | "prelude-ls": { 2064 | "version": "1.1.2", 2065 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2066 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 2067 | "dev": true 2068 | }, 2069 | "process-nextick-args": { 2070 | "version": "1.0.7", 2071 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 2072 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 2073 | "dev": true 2074 | }, 2075 | "progress": { 2076 | "version": "2.0.0", 2077 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 2078 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 2079 | "dev": true 2080 | }, 2081 | "promise": { 2082 | "version": "7.3.1", 2083 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 2084 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 2085 | "dev": true, 2086 | "requires": { 2087 | "asap": "2.0.6" 2088 | } 2089 | }, 2090 | "prop-types": { 2091 | "version": "15.6.0", 2092 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", 2093 | "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", 2094 | "dev": true, 2095 | "requires": { 2096 | "fbjs": "0.8.16", 2097 | "loose-envify": "1.3.1", 2098 | "object-assign": "4.1.1" 2099 | } 2100 | }, 2101 | "pseudomap": { 2102 | "version": "1.0.2", 2103 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2104 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 2105 | "dev": true 2106 | }, 2107 | "read-pkg": { 2108 | "version": "2.0.0", 2109 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2110 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2111 | "dev": true, 2112 | "requires": { 2113 | "load-json-file": "2.0.0", 2114 | "normalize-package-data": "2.4.0", 2115 | "path-type": "2.0.0" 2116 | } 2117 | }, 2118 | "read-pkg-up": { 2119 | "version": "2.0.0", 2120 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2121 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2122 | "dev": true, 2123 | "requires": { 2124 | "find-up": "2.1.0", 2125 | "read-pkg": "2.0.0" 2126 | }, 2127 | "dependencies": { 2128 | "find-up": { 2129 | "version": "2.1.0", 2130 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2131 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2132 | "dev": true, 2133 | "requires": { 2134 | "locate-path": "2.0.0" 2135 | } 2136 | } 2137 | } 2138 | }, 2139 | "readable-stream": { 2140 | "version": "2.3.3", 2141 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2142 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2143 | "dev": true, 2144 | "requires": { 2145 | "core-util-is": "1.0.2", 2146 | "inherits": "2.0.3", 2147 | "isarray": "1.0.0", 2148 | "process-nextick-args": "1.0.7", 2149 | "safe-buffer": "5.1.1", 2150 | "string_decoder": "1.0.3", 2151 | "util-deprecate": "1.0.2" 2152 | } 2153 | }, 2154 | "regenerator-runtime": { 2155 | "version": "0.11.0", 2156 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", 2157 | "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", 2158 | "dev": true 2159 | }, 2160 | "repeat-string": { 2161 | "version": "1.6.1", 2162 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2163 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2164 | "dev": true 2165 | }, 2166 | "repeating": { 2167 | "version": "2.0.1", 2168 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 2169 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2170 | "dev": true, 2171 | "requires": { 2172 | "is-finite": "1.0.2" 2173 | } 2174 | }, 2175 | "require-uncached": { 2176 | "version": "1.0.3", 2177 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 2178 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 2179 | "dev": true, 2180 | "requires": { 2181 | "caller-path": "0.1.0", 2182 | "resolve-from": "1.0.1" 2183 | } 2184 | }, 2185 | "resolve": { 2186 | "version": "1.5.0", 2187 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", 2188 | "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", 2189 | "dev": true, 2190 | "requires": { 2191 | "path-parse": "1.0.5" 2192 | } 2193 | }, 2194 | "resolve-from": { 2195 | "version": "1.0.1", 2196 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 2197 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 2198 | "dev": true 2199 | }, 2200 | "restore-cursor": { 2201 | "version": "2.0.0", 2202 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 2203 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 2204 | "dev": true, 2205 | "requires": { 2206 | "onetime": "2.0.1", 2207 | "signal-exit": "3.0.2" 2208 | } 2209 | }, 2210 | "right-align": { 2211 | "version": "0.1.3", 2212 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 2213 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 2214 | "dev": true, 2215 | "optional": true, 2216 | "requires": { 2217 | "align-text": "0.1.4" 2218 | } 2219 | }, 2220 | "rimraf": { 2221 | "version": "2.6.2", 2222 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 2223 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 2224 | "dev": true, 2225 | "requires": { 2226 | "glob": "7.1.2" 2227 | } 2228 | }, 2229 | "run-async": { 2230 | "version": "2.3.0", 2231 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 2232 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 2233 | "dev": true, 2234 | "requires": { 2235 | "is-promise": "2.1.0" 2236 | } 2237 | }, 2238 | "run-parallel": { 2239 | "version": "1.1.6", 2240 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz", 2241 | "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=", 2242 | "dev": true 2243 | }, 2244 | "rx-lite": { 2245 | "version": "4.0.8", 2246 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 2247 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 2248 | "dev": true 2249 | }, 2250 | "rx-lite-aggregates": { 2251 | "version": "4.0.8", 2252 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 2253 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 2254 | "dev": true, 2255 | "requires": { 2256 | "rx-lite": "4.0.8" 2257 | } 2258 | }, 2259 | "safe-buffer": { 2260 | "version": "5.1.1", 2261 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2262 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 2263 | "dev": true 2264 | }, 2265 | "semistandard": { 2266 | "version": "12.0.0", 2267 | "resolved": "https://registry.npmjs.org/semistandard/-/semistandard-12.0.0.tgz", 2268 | "integrity": "sha512-jykJZVDYWFZ7Hej9bYwynBa+A8yQFksm4zZoli4O+KkqMuQTdlBzkJvtFRER7xufSnB6+XnBS423tjI3Gtrg7Q==", 2269 | "dev": true, 2270 | "requires": { 2271 | "eslint": "4.14.0", 2272 | "eslint-config-semistandard": "12.0.0", 2273 | "eslint-config-standard": "11.0.0-beta.0", 2274 | "eslint-config-standard-jsx": "4.0.2", 2275 | "eslint-plugin-import": "2.8.0", 2276 | "eslint-plugin-node": "5.2.1", 2277 | "eslint-plugin-promise": "3.6.0", 2278 | "eslint-plugin-react": "7.5.1", 2279 | "eslint-plugin-standard": "3.0.1", 2280 | "standard-engine": "7.2.0" 2281 | } 2282 | }, 2283 | "semver": { 2284 | "version": "5.4.1", 2285 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 2286 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 2287 | "dev": true 2288 | }, 2289 | "setimmediate": { 2290 | "version": "1.0.5", 2291 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2292 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 2293 | "dev": true 2294 | }, 2295 | "shebang-command": { 2296 | "version": "1.2.0", 2297 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2298 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2299 | "dev": true, 2300 | "requires": { 2301 | "shebang-regex": "1.0.0" 2302 | } 2303 | }, 2304 | "shebang-regex": { 2305 | "version": "1.0.0", 2306 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2307 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2308 | "dev": true 2309 | }, 2310 | "signal-exit": { 2311 | "version": "3.0.2", 2312 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2313 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2314 | "dev": true 2315 | }, 2316 | "slice-ansi": { 2317 | "version": "1.0.0", 2318 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 2319 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 2320 | "dev": true, 2321 | "requires": { 2322 | "is-fullwidth-code-point": "2.0.0" 2323 | } 2324 | }, 2325 | "source-map": { 2326 | "version": "0.5.7", 2327 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2328 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2329 | "dev": true 2330 | }, 2331 | "spdx-correct": { 2332 | "version": "1.0.2", 2333 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 2334 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 2335 | "dev": true, 2336 | "requires": { 2337 | "spdx-license-ids": "1.2.2" 2338 | } 2339 | }, 2340 | "spdx-expression-parse": { 2341 | "version": "1.0.4", 2342 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 2343 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 2344 | "dev": true 2345 | }, 2346 | "spdx-license-ids": { 2347 | "version": "1.2.2", 2348 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 2349 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 2350 | "dev": true 2351 | }, 2352 | "sprintf-js": { 2353 | "version": "1.0.3", 2354 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2355 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2356 | "dev": true 2357 | }, 2358 | "standard-engine": { 2359 | "version": "7.2.0", 2360 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.2.0.tgz", 2361 | "integrity": "sha512-4MTVXRZQjEWeD7tNt8lK1Yh7VLXbmZ/hj34uF9tpSdtYNNPosms2TLCnw/7MUl/rW1Uhx80s7CL8LtBdUtgrtw==", 2362 | "dev": true, 2363 | "requires": { 2364 | "deglob": "2.1.0", 2365 | "get-stdin": "5.0.1", 2366 | "minimist": "1.2.0", 2367 | "pkg-conf": "2.1.0" 2368 | }, 2369 | "dependencies": { 2370 | "minimist": { 2371 | "version": "1.2.0", 2372 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2373 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2374 | "dev": true 2375 | } 2376 | } 2377 | }, 2378 | "string-width": { 2379 | "version": "2.1.1", 2380 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2381 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2382 | "dev": true, 2383 | "requires": { 2384 | "is-fullwidth-code-point": "2.0.0", 2385 | "strip-ansi": "4.0.0" 2386 | }, 2387 | "dependencies": { 2388 | "ansi-regex": { 2389 | "version": "3.0.0", 2390 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2391 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2392 | "dev": true 2393 | }, 2394 | "strip-ansi": { 2395 | "version": "4.0.0", 2396 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2397 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2398 | "dev": true, 2399 | "requires": { 2400 | "ansi-regex": "3.0.0" 2401 | } 2402 | } 2403 | } 2404 | }, 2405 | "string_decoder": { 2406 | "version": "1.0.3", 2407 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2408 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2409 | "dev": true, 2410 | "requires": { 2411 | "safe-buffer": "5.1.1" 2412 | } 2413 | }, 2414 | "strip-ansi": { 2415 | "version": "3.0.1", 2416 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2417 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2418 | "dev": true, 2419 | "requires": { 2420 | "ansi-regex": "2.1.1" 2421 | } 2422 | }, 2423 | "strip-bom": { 2424 | "version": "2.0.0", 2425 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2426 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2427 | "dev": true, 2428 | "requires": { 2429 | "is-utf8": "0.2.1" 2430 | } 2431 | }, 2432 | "strip-json-comments": { 2433 | "version": "2.0.1", 2434 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2435 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2436 | "dev": true 2437 | }, 2438 | "supports-color": { 2439 | "version": "2.0.0", 2440 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2441 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2442 | "dev": true 2443 | }, 2444 | "table": { 2445 | "version": "4.0.2", 2446 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", 2447 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", 2448 | "dev": true, 2449 | "requires": { 2450 | "ajv": "5.5.2", 2451 | "ajv-keywords": "2.1.1", 2452 | "chalk": "2.3.0", 2453 | "lodash": "4.17.4", 2454 | "slice-ansi": "1.0.0", 2455 | "string-width": "2.1.1" 2456 | }, 2457 | "dependencies": { 2458 | "ansi-styles": { 2459 | "version": "3.2.0", 2460 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 2461 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 2462 | "dev": true, 2463 | "requires": { 2464 | "color-convert": "1.9.1" 2465 | } 2466 | }, 2467 | "chalk": { 2468 | "version": "2.3.0", 2469 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 2470 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 2471 | "dev": true, 2472 | "requires": { 2473 | "ansi-styles": "3.2.0", 2474 | "escape-string-regexp": "1.0.5", 2475 | "supports-color": "4.5.0" 2476 | } 2477 | }, 2478 | "has-flag": { 2479 | "version": "2.0.0", 2480 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 2481 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 2482 | "dev": true 2483 | }, 2484 | "supports-color": { 2485 | "version": "4.5.0", 2486 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 2487 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 2488 | "dev": true, 2489 | "requires": { 2490 | "has-flag": "2.0.0" 2491 | } 2492 | } 2493 | } 2494 | }, 2495 | "text-table": { 2496 | "version": "0.2.0", 2497 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2498 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2499 | "dev": true 2500 | }, 2501 | "through": { 2502 | "version": "2.3.8", 2503 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2504 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2505 | "dev": true 2506 | }, 2507 | "tmp": { 2508 | "version": "0.0.33", 2509 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 2510 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 2511 | "dev": true, 2512 | "requires": { 2513 | "os-tmpdir": "1.0.2" 2514 | } 2515 | }, 2516 | "to-fast-properties": { 2517 | "version": "1.0.3", 2518 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 2519 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 2520 | "dev": true 2521 | }, 2522 | "trim-right": { 2523 | "version": "1.0.1", 2524 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 2525 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 2526 | "dev": true 2527 | }, 2528 | "type-check": { 2529 | "version": "0.3.2", 2530 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2531 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 2532 | "dev": true, 2533 | "requires": { 2534 | "prelude-ls": "1.1.2" 2535 | } 2536 | }, 2537 | "typedarray": { 2538 | "version": "0.0.6", 2539 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2540 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2541 | "dev": true 2542 | }, 2543 | "ua-parser-js": { 2544 | "version": "0.7.17", 2545 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", 2546 | "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", 2547 | "dev": true 2548 | }, 2549 | "uberproto": { 2550 | "version": "1.2.0", 2551 | "resolved": "https://registry.npmjs.org/uberproto/-/uberproto-1.2.0.tgz", 2552 | "integrity": "sha1-YdTqsCT5CcTm6lK+hnxIlKS+63Y=", 2553 | "dev": true 2554 | }, 2555 | "uglify-js": { 2556 | "version": "2.8.29", 2557 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 2558 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 2559 | "dev": true, 2560 | "optional": true, 2561 | "requires": { 2562 | "source-map": "0.5.7", 2563 | "uglify-to-browserify": "1.0.2", 2564 | "yargs": "3.10.0" 2565 | } 2566 | }, 2567 | "uglify-to-browserify": { 2568 | "version": "1.0.2", 2569 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 2570 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 2571 | "dev": true, 2572 | "optional": true 2573 | }, 2574 | "uniq": { 2575 | "version": "1.0.1", 2576 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 2577 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", 2578 | "dev": true 2579 | }, 2580 | "util-deprecate": { 2581 | "version": "1.0.2", 2582 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2583 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2584 | "dev": true 2585 | }, 2586 | "validate-npm-package-license": { 2587 | "version": "3.0.1", 2588 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 2589 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 2590 | "dev": true, 2591 | "requires": { 2592 | "spdx-correct": "1.0.2", 2593 | "spdx-expression-parse": "1.0.4" 2594 | } 2595 | }, 2596 | "whatwg-fetch": { 2597 | "version": "2.0.3", 2598 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", 2599 | "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", 2600 | "dev": true 2601 | }, 2602 | "which": { 2603 | "version": "1.3.0", 2604 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 2605 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 2606 | "dev": true, 2607 | "requires": { 2608 | "isexe": "2.0.0" 2609 | } 2610 | }, 2611 | "window-size": { 2612 | "version": "0.1.0", 2613 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 2614 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 2615 | "dev": true, 2616 | "optional": true 2617 | }, 2618 | "wordwrap": { 2619 | "version": "1.0.0", 2620 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2621 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2622 | "dev": true 2623 | }, 2624 | "wrappy": { 2625 | "version": "1.0.2", 2626 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2627 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2628 | "dev": true 2629 | }, 2630 | "write": { 2631 | "version": "0.2.1", 2632 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 2633 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 2634 | "dev": true, 2635 | "requires": { 2636 | "mkdirp": "0.5.1" 2637 | } 2638 | }, 2639 | "xtend": { 2640 | "version": "4.0.1", 2641 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2642 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2643 | "dev": true 2644 | }, 2645 | "yallist": { 2646 | "version": "2.1.2", 2647 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2648 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 2649 | "dev": true 2650 | }, 2651 | "yargs": { 2652 | "version": "3.10.0", 2653 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 2654 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 2655 | "dev": true, 2656 | "optional": true, 2657 | "requires": { 2658 | "camelcase": "1.2.1", 2659 | "cliui": "2.1.0", 2660 | "decamelize": "1.2.0", 2661 | "window-size": "0.1.0" 2662 | } 2663 | } 2664 | } 2665 | } 2666 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@feathersjs/configuration", 3 | "description": "A small configuration module for your Feathers application.", 4 | "version": "2.0.0", 5 | "homepage": "https://github.com/feathersjs/configuration", 6 | "main": "lib/", 7 | "keywords": [ 8 | "feathers", 9 | "feathers-plugin" 10 | ], 11 | "license": "MIT", 12 | "repository": { 13 | "type": "git", 14 | "url": "git://github.com/feathersjs/configuration.git" 15 | }, 16 | "author": { 17 | "name": "Feathers contributors", 18 | "email": "hello@feathersjs.com", 19 | "url": "https://feathersjs.com" 20 | }, 21 | "contributors": [], 22 | "bugs": { 23 | "url": "https://github.com/feathersjs/configuration/issues" 24 | }, 25 | "engines": { 26 | "node": ">= 6" 27 | }, 28 | "scripts": { 29 | "publish": "git push origin --tags && npm run changelog && git push origin", 30 | "release:pre": "npm version prerelease && npm publish --access public", 31 | "release:patch": "npm version patch && npm publish --access public", 32 | "release:minor": "npm version minor && npm publish --access public", 33 | "release:major": "npm version major && npm publish --access public", 34 | "changelog": "github_changelog_generator && git add CHANGELOG.md && git commit -am \"Updating changelog\"", 35 | "lint": "semistandard --fix", 36 | "mocha": "NODE_CONFIG_DIR=./test/config/ NODE_ENV=testing mocha --opts mocha.opts", 37 | "test": "npm run lint && npm run coverage", 38 | "coverage": "NODE_CONFIG_DIR=./test/config/ NODE_ENV=testing istanbul cover node_modules/mocha/bin/_mocha -- --opts mocha.opts" 39 | }, 40 | "semistandard": { 41 | "env": [ 42 | "mocha" 43 | ] 44 | }, 45 | "directories": { 46 | "lib": "lib" 47 | }, 48 | "dependencies": { 49 | "config": "^2.0.0", 50 | "debug": "^3.1.0" 51 | }, 52 | "devDependencies": { 53 | "@feathersjs/feathers": "^3.0.0", 54 | "istanbul": "^1.1.0-alpha.1", 55 | "mocha": "^5.0.0", 56 | "semistandard": "^12.0.0" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /test/config/custom-environment-variables.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": "PORT", 3 | "mongodb": "MONGOHQ_URL" 4 | } 5 | -------------------------------------------------------------------------------- /test/config/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "port": "3030", 3 | "environment": "NODE_ENV", 4 | "path": "../something", 5 | "unescaped": "\\NODE_ENV", 6 | "from": "default", 7 | "deeply": { "nested": { "env": "NODE_ENV" } }, 8 | "array": ["one", "two", "three"], 9 | "deep": { "base": false }, 10 | "nullish": null 11 | } 12 | -------------------------------------------------------------------------------- /test/config/testing.js: -------------------------------------------------------------------------------- 1 | // @feathersjs/configuration pulls in default and settings files using 2 | // Node's `require()`. 3 | // Node require() looks first for .js, 4 | // and if not found, it will check for .json 5 | // 6 | // This configuration file has `.js` suffix, and must provide 7 | // a `module.exports` containing the configuration properties. 8 | 9 | var derivedSetting = 'Hello World'; 10 | var derivedEnvironment = 'NODE_ENV'; 11 | 12 | module.exports = { 13 | from: 'testing', 14 | testEnvironment: 'NODE_ENV', 15 | derived: derivedSetting, 16 | derivedEnvironment: derivedEnvironment, 17 | deep: { merge: true } 18 | }; 19 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert'); 2 | const feathers = require('@feathersjs/feathers'); 3 | const { join } = require('path'); 4 | 5 | const plugin = require('../lib'); 6 | 7 | describe('@feathersjs/configuration', () => { 8 | const app = feathers().configure(plugin()); 9 | 10 | it('exports default', () => 11 | assert.equal(plugin, plugin.default) 12 | ); 13 | 14 | it('initialized app with default data', () => 15 | assert.equal(app.get('port'), 3030) 16 | ); 17 | 18 | it('initialized with ', () => 19 | assert.equal(app.get('from'), 'testing') 20 | ); 21 | 22 | it('initialized with derived data module', () => 23 | assert.equal(app.get('derived'), 'Hello World') 24 | ); 25 | 26 | it('initialized property with environment variable', () => 27 | assert.equal(app.get('environment'), 'testing') 28 | ); 29 | 30 | it('initialized property with environment variable from ', () => 31 | assert.equal(app.get('testEnvironment'), 'testing') 32 | ); 33 | 34 | it('initialized property with derived environment variable from module', () => 35 | assert.equal(app.get('derivedEnvironment'), 'testing') 36 | ); 37 | 38 | it('uses an escape character', () => 39 | assert.equal(app.get('unescaped'), 'NODE_ENV') 40 | ); 41 | 42 | it('normalizes relative path names', () => 43 | assert.equal(app.get('path'), join(__dirname, 'something')) 44 | ); 45 | 46 | it('converts environment variables recursively', () => 47 | assert.equal(app.get('deeply').nested.env, 'testing') 48 | ); 49 | 50 | it('converts arrays as actual arrays', () => 51 | assert.ok(Array.isArray(app.get('array'))) 52 | ); 53 | 54 | it('works when called directly', () => { 55 | const fn = plugin(); 56 | 57 | assert.equal(fn().port, '3030'); 58 | }); 59 | 60 | it('deep merges properties', () => 61 | assert.deepEqual(app.get('deep'), { 62 | base: false, 63 | merge: true 64 | }) 65 | ); 66 | 67 | it('supports null value', () => { 68 | assert.strictEqual(app.get('nullish'), null); 69 | }); 70 | }); 71 | --------------------------------------------------------------------------------