From d7f517aed72290309240d4d3937fb1b4621af01b Mon Sep 17 00:00:00 2001 From: Roman Golovin Date: Fri, 13 Nov 2015 16:25:56 +0200 Subject: [PATCH] Merge new mean version --- .gitignore | 2 +- .jshintrc | 3 +- .travis.yml | 10 +- CONTRIBUTING.md | 20 + Dockerfile | 32 + README.md | 50 +- bower.json | 4 +- config/assets.json | 7 +- config/env/all.js | 19 +- config/env/development.js | 61 +- config/env/production.js | 59 +- config/env/test.js | 66 +- config/express.js | 12 +- gulp/development.js | 55 +- gulp/e2e.js | 37 + gulp/test.js | 79 +- karma.conf.js | 47 +- npm-shrinkwrap.json | 6343 ++++++++++++----- package.json | 18 +- packages/core/admin/app.js | 43 +- .../core/admin/public/assets/css/admin.css | 5 + .../core/admin/public/controllers/admin.js | 26 +- .../core/admin/public/controllers/themes.js | 3 +- .../core/admin/public/controllers/users.js | 95 +- .../core/admin/public/views/settings.html | 2 +- packages/core/admin/public/views/users.html | 50 +- packages/core/admin/server/routes/index.js | 9 +- packages/core/articles/app.js | 11 +- packages/core/articles/docs/models.js | 33 +- .../articles/public/controllers/articles.js | 42 +- .../articles/public/tests/articles.spec.js | 14 +- .../core/articles/public/views/create.html | 24 +- packages/core/articles/public/views/edit.html | 17 + .../articles/server/controllers/articles.js | 77 +- .../core/articles/server/models/article.js | 3 + .../core/articles/server/routes/articles.js | 18 +- .../tests/{articles.js => articles.spec.js} | 0 packages/core/circles/.bowerrc | 3 + packages/core/circles/.gitignore | 2 + packages/core/circles/README.md | 1 + packages/core/circles/app.js | 73 + packages/core/circles/bower.json | 5 + packages/core/circles/package.json | 15 + .../circles/public/assets/css/circles.css | 24 + .../core/circles/public/assets/img/logo.png | Bin 0 -> 5993 bytes .../circles/public/controllers/circles.js | 30 + .../core/circles/public/routes/circles.js | 23 + .../core/circles/public/services/circles.js | 24 + .../core/circles/public/views/create.html | 34 + packages/core/circles/public/views/index.html | 13 + .../circles/server/controllers/circles.js | 208 + packages/core/circles/server/models/circle.js | 132 + packages/core/circles/server/routes/routes.js | 25 + packages/core/circles/server/views/index.html | 110 + packages/core/swagger/server/views/index.html | 1 - packages/core/system/app.js | 23 +- .../core/system/public/assets/img/favicon.ico | Bin 5993 -> 99678 bytes packages/core/system/public/routes/system.js | 7 - .../core/system/public/services/config.js | 23 + packages/core/system/public/system.js | 2 +- .../core/system/public/tests/headers.spec.js | 6 +- .../core/system/public/tests/index.spec.js | 4 +- packages/core/system/public/views/header.html | 23 +- .../core/system/server/controllers/index.js | 12 +- packages/core/system/server/routes/index.js | 10 +- .../system/server/views/includes/foot.html | 4 - .../system/server/views/includes/head.html | 1 + .../system/server/views/layouts/default.html | 1 - .../system/server/views/layouts/header.html | 51 - packages/core/users/app.js | 8 +- packages/core/users/authorization.js | 37 +- packages/core/users/passport.js | 35 +- .../core/users/public/controllers/meanUser.js | 1 + packages/core/users/public/routes/auth.js | 3 +- .../core/users/public/services/meanUser.js | 68 +- packages/core/users/public/tests/auth.spec.js | 4 +- .../core/users/server/controllers/users.js | 72 +- packages/core/users/server/models/user.js | 2 +- packages/core/users/server/routes/users.js | 241 +- .../server/tests/{users.js => users.spec.js} | 3 +- packages/custom/i18n/.bowerrc | 3 + packages/custom/i18n/README.md | 1 + packages/custom/i18n/app.js | 57 + packages/custom/i18n/bower.json | 7 + packages/custom/i18n/package.json | 18 + .../custom/i18n/public/assets/css/i18n.css | 3 + .../custom/i18n/public/assets/img/logo.png | Bin 0 -> 5993 bytes .../custom/i18n/public/controllers/i18n.js | 11 + packages/custom/i18n/public/routes/i18n.js | 10 + packages/custom/i18n/public/services/i18n.js | 9 + packages/custom/i18n/public/views/index.html | 27 + packages/custom/i18n/server/routes/i18n.js | 27 + packages/custom/i18n/server/views/index.html | 3 + packages/custom/mail-templates/app.js | 8 - packages/custom/mail-templates/package.json | 6 +- .../server/controllers/mailTemplates.js | 9 + .../server/templates/example/html.swig | 1 + .../server/templates/example/style.scss | 5 + .../server/templates/example/text.swig | 1 + .../server/templates/styles/_common.scss | 0 server.js | 9 +- tests/config/e2e/protractor.config.js | 34 + tests/e2e/smoke/home.spec.js | 6 + 103 files changed, 6466 insertions(+), 2549 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 gulp/e2e.js rename packages/core/articles/server/tests/{articles.js => articles.spec.js} (100%) create mode 100644 packages/core/circles/.bowerrc create mode 100644 packages/core/circles/.gitignore create mode 100644 packages/core/circles/README.md create mode 100644 packages/core/circles/app.js create mode 100644 packages/core/circles/bower.json create mode 100644 packages/core/circles/package.json create mode 100644 packages/core/circles/public/assets/css/circles.css create mode 100644 packages/core/circles/public/assets/img/logo.png create mode 100644 packages/core/circles/public/controllers/circles.js create mode 100644 packages/core/circles/public/routes/circles.js create mode 100644 packages/core/circles/public/services/circles.js create mode 100644 packages/core/circles/public/views/create.html create mode 100644 packages/core/circles/public/views/index.html create mode 100644 packages/core/circles/server/controllers/circles.js create mode 100644 packages/core/circles/server/models/circle.js create mode 100644 packages/core/circles/server/routes/routes.js create mode 100644 packages/core/circles/server/views/index.html create mode 100644 packages/core/system/public/services/config.js delete mode 100644 packages/core/system/server/views/layouts/header.html rename packages/core/users/server/tests/{users.js => users.spec.js} (98%) create mode 100644 packages/custom/i18n/.bowerrc create mode 100644 packages/custom/i18n/README.md create mode 100644 packages/custom/i18n/app.js create mode 100644 packages/custom/i18n/bower.json create mode 100644 packages/custom/i18n/package.json create mode 100644 packages/custom/i18n/public/assets/css/i18n.css create mode 100644 packages/custom/i18n/public/assets/img/logo.png create mode 100644 packages/custom/i18n/public/controllers/i18n.js create mode 100644 packages/custom/i18n/public/routes/i18n.js create mode 100644 packages/custom/i18n/public/services/i18n.js create mode 100644 packages/custom/i18n/public/views/index.html create mode 100644 packages/custom/i18n/server/routes/i18n.js create mode 100644 packages/custom/i18n/server/views/index.html create mode 100644 packages/custom/mail-templates/server/controllers/mailTemplates.js create mode 100644 packages/custom/mail-templates/server/templates/example/html.swig create mode 100644 packages/custom/mail-templates/server/templates/example/style.scss create mode 100644 packages/custom/mail-templates/server/templates/example/text.swig create mode 100644 packages/custom/mail-templates/server/templates/styles/_common.scss create mode 100644 tests/config/e2e/protractor.config.js create mode 100644 tests/e2e/smoke/home.spec.js diff --git a/.gitignore b/.gitignore index c403586..8207018 100644 --- a/.gitignore +++ b/.gitignore @@ -64,7 +64,7 @@ bower_components # App Files # -------------------- data/ -test/coverage/ +tests/results/** modules/public/ modules/views/ /public/build/ diff --git a/.jshintrc b/.jshintrc index 1adc08b..d44da6a 100644 --- a/.jshintrc +++ b/.jshintrc @@ -14,7 +14,7 @@ "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` "noempty" : true, // true: Prohibit use of empty blocks "nonew" : true, // true: Prohibit use of constructors for side-effects (without assignment) - "plusplus" : true, // true: Prohibit use of `++` & `--` + "plusplus" : false, // true: Prohibit use of `++` & `--` "quotmark" : "single", // Quotation mark consistency: // false : do nothing (default) // true : ensure whatever is used is consistent @@ -72,6 +72,7 @@ // Custom Globals "globals": { + "$" : true, "angular" : true, "define" : false, "jasmine" : false, diff --git a/.travis.yml b/.travis.yml index f4d5efa..991e249 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,26 @@ language: node_js +sudo: false node_js: - "0.10" + - "0.12" + - "4.0" + - "4.2" + - "5.0" env: - NODE_ENV=development services: - mongodb +before_install: + - npm i -g bower notifications: webhooks: urls: - https://webhooks.gitter.im/e/08c84711c36e875930d0 + - https://hooks.slack.com/services/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 on_success: change # options: [always|never|change] default: always on_failure: always # options: [always|never|change] default: always - on_start: false # default: false + on_start: always # default: false diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..9cc251d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,20 @@ +## Contributing + +### Reporting an Issue +1. Please make sure that there is not an issue already open +2. If that's the case, then add your observations in that same issue +3. If your issue is unique, add following details in the issue + 1. OS name and version + 2. NodeJS and NPM version : Output of `node -v` and `npm -v` + 3. MEAN Status : Output of `mean status` in project directory + 4. Tracelog : The error that got printed on the console + 5. Any other relevant details +4. Add `[Feature]` in the title if its a suggestion rather than an issue that you would like to see in MEAN. + + +### Creating a pull request +1. There should be an issue for every pull request that is being created. If there is none, create it. +2. Make sure that your changes are passing the test but running `npm test` +3. If there are any lint warning, cleanup those as well +4. In the comments for pull request mention the issues that you are solving by this pull request +5. Create the pull request diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..590f995 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +FROM node:0.10 + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +RUN npm install -g mean-cli bower gulp + +RUN groupadd -r node \ +&& useradd -r -m -g node node + +COPY . /usr/src/app/ +RUN rm -rf /usr/src/app/node_modules +RUN chown -R node:node /usr/src/app + +USER node +RUN touch /home/node/.mean +RUN npm install +ENV PORT 3000 +ENV DB_PORT_27017_TCP_ADDR db +CMD [ "npm", "start" ] +EXPOSE 3000 + + +#How to build: +# git clone https://github.com/linnovate/mean +# cd mean +# docker build -t mean . + +#How to run: +# docker pull mongo +# docker run -d --name db mongo +# docker run -p 3000:3000 --link db:db mean diff --git a/README.md b/README.md index cbc7bd4..f59bf08 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/linnovate/mean.svg?branch=master)](https://travis-ci.org/linnovate/mean) +[![Build Status](https://travis-ci.org/linnovate/mean.svg)](https://travis-ci.org/linnovate/mean) [![Dependencies Status](https://david-dm.org/linnovate/mean.svg)](https://david-dm.org/linnovate/mean) [![Gitter](https://badges.gitter.im/JoinChat.svg)](https://gitter.im/linnovate/mean?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) h @@ -11,7 +11,7 @@ MEAN is a framework for an easy starting point with [MongoDB](http://www.mongodb * *Node.js* - Download and Install Node.js, nodeschool has free node tutorials to get you started. * *MongoDB* - Download and Install mongodb - Checkout their manual if you're just starting. -If you're using ubuntu this is the preffered repository to use... +If you're using ubuntu, this is the preferred repository to use... ```bash $ curl -sL https://deb.nodesource.com/setup | sudo bash - @@ -54,7 +54,7 @@ $ cd && npm install ### Invoke node with a task manager Mean supports the gulp task runner for various services which are applied on the code. -To start you application run - +To start your application run - ```bash $ gulp ``` @@ -68,6 +68,17 @@ Then, open a browser and go to: http://localhost:3000 ``` +### Running on a different port +If you have a rails, node, or other mean project already running, you may need to use a different port. You can set the port and start your new mean project with one command: +```bash +$ export PORT=3001 && gulp +``` + +Then, open a browser and change the port number before you visit: +```bash + http://localhost:3001 +``` + ### Troubleshooting During installation depending on your os and prerequisite versions you may encounter some issues. @@ -109,7 +120,7 @@ $ bower cache clean Some of Mean.io dependencies uses [node-gyp](https://github.com/TooTallNate/node-gyp) with supported Python version 2.7.x. So if you see an error related to node-gyp rebuild follow next steps: 1. install [Python 2.7.x](https://www.python.org/downloads/) -2. install [Microsoft Visual Studio C++ 2012 Express](http://www.microsoft.com/ru-ru/download/details.aspx?id=34673) +2. install [Microsoft Visual Studio C++ 2012 Express](http://www.microsoft.com/en-us/download/details.aspx?id=34673) 3. Run NPM update ```bash @@ -168,9 +179,9 @@ $ mean help [command]

For example, the admin role is required to edit tokens.

```bash -$ mean user -$ mean user --addRole ; -$ mean user --removeRole ; + $ mean user + $ mean user --addRole ; + $ mean user --removeRole ; ``` ### Packages @@ -218,7 +229,7 @@ Everything in mean.io is a package and when extending mean with custom functiona The mean.io package system allows developers to create modular code that provides useful tools that other mean developers can use. The packages, when published, are plug-and-play and are used in a way very similar to traditional npm packages. -The mean.io package system integrates all the packages into the mean project as if the code was part of mean itself and provides the developers with all the necceesary tools required to integrate their package into the host project. +The mean.io package system integrates all the packages into the mean project as if the code was part of mean itself and provides the developers with all the necessary tools required to integrate their package into the host project. There are two types of packages: @@ -236,20 +247,20 @@ The "system" package creates the basic pages as well as defines the layout of th #### Users The "users" package creates the database model of the user, provides validation as well as various login and registration features. #### Access -The "access" package managers permissions and middleware. It controls the various authentication methods and is dependent on the users package +The "access" package manages permissions and middleware. It controls the various authentication methods and is dependent on the users package #### Theme The "theme" package adds some basic CSS and other assets such as images and backgrounds #### Articles The "articles" package is typically used as an example starting point for managing content that might be used in a blog or cms. The full CRUD is implemented on the server and client. -### Files structure +### File structure The file structure is similar to that of the mean project itself `Fundamental` Files at the `root` of the package **Server** -Packages are registered in the **app.js** -Defines package name, version and `mean=true` in the **package.json** +Packages are registered in the **app.js** +Defines package name, version and `mean=true` in the **package.json** All of the Server side code resides in the `/server` directory. @@ -285,7 +296,6 @@ When registering you are required to declare all your dependencies in order for // Example of registering the MyPackage MyPackage.register(function(app, auth, database) { // ... - }); ``` @@ -349,7 +359,6 @@ All assets such as images, javascript libraries and CSS stylesheets should be wi Javascript and CSS from `assets` can be aggregated to the global aggregation files. By default all javascript is automatically wrapped within an anonymous function unless given the option `{global:true}` to not enclose the javascript within a contained scope - ```javascript //Adding jquery to the mean project @@ -373,11 +382,11 @@ MyPackage.aggregateAsset('js','first.js',{global:true, weight: -4, group: 'head ``` >The line that gets loaded in your head.html calls the header group and injects the js you want to include first- -> in packages/system/server/views/includes/head.html +> in packages/system/server/views/includes/head.html > ###Settings Object -The settings object is a persistance object that is stored in the packages collection and allows for saving persistant information per package such as configuration options or admin settings for the package. +The settings object is a persistence object that is stored in the packages collection and allows for saving persistent information per package such as configuration options or admin settings for the package. Receives two arguments the first being the settings object the second is a callback function @@ -439,7 +448,7 @@ $stateProvider Packages are able to hook into an existing menu system and add links to various menus integrated within Mean. -Each link specifies its `title`, `template`, `menu` and `role` that is allowed to see the link. If the menu specified does not exist a new menu will be created. The menu object is made accessible within the client by means of a *menu angular service* that queries the menu controller for information about links. +Each link specifies its `title`, `template`, `menu` and `role` that is allowed to see the link. If the menu specified does not exist, a new menu will be created. The menu object is made accessible within the client by means of a *menu angular service* that queries the menu controller for information about links. Below is an example how to add a link to the main menu from `app.js` @@ -529,7 +538,7 @@ $ mean publish ## MEAN Network Mean is a stand-alone instance that you can install locally or host on your server. We want to provide value to developers and are assembling a set of services which will be called the mean network. -We're building all of this as we speak but we allready have some elements in place. +We're building all of this as we speak but we already have some elements in place. ### Network User Management @@ -592,7 +601,7 @@ $ npm test ### Logging -As from mean-0.4.4 control over the logging format has been delgated to the env configuration files. +As from mean-0.4.4 control over the logging format has been delegated to the env configuration files. The formats and implementation are done using the morgan node module and it's [predefined format](https://github.com/expressjs/morgan#predefined-formats) Within each configuration file (config/env/development.js) for instance you state the format in the 'logging' object. ``` @@ -689,8 +698,7 @@ $ heroku config:set NODE_ENV=production * To our awesome core team with help of our contributors which have made this project a success. * Valeri Karpov for coining the term *mean* and triggering the mean stack movement. * Amos Haviv for the creation of the initial version of Mean.io while working for us @linnovate. - * Madhusudhan Srinivasa which inspired us with his great work. + * Madhusudhan Srinivasa who inspired us with his great work. ## License We believe that mean should be free and easy to integrate within your existing projects so we chose [The MIT License](http://opensource.org/licenses/MIT) - diff --git a/bower.json b/bower.json index 6343e48..5e021fc 100644 --- a/bower.json +++ b/bower.json @@ -10,6 +10,8 @@ "bootstrap": "latest", "angular-bootstrap": "latest", "angular-ui-router": "#master", - "web-bootstrap": "./node_modules/meanio/resources/web-bootstrap.js" + "web-bootstrap": "./node_modules/meanio/resources/web-bootstrap.js", + "angular-ui-select": "latest", + "angular-sanitize": "latest" } } diff --git a/config/assets.json b/config/assets.json index 7c48233..dab452d 100644 --- a/config/assets.json +++ b/config/assets.json @@ -1,7 +1,10 @@ { "core": { "css": { - "bower_components/build/css/dist.min.css": [] + "bower_components/build/css/dist.min.css": [ + "bower_components/angular/angular-csp.css", + "bower_components/angular-ui-select/dist/select.min.css" + ] }, "js": { "bower_components/build/js/dist.min.js": [ @@ -10,9 +13,11 @@ "bower_components/angular-mocks/angular-mocks.js", "bower_components/angular-cookies/angular-cookies.min.js", "bower_components/angular-resource/angular-resource.min.js", + "bower_components/angular-sanitize/angular-sanitize.min.js", "bower_components/angular-ui-router/release/angular-ui-router.min.js", "bower_components/angular-jwt/dist/angular-jwt.min.js", "bower_components/angular-bootstrap/ui-bootstrap-tpls.js", + "bower_components/angular-ui-select/dist/select.min.js", "bower_components/web-bootstrap/index.js" ] } diff --git a/config/env/all.js b/config/env/all.js index 926c9de..ddb2229 100644 --- a/config/env/all.js +++ b/config/env/all.js @@ -41,8 +41,23 @@ module.exports = { // at all. The cookie will expunge when the browser is closed. maxAge: null }, - + public: { + languages: [{ + locale: 'en', + direction: 'ltr', + }, { + locale: 'he', + direction: 'rtl', + }], + currentLanguage: 'en', + cssFramework: 'bootstrap' + }, // The session cookie name sessionName: 'connect.sid', - attachmentDir: rootPath + '/files' + attachmentDir: rootPath + '/files', + // Set bodyParser options + bodyParser: { + json: {limit: '100kb'}, + urlencoded: {limit: '100kb', extended: true} + } }; diff --git a/config/env/development.js b/config/env/development.js index 77cdb5d..1a4f663 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -17,32 +17,43 @@ module.exports = { }, hostname: 'http://localhost:3003', app: { - name: 'MEAN - FullStack JS - Development' + name: 'MEAN - A Modern Stack - Development' }, - facebook: { - clientID: 'DEFAULT_APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/facebook/callback' - }, - twitter: { - clientID: 'DEFAULT_CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/api/auth/twitter/callback' - }, - github: { - clientID: 'DEFAULT_APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/github/callback' - }, - google: { - clientID: 'DEFAULT_APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/google/callback' - }, - linkedin: { - clientID: 'DEFAULT_API_KEY', - clientSecret: 'SECRET_KEY', - callbackURL: 'http://localhost:3000/api/auth/linkedin/callback' + strategies: { + local: { + enabled: true + }, + landingPage: '/', + facebook: { + clientID: 'DEFAULT_APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/facebook/callback', + enabled: false + }, + twitter: { + clientID: 'DEFAULT_CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/api/auth/twitter/callback', + enabled: false + }, + github: { + clientID: 'DEFAULT_APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/github/callback', + enabled: false + }, + google: { + clientID: 'DEFAULT_APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/google/callback', + enabled: false + }, + linkedin: { + clientID: 'DEFAULT_API_KEY', + clientSecret: 'SECRET_KEY', + callbackURL: 'http://localhost:3000/api/auth/linkedin/callback', + enabled: false + } }, emailFrom: 'SENDER EMAIL ADDRESS', // sender address like ABC mailer: { diff --git a/config/env/production.js b/config/env/production.js index 6fcfb22..49bfb35 100644 --- a/config/env/production.js +++ b/config/env/production.js @@ -33,30 +33,41 @@ module.exports = { logging: { format: 'combined' }, - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/api/auth/twitter/callback' - }, - github: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/github/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/api/auth/google/callback' - }, - linkedin: { - clientID: 'API_KEY', - clientSecret: 'SECRET_KEY', - callbackURL: 'http://localhost:3000/api/auth/linkedin/callback' + strategies: { + local: { + enabled: true + }, + landingPage: '/', + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/facebook/callback', + enabled: false + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/api/auth/twitter/callback', + enabled: false + }, + github: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/github/callback', + enabled: false + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/api/auth/google/callback', + enabled: false + }, + linkedin: { + clientID: 'API_KEY', + clientSecret: 'SECRET_KEY', + callbackURL: 'http://localhost:3000/api/auth/linkedin/callback', + enabled: false + } }, emailFrom: 'SENDER EMAIL ADDRESS', // sender address like ABC mailer: { diff --git a/config/env/test.js b/config/env/test.js index 23f0e42..a030e86 100644 --- a/config/env/test.js +++ b/config/env/test.js @@ -5,36 +5,51 @@ module.exports = { http: { port: 3001 }, + aggregate: false, + assets: { + hash: false + }, logging: { format: 'common' }, app: { name: 'MEAN - A Modern Stack - Test' }, - facebook: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/facebook/callback' - }, - twitter: { - clientID: 'CONSUMER_KEY', - clientSecret: 'CONSUMER_SECRET', - callbackURL: 'http://localhost:3000/auth/twitter/callback' - }, - github: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/github/callback' - }, - google: { - clientID: 'APP_ID', - clientSecret: 'APP_SECRET', - callbackURL: 'http://localhost:3000/auth/google/callback' - }, - linkedin: { - clientID: 'API_KEY', - clientSecret: 'SECRET_KEY', - callbackURL: 'http://localhost:3000/auth/linkedin/callback' + strategies: { + local: { + enabled: true + }, + landingPage: '/', + facebook: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/facebook/callback', + enabled: false + }, + twitter: { + clientID: 'CONSUMER_KEY', + clientSecret: 'CONSUMER_SECRET', + callbackURL: 'http://localhost:3000/auth/twitter/callback', + enabled: false + }, + github: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/github/callback', + enabled: false + }, + google: { + clientID: 'APP_ID', + clientSecret: 'APP_SECRET', + callbackURL: 'http://localhost:3000/auth/google/callback', + enabled: false + }, + linkedin: { + clientID: 'API_KEY', + clientSecret: 'SECRET_KEY', + callbackURL: 'http://localhost:3000/auth/linkedin/callback', + enabled: false + } }, emailFrom: 'SENDER EMAIL ADDRESS', // sender address like ABC mailer: { @@ -43,5 +58,6 @@ module.exports = { user: 'EMAIL_ID', pass: 'PASSWORD' } - } + }, + secret: 'SOME_TOKEN_SECRET' }; diff --git a/config/express.js b/config/express.js index cffe8ac..e16263e 100755 --- a/config/express.js +++ b/config/express.js @@ -12,11 +12,15 @@ var mean = require('meanio'), helpers = require('view-helpers'), flash = require('connect-flash'), modRewrite = require('connect-modrewrite'), - seo = require('mean-seo'), - config = mean.loadConfig(); + // seo = require('mean-seo'), + config = mean.loadConfig(), + bodyParser = require('body-parser'); module.exports = function(app, db) { + app.use(bodyParser.json(config.bodyParser.json)); + app.use(bodyParser.urlencoded(config.bodyParser.urlencoded)); + app.set('showStackError', true); // Prettify HTML @@ -56,9 +60,9 @@ module.exports = function(app, db) { app.use(modRewrite([ - '!^/api/.*|\\_getModules|\\.html|\\.js|\\.css|\\.swf|\\.jp(e?)g|\\.png|\\.gif|\\.svg|\\.eot|\\.ttf|\\.woff|\\.pdf$ / [L]' + '!^/api/.*|\\_getModules|\\.html|\\.js|\\.css|\\.swf|\\.jp(e?)g|\\.png|\\.ico|\\.gif|\\.svg|\\.eot|\\.ttf|\\.woff|\\.txt|\\.pdf$ / [L]' ])); - app.use(seo()); + // app.use(seo()); }; diff --git a/gulp/development.js b/gulp/development.js index a5db8fa..04f5488 100644 --- a/gulp/development.js +++ b/gulp/development.js @@ -5,16 +5,18 @@ var gulp = require('gulp'), through = require('through'), gutil = require('gulp-util'), plugins = gulpLoadPlugins(), + coffee = require('gulp-coffee'), paths = { - js: ['*.js', 'test/**/*.js', '!test/coverage/**', '!bower_components/**', '!packages/**/node_modules/**', '!packages/contrib/**/*.js', '!packages/contrib/**/node_modules/**', '!packages/core/**/*.js', '!packages/core/public/assets/lib/**/*.js'], - html: ['packages/**/public/**/views/**', 'packages/**/server/views/**'], - css: ['!bower_components/**', 'packages/**/public/**/css/*.css', '!packages/contrib/**/public/**/css/*.css', '!packages/core/**/public/**/css/*.css'], - less: ['**/public/**/css/*.less'], - sass: ['**/public/**/css/*.scss'] + js: ['./*.js', 'config/**/*.js', 'gulp/**/*.js', 'tools/**/*.js', 'packages/**/*.js', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**', '!packages/**/assets/**/js/**'], + html: ['packages/**/*.html', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**'], + css: ['packages/**/*.css', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**','!packages/core/**/public/assets/css/*.css'], + less: ['packages/**/*.less', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**'], + sass: ['packages/**/*.scss', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**'], + coffee: ['packages/**/*.coffee', '!packages/**/node_modules/**', '!packages/**/assets/**/lib/**'] }; /*var defaultTasks = ['clean', 'jshint', 'less', 'csslint', 'devServe', 'watch'];*/ -var defaultTasks = ['clean', 'less', 'csslint', 'devServe', 'watch']; +var defaultTasks = ['coffee','clean', 'less', 'csslint', 'devServe', 'watch']; gulp.task('env:development', function () { process.env.NODE_ENV = 'development'; @@ -24,7 +26,7 @@ gulp.task('jshint', function () { return gulp.src(paths.js) .pipe(plugins.jshint()) .pipe(plugins.jshint.reporter('jshint-stylish')) - .pipe(plugins.jshint.reporter('fail')) + // .pipe(plugins.jshint.reporter('fail')) to avoid shutdown gulp by warnings .pipe(count('jshint', 'files lint free')); }); @@ -44,21 +46,48 @@ gulp.task('less', function() { }); gulp.task('devServe', ['env:development'], function () { + plugins.nodemon({ script: 'server.js', ext: 'html js', env: { 'NODE_ENV': 'development' } , - ignore: ['node_modules/'], - nodeArgs: ['--debug'] + ignore: [ + 'node_modules/', + 'bower_components/', + 'logs/', + 'packages/*/*/public/assets/lib/', + 'packages/*/*/node_modules/', + '.DS_Store', '**/.DS_Store', + '.bower-*', + '**/.bower-*', + '**/tests' + ], + nodeArgs: ['--debug'], + stdout: false + }).on('readable', function() { + this.stdout.on('data', function(chunk) { + if(/Mean app started/.test(chunk)) { + setTimeout(function() { plugins.livereload.reload(); }, 500); + } + process.stdout.write(chunk); + }); + this.stderr.pipe(process.stderr); }); }); +gulp.task('coffee', function() { + gulp.src(paths.coffee) + .pipe(coffee({bare: true}).on('error', gutil.log)) + .pipe(gulp.dest('./packages')); +}); + gulp.task('watch', function () { - gulp.watch(paths.js, ['jshint']).on('change', plugins.livereload.changed); - gulp.watch(paths.html).on('change', plugins.livereload.changed); + plugins.livereload.listen({interval:500}); + + gulp.watch(paths.coffee,['coffee']); + gulp.watch(paths.js, ['jshint']); gulp.watch(paths.css, ['csslint']).on('change', plugins.livereload.changed); - gulp.watch(paths.less, ['less']).on('change', plugins.livereload.changed); - plugins.livereload.listen({interval: 500}); + gulp.watch(paths.less, ['less']); }); function count(taskName, message) { diff --git a/gulp/e2e.js b/gulp/e2e.js new file mode 100644 index 0000000..bc88fa2 --- /dev/null +++ b/gulp/e2e.js @@ -0,0 +1,37 @@ +var gulp = require('gulp'), + path = require('path'), + request = require('request'), + shell = require('shelljs'); + +gulp.task('e2e.test', ['e2e.startServer', 'e2e.stopServer'], function(done){}); + +gulp.task('e2e.update', function(done){ + //Install/update webdriver requirements for Protractor e2e testing + console.log("Protractor webdriver-manager update") + var webdriverBin = path.join(require.resolve('protractor'), '../..', 'bin/webdriver-manager').normalize(); + shell.exec('node ' + webdriverBin + ' update', function (code, output) { + console.log(output); + if(code != 0) + { + process.exit(code); + } + + done(); + }); +}); + +gulp.task('e2e.startServer', ['e2e.update'], function(done){ + var promise = require('../server.js'); + + promise.then(function(app){done();}); +}); + +gulp.task('e2e.runProtractor', ['e2e.startServer'], function(done){ + shell.exec("node node_modules/protractor/bin/protractor tests/config/e2e/protractor.config.js", function(code, output){ + done(); + }); +}); + +gulp.task('e2e.stopServer', ['e2e.runProtractor'], function(){ + process.exit(); +}) diff --git a/gulp/test.js b/gulp/test.js index 25666a2..48e4cf2 100644 --- a/gulp/test.js +++ b/gulp/test.js @@ -1,30 +1,71 @@ var gulp = require('gulp'), gulpLoadPlugins = require('gulp-load-plugins'), - karma = require('karma').server; + request = require('request'), + karmaServer = require('karma').Server, + _ = require('lodash'), + fs = require('fs'), + assets = require('../config/assets.json'); var plugins = gulpLoadPlugins(); -var defaultTasks = ['env:test', 'karma:unit', 'mochaTest']; -gulp.task('env:test', function () { - process.env.NODE_ENV = 'test'; -}); +process.env.NODE_ENV = 'test'; -gulp.task('karma:unit', function (done) { - karma.start({ - configFile: __dirname + '/../karma.conf.js', - singleRun: true - }, done); -}); -gulp.task('loadTestSchema', function () { - require('../server.js'); - require('../node_modules/meanio/lib/core_modules/module/util').preload('../packages/**/server', 'model'); -}); +gulp.task('test', ['startServer', 'stopServer']); +gulp.task('startServer', function(done) { + var promise = require('../server.js'); -gulp.task('mochaTest', ['loadTestSchema'], function () { - return gulp.src('../packages/**/server/tests/**/*.js', {read: false}) + promise.then(function(app){done();}); +}); +gulp.task('stopServer', ['runKarma'], function() { + process.exit(); +}); +gulp.task('runMocha', ['startServer'], function () { + return gulp.src('./packages/**/server/tests/**/*.spec.js', {read: false}) .pipe(plugins.mocha({ reporter: 'spec' - })); + })) + .on('error', function(error){ + console.error(error); + this.emit('end'); + }); +}); +gulp.task('runKarma', ['runMocha'], function (done) { + request('http://localhost:3001/api/aggregatedassets', function(error, response, body) { + var aggregatedassets = JSON.parse(body); + aggregatedassets = processIncludes(aggregatedassets.footer.js); + + var karma = new karmaServer({ + configFile: __dirname + '/../karma.conf.js', + singleRun: true, + files: aggregatedassets.concat(['packages/**/public/tests/**/*.js', 'packages/**/public/**/*.html']) + }, function () { + done(); + }); + + karma.start(); + }); }); -gulp.task('test', defaultTasks); +function processIncludes(aggregatedAssets) { + for(var i = 0; i < aggregatedAssets.length; ++i) { + aggregatedAssets[i] = aggregatedAssets[i].slice(1); + if(aggregatedAssets[i].indexOf('bower_components/') == -1) { + var index = aggregatedAssets[i].indexOf('/') + 1; + aggregatedAssets[i] = aggregatedAssets[i].substring(0, index) + "public/" + aggregatedAssets[i].substring(index); + } + try { + var stats = fs.lstatSync(__dirname + '/../packages/core/' + aggregatedAssets[i]); + aggregatedAssets[i] = 'packages/core/' + aggregatedAssets[i]; + continue; + } catch(e) { + // Not a file + } + try { + stats = fs.lstatSync(__dirname + '/../packages/custom/' + aggregatedAssets[i]); + aggregatedAssets[i] = 'packages/custom/' + aggregatedAssets[i]; + } catch (e) { + // Not a file + } + } + return aggregatedAssets; +} \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js index 9b94604..ddfa9f1 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -2,9 +2,7 @@ // Karma configuration module.exports = function(config) { - var _ = require('lodash'), - basePath = '.', - assets = require(basePath + '/config/assets.json'); + var basePath = '.'; config.set({ @@ -12,51 +10,64 @@ module.exports = function(config) { basePath: basePath, // frameworks to use - frameworks: ['jasmine'], - - // list of files / patterns to load in the browser - files: _.flatten(_.values(assets.core.js)).concat([ - 'packages/**/public/*.js', - 'packages/**/public/*/*.js' - ]), + frameworks: ['jasmine', 'phantomjs-shim'], // list of files to exclude exclude: [], // test results reporter to use // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage' - reporters: ['progress', 'coverage'], + reporters: ['progress', 'coverage', 'junit'], + + junitReporter: { + outputDir: 'tests/results/public/junit/' + }, // coverage preprocessors: { // source files that you want to generate coverage for // do not include tests or libraries // (these files will be instrumented by Istanbul) - 'packages/**/public/controllers/*.js': ['coverage'], - 'packages/**/public/services/*.js': ['coverage'] + 'packages/**/public/controllers/**/*.js': ['coverage'], + 'packages/**/public/services/**/*.js': ['coverage'], + 'packages/**/public/directives/**/*.js': ['coverage'], + + 'packages/**/public/**/*.html': ['ng-html2js'] }, coverageReporter: { type: 'html', - dir: 'test/coverage/' + dir: 'tests/results/coverage/' + }, + + ngHtml2JsPreprocessor: { + cacheIdFromPath: function(path){ + var cacheId = path; + + //Strip packages/custom/ and public/ to match the pattern of URL that mean.io uses + cacheId = cacheId.replace('packages/custom/', ''); + cacheId = cacheId.replace('public/', ''); + + return cacheId; + } }, // web server port port: 9876, // Look for server on port 3001 (invoked by mocha) - via @brownman proxies: { - '/': 'http://localhost:3000/' + '/': 'http://localhost:3001/' }, - + // enable / disable colors in the output (reporters and logs) colors: true, // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_DEBUG, + logLevel: config.LOG_INFO, // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, + autoWatch: false, // Start these browsers, currently available: // - Chrome diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 60f62ca..e0f24f0 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,11 +1,11 @@ { "name": "mean", - "version": "0.5.22", + "version": "0.5.5", "dependencies": { "assetmanager": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/assetmanager/-/assetmanager-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/assetmanager/-/assetmanager-1.2.1.tgz", + "version": "1.2.2", + "from": "https://registry.npmjs.org/assetmanager/-/assetmanager-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/assetmanager/-/assetmanager-1.2.2.tgz", "dependencies": { "grunt": { "version": "0.4.5", @@ -58,9 +58,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", "dependencies": { "lru-cache": { - "version": "2.6.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "version": "2.6.5", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" }, "sigmund": { "version": "1.0.1", @@ -111,9 +111,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "dependencies": { "lru-cache": { - "version": "2.6.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "version": "2.6.5", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" }, "sigmund": { "version": "1.0.1", @@ -230,19 +230,19 @@ } }, "async": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz" + "version": "1.4.2", + "from": "https://registry.npmjs.org/async/-/async-1.4.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" }, "body-parser": { - "version": "1.12.4", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.12.4.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.12.4.tgz", + "version": "1.13.3", + "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", "dependencies": { "bytes": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz" + "version": "2.1.0", + "from": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" }, "content-type": { "version": "1.0.1", @@ -259,44 +259,61 @@ "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, "iconv-lite": { - "version": "0.4.8", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz" + "version": "0.4.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" }, "on-finished": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "version": "2.3.0", + "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" } } }, "qs": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + "version": "4.0.0", + "from": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" }, "raw-body": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/raw-body/-/raw-body-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.0.2.tgz", + "version": "2.1.2", + "from": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", "dependencies": { - "bytes": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" } } }, "type-is": { - "version": "1.6.2", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.2.tgz", + "version": "1.6.6", + "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", "dependencies": { "media-typer": { "version": "0.3.0", @@ -304,14 +321,14 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", "dependencies": { "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" } } } @@ -319,294 +336,576 @@ } } }, - "compression": { - "version": "1.4.4", - "from": "https://registry.npmjs.org/compression/-/compression-1.4.4.tgz", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.4.4.tgz", + "bower": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/bower/-/bower-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/bower/-/bower-1.4.1.tgz", "dependencies": { - "accepts": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", + "abbrev": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + }, + "archy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" + }, + "bower-config": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/bower-config/-/bower-config-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/bower-config/-/bower-config-0.6.1.tgz", "dependencies": { - "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "graceful-fs": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "mout": { + "version": "0.9.1", + "from": "https://registry.npmjs.org/mout/-/mout-0.9.1.tgz", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.9.1.tgz" + }, + "optimist": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "dependencies": { - "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, - "negotiator": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "osenv": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.0.3.tgz" } } }, - "bytes": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz" + "bower-endpoint-parser": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/bower-endpoint-parser/-/bower-endpoint-parser-0.2.2.tgz" }, - "compressible": { - "version": "2.0.2", - "from": "https://registry.npmjs.org/compressible/-/compressible-2.0.2.tgz", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.2.tgz", + "bower-json": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/bower-json/-/bower-json-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/bower-json/-/bower-json-0.4.0.tgz", "dependencies": { - "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "deep-extend": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" + }, + "graceful-fs": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "intersect": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz" } } }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "on-headers": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz" + "bower-logger": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/bower-logger/-/bower-logger-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/bower-logger/-/bower-logger-0.2.2.tgz" }, - "vary": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz" - } - } - }, - "connect-flash": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz" - }, - "consolidate": { - "version": "0.13.1", - "from": "https://registry.npmjs.org/consolidate/-/consolidate-0.13.1.tgz", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.13.1.tgz", - "dependencies": { - "bluebird": { - "version": "2.9.27", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.27.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.27.tgz" - } - } - }, - "cookie-parser": { - "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "dependencies": { - "cookie": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "bower-registry-client": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/bower-registry-client/-/bower-registry-client-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/bower-registry-client/-/bower-registry-client-0.3.0.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "graceful-fs": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "lru-cache": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz" + }, + "request": { + "version": "2.51.0", + "from": "https://registry.npmjs.org/request/-/request-2.51.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.51.0.tgz", + "dependencies": { + "bl": { + "version": "0.9.4", + "from": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", + "dependencies": { + "readable-stream": { + "version": "1.0.33", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "caseless": { + "version": "0.8.0", + "from": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz" + }, + "forever-agent": { + "version": "0.5.2", + "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" + }, + "form-data": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "dependencies": { + "async": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + }, + "mime-types": { + "version": "2.0.14", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + } + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz" + }, + "node-uuid": { + "version": "1.4.3", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "qs": { + "version": "2.3.3", + "from": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "tough-cookie": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" + }, + "http-signature": { + "version": "0.10.1", + "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "asn1": { + "version": "0.1.11", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + } + }, + "oauth-sign": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz" + }, + "hawk": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", + "dependencies": { + "hoek": { + "version": "0.9.1", + "from": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" + }, + "boom": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" + }, + "cryptiles": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz" + }, + "sntp": { + "version": "0.2.4", + "from": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" + } + } + }, + "aws-sign2": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "combined-stream": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "dependencies": { + "delayed-stream": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" + } + } + } + } + }, + "request-replay": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/request-replay/-/request-replay-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/request-replay/-/request-replay-0.2.0.tgz" + }, + "rimraf": { + "version": "2.2.8", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + } + } }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - } - } - }, - "errorhandler": { - "version": "1.3.6", - "from": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.3.6.tgz", - "dependencies": { - "accepts": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", + "cardinal": { + "version": "0.4.4", + "from": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-0.4.4.tgz", "dependencies": { - "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "redeyed": { + "version": "0.4.4", + "from": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-0.4.4.tgz", "dependencies": { - "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "esprima": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" } } }, - "negotiator": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "ansicolors": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz" } } }, - "escape-html": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz" - } - } - }, - "express": { - "version": "4.12.4", - "from": "https://registry.npmjs.org/express/-/express-4.12.4.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.12.4.tgz", - "dependencies": { - "accepts": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.7.tgz", + "chalk": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", "dependencies": { - "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "ansi-styles": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { - "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, - "negotiator": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "strip-ansi": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, - "content-disposition": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + "chmodr": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.0.tgz" }, - "content-type": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" - }, - "cookie": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "depd": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz" - }, - "etag": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", + "configstore": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-0.3.2.tgz", "dependencies": { - "crc": { - "version": "3.2.1", - "from": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz" + "js-yaml": { + "version": "3.3.1", + "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.3.1.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.3.1.tgz", + "dependencies": { + "argparse": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/argparse/-/argparse-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.2.tgz", + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } + } + }, + "esprima": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/esprima/-/esprima-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.2.0.tgz" + } + } + }, + "object-assign": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz" + }, + "osenv": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", + "dependencies": { + "os-homedir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" + }, + "os-tmpdir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + } + } + }, + "uuid": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz" + }, + "xdg-basedir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-1.0.1.tgz" } } }, - "finalhandler": { - "version": "0.3.6", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.3.6.tgz" - }, - "fresh": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz" - }, - "merge-descriptors": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" - }, - "methods": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz" - }, - "on-finished": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "decompress-zip": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.1.0.tgz", "dependencies": { - "ee-first": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" + "binary": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "dependencies": { + "chainsaw": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "dependencies": { + "traverse": { + "version": "0.3.9", + "from": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" + } + } + }, + "buffers": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" + } + } + }, + "mkpath": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "touch": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "dependencies": { + "nopt": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + } + } } } }, - "parseurl": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz" - }, - "path-to-regexp": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz" - }, - "proxy-addr": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz", + "fstream": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.7.tgz", "dependencies": { - "forwarded": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "ipaddr.js": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz" + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, - "qs": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" - }, - "range-parser": { + "fstream-ignore": { "version": "1.0.2", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz" - }, - "send": { - "version": "0.12.3", - "from": "https://registry.npmjs.org/send/-/send-0.12.3.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.12.3.tgz", + "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", "dependencies": { - "destroy": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, + "minimatch": { + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + } + } + }, + "github": { + "version": "0.2.4", + "from": "https://registry.npmjs.org/github/-/github-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/github/-/github-0.2.4.tgz", + "dependencies": { "mime": { "version": "1.3.4", "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", @@ -614,1256 +913,961 @@ } } }, - "serve-static": { - "version": "1.9.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.9.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.9.3.tgz" - }, - "type-is": { - "version": "1.6.2", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.2.tgz", + "glob": { + "version": "4.5.3", + "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "inflight": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } }, - "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { - "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "brace-expansion": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } } } }, - "vary": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.0.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - } - } - }, - "forever": { - "version": "0.14.1", - "from": "https://registry.npmjs.org/forever/-/forever-0.14.1.tgz", - "resolved": "https://registry.npmjs.org/forever/-/forever-0.14.1.tgz", - "dependencies": { - "colors": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "graceful-fs": { + "version": "3.0.8", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" }, - "cliff": { - "version": "0.1.10", - "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", - "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", + "handlebars": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz", "dependencies": { - "colors": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" - }, - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" - } - } - }, - "flatiron": { - "version": "0.4.3", - "from": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", - "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", - "dependencies": { - "broadway": { - "version": "0.3.6", - "from": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", - "dependencies": { - "cliff": { - "version": "0.1.9", - "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", - "dependencies": { - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" - } - } - }, - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "winston": { - "version": "0.8.0", - "from": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "cycle": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" - }, - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" - }, - "pkginfo": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" - }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - } - } - } - } - }, "optimist": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "version": "0.3.7", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", "dependencies": { "wordwrap": { "version": "0.0.3", "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, - "prompt": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "uglify-js": { + "version": "2.3.6", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", "dependencies": { - "pkginfo": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, - "read": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", + "source-map": { + "version": "0.1.43", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "dependencies": { - "mute-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } - }, - "revalidator": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz" } } - }, - "director": { - "version": "1.2.7", - "from": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", - "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz" } } }, - "forever-monitor": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.5.2.tgz", + "inquirer": { + "version": "0.8.0", + "from": "https://registry.npmjs.org/inquirer/-/inquirer-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.8.0.tgz", "dependencies": { - "broadway": { - "version": "0.3.6", - "from": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "ansi-regex": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" + }, + "chalk": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", "dependencies": { - "cliff": { - "version": "0.1.9", - "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "ansi-styles": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", "dependencies": { - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" } } }, - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "winston": { - "version": "0.8.0", - "from": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "strip-ansi": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "cycle": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" - }, - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" - }, - "pkginfo": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" - }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" } } - } - } - }, - "minimatch": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.6.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "supports-color": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" } } }, - "ps-tree": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", + "cli-color": { + "version": "0.3.3", + "from": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.3.tgz", "dependencies": { - "event-stream": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", + "d": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" + }, + "es5-ext": { + "version": "0.10.7", + "from": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.7.tgz", "dependencies": { - "optimist": { - "version": "0.2.8", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", + "es6-iterator": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz" + }, + "es6-symbol": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz" + } + } + }, + "memoizee": { + "version": "0.3.9", + "from": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.9.tgz", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.9.tgz", + "dependencies": { + "es6-weak-map": { + "version": "0.1.4", + "from": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "es6-iterator": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz" + }, + "es6-symbol": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz" } } + }, + "event-emitter": { + "version": "0.3.3", + "from": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.3.tgz" + }, + "lru-queue": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" + }, + "next-tick": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" + } + } + }, + "timers-ext": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.0.tgz", + "dependencies": { + "next-tick": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz" } } } } }, - "watch": { - "version": "0.13.0", - "from": "https://registry.npmjs.org/watch/-/watch-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.13.0.tgz", + "figures": { + "version": "1.3.5", + "from": "https://registry.npmjs.org/figures/-/figures-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.3.5.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "mute-stream": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz" + }, + "readline2": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", "dependencies": { - "minimist": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz" + "strip-ansi": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz" } } + }, + "rx": { + "version": "2.5.3", + "from": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz", + "resolved": "https://registry.npmjs.org/rx/-/rx-2.5.3.tgz" } } }, - "nconf": { - "version": "0.6.9", - "from": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", + "insight": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/insight/-/insight-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/insight/-/insight-0.5.3.tgz", "dependencies": { "async": { - "version": "0.2.9", - "from": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz" - }, - "ini": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz" + "version": "0.9.2", + "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" }, - "optimist": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "lodash.debounce": { + "version": "3.1.1", + "from": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-3.1.1.tgz", "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "lodash._getnative": { + "version": "3.9.1", + "from": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" + } + } + }, + "object-assign": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz" + }, + "os-name": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + "dependencies": { + "osx-release": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + "dependencies": { + "minimist": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz" + } + } }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "win-release": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/win-release/-/win-release-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.0.0.tgz" + } + } + }, + "tough-cookie": { + "version": "0.12.1", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" } } } } }, - "nssocket": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz", + "is-root": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz" + }, + "junk": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/junk/-/junk-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.2.tgz" + }, + "lockfile": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz" + }, + "lru-cache": { + "version": "2.6.5", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + }, + "mkdirp": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", "dependencies": { - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "lazy": { - "version": "1.0.11", - "from": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz" + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "mout": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/mout/-/mout-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.0.tgz" + }, + "nopt": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz" + }, + "opn": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/opn/-/opn-1.0.2.tgz" + }, + "p-throttler": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/p-throttler/-/p-throttler-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/p-throttler/-/p-throttler-0.1.1.tgz", "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "q": { + "version": "0.9.7", + "from": "https://registry.npmjs.org/q/-/q-0.9.7.tgz", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz" } } }, - "timespan": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz" - }, - "utile": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "promptly": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/promptly/-/promptly-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-0.2.0.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "deep-equal": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz" - }, - "i": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/i/-/i-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.3.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "read": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "mute-stream": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" } } - }, - "ncp": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz" - }, - "rimraf": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", + } + } + }, + "q": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" + }, + "request": { + "version": "2.53.0", + "from": "https://registry.npmjs.org/request/-/request-2.53.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.53.0.tgz", + "dependencies": { + "bl": { + "version": "0.9.4", + "from": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", "dependencies": { - "glob": { - "version": "4.5.3", - "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "readable-stream": { + "version": "1.0.33", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "2.0.8", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } } } } } - } - } - }, - "winston": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, - "cycle": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" + "caseless": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz" }, - "eyes": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + "forever-agent": { + "version": "0.5.2", + "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "form-data": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "dependencies": { + "async": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + } + } }, - "pkginfo": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + "json-stringify-safe": { + "version": "5.0.1", + "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - } - } - } - } - }, - "gridfs-stream": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", - "dependencies": { - "flushwritable": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz" - } - } - }, - "jasmine-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.3.4.tgz" - }, - "jsonwebtoken": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.1.tgz", - "dependencies": { - "jws": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/jws/-/jws-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.0.0.tgz", - "dependencies": { - "jwa": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/jwa/-/jwa-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.0.0.tgz", + "mime-types": { + "version": "2.0.14", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", "dependencies": { - "base64url": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz" + "mime-db": { + "version": "1.12.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.3", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "qs": { + "version": "2.3.3", + "from": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "tough-cookie": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" + }, + "http-signature": { + "version": "0.10.1", + "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + "asn1": { + "version": "0.1.11", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" } } }, - "base64url": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/base64url/-/base64url-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.4.tgz", + "oauth-sign": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz" + }, + "hawk": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", "dependencies": { - "concat-stream": { - "version": "1.4.8", - "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.8.tgz", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.8.tgz", + "hoek": { + "version": "2.14.0", + "from": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz" + }, + "boom": { + "version": "2.8.0", + "from": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz" + }, + "cryptiles": { + "version": "2.0.4", + "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "aws-sign2": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "combined-stream": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "dependencies": { + "delayed-stream": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" + } + } + }, + "isstream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + } + } + }, + "request-progress": { + "version": "0.3.1", + "from": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz", + "dependencies": { + "throttleit": { + "version": "0.0.2", + "from": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz" + } + } + }, + "retry": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/retry/-/retry-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.6.1.tgz" + }, + "rimraf": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", + "dependencies": { + "glob": { + "version": "5.0.14", + "from": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "dependencies": { + "inflight": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "typedarray": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + "balanced-match": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" }, - "isarray": { + "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" } } } } }, - "meow": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", "dependencies": { - "camelcase-keys": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", - "dependencies": { - "camelcase": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" - }, - "map-obj": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - } - } - }, - "indent-string": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.1.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "repeating": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - } - } - }, - "minimist": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz" - }, - "object-assign": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz" + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" } } } } - } - } - }, - "lodash": { - "version": "3.9.3", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz" - }, - "meanio": { - "version": "0.8.72", - "from": "../../../../tmp/npm-7620-e770507b/1433236305722-0.4183654363732785/c7bfbdbb01e9a185671f829dd7c99b1bd275f0f6", - "resolved": "git+https://github.com/linnovate/meanio#c7bfbdbb01e9a185671f829dd7c99b1bd275f0f6", - "dependencies": { - "complex-list": { - "version": "0.1.4", - "from": "complex-list@latest", - "resolved": "https://registry.npmjs.org/complex-list/-/complex-list-0.1.4.tgz" - }, - "dependable-list": { - "version": "0.1.1", - "from": "dependable-list@latest", - "resolved": "https://registry.npmjs.org/dependable-list/-/dependable-list-0.1.1.tgz" }, - "lazy-dependable": { - "version": "0.2.0", - "from": "lazy-dependable@latest", - "resolved": "https://registry.npmjs.org/lazy-dependable/-/lazy-dependable-0.2.0.tgz" + "semver": { + "version": "2.3.2", + "from": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz" }, - "glob": { - "version": "4.5.3", - "from": "glob@>=4.0.3 <5.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "shell-quote": { + "version": "1.4.3", + "from": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.4.3.tgz", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.4.3.tgz", "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } + "jsonify": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "array-filter": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz" }, - "minimatch": { - "version": "2.0.8", - "from": "minimatch@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.0", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "balanced-match@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } + "array-reduce": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz" }, - "once": { - "version": "1.3.2", - "from": "once@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } + "array-map": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz" } } }, - "lodash": { - "version": "2.4.2", - "from": "lodash@>=2.4.1 <3.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - }, - "mean-health": { - "version": "0.1.7", - "from": "mean-health@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/mean-health/-/mean-health-0.1.7.tgz" - }, - "q": { - "version": "1.4.1", - "from": "q@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" + "stringify-object": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/stringify-object/-/stringify-object-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-1.0.1.tgz" }, - "uglify-js": { - "version": "2.4.23", - "from": "uglify-js@>=2.4.14 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.23.tgz", + "tar-fs": { + "version": "1.8.1", + "from": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.8.1.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "source-map@0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "pump": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/pump/-/pump-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.0.tgz", "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "end-of-stream": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz" + }, + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "yargs@>=3.5.4 <3.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "tar-stream": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.2.1.tgz", "dependencies": { - "camelcase": { - "version": "1.1.0", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" - }, - "decamelize": { + "bl": { "version": "1.0.0", - "from": "decamelize@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" + "from": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz" }, - "window-size": { - "version": "0.1.0", - "from": "window-size@0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "end-of-stream": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "dependencies": { + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + } + } }, - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "readable-stream": { + "version": "2.0.2", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + } + } + }, + "xtend": { + "version": "4.0.0", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" } } } } }, - "morgan": { - "version": "1.5.0", - "from": "morgan@1.5.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.5.0.tgz", + "tmp": { + "version": "0.0.24", + "from": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz" + }, + "update-notifier": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.3.2.tgz", "dependencies": { - "basic-auth": { + "is-npm": { "version": "1.0.0", - "from": "basic-auth@1.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz" - }, - "debug": { - "version": "2.1.3", - "from": "debug@>=2.1.0 <2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz", - "dependencies": { - "ms": { - "version": "0.7.0", - "from": "ms@0.7.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz" - } - } + "from": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz" }, - "depd": { + "latest-version": { "version": "1.0.1", - "from": "depd@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" - }, - "on-finished": { - "version": "2.1.1", - "from": "on-finished@2.1.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.0", - "from": "ee-first@1.1.0", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" - } - } - } - } - }, - "querystring": { - "version": "0.2.0", - "from": "querystring@latest", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - }, - "express-jwt": { - "version": "3.0.1", - "from": "express-jwt@latest", - "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-3.0.1.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "express-unless": { - "version": "0.0.0", - "from": "express-unless@0.0.0", - "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-0.0.0.tgz" - } - } - } - } - }, - "mongoose": { - "version": "4.0.4", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.0.4.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.0.4.tgz", - "dependencies": { - "async": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" - }, - "bson": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "dependencies": { - "bson-ext": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.7.tgz", + "from": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", "dependencies": { - "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" - }, - "node-pre-gyp": { - "version": "0.6.4", - "from": "https://github.com/mongodb-js/node-pre-gyp/archive/v0.6.5-appveyor.tar.gz", - "resolved": "https://github.com/mongodb-js/node-pre-gyp/archive/v0.6.5-appveyor.tar.gz", + "package-json": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "nopt": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.2.tgz", + "got": { + "version": "3.3.1", + "from": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", + "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - } - } - }, - "npmlog": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "dependencies": { - "ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" - }, - "are-we-there-yet": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz", + "duplexify": { + "version": "3.4.2", + "from": "https://registry.npmjs.org/duplexify/-/duplexify-3.4.2.tgz", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.4.2.tgz", "dependencies": { - "delegates": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" + "end-of-stream": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "dependencies": { + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + } + } }, "readable-stream": { - "version": "1.1.13", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "version": "2.0.2", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, "isarray": { "version": "0.0.1", "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, + "process-nextick-args": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, "string_decoder": { "version": "0.10.31", "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "gauge": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.0.tgz", - "dependencies": { - "has-unicode": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.0.tgz" - }, - "lodash.pad": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.0.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz" - }, - "lodash._createpadding": { - "version": "3.6.0", - "from": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz" - } - } - } - } - }, - "lodash.padleft": { - "version": "3.1.1", - "from": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz" - }, - "lodash._createpadding": { - "version": "3.6.0", - "from": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz" - } - } - } - } - }, - "lodash.padright": { - "version": "3.1.1", - "from": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz", - "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.0.tgz" - }, - "lodash._createpadding": { - "version": "3.6.0", - "from": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.0.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.0.tgz" - } - } - } - } - } - } - } - } - }, - "rc": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/rc/-/rc-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.0.3.tgz", - "dependencies": { - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - }, - "deep-extend": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" - }, - "strip-json-comments": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz" - }, - "ini": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz" - } - } - }, - "rimraf": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "2.0.8", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "dependencies": { - "wrappy": { + "util-deprecate": { "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" } } } } - } - } - }, - "semver": { - "version": "4.3.5", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.5.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.5.tgz" - }, - "tar": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.1.1.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "fstream": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.6.tgz", - "dependencies": { - "graceful-fs": { - "version": "3.0.7", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" - } - } }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-pack": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", - "dependencies": { - "uid-number": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz" + "infinity-agent": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz" }, - "once": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/once/-/once-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz" + "is-redirect": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz" }, - "debug": { - "version": "0.7.4", - "from": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + "is-stream": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-stream/-/is-stream-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.0.1.tgz" }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + "lowercase-keys": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz" }, - "fstream": { - "version": "0.1.31", - "from": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "nested-error-stacks": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.1.tgz", "dependencies": { - "graceful-fs": { - "version": "3.0.7", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" - }, "inherits": { "version": "2.0.1", "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", @@ -1871,96 +1875,2524 @@ } } }, - "tar": { - "version": "0.1.20", - "from": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } + "object-assign": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" }, - "fstream-ignore": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", + "prepend-http": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.2.tgz" + }, + "read-all-stream": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.0.1.tgz", "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "pinkie-promise": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz", + "dependencies": { + "pinkie": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz" + } + } + }, + "readable-stream": { + "version": "2.0.2", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", "dependencies": { - "lru-cache": { - "version": "2.6.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" }, - "sigmund": { + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" } } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, - "readable-stream": { - "version": "1.0.33", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "timed-out": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz" + } + } + }, + "registry-url": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/registry-url/-/registry-url-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.0.3.tgz", + "dependencies": { + "rc": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/rc/-/rc-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.0.tgz", "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + "minimist": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz" }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "deep-extend": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz" }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "strip-json-comments": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "ini": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" } } - }, - "graceful-fs": { - "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" } } } } } } + }, + "semver-diff": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.0.0.tgz", + "dependencies": { + "semver": { + "version": "4.3.6", + "from": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + } + } + }, + "string-length": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "dependencies": { + "strip-ansi": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + } + } + } + } + }, + "user-home": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + }, + "which": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/which/-/which-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-1.1.1.tgz", + "dependencies": { + "is-absolute": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "dependencies": { + "is-relative": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz" + } + } + } + } + } + } + }, + "compression": { + "version": "1.5.2", + "from": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "dependencies": { + "accepts": { + "version": "1.2.12", + "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "dependencies": { + "mime-types": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "dependencies": { + "mime-db": { + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + } + } + }, + "negotiator": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + } + } + }, + "bytes": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" + }, + "compressible": { + "version": "2.0.5", + "from": "https://registry.npmjs.org/compressible/-/compressible-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.5.tgz", + "dependencies": { + "mime-db": { + "version": "1.17.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz" + } + } + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" + }, + "on-headers": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz" + }, + "vary": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + } + } + }, + "connect-flash": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz" + }, + "consolidate": { + "version": "0.13.1", + "from": "https://registry.npmjs.org/consolidate/-/consolidate-0.13.1.tgz", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.13.1.tgz", + "dependencies": { + "bluebird": { + "version": "2.9.34", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" + } + } + }, + "cookie-parser": { + "version": "1.3.5", + "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "dependencies": { + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + } + } + }, + "errorhandler": { + "version": "1.4.2", + "from": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.2.tgz", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.2.tgz", + "dependencies": { + "accepts": { + "version": "1.2.12", + "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "dependencies": { + "mime-types": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "dependencies": { + "mime-db": { + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + } + } + }, + "negotiator": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + } + } + }, + "escape-html": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + } + } + }, + "express": { + "version": "4.13.3", + "from": "https://registry.npmjs.org/express/-/express-4.13.3.tgz", + "resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz", + "dependencies": { + "accepts": { + "version": "1.2.12", + "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.12.tgz", + "dependencies": { + "mime-types": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "dependencies": { + "mime-db": { + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + } + } + }, + "negotiator": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + } + } + }, + "array-flatten": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + }, + "content-disposition": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + }, + "content-type": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" + }, + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" + }, + "depd": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "escape-html": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + }, + "etag": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + }, + "finalhandler": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "fresh": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + }, + "merge-descriptors": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + }, + "methods": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "parseurl": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz" + }, + "path-to-regexp": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + }, + "proxy-addr": { + "version": "1.0.8", + "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz", + "dependencies": { + "forwarded": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + }, + "ipaddr.js": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz" + } + } + }, + "qs": { + "version": "4.0.0", + "from": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + }, + "range-parser": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz" + }, + "send": { + "version": "0.13.0", + "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "dependencies": { + "destroy": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, + "serve-static": { + "version": "1.10.0", + "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz" + }, + "type-is": { + "version": "1.6.6", + "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "dependencies": { + "mime-db": { + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + } + } + } + } + }, + "utils-merge": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + }, + "vary": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + } + } + }, + "forever": { + "version": "0.15.1", + "from": "https://registry.npmjs.org/forever/-/forever-0.15.1.tgz", + "resolved": "https://registry.npmjs.org/forever/-/forever-0.15.1.tgz", + "dependencies": { + "cliff": { + "version": "0.1.10", + "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", + "dependencies": { + "colors": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" + }, + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + } + } + }, + "clone": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "colors": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + }, + "flatiron": { + "version": "0.4.3", + "from": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", + "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", + "dependencies": { + "broadway": { + "version": "0.3.6", + "from": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "dependencies": { + "cliff": { + "version": "0.1.9", + "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "dependencies": { + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + } + } + }, + "eventemitter2": { + "version": "0.4.14", + "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + }, + "winston": { + "version": "0.8.0", + "from": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "cycle": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" + }, + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + }, + "pkginfo": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + } + } + } + } + }, + "optimist": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + }, + "prompt": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", + "dependencies": { + "pkginfo": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + }, + "read": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz", + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" + } + } + }, + "revalidator": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz" + } + } + }, + "director": { + "version": "1.2.7", + "from": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz" + } + } + }, + "forever-monitor": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-1.6.0.tgz", + "dependencies": { + "broadway": { + "version": "0.3.6", + "from": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", + "dependencies": { + "cliff": { + "version": "0.1.9", + "from": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", + "dependencies": { + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + } + } + }, + "eventemitter2": { + "version": "0.4.14", + "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + }, + "winston": { + "version": "0.8.0", + "from": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "cycle": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" + }, + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + }, + "pkginfo": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + } + } + } + } + }, + "chokidar": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", + "dependencies": { + "anymatch": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "dependencies": { + "micromatch": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", + "dependencies": { + "arr-diff": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.0.1.tgz", + "dependencies": { + "array-slice": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" + } + } + }, + "array-unique": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + }, + "braces": { + "version": "1.8.0", + "from": "https://registry.npmjs.org/braces/-/braces-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.0.tgz", + "dependencies": { + "expand-range": { + "version": "1.8.1", + "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", + "dependencies": { + "fill-range": { + "version": "2.2.2", + "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", + "dependencies": { + "is-number": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz" + }, + "isobject": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" + }, + "randomatic": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" + }, + "repeat-string": { + "version": "1.5.2", + "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" + } + } + } + } + }, + "preserve": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + }, + "repeat-element": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" + } + } + }, + "expand-brackets": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.3.tgz", + "dependencies": { + "is-posix-bracket": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.0.tgz" + } + } + }, + "extglob": { + "version": "0.3.1", + "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", + "dependencies": { + "ansi-green": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "dependencies": { + "ansi-wrap": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" + } + } + }, + "is-extglob": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "success-symbol": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" + } + } + }, + "filename-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" + }, + "kind-of": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" + }, + "object.omit": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", + "dependencies": { + "for-own": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", + "dependencies": { + "for-in": { + "version": "0.1.4", + "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" + } + } + }, + "isobject": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" + } + } + }, + "parse-glob": { + "version": "3.0.2", + "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", + "dependencies": { + "glob-base": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" + }, + "is-dotfile": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" + }, + "is-extglob": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + } + }, + "regex-cache": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", + "dependencies": { + "is-equal-shallow": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + }, + "is-primitive": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + } + } + } + } + } + } + }, + "arrify": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" + }, + "async-each": { + "version": "0.1.6", + "from": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" + }, + "glob-parent": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" + }, + "is-binary-path": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "dependencies": { + "binary-extensions": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" + } + } + }, + "is-glob": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" + }, + "readdirp": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.6.5", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "readable-stream": { + "version": "1.0.33", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + } + } + }, + "minimatch": { + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "ps-tree": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-0.0.3.tgz", + "dependencies": { + "event-stream": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-0.5.3.tgz", + "dependencies": { + "optimist": { + "version": "0.2.8", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + } + } + } + } + } + } + } + }, + "nconf": { + "version": "0.6.9", + "from": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", + "dependencies": { + "async": { + "version": "0.2.9", + "from": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz" + }, + "ini": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + }, + "optimist": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + } + } + }, + "nssocket": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.5.3.tgz", + "dependencies": { + "eventemitter2": { + "version": "0.4.14", + "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + }, + "lazy": { + "version": "1.0.11", + "from": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz" + } + } + }, + "object-assign": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" + }, + "optimist": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + }, + "prettyjson": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.1.3.tgz", + "dependencies": { + "colors": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" + }, + "minimist": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz" + } + } + }, + "shush": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/shush/-/shush-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/shush/-/shush-1.0.0.tgz", + "dependencies": { + "strip-json-comments": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz" + }, + "caller": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/caller/-/caller-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/caller/-/caller-0.0.1.tgz", + "dependencies": { + "tape": { + "version": "2.3.3", + "from": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz", + "dependencies": { + "jsonify": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + }, + "deep-equal": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz" + }, + "defined": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz" + }, + "resumer": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + } + } + }, + "timespan": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz" + }, + "utile": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "deep-equal": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz" + }, + "i": { + "version": "0.3.3", + "from": "https://registry.npmjs.org/i/-/i-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.3.tgz" + }, + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ncp": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz" + }, + "rimraf": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", + "dependencies": { + "glob": { + "version": "5.0.14", + "from": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "dependencies": { + "inflight": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + } + } + } + } + } + } + }, + "winston": { + "version": "0.8.3", + "from": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "cycle": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" + }, + "eyes": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + }, + "isstream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "pkginfo": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + } + } + } + } + }, + "gridfs-stream": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz", + "dependencies": { + "flushwritable": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz" + } + } + }, + "jasmine-core": { + "version": "2.3.4", + "from": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.3.4.tgz", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.3.4.tgz" + }, + "jsonwebtoken": { + "version": "5.0.4", + "from": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.4.tgz", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.4.tgz", + "dependencies": { + "jws": { + "version": "3.1.0", + "from": "https://registry.npmjs.org/jws/-/jws-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.0.tgz", + "dependencies": { + "base64url": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/base64url/-/base64url-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.4.tgz", + "dependencies": { + "concat-stream": { + "version": "1.4.10", + "from": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "typedarray": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + } + } + } + }, + "meow": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", + "dependencies": { + "camelcase-keys": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "map-obj": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + } + } + }, + "indent-string": { + "version": "1.2.2", + "from": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + }, + "repeating": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "dependencies": { + "is-finite": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + } + } + } + } + }, + "minimist": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz" + }, + "object-assign": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz" + } + } + } + } + }, + "jwa": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/jwa/-/jwa-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.0.tgz", + "dependencies": { + "base64url": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + }, + "ecdsa-sig-formatter": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.2.tgz", + "dependencies": { + "asn1.js": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/asn1.js/-/asn1.js-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-2.2.0.tgz", + "dependencies": { + "bn.js": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/bn.js/-/bn.js-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.2.0.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimalistic-assert": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + } + }, + "base64-url": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz" + } + } + } + } + } + } + } + } + }, + "lodash": { + "version": "3.10.1", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "meanio": { + "version": "0.8.83", + "dependencies": { + "complex-list": { + "version": "0.1.4", + "from": "complex-list@latest", + "resolved": "https://registry.npmjs.org/complex-list/-/complex-list-0.1.4.tgz" + }, + "dependable-list": { + "version": "0.1.1", + "from": "dependable-list@latest", + "resolved": "https://registry.npmjs.org/dependable-list/-/dependable-list-0.1.1.tgz" + }, + "express-jwt": { + "version": "3.0.1", + "from": "express-jwt@latest", + "resolved": "https://registry.npmjs.org/express-jwt/-/express-jwt-3.0.1.tgz", + "dependencies": { + "async": { + "version": "0.9.2", + "from": "async@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + }, + "express-unless": { + "version": "0.0.0", + "from": "express-unless@0.0.0", + "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-0.0.0.tgz" + }, + "jsonwebtoken": { + "version": "5.0.5", + "from": "jsonwebtoken@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-5.0.5.tgz", + "dependencies": { + "jws": { + "version": "3.1.0", + "from": "jws@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.0.tgz", + "dependencies": { + "base64url": { + "version": "1.0.4", + "from": "base64url@>=1.0.4 <1.1.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.4.tgz", + "dependencies": { + "concat-stream": { + "version": "1.4.10", + "from": "concat-stream@>=1.4.7 <1.5.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "typedarray": { + "version": "0.0.6", + "from": "typedarray@>=0.0.5 <0.1.0", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "readable-stream@>=1.1.9 <1.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + } + } + } + }, + "meow": { + "version": "2.0.0", + "from": "meow@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", + "dependencies": { + "camelcase-keys": { + "version": "1.0.0", + "from": "camelcase-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "map-obj": { + "version": "1.0.1", + "from": "map-obj@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + } + } + }, + "indent-string": { + "version": "1.2.2", + "from": "indent-string@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "from": "get-stdin@>=4.0.1 <5.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + }, + "repeating": { + "version": "1.1.3", + "from": "repeating@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "dependencies": { + "is-finite": { + "version": "1.0.1", + "from": "is-finite@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + } + } + } + } + }, + "minimist": { + "version": "1.2.0", + "from": "minimist@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + }, + "object-assign": { + "version": "1.0.0", + "from": "object-assign@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz" + } + } + } + } + }, + "jwa": { + "version": "1.1.0", + "from": "jwa@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.0.tgz", + "dependencies": { + "base64url": { + "version": "0.0.6", + "from": "base64url@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "from": "buffer-equal-constant-time@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + }, + "ecdsa-sig-formatter": { + "version": "1.0.2", + "from": "ecdsa-sig-formatter@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.2.tgz", + "dependencies": { + "asn1.js": { + "version": "2.2.0", + "from": "asn1.js@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-2.2.0.tgz", + "dependencies": { + "bn.js": { + "version": "2.2.0", + "from": "bn.js@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.2.0.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimalistic-assert": { + "version": "1.0.0", + "from": "minimalistic-assert@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + } + }, + "base64-url": { + "version": "1.2.1", + "from": "base64-url@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz" + } + } + } + } + } + } + } + } + } + } + }, + "glob": { + "version": "4.5.3", + "from": "glob@>=4.0.3 <5.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "dependencies": { + "inflight": { + "version": "1.0.4", + "from": "inflight@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "minimatch@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "brace-expansion@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "balanced-match@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "concat-map@0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.2", + "from": "once@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + } + } + }, + "lazy-dependable": { + "version": "0.2.0", + "from": "lazy-dependable@latest", + "resolved": "https://registry.npmjs.org/lazy-dependable/-/lazy-dependable-0.2.0.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "lodash@>=2.4.1 <3.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "md5": { + "version": "2.0.0", + "from": "md5@latest", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.0.0.tgz", + "dependencies": { + "charenc": { + "version": "0.0.1", + "from": "charenc@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.1.tgz" + }, + "crypt": { + "version": "0.0.1", + "from": "crypt@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.1.tgz" + }, + "is-buffer": { + "version": "1.0.2", + "from": "is-buffer@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.0.2.tgz" + } + } + }, + "mean-health": { + "version": "0.1.7", + "from": "mean-health@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/mean-health/-/mean-health-0.1.7.tgz" + }, + "morgan": { + "version": "1.5.0", + "from": "morgan@1.5.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.5.0.tgz", + "dependencies": { + "basic-auth": { + "version": "1.0.0", + "from": "basic-auth@1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz" + }, + "debug": { + "version": "2.1.3", + "from": "debug@>=2.1.0 <2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz", + "dependencies": { + "ms": { + "version": "0.7.0", + "from": "ms@0.7.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz" + } + } + }, + "depd": { + "version": "1.0.1", + "from": "depd@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "on-finished": { + "version": "2.1.1", + "from": "on-finished@2.1.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.0", + "from": "ee-first@1.1.0", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" + } + } + } + } + }, + "q": { + "version": "1.4.1", + "from": "q@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@latest", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + }, + "request": { + "version": "2.61.0", + "from": "request@>=2.47.0 <3.0.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.61.0.tgz", + "dependencies": { + "bl": { + "version": "1.0.0", + "from": "bl@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.2", + "from": "process-nextick-args@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "from": "caseless@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "extend": { + "version": "3.0.0", + "from": "extend@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "forever-agent@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.0-rc3", + "from": "form-data@>=1.0.0-rc1 <1.1.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", + "dependencies": { + "async": { + "version": "1.4.2", + "from": "async@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" + } + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@>=5.0.0 <5.1.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.5", + "from": "mime-types@>=2.1.2 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz", + "dependencies": { + "mime-db": { + "version": "1.17.0", + "from": "mime-db@>=1.17.0 <1.18.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.3", + "from": "node-uuid@>=1.4.0 <1.5.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "qs": { + "version": "4.0.0", + "from": "qs@>=4.0.0 <4.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "tunnel-agent@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "tough-cookie": { + "version": "2.0.0", + "from": "tough-cookie@>=0.12.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" + }, + "http-signature": { + "version": "0.11.0", + "from": "http-signature@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "asn1": { + "version": "0.1.11", + "from": "asn1@0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "ctype@0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + } + }, + "oauth-sign": { + "version": "0.8.0", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" + }, + "hawk": { + "version": "3.1.0", + "from": "hawk@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", + "dependencies": { + "hoek": { + "version": "2.14.0", + "from": "hoek@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz" + }, + "boom": { + "version": "2.8.0", + "from": "boom@>=2.8.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz" + }, + "cryptiles": { + "version": "2.0.4", + "from": "cryptiles@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "sntp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "aws-sign2": { + "version": "0.5.0", + "from": "aws-sign2@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "stringstream@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "har-validator": { + "version": "1.8.0", + "from": "har-validator@>=1.6.1 <2.0.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "dependencies": { + "bluebird": { + "version": "2.9.34", + "from": "bluebird@>=2.9.30 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.8.1", + "from": "commander@>=2.8.1 <3.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>=1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "from": "is-my-json-valid@>=2.12.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "generate-function@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "is-property": { + "version": "1.0.2", + "from": "is-property@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "jsonpointer@2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "xtend": { + "version": "4.0.0", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" + } + } + } + } + } + } + }, + "rtlcss": { + "version": "1.6.3", + "from": "rtlcss@>=1.6.1 <2.0.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-1.6.3.tgz", + "dependencies": { + "postcss": { + "version": "5.0.2", + "from": "postcss@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.2.tgz", + "dependencies": { + "supports-color": { + "version": "3.1.0", + "from": "supports-color@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.0.tgz", + "dependencies": { + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + } + }, + "source-map": { + "version": "0.4.4", + "from": "source-map@>=0.4.4 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "js-base64": { + "version": "2.1.9", + "from": "js-base64@>=2.1.9 <3.0.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz" + } + } + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "findup": { + "version": "0.1.5", + "from": "findup@0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "dependencies": { + "colors": { + "version": "0.6.2", + "from": "colors@>=0.6.0-1 <0.7.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + }, + "commander": { + "version": "2.1.0", + "from": "commander@>=2.1.0 <2.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + } + } + }, + "strip-json-comments": { + "version": "1.0.4", + "from": "strip-json-comments@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + }, + "mkdirp": { + "version": "0.5.0", + "from": "mkdirp@0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + } + } + }, + "shelljs": { + "version": "0.5.3", + "from": "shelljs@latest", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" + }, + "stacksight": { + "version": "1.0.20", + "from": "stacksight@latest", + "resolved": "https://registry.npmjs.org/stacksight/-/stacksight-1.0.20.tgz", + "dependencies": { + "morgan": { + "version": "1.6.1", + "from": "morgan@latest", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "dependencies": { + "basic-auth": { + "version": "1.0.3", + "from": "basic-auth@>=1.0.3 <1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.0.1", + "from": "depd@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "on-headers": { + "version": "1.0.0", + "from": "on-headers@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz" + } + } + }, + "shorthash": { + "version": "0.0.2", + "from": "shorthash@latest", + "resolved": "https://registry.npmjs.org/shorthash/-/shorthash-0.0.2.tgz" + }, + "git-repo-info": { + "version": "1.1.2", + "from": "git-repo-info@latest", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-1.1.2.tgz" + } + } + }, + "swig": { + "version": "1.4.2", + "from": "swig@>=1.3.2 <2.0.0", + "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", + "dependencies": { + "optimist": { + "version": "0.6.1", + "from": "optimist@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "wordwrap@>=0.0.2 <0.1.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "minimist@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + } + } + }, + "uglify-js": { + "version": "2.4.24", + "from": "uglify-js@>=2.4.14 <3.0.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "async@>=0.2.6 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "source-map@0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "yargs@>=3.5.4 <3.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.0.0", + "from": "decamelize@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" + }, + "window-size": { + "version": "0.1.0", + "from": "window-size@0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + }, + "wordwrap": { + "version": "0.0.2", + "from": "wordwrap@0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } } } + } + } + }, + "mongoose": { + "version": "4.1.3", + "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.3.tgz", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.3.tgz", + "dependencies": { + "async": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + }, + "bson": { + "version": "0.4.11", + "from": "https://registry.npmjs.org/bson/-/bson-0.4.11.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.11.tgz" }, "hooks-fixed": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.0.1.tgz" + "version": "1.1.0", + "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" }, "kareem": { "version": "1.0.1", @@ -1968,14 +4400,14 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" }, "mongodb": { - "version": "2.0.33", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.33.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.33.tgz", + "version": "2.0.40", + "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.40.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.40.tgz", "dependencies": { "mongodb-core": { - "version": "1.1.32", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.1.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.1.32.tgz", + "version": "1.2.9", + "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.9.tgz", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.9.tgz", "dependencies": { "kerberos": { "version": "0.0.12", @@ -2017,6 +4449,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } + }, + "es6-promise": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.1.1.tgz" } } }, @@ -2031,19 +4468,26 @@ "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" }, "mquery": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.5.1.tgz", + "version": "1.6.1", + "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", "dependencies": { "bluebird": { - "version": "2.9.9", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.9.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.9.tgz" + "version": "2.9.26", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" }, "debug": { - "version": "0.7.4", - "from": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } } } }, @@ -2070,14 +4514,14 @@ } }, "morgan": { - "version": "1.5.3", - "from": "https://registry.npmjs.org/morgan/-/morgan-1.5.3.tgz", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.5.3.tgz", + "version": "1.6.1", + "from": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", "dependencies": { "basic-auth": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.1.tgz" + "version": "1.0.3", + "from": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.3.tgz" }, "debug": { "version": "2.2.0", @@ -2090,16 +4534,21 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" }, "on-finished": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "version": "2.3.0", + "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" } } + }, + "on-headers": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.0.tgz" } } }, @@ -2109,9 +4558,9 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" }, "nodemailer": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-1.3.4.tgz", + "version": "1.4.0", + "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-1.4.0.tgz", "dependencies": { "buildmail": { "version": "1.2.4", @@ -2221,9 +4670,9 @@ "resolved": "https://registry.npmjs.org/libmime/-/libmime-1.0.0.tgz", "dependencies": { "iconv-lite": { - "version": "0.4.10", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.10.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.10.tgz" + "version": "0.4.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" }, "libbase64": { "version": "0.1.0", @@ -2243,9 +4692,9 @@ "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-1.0.2.tgz", "dependencies": { "smtp-connection": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.2.0.tgz" + "version": "1.3.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.3.1.tgz" } } }, @@ -2260,39 +4709,34 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" }, "nodemailer-wellknown": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.5.tgz" + "version": "0.1.7", + "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" }, "smtp-connection": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.2.0.tgz" + "version": "1.3.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-1.3.1.tgz" } } } } }, "npm": { - "version": "2.11.0", - "from": "https://registry.npmjs.org/npm/-/npm-2.11.0.tgz", - "resolved": "https://registry.npmjs.org/npm/-/npm-2.11.0.tgz", + "version": "2.13.5", + "from": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", + "resolved": "https://registry.npmjs.org/npm/-/npm-2.13.5.tgz", "dependencies": { "abbrev": { - "version": "1.0.6", - "from": "abbrev@1.0.6", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.6.tgz" + "version": "1.0.7", + "from": "abbrev@>=1.0.7 <1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" }, "ansi": { "version": "0.3.0", "from": "ansi@latest", "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" }, - "ansi-regex": { - "version": "1.1.1", - "from": "ansi-regex@>=1.1.1 <1.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" - }, "ansicolors": { "version": "0.3.2", "from": "ansicolors@latest" @@ -2322,9 +4766,9 @@ "resolved": "https://registry.npmjs.org/char-spinner/-/char-spinner-1.0.1.tgz" }, "chmodr": { - "version": "0.1.1", - "from": "chmodr@0.1.1", - "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.1.tgz" + "version": "1.0.1", + "from": "chmodr@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.1.tgz" }, "chownr": { "version": "0.0.2", @@ -2334,13 +4778,32 @@ "cmd-shim": { "version": "2.0.1", "from": "cmd-shim@>=2.0.1-0 <3.0.0-0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.1.tgz" + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.1.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>3.0.1 <4.0.0-0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + } + } }, "columnify": { "version": "1.5.1", "from": "columnify@>=1.5.1 <1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz", "dependencies": { + "strip-ansi": { + "version": "2.0.1", + "from": "strip-ansi@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "from": "ansi-regex@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" + } + } + }, "wcwidth": { "version": "1.0.0", "from": "wcwidth@>=1.0.0 <2.0.0", @@ -2363,26 +4826,25 @@ } }, "config-chain": { - "version": "1.1.8", - "from": "config-chain@^1.1.8", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.8.tgz", + "version": "1.1.9", + "from": "config-chain@>=1.1.9 <1.2.0", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.9.tgz", "dependencies": { "proto-list": { - "version": "1.2.3", - "from": "proto-list@~1.2.1", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.3.tgz" + "version": "1.2.4", + "from": "proto-list@>=1.2.1 <1.3.0", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" } } }, "dezalgo": { - "version": "1.0.2", - "from": "dezalgo@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.2.tgz", + "version": "1.0.3", + "from": "dezalgo@>=1.0.3 <1.1.0", "dependencies": { "asap": { - "version": "1.0.0", - "from": "asap@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz" + "version": "2.0.3", + "from": "asap@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz" } } }, @@ -2394,21 +4856,41 @@ "fs-vacuum": { "version": "1.2.6", "from": "fs-vacuum@>=1.2.5 <1.3.0", - "resolved": "https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz" + "resolved": "https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + } + } }, "fs-write-stream-atomic": { "version": "1.0.3", "from": "fs-write-stream-atomic@1.0.3", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz" + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + } + } }, "fstream": { - "version": "1.0.6", - "from": "fstream@>=1.0.6 <1.1.0", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.6.tgz" + "version": "1.0.7", + "from": "fstream@>=1.0.7 <1.1.0", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + } + } }, "fstream-npm": { - "version": "1.0.2", - "from": "fstream-npm@>=1.0.2 <1.1.0", + "version": "1.0.4", + "from": "fstream-npm@>=1.0.3 <1.1.0", "dependencies": { "fstream-ignore": { "version": "1.0.2", @@ -2427,9 +4909,9 @@ "from": "github-url-from-username-repo@>=1.0.2-0 <2.0.0-0" }, "glob": { - "version": "5.0.7", - "from": "glob@>=5.0.6 <5.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.7.tgz", + "version": "5.0.14", + "from": "glob@latest", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", "dependencies": { "path-is-absolute": { "version": "1.0.0", @@ -2439,9 +4921,8 @@ } }, "graceful-fs": { - "version": "3.0.7", - "from": "graceful-fs@>=3.0.7 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" + "version": "4.1.2", + "from": "graceful-fs@>=3.0.8 <3.1.0" }, "hosted-git-info": { "version": "2.1.4", @@ -2458,31 +4939,18 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "ini": { - "version": "1.3.3", - "from": "ini@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz" + "version": "1.3.4", + "from": "ini@latest", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" }, "init-package-json": { - "version": "1.6.0", - "from": "init-package-json@1.6.0", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.6.0.tgz", + "version": "1.7.1", + "from": "init-package-json@>=1.7.1 <1.8.0", "dependencies": { "promzard": { "version": "0.3.0", "from": "promzard@>=0.3.0 <0.4.0", "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" - }, - "validate-npm-package-license": { - "version": "1.0.0-prerelease-2", - "from": "validate-npm-package-license@1.0.0-prerelease-2", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-1.0.0-prerelease-2.tgz", - "dependencies": { - "spdx-correct": { - "version": "1.0.0-prerelease-3", - "from": "spdx-correct@1.0.0-prerelease-3", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.0-prerelease-3.tgz" - } - } } } }, @@ -2492,14 +4960,14 @@ "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz" }, "lru-cache": { - "version": "2.6.4", - "from": "lru-cache@>=2.6.4 <2.7.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "version": "2.6.5", + "from": "lru-cache@2.6.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" }, "minimatch": { - "version": "2.0.8", - "from": "minimatch@>=2.0.8 <2.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", + "version": "2.0.10", + "from": "minimatch@2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { "brace-expansion": { "version": "1.1.0", @@ -2514,7 +4982,7 @@ "concat-map": { "version": "0.0.1", "from": "concat-map@0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "resolved": "https://registrytwo.npmjs.com/concat-map/-/concat-map-0.0.1.tgz" } } } @@ -2533,9 +5001,9 @@ } }, "node-gyp": { - "version": "1.0.3", - "from": "node-gyp@>=1.0.3 <1.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-1.0.3.tgz", + "version": "2.0.2", + "from": "node-gyp@latest", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-2.0.2.tgz", "dependencies": { "glob": { "version": "4.5.3", @@ -2543,9 +5011,9 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", "dependencies": { "minimatch": { - "version": "2.0.4", + "version": "2.0.8", "from": "minimatch@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", "dependencies": { "brace-expansion": { "version": "1.1.0", @@ -2568,18 +5036,54 @@ } } }, + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + }, "minimatch": { "version": "1.0.0", "from": "minimatch@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "dependencies": { "sigmund": { - "version": "1.0.0", + "version": "1.0.1", "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "path-array": { + "version": "1.0.0", + "from": "path-array@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz", + "dependencies": { + "array-index": { + "version": "0.1.1", + "from": "array-index@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "debug@*", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + } + } } } }, + "semver": { + "version": "4.3.6", + "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + }, "tar": { "version": "1.0.3", "from": "tar@>=1.0.0 <2.0.0", @@ -2588,40 +5092,39 @@ } }, "nopt": { - "version": "3.0.2", - "from": "nopt@>=3.0.2 <3.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.2.tgz" + "version": "3.0.3", + "from": "nopt@>=3.0.3 <3.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz" }, "normalize-git-url": { - "version": "1.0.1", - "from": "normalize-git-url@>=1.0.1 <1.1.0" + "version": "3.0.1", + "from": "normalize-git-url@latest" }, "normalize-package-data": { - "version": "2.2.0", - "from": "normalize-package-data@2.2.0" + "version": "2.3.1", + "from": "normalize-package-data@>=2.3.1 <2.4.0" }, "npm-cache-filename": { - "version": "1.0.1", - "from": "npm-cache-filename@latest", - "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.1.tgz" + "version": "1.0.2", + "from": "npm-cache-filename@1.0.2", + "resolved": "https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz" }, "npm-install-checks": { - "version": "1.0.5", - "from": "npm-install-checks@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-1.0.5.tgz" + "version": "1.0.6", + "from": "npm-install-checks@>=1.0.6 <1.1.0" }, "npm-package-arg": { - "version": "4.0.1", - "from": "npm-package-arg@>=4.0.0 <4.1.0" + "version": "4.0.2", + "from": "npm-package-arg@>=4.0.2 <4.1.0" }, "npm-registry-client": { - "version": "6.4.0", - "from": "npm-registry-client@6.4.0", + "version": "6.5.1", + "from": "npm-registry-client@>=6.5.1 <6.6.0", "dependencies": { "concat-stream": { - "version": "1.4.8", + "version": "1.5.0", "from": "concat-stream@>=1.4.6 <2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.8.tgz", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", "dependencies": { "typedarray": { "version": "0.0.6", @@ -2629,9 +5132,9 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" }, "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.9 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "version": "2.0.2", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", @@ -2643,14 +5146,29 @@ "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, + "process-nextick-args": { + "version": "1.0.2", + "from": "process-nextick-args@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, "string_decoder": { "version": "0.10.31", "from": "string_decoder@>=0.10.0 <0.11.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" } } } } + }, + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, @@ -2673,28 +5191,6 @@ "version": "0.1.0", "from": "delegates@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.13 <2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } } } }, @@ -2755,9 +5251,21 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.1.tgz" }, "osenv": { - "version": "0.1.1", - "from": "osenv@0.1.1", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.1.tgz" + "version": "0.1.3", + "from": "osenv@0.1.3", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", + "dependencies": { + "os-homedir": { + "version": "1.0.0", + "from": "os-homedir@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.0.tgz" + }, + "os-tmpdir": { + "version": "1.0.1", + "from": "os-tmpdir@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + } + } }, "path-is-inside": { "version": "1.0.1", @@ -2777,8 +5285,8 @@ } }, "read-installed": { - "version": "4.0.0", - "from": "read-installed@>=4.0.0 <4.1.0", + "version": "4.0.2", + "from": "read-installed@>=4.0.2 <4.1.0", "dependencies": { "debuglog": { "version": "1.0.1", @@ -2794,6 +5302,11 @@ "version": "1.0.1", "from": "util-extend@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.1.tgz" + }, + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, @@ -2812,13 +5325,18 @@ "resolved": "https://registry.npmjs.org/jju/-/jju-1.2.0.tgz" } } + }, + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.33 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "version": "1.1.13", + "from": "readable-stream@>=1.1.13 <1.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", @@ -2843,19 +5361,58 @@ "resolved": "https://registry.npmjs.org/realize-package-specifier/-/realize-package-specifier-3.0.1.tgz" }, "request": { - "version": "2.55.0", - "from": "request@>=2.55.0 <2.56.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.55.0.tgz", + "version": "2.60.0", + "from": "request@2.60.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.60.0.tgz", "dependencies": { "bl": { - "version": "0.9.4", - "from": "bl@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz" + "version": "1.0.0", + "from": "bl@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.2", + "from": "process-nextick-args@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + } + } + } + } }, "caseless": { - "version": "0.9.0", - "from": "caseless@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz" + "version": "0.11.0", + "from": "caseless@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "extend": { + "version": "3.0.0", + "from": "extend@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" }, "forever-agent": { "version": "0.6.1", @@ -2863,31 +5420,31 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" }, "form-data": { - "version": "0.2.0", - "from": "form-data@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "version": "1.0.0-rc2", + "from": "form-data@>=1.0.0-rc1 <1.1.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc2.tgz", "dependencies": { "async": { - "version": "0.9.0", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + "version": "1.4.0", + "from": "async@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz" } } }, "json-stringify-safe": { - "version": "5.0.0", + "version": "5.0.1", "from": "json-stringify-safe@>=5.0.0 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" }, "mime-types": { - "version": "2.0.10", - "from": "mime-types@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.10.tgz", + "version": "2.1.3", + "from": "mime-types@>=2.1.2 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz", "dependencies": { "mime-db": { - "version": "1.8.0", - "from": "mime-db@>=1.8.0 <1.9.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.8.0.tgz" + "version": "1.15.0", + "from": "mime-db@>=1.15.0 <1.16.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz" } } }, @@ -2897,31 +5454,24 @@ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" }, "qs": { - "version": "2.4.1", - "from": "qs@>=2.4.0 <2.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.1.tgz" + "version": "4.0.0", + "from": "qs@>=4.0.0 <4.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" }, "tunnel-agent": { - "version": "0.4.0", + "version": "0.4.1", "from": "tunnel-agent@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz" + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" }, "tough-cookie": { - "version": "0.12.1", + "version": "2.0.0", "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz", - "dependencies": { - "punycode": { - "version": "1.3.2", - "from": "punycode@>=0.2.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - } - } + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" }, "http-signature": { - "version": "0.10.1", - "from": "http-signature@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "version": "0.11.0", + "from": "http-signature@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz", "dependencies": { "assert-plus": { "version": "0.1.5", @@ -2941,24 +5491,24 @@ } }, "oauth-sign": { - "version": "0.6.0", - "from": "oauth-sign@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz" + "version": "0.8.0", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" }, "hawk": { - "version": "2.3.1", - "from": "hawk@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "version": "3.1.0", + "from": "hawk@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", "dependencies": { "hoek": { - "version": "2.12.0", + "version": "2.14.0", "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.12.0.tgz" + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz" }, "boom": { - "version": "2.7.0", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.7.0.tgz" + "version": "2.8.0", + "from": "boom@>=2.8.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz" }, "cryptiles": { "version": "2.0.4", @@ -2983,14 +5533,14 @@ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" }, "combined-stream": { - "version": "0.0.7", - "from": "combined-stream@>=0.0.5 <0.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "version": "1.0.5", + "from": "combined-stream@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "dependencies": { "delayed-stream": { - "version": "0.0.5", - "from": "delayed-stream@0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" } } }, @@ -3000,24 +5550,24 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" }, "har-validator": { - "version": "1.6.1", - "from": "har-validator@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.6.1.tgz", + "version": "1.8.0", + "from": "har-validator@>=1.6.1 <2.0.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", "dependencies": { "bluebird": { - "version": "2.9.24", - "from": "bluebird@>=2.9.21 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.24.tgz" + "version": "2.9.34", + "from": "bluebird@>=2.9.30 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" }, "chalk": { - "version": "1.0.0", + "version": "1.1.0", "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", "dependencies": { "ansi-styles": { - "version": "2.0.1", - "from": "ansi-styles@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz" + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" }, "escape-string-regexp": { "version": "1.0.3", @@ -3025,28 +5575,40 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" }, "has-ansi": { - "version": "1.0.3", - "from": "has-ansi@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "supports-color": { - "version": "1.3.1", - "from": "supports-color@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz" + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, "commander": { - "version": "2.7.1", - "from": "commander@>=2.7.1 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.7.1.tgz", + "version": "2.8.1", + "from": "commander@>=2.8.1 <3.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "dependencies": { "graceful-readlink": { "version": "1.0.1", @@ -3056,9 +5618,9 @@ } }, "is-my-json-valid": { - "version": "2.10.1", - "from": "is-my-json-valid@>=2.10.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.10.1.tgz", + "version": "2.12.0", + "from": "is-my-json-valid@>=2.12.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz", "dependencies": { "generate-function": { "version": "2.0.0", @@ -3066,9 +5628,9 @@ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" }, "generate-object-property": { - "version": "1.1.1", + "version": "1.2.0", "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "dependencies": { "is-property": { "version": "1.0.2", @@ -3099,48 +5661,24 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.6.1.tgz" }, "rimraf": { - "version": "2.3.4", - "from": "rimraf@>=2.3.4 <2.4.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", - "dependencies": { - "glob": { - "version": "4.5.3", - "from": "glob@>=4.4.2 <5.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" - } - } + "version": "2.4.2", + "from": "rimraf@2.4.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz" }, "semver": { - "version": "4.3.4", - "from": "semver@>=4.3.4 <4.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.4.tgz" + "version": "5.0.1", + "from": "semver@>=5.0.1 <5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.1.tgz" }, "sha": { "version": "1.3.0", "from": "sha@>=1.3.0 <1.4.0", "resolved": "https://registry.npmjs.org/sha/-/sha-1.3.0.tgz", "dependencies": { - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, @@ -3154,22 +5692,17 @@ "from": "sorted-object@" }, "spdx": { - "version": "0.4.0", - "from": "spdx@0.4.0", - "resolved": "https://registry.npmjs.org/spdx/-/spdx-0.4.0.tgz", + "version": "0.4.1", + "from": "spdx@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/spdx/-/spdx-0.4.1.tgz", "dependencies": { "spdx-license-ids": { - "version": "1.0.0", + "version": "1.0.1", "from": "spdx-license-ids@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.1.tgz" } } }, - "strip-ansi": { - "version": "2.0.1", - "from": "strip-ansi@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz" - }, "tar": { "version": "2.1.1", "from": "tar@>=2.1.1 <2.2.0" @@ -3189,14 +5722,12 @@ "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz" }, "validate-npm-package-name": { - "version": "2.2.0", - "from": "validate-npm-package-name@2.2.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.2.0.tgz", + "version": "2.2.2", + "from": "validate-npm-package-name@2.2.2", "dependencies": { "builtins": { "version": "0.0.7", - "from": "builtins@0.0.7", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz" + "from": "builtins@0.0.7" } } }, @@ -3227,7 +5758,26 @@ "write-file-atomic": { "version": "1.1.2", "from": "write-file-atomic@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.2.tgz" + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.2.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + } + } + }, + "validate-npm-package-license": { + "version": "2.0.0", + "from": "validate-npm-package-license@2.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-2.0.0.tgz", + "dependencies": { + "spdx-correct": { + "version": "1.0.0", + "from": "spdx-correct@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.0.tgz" + } + } } } }, @@ -3449,9 +5999,9 @@ } }, "phantomjs": { - "version": "1.9.17", - "from": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.17.tgz", - "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.17.tgz", + "version": "1.9.18", + "from": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.18.tgz", + "resolved": "https://registry.npmjs.org/phantomjs/-/phantomjs-1.9.18.tgz", "dependencies": { "adm-zip": { "version": "0.4.4", @@ -3459,29 +6009,34 @@ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz" }, "fs-extra": { - "version": "0.18.4", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.18.4.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.18.4.tgz", + "version": "0.23.1", + "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", "dependencies": { "graceful-fs": { - "version": "3.0.7", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" + "version": "4.1.2", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" }, "jsonfile": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.0.1.tgz" + "version": "2.2.1", + "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.2.1.tgz" + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" }, "rimraf": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.4.tgz", + "version": "2.4.2", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz", "dependencies": { "glob": { - "version": "4.5.3", - "from": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "version": "5.0.14", + "from": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", "dependencies": { "inflight": { "version": "1.0.4", @@ -3501,9 +6056,9 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "minimatch": { - "version": "2.0.8", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", + "version": "2.0.10", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { "brace-expansion": { "version": "1.1.0", @@ -3553,9 +6108,9 @@ "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.1.tgz", "dependencies": { "config-chain": { - "version": "1.1.8", - "from": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.8.tgz", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.8.tgz", + "version": "1.1.9", + "from": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.9.tgz", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.9.tgz", "dependencies": { "proto-list": { "version": "1.2.4", @@ -3570,9 +6125,9 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "ini": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz" + "version": "1.3.4", + "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" }, "mkdirp": { "version": "0.5.1", @@ -3587,9 +6142,9 @@ } }, "nopt": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.2.tgz", + "version": "3.0.3", + "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz", "dependencies": { "abbrev": { "version": "1.0.7", @@ -3611,14 +6166,26 @@ } }, "osenv": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/osenv/-/osenv-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.1.tgz" + "version": "0.1.3", + "from": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", + "dependencies": { + "os-homedir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" + }, + "os-tmpdir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + } + } }, "semver": { - "version": "4.3.5", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.5.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.5.tgz" + "version": "4.3.6", + "from": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" }, "uid-number": { "version": "0.0.5", @@ -3702,14 +6269,14 @@ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" }, "tunnel-agent": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz" + "version": "0.4.1", + "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" }, "tough-cookie": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.2.0.tgz" + "version": "2.0.0", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" }, "form-data": { "version": "0.1.4", @@ -3825,49 +6392,69 @@ } } }, + "q": { + "version": "1.4.1", + "from": "q@latest", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz" + }, "request": { - "version": "2.56.0", - "from": "https://registry.npmjs.org/request/-/request-2.56.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.56.0.tgz", + "version": "2.60.0", + "from": "https://registry.npmjs.org/request/-/request-2.60.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.60.0.tgz", "dependencies": { "bl": { - "version": "0.9.4", - "from": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", + "version": "1.0.0", + "from": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", "dependencies": { "readable-stream": { - "version": "1.0.33", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "version": "2.0.2", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, "isarray": { "version": "0.0.1", "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, + "process-nextick-args": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + }, "string_decoder": { "version": "0.10.31", "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "util-deprecate": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" } } } } }, "caseless": { - "version": "0.10.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.10.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.10.0.tgz" + "version": "0.11.0", + "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "extend": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" }, "forever-agent": { "version": "0.6.1", @@ -3875,28 +6462,9 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" }, "form-data": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "combined-stream": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "dependencies": { - "delayed-stream": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" - } - } - } - } + "version": "1.0.0-rc3", + "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz" }, "json-stringify-safe": { "version": "5.0.1", @@ -3904,14 +6472,14 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" }, "mime-types": { - "version": "2.0.12", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "version": "2.1.4", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", "dependencies": { "mime-db": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "version": "1.16.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" } } }, @@ -3921,19 +6489,19 @@ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" }, "qs": { - "version": "3.1.0", - "from": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz" + "version": "4.0.0", + "from": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" }, "tunnel-agent": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz" + "version": "0.4.1", + "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" }, "tough-cookie": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.2.0.tgz" + "version": "2.0.0", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" }, "http-signature": { "version": "0.11.0", @@ -3963,9 +6531,9 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" }, "hawk": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", + "version": "3.1.0", + "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", "dependencies": { "hoek": { "version": "2.14.0", @@ -3973,9 +6541,9 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz" }, "boom": { - "version": "2.7.2", - "from": "https://registry.npmjs.org/boom/-/boom-2.7.2.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.7.2.tgz" + "version": "2.8.0", + "from": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz" }, "cryptiles": { "version": "2.0.4", @@ -4000,9 +6568,9 @@ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" }, "combined-stream": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.3.tgz", + "version": "1.0.5", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "dependencies": { "delayed-stream": { "version": "1.0.0", @@ -4017,24 +6585,24 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" }, "har-validator": { - "version": "1.7.1", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.7.1.tgz", + "version": "1.8.0", + "from": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", "dependencies": { "bluebird": { - "version": "2.9.27", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.27.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.27.tgz" + "version": "2.9.34", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" }, "chalk": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", + "version": "1.1.0", + "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", "dependencies": { "ansi-styles": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz" + "version": "2.1.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" }, "escape-string-regexp": { "version": "1.0.3", @@ -4042,38 +6610,33 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" }, "has-ansi": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", + "version": "2.0.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { "ansi-regex": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" - }, - "get-stdin": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "strip-ansi": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "version": "3.0.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", "dependencies": { "ansi-regex": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "supports-color": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz" + "version": "2.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, @@ -4090,9 +6653,9 @@ } }, "is-my-json-valid": { - "version": "2.12.0", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz", + "version": "2.12.1", + "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz", "dependencies": { "generate-function": { "version": "2.0.0", @@ -4128,26 +6691,19 @@ } }, "serve-favicon": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.1.tgz", + "version": "2.3.0", + "from": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz", "dependencies": { "etag": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.6.0.tgz", - "dependencies": { - "crc": { - "version": "3.2.1", - "from": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz" - } - } + "version": "1.7.0", + "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" }, "fresh": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz" + "version": "0.3.0", + "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" }, "parseurl": { "version": "1.3.0", @@ -4157,12 +6713,9 @@ } }, "shelljs": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.0.tgz" - }, - "stack-sight": { - "version": "1.0.5" + "version": "0.5.3", + "from": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" }, "swig": { "version": "1.4.2", @@ -4170,9 +6723,9 @@ "resolved": "https://registry.npmjs.org/swig/-/swig-1.4.2.tgz", "dependencies": { "uglify-js": { - "version": "2.4.23", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.23.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.23.tgz", + "version": "2.4.24", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "dependencies": { "async": { "version": "0.2.10", @@ -4185,9 +6738,9 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, @@ -4202,9 +6755,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "dependencies": { "camelcase": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" }, "decamelize": { "version": "1.0.0", diff --git a/package.json b/package.json index 494a803..3af39d3 100644 --- a/package.json +++ b/package.json @@ -5,16 +5,18 @@ "private": false, "author": "Linnovate ", "contributors": "https://github.com/linnovate/mean/graphs/contributors", - "mean": "0.5.0", + "mean": "0.5.5", "repository": { "type": "git", "url": "https://github.com/linnovate/mean.git" }, + "license": "MIT", "scripts": { "start": "node server", - "mocha": "node node_modules/.bin/mocha packages/**/server/tests/**/*.js -R spec -r tools/test/mocha-req.js", + "mocha": "node tools/test/run-mocha.js", "karma": "node node_modules/karma/bin/karma start karma.conf.js", - "test": "npm run mocha && NODE_ENV=test npm run start & sleep 20 && npm run karma", + "test": "gulp test", + "test-e2e": "gulp e2e.test", "postinstall": "node tools/scripts/postinstall.js" }, "dependencies": { @@ -46,7 +48,7 @@ "passport-linkedin": "latest", "passport-local": "latest", "passport-twitter": "latest", - "q": "^1.4.0", + "q": "latest", "request": "latest", "serve-favicon": "latest", "shelljs": "latest", @@ -58,6 +60,7 @@ "del": "latest", "expect.js": "latest", "gulp": "latest", + "gulp-coffee": "latest", "gulp-concat": "latest", "gulp-csslint": "latest", "gulp-cssmin": "latest", @@ -69,6 +72,8 @@ "gulp-nodemon": "latest", "gulp-uglify": "latest", "gulp-util": "latest", + "jasmine": "latest", + "jasmine-reporters": "latest", "jshint-stylish": "latest", "karma": "latest", "karma-chrome-launcher": "latest", @@ -77,13 +82,14 @@ "karma-firefox-launcher": "latest", "karma-html2js-preprocessor": "latest", "karma-jasmine": "latest", + "karma-junit-reporter": "latest", "karma-ng-html2js-preprocessor": "latest", - "karma-ng-scenario": "latest", "karma-phantomjs-launcher": "latest", + "karma-phantomjs-shim": "latest", "karma-requirejs": "latest", "karma-script-launcher": "latest", - "mean-seo": "latest", "mocha": "latest", + "protractor": "latest", "require-dir": "latest", "requirejs": "latest", "supertest": "latest", diff --git a/packages/core/admin/app.js b/packages/core/admin/app.js index 18ce527..25133a7 100644 --- a/packages/core/admin/app.js +++ b/packages/core/admin/app.js @@ -13,12 +13,43 @@ var Admin = new Module('admin'); Admin.register(function(app, auth, database) { - Admin.menus.add({ - title: 'admin settings', - link: 'admin settings', - roles: ['admin'], - menu: 'main' - }); + var icons = 'admin/assets/img/icons/'; + + Admin.menus.add({ + title: 'admin settings', + link: 'admin settings', + roles: ['admin'], + menu: 'main' + }); + + Admin.menus.add({ + roles: ['admin'], + title: 'MODULES', + link: 'modules', + icon: icons + 'modules.png', + menu: 'admin' + }); + Admin.menus.add({ + roles: ['admin'], + title: 'THEMES', + link: 'themes', + icon: icons + 'themes.png', + menu: 'admin' + }); + Admin.menus.add({ + roles: ['admin'], + title: 'SETTINGS', + link: 'settings', + icon: icons + 'settings.png', + menu: 'admin' + }); + Admin.menus.add({ + roles: ['admin'], + title: 'USERS', + link: 'users', + icon: icons + 'users.png', + menu: 'admin' + }); Admin.aggregateAsset('css', 'admin.css'); Admin.aggregateAsset('js', '../lib/ng-clip/src/ngClip.js', { diff --git a/packages/core/admin/public/assets/css/admin.css b/packages/core/admin/public/assets/css/admin.css index 091c17e..de2ba9e 100644 --- a/packages/core/admin/public/assets/css/admin.css +++ b/packages/core/admin/public/assets/css/admin.css @@ -129,5 +129,10 @@ span.editable-wrapper input { font-size: 12px; } +.users .actions-bar { + clear: both; + margin: 20px 0; +} + diff --git a/packages/core/admin/public/controllers/admin.js b/packages/core/admin/public/controllers/admin.js index d5ac74a..3d5d9b4 100644 --- a/packages/core/admin/public/controllers/admin.js +++ b/packages/core/admin/public/controllers/admin.js @@ -6,30 +6,8 @@ angular.module('mean.admin').controller('AdminController', ['$scope', 'Global', $scope.menus = {}; $scope.overIcon = false; $scope.user = MeanUser; - var icons = 'admin/assets/img/icons/'; - - // Default hard coded menu items for main menu - var defaultAdminMenu = [{ - 'roles': ['admin'], - 'title': 'MODULES', - 'link': 'modules', - 'icon': icons + 'modules.png' - }, { - 'roles': ['admin'], - 'title': 'THEMES', - 'link': 'themes', - 'icon': icons + 'themes.png' - }, { - 'roles': ['admin'], - 'title': 'SETTINGS', - 'link': 'settings', - 'icon': icons + 'settings.png' - }, { - 'roles': ['admin'], - 'title': 'USERS', - 'link': 'users', - 'icon': icons + 'users.png' - }]; + + var defaultAdminMenu = []; // Query menus added by modules. Only returns menus that user is allowed to see. function queryMenu(name, defaultMenu) { diff --git a/packages/core/admin/public/controllers/themes.js b/packages/core/admin/public/controllers/themes.js index d999810..2895b9d 100644 --- a/packages/core/admin/public/controllers/themes.js +++ b/packages/core/admin/public/controllers/themes.js @@ -8,7 +8,8 @@ angular.module('mean.admin').controller('ThemesController', ['$scope', 'Global', $scope.init = function() { $http({ method: 'GET', - url: 'http://api.bootswatch.com/3/' + url: 'http://api.bootswatch.com/3/', + skipAuthorization: true }). success(function(data, status, headers, config) { $scope.themes = data.themes; diff --git a/packages/core/admin/public/controllers/users.js b/packages/core/admin/public/controllers/users.js index 1c5728b..12e8780 100644 --- a/packages/core/admin/public/controllers/users.js +++ b/packages/core/admin/public/controllers/users.js @@ -1,49 +1,60 @@ 'use strict'; -angular.module('mean.admin').controller('UsersController', ['$scope', 'Global', 'Menus', '$rootScope', '$http', 'Users', - function($scope, Global, Menus, $rootScope, $http, Users) { +angular.module('mean.admin').controller('UsersController', ['$scope', 'Global', 'Menus', '$rootScope', '$http', 'Users', 'Circles', + function($scope, Global, Menus, $rootScope, $http, Users, Circles) { + $scope.global = Global; - $scope.userSchema = [{ - title: 'Email', - schemaKey: 'email', - type: 'text', - inTable: true - }, { - title: 'Name', - schemaKey: 'name', - type: 'text', - inTable: true - }, { - title: 'Username', - schemaKey: 'username', - type: 'text', - inTable: true - }, { - title: 'Roles', - schemaKey: 'roles', - type: 'select', - options: ['authenticated', 'admin'], - inTable: true - }, { - title: 'Password', - schemaKey: 'password', - type: 'password', - inTable: false - }, { - title: 'Repeat password', - schemaKey: 'confirmPassword', - type: 'password', - inTable: false - }]; $scope.user = {}; + Circles.mine(function(acl) { + + var circles = acl.allowed; + + $scope.userSchema = [{ + title: 'Email', + schemaKey: 'email', + type: 'email', + inTable: true + }, { + title: 'Name', + schemaKey: 'name', + type: 'text', + inTable: true + }, { + title: 'Username', + schemaKey: 'username', + type: 'text', + inTable: true + }, { + title: 'Roles', + schemaKey: 'roles', + type: 'select', + options: circles, + inTable: true + }, { + title: 'Password', + schemaKey: 'password', + type: 'password', + inTable: false + }, { + title: 'Repeat password', + schemaKey: 'confirmPassword', + type: 'password', + inTable: false + }]; + + }); + + + $scope.init = function() { Users.query({}, function(users) { $scope.users = users; }); }; - $scope.add = function() { + $scope.add = function(valid) { + if (!valid) return; if (!$scope.users) $scope.users = []; var user = new Users({ @@ -55,11 +66,13 @@ angular.module('mean.admin').controller('UsersController', ['$scope', 'Global', roles: $scope.user.roles }); - user.$save(function(response) { - $scope.users.push(response); + user.$save(function(data, headers) { + $scope.user = {}; + $scope.users.push(user); + $scope.userError = null; + }, function(data, headers) { + $scope.userError = data.data; }); - - this.firstName = this.lastName = this.email = this.password = this.role = ''; }; $scope.remove = function(user) { @@ -73,7 +86,7 @@ angular.module('mean.admin').controller('UsersController', ['$scope', 'Global', }; $scope.update = function(user, userField) { - if (userField && userField === 'roles' && user.roles.indexOf('admin') === -1) { + if (userField && userField === 'roles' && user.tmpRoles.indexOf('admin') !== -1 && user.roles.indexOf('admin') === -1) { if (confirm('Are you sure you want to remove "admin" role?')) { user.$update(); } else { @@ -89,4 +102,4 @@ angular.module('mean.admin').controller('UsersController', ['$scope', 'Global', } }; } -]); \ No newline at end of file +]); diff --git a/packages/core/admin/public/views/settings.html b/packages/core/admin/public/views/settings.html index 1991002..d165f42 100644 --- a/packages/core/admin/public/views/settings.html +++ b/packages/core/admin/public/views/settings.html @@ -13,7 +13,7 @@ - Overridden + Overridden {{value.default}} diff --git a/packages/core/admin/public/views/users.html b/packages/core/admin/public/views/users.html index 4cdba76..99e8ee7 100644 --- a/packages/core/admin/public/views/users.html +++ b/packages/core/admin/public/views/users.html @@ -1,20 +1,42 @@ -
-
-
- - - - - +
+ + + +
+
{{error.msg}}
+
+
+
+ +
+ + +
+
+
+
+ +
+
+ +
- - + + + + +
+ diff --git a/packages/core/admin/server/routes/index.js b/packages/core/admin/server/routes/index.js index 547dd1e..0b6e6b5 100644 --- a/packages/core/admin/server/routes/index.js +++ b/packages/core/admin/server/routes/index.js @@ -1,7 +1,7 @@ 'use strict'; var Grid = require('gridfs-stream'); -// The Package is past automatically as first parameter +// The Package is passed automatically as first parameter module.exports = function(Admin, app, auth, database) { var gfs = new Grid(database.connection.connections[0].db, database.connection.mongo); var mean = require('meanio'); @@ -13,14 +13,11 @@ module.exports = function(Admin, app, auth, database) { app.put('/api/admin/users/:userId', auth.requiresAdmin, users.update); app.delete('/api/admin/users/:userId', auth.requiresAdmin, users.destroy); - //Setting up the users api + //Setting up the themes api var themes = require('../controllers/themes'); app.get('/api/admin/themes', auth.requiresAdmin, function(req, res) { themes.save(req, res, gfs); }); - app.get('/api/admin/themes/defaultTheme', auth.requiresAdmin, function(req, res) { - themes.defaultTheme(req, res, gfs); - }); app.get('/api/admin/themes/defaultTheme', auth.requiresAdmin, function(req, res) { themes.defaultTheme(req, res, gfs); @@ -44,4 +41,4 @@ module.exports = function(Admin, app, auth, database) { app.post('/api/admin/moduleSettings/:name', auth.requiresAdmin, moduleSettings.save); app.put('/api/admin/moduleSettings/:name', auth.requiresAdmin, moduleSettings.update); -}; \ No newline at end of file +}; diff --git a/packages/core/articles/app.js b/packages/core/articles/app.js index 37c257a..28b939e 100644 --- a/packages/core/articles/app.js +++ b/packages/core/articles/app.js @@ -11,7 +11,7 @@ var Articles = new Module('articles'); * All MEAN packages require registration * Dependency injection is used to define required modules */ -Articles.register(function(app, auth, database, swagger) { +Articles.register(function(app, auth, database, circles, swagger) { //We enable routing. By default the Package Object is passed to the routes Articles.routes(app, auth, database); @@ -31,11 +31,10 @@ Articles.register(function(app, auth, database, swagger) { 'link': 'create article' }); - //Articles.events.design({ - // //http://fontawesome.io/icons - // icon: 'fa-file-text', - // color: '#8FD5FF' - //}); + Articles.events.defaultData({ + type: 'post', + subtype: 'article' + }); /* diff --git a/packages/core/articles/docs/models.js b/packages/core/articles/docs/models.js index 85cf216..c39d44f 100644 --- a/packages/core/articles/docs/models.js +++ b/packages/core/articles/docs/models.js @@ -1,32 +1,10 @@ exports.models = { - User: { - id: 'User', - required: ['name', 'email', 'username'], - properties: { - name: { - type: 'string', - description: 'Name of the user' - }, - email: { - type: 'string', - description: 'Email used for authentication and notifications' - }, - phone: { - type: 'string', - description: 'Phone number of the user' - } - - } - }, Article: { id: 'Article', - required: ['content'], + required: ['content', 'title'], properties: { - id: { - type: 'string', - description: 'Unique identifier for the Article' - }, + title: { type: 'string', description: 'Title of the article' @@ -35,11 +13,10 @@ exports.models = { type: 'string', description: 'content of the article' }, - user: { - type: 'User', - description: 'User that created the article' + permissions: { + type: 'Array', + description: 'Permissions for viewing the article' } - } } }; diff --git a/packages/core/articles/public/controllers/articles.js b/packages/core/articles/public/controllers/articles.js index 14b3d92..3d48715 100644 --- a/packages/core/articles/public/controllers/articles.js +++ b/packages/core/articles/public/controllers/articles.js @@ -1,25 +1,43 @@ 'use strict'; -angular.module('mean.articles').controller('ArticlesController', ['$scope', '$stateParams', '$location', 'Global', 'Articles', 'MeanUser', - function($scope, $stateParams, $location, Global, Articles, MeanUser) { +angular.module('mean.articles').controller('ArticlesController', ['$scope', '$stateParams', '$location', 'Global', 'Articles', 'MeanUser', 'Circles', + function($scope, $stateParams, $location, Global, Articles, MeanUser, Circles) { $scope.global = Global; + $scope.hasAuthorization = function(article) { if (!article || !article.user) return false; return MeanUser.isAdmin || article.user._id === MeanUser.user._id; }; + $scope.availableCircles = []; + + Circles.mine(function(acl) { + $scope.availableCircles = acl.allowed; + $scope.allDescendants = acl.descendants; + }); + + $scope.showDescendants = function(permission) { + var temp = $('.ui-select-container .btn-primary').text().split(' '); + temp.shift(); //remove close icon + var selected = temp.join(' '); + $scope.descendants = $scope.allDescendants[selected]; + }; + + $scope.selectPermission = function() { + $scope.descendants = []; + }; + $scope.create = function(isValid) { if (isValid) { - var article = new Articles({ - title: this.title, - content: this.content - }); + // $scope.article.permissions.push('test test'); + var article = new Articles($scope.article); + article.$save(function(response) { $location.path('articles/' + response._id); }); - this.title = ''; - this.content = ''; + $scope.article = {}; + } else { $scope.submitted = true; } @@ -30,7 +48,7 @@ angular.module('mean.articles').controller('ArticlesController', ['$scope', '$st article.$remove(function(response) { for (var i in $scope.articles) { if ($scope.articles[i] === article) { - $scope.articles.splice(i,1); + $scope.articles.splice(i, 1); } } $location.path('articles'); @@ -45,9 +63,9 @@ angular.module('mean.articles').controller('ArticlesController', ['$scope', '$st $scope.update = function(isValid) { if (isValid) { var article = $scope.article; - if(!article.updated) { + if (!article.updated) { article.updated = []; - } + } article.updated.push(new Date().getTime()); article.$update(function() { @@ -72,4 +90,4 @@ angular.module('mean.articles').controller('ArticlesController', ['$scope', '$st }); }; } -]); +]); \ No newline at end of file diff --git a/packages/core/articles/public/tests/articles.spec.js b/packages/core/articles/public/tests/articles.spec.js index 309cf7e..c8f78fc 100644 --- a/packages/core/articles/public/tests/articles.spec.js +++ b/packages/core/articles/public/tests/articles.spec.js @@ -1,8 +1,14 @@ 'use strict'; (function() { + describe('Test test case', function() { + it('1 should be equals to 1', function() { + expect(1).toBe(1); + }); + }); + // Articles Controller Spec - describe('MEAN controllers', function() { + /*describe('MEAN controllers', function() { describe('ArticlesController', function() { // The $resource service augments the response object with methods for updating and deleting the resource. // If we were to use the standard toEqual matcher, our tests would fail because the test values would not match @@ -163,11 +169,11 @@ // testing the body data is out for now until an idea for testing the dynamic updated array value is figured out //$httpBackend.expectPUT(/articles\/([0-9a-fA-F]{24})$/, putArticleData()).respond(); - /* + [> Error: Expected PUT /articles\/([0-9a-fA-F]{24})$/ with different data EXPECTED: {"_id":"525a8422f6d0f87f0e407a33","title":"An Article about MEAN","to":"MEAN is great!"} GOT: {"_id":"525a8422f6d0f87f0e407a33","title":"An Article about MEAN","to":"MEAN is great!","updated":[1383534772975]} - */ + <] // run controller scope.update(true); @@ -203,5 +209,5 @@ })); }); - }); + });*/ }()); diff --git a/packages/core/articles/public/views/create.html b/packages/core/articles/public/views/create.html index 29acbc8..d9fdc96 100644 --- a/packages/core/articles/public/views/create.html +++ b/packages/core/articles/public/views/create.html @@ -3,7 +3,7 @@
- +

Title is required

@@ -13,12 +13,32 @@
- +

Content is required

+ +
+ +
+ + {{$item}} + + {{circle}} + + +
+
+ +
+ +
+ {{descendant}} , +
+
+
diff --git a/packages/core/articles/public/views/edit.html b/packages/core/articles/public/views/edit.html index 01b5918..5e05c79 100644 --- a/packages/core/articles/public/views/edit.html +++ b/packages/core/articles/public/views/edit.html @@ -19,6 +19,23 @@
+
+ +
+ + {{$item}} + + {{circle}} + + +
+
+
+ +
+ {{descendant}} , +
+
diff --git a/packages/core/articles/server/controllers/articles.js b/packages/core/articles/server/controllers/articles.js index d9204d8..5add989 100644 --- a/packages/core/articles/server/controllers/articles.js +++ b/packages/core/articles/server/controllers/articles.js @@ -4,15 +4,16 @@ * Module dependencies. */ var mongoose = require('mongoose'), - Article = mongoose.model('Article'), - _ = require('lodash'); + Article = mongoose.model('Article'), + config = require('meanio').loadConfig(), + _ = require('lodash'); module.exports = function(Articles) { return { /** - * Find article by id - */ + * Find article by id + */ article: function(req, res, next, id) { Article.load(id, function(err, article) { if (err) return next(err); @@ -22,29 +23,34 @@ module.exports = function(Articles) { }); }, /** - * Create an article - */ + * Create an article + */ create: function(req, res) { var article = new Article(req.body); article.user = req.user; article.save(function(err) { if (err) { - return res.status(500).json({ - error: 'Cannot save the article' - }); + return res.status(500).json({ + error: 'Cannot save the article' + }); } - Articles.events.publish('create', { - description: req.user.name + ' created ' + req.body.title + ' article.' + Articles.events.publish({ + action: 'created', + user: { + name: req.user.name + }, + url: config.hostname + '/articles/' + article._id, + name: article.title }); res.json(article); }); }, /** - * Update an article - */ + * Update an article + */ update: function(req, res) { var article = req.article; @@ -58,16 +64,21 @@ module.exports = function(Articles) { }); } - Articles.events.publish('update', { - description: req.user.name + ' updated ' + req.body.title + ' article.' + Articles.events.publish({ + action: 'updated', + user: { + name: req.user.name + }, + name: article.title, + url: config.hostname + '/articles/' + article._id }); res.json(article); }); }, /** - * Delete an article - */ + * Delete an article + */ destroy: function(req, res) { var article = req.article; @@ -79,37 +90,49 @@ module.exports = function(Articles) { }); } - Articles.events.publish('remove', { - description: req.user.name + ' deleted ' + article.title + ' article.' + Articles.events.publish({ + action: 'deleted', + user: { + name: req.user.name + }, + name: article.title }); res.json(article); }); }, /** - * Show an article - */ + * Show an article + */ show: function(req, res) { - Articles.events.publish('view', { - description: req.user.name + ' read ' + req.article.title + ' article.' + Articles.events.publish({ + action: 'viewed', + user: { + name: req.user.name + }, + name: req.article.title, + url: config.hostname + '/articles/' + req.article._id }); res.json(req.article); }, /** - * List of Articles - */ + * List of Articles + */ all: function(req, res) { - Article.find().sort('-created').populate('user', 'name username').exec(function(err, articles) { + var query = req.acl.query('Article'); + + query.find({}).sort('-created').populate('user', 'name username').exec(function(err, articles) { if (err) { return res.status(500).json({ error: 'Cannot list the articles' }); } - res.json(articles); + res.json(articles) }); + } }; } \ No newline at end of file diff --git a/packages/core/articles/server/models/article.js b/packages/core/articles/server/models/article.js index 944a9449..62e7a1c 100644 --- a/packages/core/articles/server/models/article.js +++ b/packages/core/articles/server/models/article.js @@ -29,6 +29,9 @@ var ArticleSchema = new Schema({ type: Schema.ObjectId, ref: 'User' }, + permissions: { + type: Array + }, updated: { type: Array } diff --git a/packages/core/articles/server/routes/articles.js b/packages/core/articles/server/routes/articles.js index 572a71c..3255181 100644 --- a/packages/core/articles/server/routes/articles.js +++ b/packages/core/articles/server/routes/articles.js @@ -8,16 +8,30 @@ var hasAuthorization = function(req, res, next) { next(); }; +var hasPermissions = function(req, res, next) { + + req.body.permissions = req.body.permissions || ['authenticated']; + + for (var i = 0; i < req.body.permissions.length; i++) { + var permission = req.body.permissions[i]; + if (req.acl.user.allowed.indexOf(permission) === -1) { + return res.status(401).send('User not allowed to assign ' + permission + ' permission.'); + }; + }; + + next(); +}; + module.exports = function(Articles, app, auth) { var articles = require('../controllers/articles')(Articles); app.route('/api/articles') .get(articles.all) - .post(auth.requiresLogin, articles.create); + .post(auth.requiresLogin, hasPermissions, articles.create); app.route('/api/articles/:articleId') .get(auth.isMongoId, articles.show) - .put(auth.isMongoId, auth.requiresLogin, hasAuthorization, articles.update) + .put(auth.isMongoId, auth.requiresLogin, hasAuthorization, hasPermissions, articles.update) .delete(auth.isMongoId, auth.requiresLogin, hasAuthorization, articles.destroy); // Finish with setting up the articleId param diff --git a/packages/core/articles/server/tests/articles.js b/packages/core/articles/server/tests/articles.spec.js similarity index 100% rename from packages/core/articles/server/tests/articles.js rename to packages/core/articles/server/tests/articles.spec.js diff --git a/packages/core/circles/.bowerrc b/packages/core/circles/.bowerrc new file mode 100644 index 0000000..c6231e8 --- /dev/null +++ b/packages/core/circles/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "public/assets/lib" +} diff --git a/packages/core/circles/.gitignore b/packages/core/circles/.gitignore new file mode 100644 index 0000000..7ec6d19 --- /dev/null +++ b/packages/core/circles/.gitignore @@ -0,0 +1,2 @@ +node_modules +server/routes/stubs.js diff --git a/packages/core/circles/README.md b/packages/core/circles/README.md new file mode 100644 index 0000000..e3f0f10 --- /dev/null +++ b/packages/core/circles/README.md @@ -0,0 +1 @@ +README: circles \ No newline at end of file diff --git a/packages/core/circles/app.js b/packages/core/circles/app.js new file mode 100644 index 0000000..4d22b81 --- /dev/null +++ b/packages/core/circles/app.js @@ -0,0 +1,73 @@ +'use strict'; + +/* + * Defining the Package + */ +var Module = require('meanio').Module; + +var mongoose = require('mongoose'); + +var Circles = new Module('circles'); + +/* + * All MEAN packages require registration + * Dependency injection is used to define required modules + */ + +Circles.register(function(app, auth, database) { + + Circles.routes(app, auth, database); + + Circles.aggregateAsset('css', 'circles.css'); + + Circles.menus.add({ + title: 'Circles', + link: 'manage circles', + roles: ['authenticated', 'admin'], + menu: 'main' + }); + + Circles.models = {}; + + ensureCirclesExist(); + + return Circles; +}); + + +function ensureCirclesExist() { + + var requiredCircles = ['anonymous', 'authenticated', 'can create content', 'can edit content', 'can delete content', 'admin']; + var Circle = require('mongoose').model('Circle'); + requiredCircles.forEach(function(circle, index) { + var query = { + name: circle + }; + + var set = {}; + if (requiredCircles[index + 1]) { + + set.$push = { + circles: requiredCircles[index + 1] + }; + } + + Circle.findOne(query, function(err, data) { + if (!err && !data) { + Circle.findOneAndUpdate(query, set, { + upsert: true + }, function(err) { + if (err) console.log(err); + }); + } + }) + + }); +} + + +/* +Y Override queries to check user permisisons +Y Add middleware for checking for specific circles by name +O Page to create and manage circles + sow circles heirarchy +*/ diff --git a/packages/core/circles/bower.json b/packages/core/circles/bower.json new file mode 100644 index 0000000..1342fb4 --- /dev/null +++ b/packages/core/circles/bower.json @@ -0,0 +1,5 @@ +{ + "name": "circles", + "version": "0.0.1", + "dependencies": {} +} diff --git a/packages/core/circles/package.json b/packages/core/circles/package.json new file mode 100644 index 0000000..22147a5 --- /dev/null +++ b/packages/core/circles/package.json @@ -0,0 +1,15 @@ +{ + "name": "circles", + "version": "0.0.1", + "description": "Some description of circles", + "author": { + "name": "mean scaffold" + }, + "mean": "0.5.0", + "engines": { + "node": "0.10.x", + "npm": "1.4.x" + }, + "dependencies": {}, + "license": "MIT" +} diff --git a/packages/core/circles/public/assets/css/circles.css b/packages/core/circles/public/assets/css/circles.css new file mode 100644 index 0000000..e71313f --- /dev/null +++ b/packages/core/circles/public/assets/css/circles.css @@ -0,0 +1,24 @@ +.node { + cursor: pointer; +} + +.node:hover { + stroke: #000; + stroke-width: 1.5px; +} + +.node--leaf { + fill: white; +} + +.label { + font: 11px "Helvetica Neue", Helvetica, Arial, sans-serif; + text-anchor: middle; + text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff, 0 -1px 0 #fff; +} + +.label, +.node--root, +.node--leaf { + pointer-events: none; +} \ No newline at end of file diff --git a/packages/core/circles/public/assets/img/logo.png b/packages/core/circles/public/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1eae089e82db7d3c6ebf69d9954d95ff9fd5a340 GIT binary patch literal 5993 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 +

Create Circles

+ +
+
+ +
+ +
+

Name is required

+
+
+ +
+ +
+ +
+ + {{$item}} + + {{circle}} + + +
+
+
+
+ +
+
+ + +
\ No newline at end of file diff --git a/packages/core/circles/public/views/index.html b/packages/core/circles/public/views/index.html new file mode 100644 index 0000000..233bb47 --- /dev/null +++ b/packages/core/circles/public/views/index.html @@ -0,0 +1,13 @@ +
+

Circles Package

+
    +
  1. + Visualize Circles +
  2. +
  3. + Create new Circle +
  4. +
+ +
+ diff --git a/packages/core/circles/server/controllers/circles.js b/packages/core/circles/server/controllers/circles.js new file mode 100644 index 0000000..a9c9124 --- /dev/null +++ b/packages/core/circles/server/controllers/circles.js @@ -0,0 +1,208 @@ +var mongoose = require('mongoose'), + Circle = mongoose.model('Circle'); + +module.exports = function(Circles, app) { + + return { + + test: function(req, res) { + var query = req.acl.query('Article'); + + query.find({}, function(err, data) { + res.send(data) + }) + }, + + visualize: function(req, res) { + Circles.render('index', {}, function(err, html) { + res.send(html); + }); + }, + + tree: function(req, res) { + Circle.buildPermissions(function(data) { + res.send(data.tree); + }); + }, + + create: function(req, res) { + + var circle = new Circle(req.body); + + circle.save(function(err) { + if (err) { + return res.status(500).json({ + error: 'Cannot save the circle' + }); + } + + Circle.buildPermissions(function(data) { + app.set('circles', data); + }); + + res.json(circle); + }); + }, + + update: function(req, res) { + + if (!req.params.name) return res.send(404, 'No name specified'); + + validateCircles(req.params.name, req.body.circles, function(err, status) { + + if (err) return res.send(400, status); + + Circle.findOne({ + name: req.params.name + }).exec(function(err, circle) { + if (!err && circle) { + Circle.findOneAndUpdate({ + name: circle.name + }, { + $set: req.body + }, { + multi: false, + upsert: false + }, function(err, circle) { + if (err) { + return res.send(500, err.message); + } + + Circle.buildPermissions(function(data) { + app.set('circles', data); + }); + + res.send(200, 'updated'); + }); + } + }); + }); + }, + mine: function(req, res) { + var descendants = {}; + for (var index in req.acl.user.circles) { + descendants[index] = req.acl.user.circles[index].decendants; + } + return res.send({allowed: req.acl.user.allowed, descendants: descendants }); + }, + all: function(req, res) { + return res.send({ + tree:req.acl.tree, + circles: req.acl.circles + }); + }, + show: function(req, res) { + return res.send('show'); + }, + loadCircles: function(req, res, next) { + var data = app.get('circles'); + + + if (!req.acl) req.acl = {}; + + if (!data) { + Circle.buildPermissions(function(data) { + app.set('circles', data); + req.acl.tree = data.tree; + req.acl.circles = data.circles; + + next(); + }); + } else { + req.acl.tree = data.tree; + req.acl.circles = data.circles; + next(); + } + }, + userAcl: function(req, res, next) { + var roles = req.user && req.user.roles ? req.user.roles : ['anonymous']; + + var userRoles = {}; + var list = []; + + roles.forEach(function(role) { + if (req.acl.circles[role]) { + + if (list.indexOf(role) === -1) list.push(role); + req.acl.circles[role].decendants.forEach(function(descendent) { + + if (list.indexOf(descendent) === -1) { + list.push(descendent); + } + + }); + userRoles[role] = req.acl.circles[role]; + } + }); + + var tree = Circle.buildTrees(userRoles); + + for (var index in tree) { + tree[index].children = req.acl.tree[index].children; + } + + req.acl.user = { + tree: tree, + circles: userRoles, + allowed: list, + }; + + return next(); + }, + aclBlocker: function(req, res, next) { + req.acl.query = function(model) { + + if (!Circles.models[model]) { + Circles.models[model] = mongoose.model(model); + } + return Circles.models[model].where({ + permissions: { + $in: req.acl.user.allowed + } + }); + }; + + next(); + } + } + +}; + + + +function validateCircles(name, circles, callback) { + + Circle.buildPermissions(function(data) { + circles = [].concat(circles); + + circles.forEach(function(parent, index) { + + if (data.circles[name].decendants.indexOf(parent) !== -1) { + return callback(true, 'Cannot reference parent in child relationship') + } + if (index === circles.length - 1) { + return callback(null, 'valid'); + } + }); + }); +} + +/* + +, + userRoles: function(req, res, next) { + + + var roles = req.user && req.user.roles ? req.user.roles : ['anonymous']; + + var myRoles = {}; + + roles.forEach(function(role) { + if (req.circles[role]) { + myRoles[role] = req.circes[role]; + } + }); + + return myRoles; + } +*/ diff --git a/packages/core/circles/server/models/circle.js b/packages/core/circles/server/models/circle.js new file mode 100644 index 0000000..2668f12 --- /dev/null +++ b/packages/core/circles/server/models/circle.js @@ -0,0 +1,132 @@ +'use strict'; + +var mongoose = require('mongoose'), + Schema = mongoose.Schema; + +var CircleSchema = new Schema({ + created: Date, + updated: Date, + category: [String], + description: String, + name: { + type: String, + required: true, + unique: true + }, + circles: [String], +}); + +//add index +CircleSchema.statics.buildPermissions = function(callback) { + + var data = { + + }; + + this.find({}).sort({ + circle: 1 + }).exec(function(err, circles) { + + circles.forEach(function(circle) { + + data[circle.name] = circle.toObject(); + data[circle.name].containers = circle.circles; + data[circle.name].parents = []; + data[circle.name].decendants = []; + data[circle.name].children = []; + + }); + + var found = true; + //yes not efficient - getting there.. + var level = 0; + while (found) { + found = false; + + circles.forEach(function(circle) { + + var containers = data[circle.name].containers; + + //going through each of the containers parents + containers.forEach(function(container) { + + if (data[container].decendants.indexOf(circle.name) == -1) { + data[container].decendants.push(circle.name.toString()); + if (level === 0) { + data[circle.name].parents.push(container.toString()); + data[container].children.push(circle.name.toString()); + } + } + + data[container].circles.forEach(function(circ) { + if (containers.indexOf(circ) == -1 && circ != circle.name) { + data[circle.name].containers.push(circ.toString()); + found = true; + } + }); + }); + }); + level++; + } + + callback({ + tree: buildTrees(data), + circles: data + }); + }); + +}; + + +var buildTrees = CircleSchema.statics.buildTrees = function(data) { + var tree = [] + + for (var index in data) { + buildTree(data, index, tree); + } + + return tree; +}; + +function buildTree(data, id, branch) { + + var length = branch.length; + + branch.push({ + "name": data[id].name + }); + + if (hasChildren(data, id)) { + branch[length].children = []; + } else { + branch[length].size = 1; + } + + //only goes here if there are children + data[id].children.forEach(function(child) { + + if (id !== child && data[child]) { + if (noParents(data, child)) { + branch[length].children.push({ + name: data[child].name, + size: 1 + }); + } else { + buildTree(data, child, branch[length].children); + } + } + }); +} + +function noParents(data, id) { + return data[id].parents.length === 0 +} + +function noChildren(data, id) { + return data[id].children.length === 0 +} + +function hasChildren(data, id) { + return !noChildren(data, id); +} +mongoose.model('Circle', CircleSchema); \ No newline at end of file diff --git a/packages/core/circles/server/routes/routes.js b/packages/core/circles/server/routes/routes.js new file mode 100644 index 0000000..e25fc7e --- /dev/null +++ b/packages/core/circles/server/routes/routes.js @@ -0,0 +1,25 @@ +'use strict'; + +/* jshint -W098 */ +// The Package is past automatically as first parameter +module.exports = function(Circles, app, auth, database) { + + var circles = require('../controllers/circles')(Circles, app); + + app.use(circles.loadCircles); + app.use(circles.userAcl); + app.use(circles.aclBlocker); + + + app.get('/api/test', circles.test); + app.get('/api/circles/visualize', circles.visualize); + app.get('/api/circles/tree', circles.tree); + app.get('/api/circles/mine', circles.mine); + app.get('/api/circles/all', auth.requiresAdmin, circles.all); + + app.route('/api/circles/:name') + .post(auth.requiresAdmin, circles.create) + .put(auth.requiresAdmin, circles.update) + .get(circles.show); + +}; \ No newline at end of file diff --git a/packages/core/circles/server/views/index.html b/packages/core/circles/server/views/index.html new file mode 100644 index 0000000..4f35cba --- /dev/null +++ b/packages/core/circles/server/views/index.html @@ -0,0 +1,110 @@ + + + + + + diff --git a/packages/core/swagger/server/views/index.html b/packages/core/swagger/server/views/index.html index 3248baf..58d00a6 100644 --- a/packages/core/swagger/server/views/index.html +++ b/packages/core/swagger/server/views/index.html @@ -77,7 +77,6 @@
-
diff --git a/packages/core/system/app.js b/packages/core/system/app.js index f4fe0a0..e611d07 100644 --- a/packages/core/system/app.js +++ b/packages/core/system/app.js @@ -2,7 +2,9 @@ /* * Defining the Package */ -var Module = require('meanio').Module, +var meanio = require('meanio'); +var Module = meanio.Module, + config = meanio.loadConfig(), favicon = require('serve-favicon'); var SystemPackage = new Module('system'); @@ -11,13 +13,14 @@ var SystemPackage = new Module('system'); * All MEAN packages require registration * Dependency injection is used to define required modules */ -SystemPackage.register(function(app, auth, database) { +SystemPackage.register(function(app, auth, database, circles) { //We enable routing. By default the Package Object is passed to the routes SystemPackage.routes(app, auth, database); SystemPackage.aggregateAsset('css', 'common.css'); - SystemPackage.angularDependencies(['ui.router', 'mean-factory-interceptor']); + SystemPackage.angularDependencies(['mean-factory-interceptor']); + // The middleware in config/express will run before this code @@ -25,19 +28,15 @@ SystemPackage.register(function(app, auth, database) { app.set('views', __dirname + '/server/views'); // Setting the favicon and static folder - app.use(favicon(__dirname + '/public/assets/img/favicon.ico')); + if(config.favicon) { + app.use(favicon(config.favicon)); + } else { + app.use(favicon(__dirname + '/public/assets/img/favicon.ico')); + } // Adding robots and humans txt app.useStatic(__dirname + '/public/assets/static'); - SystemPackage.menus.add({ - title: 'Log Out', - link: 'Log Out', - roles: ['authenticated'], - menu: 'account' - }); - - return SystemPackage; }); diff --git a/packages/core/system/public/assets/img/favicon.ico b/packages/core/system/public/assets/img/favicon.ico index 1eae089e82db7d3c6ebf69d9954d95ff9fd5a340..f415a8629b5879c6b039778eebe18c7a75b39215 100644 GIT binary patch literal 99678 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 PLR40y;x~tUmhb&Pq>@R( literal 5993 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 + diff --git a/packages/core/system/server/controllers/index.js b/packages/core/system/server/controllers/index.js index c76a0ae..3d62022 100644 --- a/packages/core/system/server/controllers/index.js +++ b/packages/core/system/server/controllers/index.js @@ -1,7 +1,13 @@ 'use strict'; var mean = require('meanio'); - -exports.render = function(req, res) { - res.render('index'); +module.exports = function(System){ + return { + render:function(req,res){ + res.render('index',{ locals: { config: System.config.clean }}); + }, + aggregatedList:function(req,res) { + res.send(res.locals.aggregatedassets); + } + }; }; diff --git a/packages/core/system/server/routes/index.js b/packages/core/system/server/routes/index.js index 12ba4de..a3987ef 100644 --- a/packages/core/system/server/routes/index.js +++ b/packages/core/system/server/routes/index.js @@ -5,12 +5,20 @@ var mean = require('meanio'); module.exports = function(System, app, auth, database) { // Home route - var index = require('../controllers/index'); + var index = require('../controllers/index')(System); app.route('/') .get(index.render); + app.route('/api/aggregatedassets') + .get(index.aggregatedList); app.get('/*',function(req,res,next){ res.header('workerID' , JSON.stringify(mean.options.workerid) ); next(); // http://expressjs.com/guide.html#passing-route control }); + + app.get('/api/get-public-config', function(req, res){ + var config = mean.loadConfig(); + + return res.send(config.public); + }); }; diff --git a/packages/core/system/server/views/includes/foot.html b/packages/core/system/server/views/includes/foot.html index 3a11086..e62f533 100644 --- a/packages/core/system/server/views/includes/foot.html +++ b/packages/core/system/server/views/includes/foot.html @@ -3,9 +3,5 @@ {% endfor %} {% if (process.env.NODE_ENV == 'development') %} - - {% endif %} diff --git a/packages/core/system/server/views/includes/head.html b/packages/core/system/server/views/includes/head.html index 9ff6b42..a22dcf9 100644 --- a/packages/core/system/server/views/includes/head.html +++ b/packages/core/system/server/views/includes/head.html @@ -19,6 +19,7 @@ + {% for file in aggregatedassets.header.css %} diff --git a/packages/core/system/server/views/layouts/default.html b/packages/core/system/server/views/layouts/default.html index 779dcc7..e8b02ae 100644 --- a/packages/core/system/server/views/layouts/default.html +++ b/packages/core/system/server/views/layouts/default.html @@ -3,7 +3,6 @@ {% include '../includes/head.html' %} -
diff --git a/packages/core/system/server/views/layouts/header.html b/packages/core/system/server/views/layouts/header.html deleted file mode 100644 index 8dcc9a4..0000000 --- a/packages/core/system/server/views/layouts/header.html +++ /dev/null @@ -1,51 +0,0 @@ - - diff --git a/packages/core/users/app.js b/packages/core/users/app.js index c263df8..1e68064 100644 --- a/packages/core/users/app.js +++ b/packages/core/users/app.js @@ -41,11 +41,9 @@ MeanUser.register(function(app, database, passport) { MeanUser.angularDependencies(['angular-jwt']); - // MeanUser.events.design({ - // //http://fontawesome.io/icons - // icon: 'fa-user', - // color: '#8C66B1' - // }); + MeanUser.events.defaultData({ + type: 'user' + }); return MeanUser; }); diff --git a/packages/core/users/authorization.js b/packages/core/users/authorization.js index 9b946d2..0576d6f 100644 --- a/packages/core/users/authorization.js +++ b/packages/core/users/authorization.js @@ -5,7 +5,7 @@ var mongoose = require('mongoose'), var findUser = exports.findUser = function(id, cb) { - User.findOne({ + User.findOne({ _id: id }, function(err, user) { if (err || !user) return cb(null); @@ -13,18 +13,19 @@ var findUser = exports.findUser = function(id, cb) { }); }; + /** * Generic require login routing middleware */ exports.requiresLogin = function(req, res, next) { - if (!req.isAuthenticated()) { - return res.status(401).send('User is not authorized'); - } - findUser(req.user._id, function(user) { - if (!user) return res.status(401).send('User is not authorized'); - req.user = user; - next(); - }); + if (!req.isAuthenticated()) { + return res.status(401).send('User is not authorized'); + } + findUser(req.user._id, function(user) { + if (!user) return res.status(401).send('User is not authorized'); + req.user = user; + next(); + }); }; /** @@ -32,16 +33,16 @@ exports.requiresLogin = function(req, res, next) { * Basic Role checking - future release with full permission system */ exports.requiresAdmin = function(req, res, next) { - if (!req.isAuthenticated()) { - return res.status(401).send('User is not authorized'); - } - findUser(req.user._id, function(user) { - if (!user) return res.status(401).send('User is not authorized'); + if (!req.isAuthenticated()) { + return res.status(401).send('User is not authorized'); + } + findUser(req.user._id, function(user) { + if (!user) return res.status(401).send('User is not authorized'); - if (req.user.roles.indexOf('admin') === -1) return res.status(401).send('User is not authorized'); - req.user = user; - next(); - }); + if (req.user.roles.indexOf('admin') === -1) return res.status(401).send('User is not authorized'); + req.user = user; + next(); + }); }; /** diff --git a/packages/core/users/passport.js b/packages/core/users/passport.js index 1ac4c89..209f358 100644 --- a/packages/core/users/passport.js +++ b/packages/core/users/passport.js @@ -55,9 +55,9 @@ module.exports = function(passport) { // Use twitter strategy passport.use(new TwitterStrategy({ - consumerKey: config.twitter.clientID, - consumerSecret: config.twitter.clientSecret, - callbackURL: config.twitter.callbackURL + consumerKey: config.strategies.twitter.clientID, + consumerSecret: config.strategies.twitter.clientSecret, + callbackURL: config.strategies.twitter.callbackURL }, function(token, tokenSecret, profile, done) { User.findOne({ @@ -90,9 +90,9 @@ module.exports = function(passport) { // Use facebook strategy passport.use(new FacebookStrategy({ - clientID: config.facebook.clientID, - clientSecret: config.facebook.clientSecret, - callbackURL: config.facebook.callbackURL + clientID: config.strategies.facebook.clientID, + clientSecret: config.strategies.facebook.clientSecret, + callbackURL: config.strategies.facebook.callbackURL }, function(accessToken, refreshToken, profile, done) { User.findOne({ @@ -126,9 +126,9 @@ module.exports = function(passport) { // Use github strategy passport.use(new GitHubStrategy({ - clientID: config.github.clientID, - clientSecret: config.github.clientSecret, - callbackURL: config.github.callbackURL + clientID: config.strategies.github.clientID, + clientSecret: config.strategies.github.clientSecret, + callbackURL: config.strategies.github.callbackURL }, function(accessToken, refreshToken, profile, done) { User.findOne({ @@ -138,9 +138,9 @@ module.exports = function(passport) { return done(err, user); } user = new User({ - name: profile.displayName, + name: profile._json.displayName || profile._json.login, + username: profile._json.login, email: profile.emails[0].value, - username: profile.username, provider: 'github', github: profile._json, roles: ['authenticated'] @@ -159,9 +159,9 @@ module.exports = function(passport) { // Use google strategy passport.use(new GoogleStrategy({ - clientID: config.google.clientID, - clientSecret: config.google.clientSecret, - callbackURL: config.google.callbackURL + clientID: config.strategies.google.clientID, + clientSecret: config.strategies.google.clientSecret, + callbackURL: config.strategies.google.callbackURL }, function(accessToken, refreshToken, profile, done) { User.findOne({ @@ -192,9 +192,9 @@ module.exports = function(passport) { // use linkedin strategy passport.use(new LinkedinStrategy({ - consumerKey: config.linkedin.clientID, - consumerSecret: config.linkedin.clientSecret, - callbackURL: config.linkedin.callbackURL, + consumerKey: config.strategies.linkedin.clientID, + consumerSecret: config.strategies.linkedin.clientSecret, + callbackURL: config.strategies.linkedin.callbackURL, profileFields: ['id', 'first-name', 'last-name', 'email-address'] }, function(accessToken, refreshToken, profile, done) { @@ -209,6 +209,7 @@ module.exports = function(passport) { email: profile.emails[0].value, username: profile.emails[0].value, provider: 'linkedin', + linkedin: profile._json, roles: ['authenticated'] }); user.save(function(err) { diff --git a/packages/core/users/public/controllers/meanUser.js b/packages/core/users/public/controllers/meanUser.js index ce759e4..3cc17d9 100644 --- a/packages/core/users/public/controllers/meanUser.js +++ b/packages/core/users/public/controllers/meanUser.js @@ -10,6 +10,7 @@ angular.module('mean.users') $http.get('/api/get-config') .success(function(config) { + if(config.hasOwnProperty('local')) delete config.local; // Only non-local passport strategies $scope.socialButtons = config; $scope.socialButtonsCounter = Object.keys(config).length; }); diff --git a/packages/core/users/public/routes/auth.js b/packages/core/users/public/routes/auth.js index 368f2e1..60db7df 100644 --- a/packages/core/users/public/routes/auth.js +++ b/packages/core/users/public/routes/auth.js @@ -14,6 +14,7 @@ angular.module('mean.users').config(['$meanStateProvider', '$httpProvider', 'jwt $meanStateProvider .state('auth', { url: '/auth', + abstract: true, templateUrl: 'users/views/index.html' }) .state('auth.login', { @@ -53,4 +54,4 @@ angular.module('mean.users').config(['$meanStateProvider', '$httpProvider', 'jwt } }); } -]); \ No newline at end of file +]); diff --git a/packages/core/users/public/services/meanUser.js b/packages/core/users/public/services/meanUser.js index eb61913..c37a907 100644 --- a/packages/core/users/public/services/meanUser.js +++ b/packages/core/users/public/services/meanUser.js @@ -1,7 +1,7 @@ 'use strict'; -angular.module('mean.users').factory('MeanUser', [ '$rootScope', '$http', '$location', '$stateParams', '$cookies', '$q', '$timeout', '$cookieStore', - function($rootScope, $http, $location, $stateParams, $cookies, $q, $timeout, $cookieStore) { +angular.module('mean.users').factory('MeanUser', [ '$rootScope', '$http', '$location', '$stateParams', '$cookies', '$q', '$timeout', + function($rootScope, $http, $location, $stateParams, $cookies, $q, $timeout) { var self; @@ -46,38 +46,37 @@ angular.module('mean.users').factory('MeanUser', [ '$rootScope', '$http', '$loca this.registerError = null; this.resetpassworderror = null; this.validationError = null; - $http.get('/api/users/me').success(this.onIdentity.bind(this)); self = this; + $http.get('/api/users/me').success(function(response) { + if(!response && $cookies.get('token') && $cookies.get('redirect')) { + self.onIdentity.bind(self)({ + token: $cookies.get('token'), + redirect: $cookies.get('redirect').replace(/^"|"$/g, '') + }); + $cookies.remove('token'); + $cookies.remove('redirect'); + } else { + self.onIdentity.bind(self)(response); + } + }); } MeanUserKlass.prototype.onIdentity = function(response) { - this.loginError = 0; - this.loggedin = true; - this.registerError = 0; - if (response === null) { - this.user = {}; - this.loggedin = false; - this.isAdmin = false; - } else if(angular.isDefined(response.token)) { + if (!response) return; + var encodedUser, user, destination; + if (angular.isDefined(response.token)) { localStorage.setItem('JWT', response.token); - var encodedProfile = decodeURI(b64_to_utf8(response.token.split('.')[1])); - var payload = JSON.parse(encodedProfile); - this.user = payload; - var destination = $cookies.redirect; - if (this.user.roles.indexOf('admin') !== -1) this.isAdmin = true; - $rootScope.$emit('loggedin'); - if (destination) { - $location.path(destination.replace(/^"|"$/g, '')); - $cookieStore.remove('redirect'); - } else { - $location.url('/'); - } - } else { - this.user = response; - this.loggedin = true; - if (this.user.roles.indexOf('admin') !== -1) this.isAdmin = true; - $rootScope.$emit('loggedin'); + encodedUser = decodeURI(b64_to_utf8(response.token.split('.')[1])); + user = JSON.parse(encodedUser); } + destination = angular.isDefined(response.redirect) ? response.redirect : destination; + this.user = user || response; + this.loggedin = true; + this.loginError = 0; + this.registerError = 0; + this.isAdmin = !! (this.user.roles.indexOf('admin') + 1); + if (destination) $location.path(destination); + $rootScope.$emit('loggedin'); }; MeanUserKlass.prototype.onIdFail = function (response) { @@ -156,7 +155,7 @@ angular.module('mean.users').factory('MeanUser', [ '$rootScope', '$http', '$loca // Not Authenticated else { - $cookieStore.put('redirect', $location.path()); + $cookies.put('redirect', $location.path()); $timeout(deferred.reject); $location.url('/auth/login'); } @@ -202,15 +201,6 @@ angular.module('mean.users').factory('MeanUser', [ '$rootScope', '$http', '$loca return deferred.promise; }; - //Temporary code - var tokenWatch = $rootScope.$watch(function() { return $cookies.token; }, function(newVal, oldVal) { - if (newVal && newVal !== undefined && newVal !== null && newVal !== '') { - self.onIdentity({token: $cookies.token}); - $cookieStore.remove('token'); - tokenWatch(); - } - }); - return MeanUser; } -]); \ No newline at end of file +]); diff --git a/packages/core/users/public/tests/auth.spec.js b/packages/core/users/public/tests/auth.spec.js index 814be9a..2fca65a 100644 --- a/packages/core/users/public/tests/auth.spec.js +++ b/packages/core/users/public/tests/auth.spec.js @@ -2,7 +2,7 @@ (function() { // Login Controller Spec - describe('MEAN controllers', function() { + /*describe('MEAN controllers', function() { describe('LoginCtrl', function() { beforeEach(function() { jasmine.addMatchers({ @@ -227,7 +227,7 @@ }); }); - }); + });*/ }()); diff --git a/packages/core/users/server/controllers/users.js b/packages/core/users/server/controllers/users.js index 65b8462..dafbfd3 100755 --- a/packages/core/users/server/controllers/users.js +++ b/packages/core/users/server/controllers/users.js @@ -10,6 +10,7 @@ var mongoose = require('mongoose'), crypto = require('crypto'), nodemailer = require('nodemailer'), templates = require('../template'), + _ = require('lodash'), jwt = require('jsonwebtoken'); //https://npmjs.org/package/node-jsonwebtoken /** @@ -59,7 +60,10 @@ module.exports = function(MeanUser) { // We are sending the payload inside the token var token = jwt.sign(escaped, config.secret, { expiresInMinutes: 60*5 }); res.cookie('token', token); - res.redirect('/'); + var destination = config.strategies.landingPage; + if(!req.cookies.redirect) + res.cookie('redirect', destination); + res.redirect(destination); }, /** @@ -77,8 +81,11 @@ module.exports = function(MeanUser) { */ signout: function(req, res) { - MeanUser.events.publish('logout', { - description: req.user.name + ' logout.' + MeanUser.events.publish({ + action: 'logged_out', + user: { + name: req.user.name + } }); req.logout(); @@ -150,13 +157,21 @@ module.exports = function(MeanUser) { req.logIn(user, function(err) { if (err) { return next(err); } - MeanUser.events.publish('register', { - description: user.name + ' register to the system.' + MeanUser.events.publish({ + action: 'created', + user: { + name: req.user.name, + username: user.username, + email: user.email + } }); // We are sending the payload inside the token var token = jwt.sign(escaped, config.secret, { expiresInMinutes: 60*5 }); - res.json({ token: token }); + res.json({ + token: token, + redirect: config.strategies.landingPage + }); }); res.status(200); }); @@ -165,7 +180,34 @@ module.exports = function(MeanUser) { * Send User */ me: function(req, res) { - res.json(req.user || null); + if (!req.user || !req.user.hasOwnProperty('_id')) return res.send(null); + + User.findOne({ + _id: req.user._id + }).exec(function(err, user) { + + if (err || !user) return res.send(null); + + + var dbUser = user.toJSON(); + var id = req.user._id; + + delete dbUser._id; + delete req.user._id; + + var eq = _.isEqual(dbUser, req.user); + if (eq) { + req.user._id = id; + return res.json(req.user); + } + + var payload = user; + var escaped = JSON.stringify(payload); + escaped = encodeURI(escaped); + var token = jwt.sign(escaped, config.secret, { expiresInMinutes: 60*5 }); + res.json({ token: token }); + + }); }, /** @@ -214,8 +256,11 @@ module.exports = function(MeanUser) { user.resetPasswordExpires = undefined; user.save(function(err) { - MeanUser.events.publish('resetpassword', { - description: user.name + ' reset his password.' + MeanUser.events.publish({ + action: 'reset_password', + user: { + name: user.name + } }); req.logIn(user, function(err) { @@ -279,10 +324,13 @@ module.exports = function(MeanUser) { response.message = 'User does not exist'; response.status = 'danger'; - MeanUser.events.publish('forgotpassword', { - description: user.name + ' forgot his password.' - }); } + MeanUser.events.publish({ + action: 'forgot_password', + user: { + name: req.body.text + } + }); res.json(response); }); } diff --git a/packages/core/users/server/models/user.js b/packages/core/users/server/models/user.js index d1686d8..33d08b4 100755 --- a/packages/core/users/server/models/user.js +++ b/packages/core/users/server/models/user.js @@ -65,7 +65,7 @@ var UserSchema = new Schema({ }, roles: { type: Array, - default: ['authenticated'] + default: ['authenticated', 'anonymous'] }, hashed_password: { type: String, diff --git a/packages/core/users/server/routes/users.js b/packages/core/users/server/routes/users.js index de35f7a..4b89240 100644 --- a/packages/core/users/server/routes/users.js +++ b/packages/core/users/server/routes/users.js @@ -1,7 +1,6 @@ 'use strict'; var config = require('meanio').loadConfig(); - var jwt = require('jsonwebtoken'); //https://npmjs.org/package/node-jsonwebtoken module.exports = function(MeanUser, app, auth, database, passport) { @@ -30,131 +29,141 @@ module.exports = function(MeanUser, app, auth, database, passport) { // AngularJS route to check for authentication app.route('/api/loggedin') .get(function(req, res) { - res.send(req.isAuthenticated() ? req.user : '0'); - }); - - // Setting the local strategy route - app.route('/api/login') - .post(passport.authenticate('local', { - failureFlash: false - }), function(req, res) { - var payload = req.user; - payload.redirect = req.body.redirect; - var escaped = JSON.stringify(payload); - escaped = encodeURI(escaped); - // We are sending the payload inside the token - var token = jwt.sign(escaped, config.secret, { - expiresInMinutes: 60 * 5 + if (!req.isAuthenticated()) return res.send('0'); + auth.findUser(req.user._id, function(user) { + res.send(user ? user : '0'); }); - MeanUser.events.publish('login', { - description: req.user.name + ' login to the system.' - }); - - // var request = require('request'); - - // request('http://127.0.0.1:3000/api/circles/stubs/signature', function(error, response, body) { - // if (!error && body) { - // if (req.user && req.user._id) { - // //no prtection yet, poc - - // var signature = JSON.parse(body); - - // users.updateSignature(req.user, signature, function(err) { - // console.log(err); - // }); - // } - // } - // }) - // Lookup user circles and code here - /* - - TODO - - */ - res.json({ - token: token - }); - }); + if(config.strategies.local.enabled) + { + // Setting up the users api + app.route('/api/register') + .post(users.create); + + app.route('/api/forgot-password') + .post(users.forgotpassword); + + app.route('/api/reset/:token') + .post(users.resetpassword); + + // Setting the local strategy route + app.route('/api/login') + .post(passport.authenticate('local', { + failureFlash: false + }), function(req, res) { + var payload = req.user; + payload.redirect = req.body.redirect; + var escaped = JSON.stringify(payload); + escaped = encodeURI(escaped); + // We are sending the payload inside the token + var token = jwt.sign(escaped, config.secret, { expiresInMinutes: 60*5 }); + MeanUser.events.publish({ + action: 'logged_in', + user: { + name: req.user.name + } + }); + res.json({ + token: token, + redirect: config.strategies.landingPage + }); + }); + } + // AngularJS route to get config of social buttons app.route('/api/get-config') - .get(function(req, res) { + .get(function (req, res) { // To avoid displaying unneccesary social logins - var clientIdProperty = 'clientID'; - var defaultPrefix = 'DEFAULT_'; - var socialNetworks = ['facebook', 'linkedin', 'twitter', 'github', 'google']; //ugly hardcoding :( + var strategies = config.strategies; var configuredApps = {}; - for (var network in socialNetworks) { - var netObject = config[socialNetworks[network]]; - if (netObject.hasOwnProperty(clientIdProperty)) { - if (netObject[clientIdProperty].indexOf(defaultPrefix) === -1) { - configuredApps[socialNetworks[network]] = true; + for (var key in strategies) + { + if(strategies.hasOwnProperty(key)) + { + var strategy = strategies[key]; + if (strategy.hasOwnProperty('enabled') && strategy.enabled === true) { + configuredApps[key] = true ; } } } res.send(configuredApps); }); - // Setting the facebook oauth routes - app.route('/api/auth/facebook') - .get(passport.authenticate('facebook', { - scope: ['email', 'user_about_me'], - failureRedirect: '/auth/login', - }), users.signin); - - app.route('/api/auth/facebook/callback') - .get(passport.authenticate('facebook', { - failureRedirect: '/auth/login', - }), users.authCallback); - - // Setting the github oauth routes - app.route('/api/auth/github') - .get(passport.authenticate('github', { - failureRedirect: '/auth/login' - }), users.signin); - - app.route('/api/auth/github/callback') - .get(passport.authenticate('github', { - failureRedirect: '/auth/login' - }), users.authCallback); - - // Setting the twitter oauth routes - app.route('/api/auth/twitter') - .get(passport.authenticate('twitter', { - failureRedirect: '/auth/login' - }), users.signin); - - app.route('/api/auth/twitter/callback') - .get(passport.authenticate('twitter', { - failureRedirect: '/auth/login' - }), users.authCallback); - - // Setting the google oauth routes - app.route('/api/auth/google') - .get(passport.authenticate('google', { - failureRedirect: '/auth/login', - scope: [ - 'https://www.googleapis.com/auth/userinfo.profile', - 'https://www.googleapis.com/auth/userinfo.email' - ] - }), users.signin); - - app.route('/api/auth/google/callback') - .get(passport.authenticate('google', { - failureRedirect: '/auth/login' - }), users.authCallback); - - // Setting the linkedin oauth routes - app.route('/api/auth/linkedin') - .get(passport.authenticate('linkedin', { - failureRedirect: '/auth/login', - scope: ['r_emailaddress'] - }), users.signin); - - app.route('/api/auth/linkedin/callback') - .get(passport.authenticate('linkedin', { - failureRedirect: '/auth/login' - }), users.authCallback); - -}; \ No newline at end of file + if(config.strategies.facebook.enabled) + { + // Setting the facebook oauth routes + app.route('/api/auth/facebook') + .get(passport.authenticate('facebook', { + scope: ['email', 'user_about_me'], + failureRedirect: '/auth/login', + }), users.signin); + + app.route('/api/auth/facebook/callback') + .get(passport.authenticate('facebook', { + failureRedirect: '/auth/login', + }), users.authCallback); + } + + if(config.strategies.github.enabled) + { + // Setting the github oauth routes + app.route('/api/auth/github') + .get(passport.authenticate('github', { + failureRedirect: '/auth/login' + }), users.signin); + + app.route('/api/auth/github/callback') + .get(passport.authenticate('github', { + failureRedirect: '/auth/login' + }), users.authCallback); + } + + if(config.strategies.twitter.enabled) + { + // Setting the twitter oauth routes + app.route('/api/auth/twitter') + .get(passport.authenticate('twitter', { + failureRedirect: '/auth/login' + }), users.signin); + + app.route('/api/auth/twitter/callback') + .get(passport.authenticate('twitter', { + failureRedirect: '/auth/login' + }), users.authCallback); + } + + if(config.strategies.google.enabled) + { + // Setting the google oauth routes + app.route('/api/auth/google') + .get(passport.authenticate('google', { + failureRedirect: '/auth/login', + scope: [ + 'https://www.googleapis.com/auth/userinfo.profile', + 'https://www.googleapis.com/auth/userinfo.email' + ] + }), users.signin); + + app.route('/api/auth/google/callback') + .get(passport.authenticate('google', { + failureRedirect: '/auth/login' + }), users.authCallback); + } + + if(config.strategies.linkedin.enabled) + { + // Setting the linkedin oauth routes + app.route('/api/auth/linkedin') + .get(passport.authenticate('linkedin', { + failureRedirect: '/auth/login', + scope: ['r_emailaddress'] + }), users.signin); + + app.route('/api/auth/linkedin/callback') + .get(passport.authenticate('linkedin', { + failureRedirect: '/auth/login' + }), users.authCallback); + } + +}; diff --git a/packages/core/users/server/tests/users.js b/packages/core/users/server/tests/users.spec.js similarity index 98% rename from packages/core/users/server/tests/users.js rename to packages/core/users/server/tests/users.spec.js index 54b1677..9467ea9 100644 --- a/packages/core/users/server/tests/users.js +++ b/packages/core/users/server/tests/users.spec.js @@ -93,7 +93,8 @@ describe('', function() { expect(_user.hasRole('authenticated')).to.equal(true); expect(_user.hasRole('admin')).to.equal(false); expect(_user.isAdmin()).to.equal(false); - expect(_user.roles.length).to.equal(1); + // With the introduction of roles by circles a user has both anonymous and authenticated circles upon creation + expect(_user.roles.length).to.equal(2); _user.remove(function(err) { done(); }); diff --git a/packages/custom/i18n/.bowerrc b/packages/custom/i18n/.bowerrc new file mode 100644 index 0000000..c6231e8 --- /dev/null +++ b/packages/custom/i18n/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "public/assets/lib" +} diff --git a/packages/custom/i18n/README.md b/packages/custom/i18n/README.md new file mode 100644 index 0000000..1ad6e24 --- /dev/null +++ b/packages/custom/i18n/README.md @@ -0,0 +1 @@ +README: i18n \ No newline at end of file diff --git a/packages/custom/i18n/app.js b/packages/custom/i18n/app.js new file mode 100644 index 0000000..79e28c7 --- /dev/null +++ b/packages/custom/i18n/app.js @@ -0,0 +1,57 @@ +'use strict'; + +/* + * Defining the Package + */ +var Module = require('meanio').Module; + +var I18n = new Module('i18n'); + +/* + * All MEAN packages require registration + * Dependency injection is used to define required modules + */ +I18n.register(function(app, auth, database) { + + //We enable routing. By default the Package Object is passed to the routes + I18n.routes(app, auth, database); + + //We are adding a link to the main menu for all authenticated users + I18n.menus.add({ + title: 'i18n example page', + link: 'i18n example page', + roles: ['authenticated'], + menu: 'main' + }); + + I18n.aggregateAsset('js', '../lib/i18next/i18next.js', { weight: 1 }); + I18n.aggregateAsset('js', '../lib/ng-i18next/dist/ng-i18next.js', { weight: 2 }); + + I18n.angularDependencies(['jm.i18next', 'mean.system']); + + I18n.aggregateAsset('css', 'i18n.css'); + + /** + //Uncomment to use. Requires meanio@0.3.7 or above + // Save settings with callback + // Use this for saving data from administration pages + I18n.settings({ + 'someSetting': 'some value' + }, function(err, settings) { + //you now have the settings object + }); + + // Another save settings example this time with no callback + // This writes over the last settings. + I18n.settings({ + 'anotherSettings': 'some value' + }); + + // Get settings. Retrieves latest saved settigns + I18n.settings(function(err, settings) { + //you now have the settings object + }); + */ + + return I18n; +}); diff --git a/packages/custom/i18n/bower.json b/packages/custom/i18n/bower.json new file mode 100644 index 0000000..5aa73db --- /dev/null +++ b/packages/custom/i18n/bower.json @@ -0,0 +1,7 @@ +{ + "name": "i18n", + "version": "0.0.1", + "dependencies": { + "ng-i18next": "~0.4.2" + } +} diff --git a/packages/custom/i18n/package.json b/packages/custom/i18n/package.json new file mode 100644 index 0000000..c7cf8f7 --- /dev/null +++ b/packages/custom/i18n/package.json @@ -0,0 +1,18 @@ +{ + "name": "i18n", + "version": "0.0.1", + "description": "Some description of i18n", + "author": { + "name": "mean scaffold" + }, + "mean": "0.5.0", + "engines": { + "node": "0.10.x", + "npm": "1.4.x" + }, + "scripts": { + "postinstall": "bower install" + }, + "dependencies": {}, + "license": "MIT" +} diff --git a/packages/custom/i18n/public/assets/css/i18n.css b/packages/custom/i18n/public/assets/css/i18n.css new file mode 100644 index 0000000..a460270 --- /dev/null +++ b/packages/custom/i18n/public/assets/css/i18n.css @@ -0,0 +1,3 @@ +.i18n-example h1 { + background-color: purple +} diff --git a/packages/custom/i18n/public/assets/img/logo.png b/packages/custom/i18n/public/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1eae089e82db7d3c6ebf69d9954d95ff9fd5a340 GIT binary patch literal 5993 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 +

Example view from your new awesome package

+

Package: {{package.name}}

+
    +
  1. + Server route that anyone can access +
  2. +
  3. + Server route that requires authentication +
  4. +
  5. + Server route that requires admin user +
  6. +
  7. + Raw Html rendering example from using swig +
  8. +
+

+
+

You can find your package in /packages/i18n

+
+

MEAN versions prior to 0.3.2 will be in /node_modules/i18n

+
+

Documentation

+
+ + diff --git a/packages/custom/i18n/server/routes/i18n.js b/packages/custom/i18n/server/routes/i18n.js new file mode 100644 index 0000000..8196c8b --- /dev/null +++ b/packages/custom/i18n/server/routes/i18n.js @@ -0,0 +1,27 @@ +'use strict'; + +/* jshint -W098 */ +// The Package is past automatically as first parameter +module.exports = function(I18n, app, auth, database) { + + app.get('/api/i18n/example/anyone', function(req, res, next) { + res.send('Anyone can access this'); + }); + + app.get('/api/i18n/example/auth', auth.requiresLogin, function(req, res, next) { + res.send('Only authenticated users can access this'); + }); + + app.get('/api/i18n/example/admin', auth.requiresAdmin, function(req, res, next) { + res.send('Only users with Admin role can access this'); + }); + + app.get('/api/i18n/example/render', function(req, res, next) { + I18n.render('index', { + package: 'i18n' + }, function(err, html) { + //Rendering a view from the Package server/views + res.send(html); + }); + }); +}; diff --git a/packages/custom/i18n/server/views/index.html b/packages/custom/i18n/server/views/index.html new file mode 100644 index 0000000..806a882 --- /dev/null +++ b/packages/custom/i18n/server/views/index.html @@ -0,0 +1,3 @@ +

This is rendered from the package itself.

+

The package uses swig by default

+ diff --git a/packages/custom/mail-templates/app.js b/packages/custom/mail-templates/app.js index d8337b2..89d2705 100644 --- a/packages/custom/mail-templates/app.js +++ b/packages/custom/mail-templates/app.js @@ -16,14 +16,6 @@ MailTemplates.register(function(app, auth, database) { //We enable routing. By default the Package Object is passed to the routes MailTemplates.routes(app, auth, database); - //We are adding a link to the main menu for all authenticated users - MailTemplates.menus.add({ - title: 'mailTemplates example page', - link: 'mailTemplates example page', - roles: ['authenticated'], - menu: 'main' - }); - MailTemplates.aggregateAsset('css', 'mailTemplates.css'); /** diff --git a/packages/custom/mail-templates/package.json b/packages/custom/mail-templates/package.json index aeeabdc..d1e2892 100644 --- a/packages/custom/mail-templates/package.json +++ b/packages/custom/mail-templates/package.json @@ -5,7 +5,7 @@ "author": { "name": "mean scaffold" }, - "mean": "0.5.0", + "mean": "0.5.5", "engines": { "node": "0.10.x", "npm": "1.4.x" @@ -13,9 +13,13 @@ "dependencies": { "ejs": "^2.3.4", "email-templates": "^2.0.1", + "emblem": "^0.6.1", "handlebars": "^4.0.2", "jade": "^1.11.0", + "less": "^2.5.1", "node-sass": "^3.3.2", + "styl": "^0.2.9", + "stylus": "^0.52.4", "swig": "^1.4.2" }, "license": "MIT" diff --git a/packages/custom/mail-templates/server/controllers/mailTemplates.js b/packages/custom/mail-templates/server/controllers/mailTemplates.js new file mode 100644 index 0000000..e43debb --- /dev/null +++ b/packages/custom/mail-templates/server/controllers/mailTemplates.js @@ -0,0 +1,9 @@ +'use strict'; + +var path = require('path'); +var EmailTemplate = require('email-templates').EmailTemplate; + +module.exports = function TemplateRenderer(template, options) { + var templatePath = path.join(__dirname, '..', 'templates', template); + return new EmailTemplate(templatePath, options); +}; diff --git a/packages/custom/mail-templates/server/templates/example/html.swig b/packages/custom/mail-templates/server/templates/example/html.swig new file mode 100644 index 0000000..482b98d --- /dev/null +++ b/packages/custom/mail-templates/server/templates/example/html.swig @@ -0,0 +1 @@ +

Hello, {{ name }}

diff --git a/packages/custom/mail-templates/server/templates/example/style.scss b/packages/custom/mail-templates/server/templates/example/style.scss new file mode 100644 index 0000000..49089ae --- /dev/null +++ b/packages/custom/mail-templates/server/templates/example/style.scss @@ -0,0 +1,5 @@ +@import "../styles/common"; + +h1 { + color: grey; +} diff --git a/packages/custom/mail-templates/server/templates/example/text.swig b/packages/custom/mail-templates/server/templates/example/text.swig new file mode 100644 index 0000000..817def8 --- /dev/null +++ b/packages/custom/mail-templates/server/templates/example/text.swig @@ -0,0 +1 @@ +Hello, {{ name }} diff --git a/packages/custom/mail-templates/server/templates/styles/_common.scss b/packages/custom/mail-templates/server/templates/styles/_common.scss new file mode 100644 index 0000000..e69de29 diff --git a/server.js b/server.js index 9e3de6f..c640350 100755 --- a/server.js +++ b/server.js @@ -11,6 +11,7 @@ console.log = function(){ // Requires meanio . var mean = require('meanio'); var cluster = require('cluster'); +var deferred = require('q').defer(); // Code to run if we're in the master process or if we are not in debug mode/ running tests @@ -51,7 +52,11 @@ if ((cluster.isMaster) && mean.serve({ workerid: workerId /* more options placeholder*/ }, function (app) { app.app.disable('etag'); var config = app.config.clean; - var port = config.https && config.https.port ? config.https.port : config.http.port; - console.log('Mean app started on port ' + port + ' (' + process.env.NODE_ENV + ') cluster.worker.id:', workerId); + var port = config.https && config.https.port ? config.https.port : config.http.port; + console.log('Mean app started on port ' + port + ' (' + process.env.NODE_ENV + ') cluster.worker.id:', workerId); + + deferred.resolve(app); }); } + +module.exports = deferred.promise; diff --git a/tests/config/e2e/protractor.config.js b/tests/config/e2e/protractor.config.js new file mode 100644 index 0000000..b1d372f --- /dev/null +++ b/tests/config/e2e/protractor.config.js @@ -0,0 +1,34 @@ +var jasmineReporters = require('jasmine-reporters'); + +exports.config = { + baseUrl: 'http://localhost:3001', + framework: 'jasmine2', + specs: [ + '../../e2e/**/*.spec.js' + ], + multiCapabilities: [ + { + browserName: 'chrome' + }, + { + browserName: 'firefox' + } + ], + + onPrepare: function(){ + //Creates independent results files for each browser + //Otherwise they run at the same time and overwrite each other + var capsPromise = browser.getCapabilities(); + + return capsPromise.then(function(caps){ + var browserName = caps.caps_.browserName; + var browserVersion = caps.caps_.version; + var browserPrefix = browserName + '-' + browserVersion + '-'; + jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ + savePath: 'tests/results/e2e/junit', + filePrefix: browserPrefix, + consolidateAll: false + })); + }); + } +}; diff --git a/tests/e2e/smoke/home.spec.js b/tests/e2e/smoke/home.spec.js new file mode 100644 index 0000000..6b12e58 --- /dev/null +++ b/tests/e2e/smoke/home.spec.js @@ -0,0 +1,6 @@ +describe('Smoke test home page', function(){ + it('title should contain MEAN', function(){ + browser.get('/'); + expect(browser.getTitle()).toMatch(/.*MEAN.*/); + }); +});
@@ -24,12 +46,12 @@
- - +